為了練習(xí),我想在 tensorflow 中實(shí)現(xiàn)一個(gè)模型,它可以返回輸入的平方。我的代碼工作正常,但是當(dāng)我查看 TensorBoard 中的計(jì)算圖時(shí),LOSS 操作沒有連接到 Gradients 子圖,也沒有連接到 Adam。為什么是這樣?據(jù)我了解,計(jì)算梯度,張量流必須推導(dǎo)損失。這是我的代碼:import numpy as npimport tensorflow as tfnp_inp = np.array([3, 6, 4, 2, 9, 11, 0.48, 22, -2.3, -0.48])np_outp = np.power(np_inp, 2)inputs = tf.Variable(np_inp, name='input', trainable=False)outputs = tf.Variable(np_outp, name='output', trainable=False)multiplier = tf.Variable(0.1, dtype=tf.float64, trainable=True, name='multiplier')mul = inputs * multiplierpredict = tf.square(mul, name='prediction')loss = tf.math.reduce_sum(tf.math.square(predict-outputs), name='LOSS')optimizer = tf.train.AdamOptimizer(0.1)to_minimize = optimizer.minimize(loss)sess = tf.Session()sess.run(tf.global_variables_initializer())logs_path = "./logs/unt" # path to the folder that we want to save the logs for Tensorboardtrain_writer = tf.summary.FileWriter(logs_path, sess.graph)for i in range(100): sess.run(to_minimize)print(sess.run({'mult':multiplier}))張量板: https ://gofile.io/?c=jxbWiG
1 回答

瀟瀟雨雨
TA貢獻(xiàn)1833條經(jīng)驗(yàn) 獲得超4個(gè)贊
這可能與直覺相反,但損失的實(shí)際值并不用于訓(xùn)練本身(盡管繪制它以查看其進(jìn)度可能很有用)。優(yōu)化器一般使用的是梯度,即每個(gè)變量的每次變化會(huì)如何影響損失值。為了計(jì)算這一點(diǎn),創(chuàng)建了一個(gè)形狀相同LOSS
但填充了一個(gè)的張量,并通過反向傳播計(jì)算每個(gè)操作的梯度。如果您打開gradients
圖表中的框,您將看到一個(gè)LOSS_grad
表示此框的框。
它是由幾個(gè)節(jié)點(diǎn)組成的張量,因?yàn)槟呈挛锵鄬?duì)于自身的梯度總是一個(gè)。從那里,計(jì)算其余的梯度。
添加回答
舉報(bào)
0/150
提交
取消