[問題] 該如何在Tensorflow內相加結果?

看板Python作者 (河豚)時間6年前 (2019/02/27 06:09), 6年前編輯推噓0(000)
留言0則, 0人參與, 最新討論串1/1
各位前輩大家好,小弟先前問了一個關於Tensorflow loss function設計的問題 後來我已經想到該怎麼設計了,但是目前遇到另一個問題,希望前輩們多多指導 首先,我有2個images,每個image都有一個能量值(之後會用到的Ref Y,是個2x1的矩陣) 經過整理、分類後,可以得到3種原子 每個原子都會進入一個專屬的NN中 程式碼為: NN_O_1 = Add_layer(Data_in_O,57,15,Activation_function=tf.nn.tanh) NN_O_2 = Add_layer(NN_O_1,15,15,Activation_function=tf.nn.tanh) NN_O_3 = Add_layer(NN_O_2,15,1,Activation_function=None) NN_H_1 = Add_layer(Data_in_H,57,15,Activation_function=tf.nn.tanh) NN_H_2 = Add_layer(NN_H_1,15,15,Activation_function=tf.nn.tanh) NN_H_3 = Add_layer(NN_H_2,15,1,Activation_function=None) NN_Au_1 = Add_layer(Data_in_Au,57,15,Activation_function=tf.nn.tanh) NN_Au_2 = Add_layer(NN_Au_1,15,15,Activation_function=tf.nn.tanh) NN_Au_3 = Add_layer(NN_Au_2,15,1,Activation_function=None) ============================================================================== 在運算完畢後會得到三個Outputs,分別是 NN_O_3、NN_H_3 跟 NN_Au_3 三個結果的大小為:36x1、72x1、24x1的矩陣 此時我希望可以將NN_O_3的前20個值、NN_H_3的前40個值 及 NN_Au_3的前10個值加總 剩下的值另外加總 此時會得到兩個能量值 E1 跟 E2,再用這兩個值跟上面提到的Ref Y一起求RMSE 目前程式碼為: for i in range(0,Number_total_images): if i == 0: O_part = np.zeros((Number_total_images) , dtype=np.float32) H_part = np.zeros((Number_total_images) , dtype=np.float32) Au_part = np.zeros((Number_total_images) , dtype=np.float32) NN_energy = np.zeros((Number_total_images) , dtype=np.float32) O_part[i] = tf.reduce_sum(NN_O_3 [ Number_O[i] :Number_O[i+1] ]) H_part[i] = tf.reduce_sum(NN_H_3 [ Number_H[i] :Number_H[i+1] ]) Au_part[i] = tf.reduce_sum(NN_Au_3[ Number_Au[i]:Number_Au[i+1] ]) NN_energy[i] = O_part[i] + H_part[i] + Au_part[i] 訓練的部分為: loss = tf.sqrt(tf.reduce_mean(tf.square(tf.subtract(NN_energy, Data_out)))) train_step = tf.train.AdamOptimizer().minimize(loss) sess = tf.Session() init = tf.global_variables_initializer() sess.run(init) for i in range(10): # training sess.run(train_step, feed_dict={Data_in_O: Descriptor_O, Data_in_H: Descriptor_H, Data_in_Au: Descriptor_Au, Data_out: Data_energy}) 主要概念是希望Tensorflow在呼叫loss function時 loss function可以往回去找到NN_energy的迴圈 然後完成相關計算,再把值帶回來loss function內 目前已知兩個有問題的地方 一個是不能用迴圈,要用while_loop 一個是不能用Numpy,但是我還沒想到該如何不用Numpy來設計矩陣 NN_energy 此外,不確定是不是Numpy的問題,但是執行後一直跳出錯誤 ValueError: setting an array element with a sequence. 報錯的位置在: NN_energy[i] = O_part[i] + H_part[i] + Au_part[i] 不知是否有前輩寫過類似的程式碼可以提點我一下,謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 45.3.67.234 ※ 文章網址: https://www.ptt.cc/bbs/Python/M.1551218990.A.04C.html ※ 編輯: dogs1231992 (45.3.67.234), 02/27/2019 06:10:36
文章代碼(AID): #1STRak1C (Python)
文章代碼(AID): #1STRak1C (Python)