※ 引述《dogs1231992 (河豚)》之銘言:
: 標題: [問題] TensorFlow如何設定複雜的loss function?
: 時間: Fri Feb 1 05:02:10 2019
:
: 各位大家好,小弟最近想用TensorFlow來完成NN的部分
:
: 目前數據都準備好了,TensorFlow的部分則是上網查了一些資料,層及進出都設定好了
:
: 只是我遇到一個關於loss function的問題
:
: 一般訓練都是N個數據進去,M個數據出來,用這M個數據與參考值求誤差
:
: 但我的狀況是:
:
: 我有一個三維的資料: N x M x P
:
: 裡面有 N 個images,每個images有 M 個原子,每個原子有 P 個參數
:
: 希望可以利用同一個 (或者依照原子不同而分類成多個) NN
:
: 在我輸入P個數據後,可以得到答案Ep
:
: 同一個image裡面所有原子M的Ep加總後會得到一個值 En
:
: 全部資料會有N個En,這些En與參考值求誤差後即為我的loss
:
: 目前卡在不知道該如何將M次計算後的Ep全部加總在一起
:
: 推 yoyololicon: 我會建議你不要用一個個原子去想 而是用image的角度 02/02 07:39
: → yoyololicon: 因為你的目標En單位是每個image 02/02 07:39
: → yoyololicon: 就直接用(N, M, P)大小的矩陣直接去train不用拆開 02/02 07:41
: → yoyololicon: 對應的label為長度(N,)的矩陣 這邊N就是batch size 02/02 07:42
:
: Y大,想請問您的意思是是否為:
:
: 我的單一個input就是 M x P 的矩陣
:
: 輸出則為 M個參數 或者 直接把所有輸出加總在一起變成一個En?
:
: N個images在訓練後就會得到 N個 En
:
都可以
這樣的話你的輸入可以縮減成二維 (N, M x P)
經過NN (可能的架構: (M x P) x .... x M) 後輸出變成(N, M)
再用tf.reduce_sum加總成(N,),再來算loss;
或者用原本的架構也可以(2 x 15 x 1)
輸入 (N, M, P) >> NN >> (N, M, 1),之後的步驟一樣
我不確定你的M是固定的還是變數
如果是變動的,可以做padding讓大小變成一樣
: 如果是這樣的話,想請問是否有辦法在輸入 M x P 的矩陣時分辨誰要走NN1,誰要走NN2?
應該在一開始就把資料分成兩群,而不是在輸入的時候做分辨