→ djshen: 數學式寫出來阿 02/01 08:15
假設系統有2個images, n1 及 n2
n1 包含3個原子 m1_1 m1_2 m1_3 分別是種類 s1 s1 s2,n1的能量是E1
n2 包含3個原子 m2_1 m2_2 m2_3 分別是種類 s1 s2 s2,n2的能量是E2
將所有s1原子放入NN1,可以得到三組Output E1_1 E1_2 E2_1
(假設NN1是 2 x 15 x 1 的NN) (一個隱藏層) (每個s1都有2個參數)
將所有s2原子放入NN2,可以得到三組Output E1_3 E2_2 E2_3
(假設NN2是 8 x 15 x 1 的NN) (一個隱藏層) (每個s2都有8個參數)
loss function = [(E1_1 + E1_2 + E1_3 - E1)^2 + (E2_1 + E2_2 + E2_3 - E2)^2]/2
或者
loss function = average( (sum(En_:) - En)^2 ) n = n1 n2 n3 ......
------------------------------------------------------------------------------
未來如果可能的話希望能把NN1改成 2 x 15 x 3
出來的3個數據(a1 a2 a3)與第一層的2個數據(b1 b2)進行複雜的計算
先假設為:
E1_1 = (a1*b1+a2**b2)/a3
E1_2 = (a1*b1+a2**b2)/a3
E1_3 = 另一個類似的複雜公式
接著重複一樣的loss function
------------------------------------------------------------------------------
目前卡在每次進行NN計算後我都只能得到一個值,例如:E1_1
如果是這樣的話就沒辦法進行loss function的計算
想請問是否有什麼方法可以讓我把 E1_1 E1_2 E1_3 全部算完後再計算loss function呢?
謝謝 :)
※ 編輯: dogs1231992 (73.251.28.27), 02/01/2019 13:55:17
推 f496328mm: 你loss function要設計的有彈性,不要寫死 02/01 14:09
f大您好,我目前參考的是莫煩的範例
loss = tf.reduce_mean(tf.reduce_sum(tf.square(ys - prediction),
reduction_indices=[1]))
在他的範例裡面由於prediction是直接從NN的結果得到,因此不會有其它計算的問題
想請問您是否有相關關鍵字或者程式碼可以讓小弟拜讀呢?
我最近找google的資料,幾乎都是用上述這類方法來寫loss function
還沒看到有較為彈性的範例的說
※ 編輯: dogs1231992 (73.251.28.27), 02/01/2019 14:19:05
→ yoyololicon: 你有設定batch size 嗎?還是都一個個餵? 02/01 16:29
→ yoyololicon: 老實說你的loss function 看起來蠻蠻基本的,不懂為 02/01 16:31
→ yoyololicon: 何會卡住 02/01 16:31
Y大,我沒有設定Batch Size (或者說我不知道我有沒有設定)
我的input目前是 4 x 2 的矩陣
(我把兩個images的原子共四個放在一起,每個原子有兩個參數)
NN為 2 x 15 x 1
輸出Ys會是一個 4 x 1 的矩陣
此時我得手動分配第0-1個輸出是屬於第一個image,第2-3個輸出屬於第二個image
------------------------------------------------------------------------------
如果可能的話,我希望輸入是 2 x 2 x 2 的矩陣
有 2 個images,每個image有 2 個 原子 (或者說最多2個),每個原子有 2 個參數
一次進去一整個image,然後輸出整個image的答案
------------------------------------------------------------------------------
如果說把整個矩陣轉成下列方法會比較方便的話我也想試試看:
種類 s1 有 4個原子,每個原子有 2個參數,NN1輸入是 4 x 2,輸出是 4 x 1
種類 s2 有 5個原子,每個原子有 3個參數,NN2輸入是 5 x 3,輸出是 5 x 1
同時跑完 NN1 及 NN2 之後拿 4 x 1 及 5 x 1的答案進行loss function 的計算
再用這個 loss function 回去訓練 NN1 及 NN2 (同時訓練?)
※ 編輯: dogs1231992 (45.3.84.194), 02/02/2019 02:39:05
推 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
如果是這樣的話,想請問是否有辦法在輸入 M x P 的矩陣時分辨誰要走NN1,誰要走NN2?
第一次接觸TensorFlow,還沒辦法從之前的觀念轉過來 Q___Q
※ 編輯: dogs1231992 (73.251.28.27), 02/02/2019 12:11:46