Python 如何在不更新tensorflow模型的情况下计算损耗
据我所知,下面的代码将同时计算损失和更新模型中的参数Python 如何在不更新tensorflow模型的情况下计算损耗,python,tensorflow,Python,Tensorflow,据我所知,下面的代码将同时计算损失和更新模型中的参数 _, c = sess.run([optimizer, loss], feed_dict={x:x, y:y}) 那么,如何在不更新模型的情况下计算损失呢 _, c1 = sess.run([optimizer, loss], feed_dict={x:x, y:y}) _, c2 = sess.run([optimizer, loss], feed_dict={x:x, y:y}) 例如,c1!=c2因为第一行已经更新了模型 更新1 我
_, c = sess.run([optimizer, loss], feed_dict={x:x, y:y})
那么,如何在不更新模型的情况下计算损失呢
_, c1 = sess.run([optimizer, loss], feed_dict={x:x, y:y})
_, c2 = sess.run([optimizer, loss], feed_dict={x:x, y:y})
例如,c1!=c2
因为第一行已经更新了模型
更新1
我已经尝试了下面的代码,只是在没有优化器的情况下运行
c1 = sess.run([loss], feed_dict={x:x, y:y})
c2 = sess.run([loss], feed_dict={x:x, y:y})
但c1仍然不等于c2
更新2
我的模型中的退出层会导致我的
UPDATE1
中c1和c2的差异来计算损失,而无需更新模型,只需运行loss
操作,无需优化器
操作
c = sess.run(loss, feed_dict={x:x, y:y})
请注意,当您运行sess.run([optimizer,loss],feed_dict={x:x,y:y})
时,您会在应用更新之前获得损失值,因此运行:
_, c1 = sess.run([optimizer, loss], feed_dict={x:x, y:y})
c2 = sess.run(loss, feed_dict={x:x, y:y})
仍然会产生不同的
c1
和c2
值,因为c2
是更新模型后的损失值。感谢您的快速响应,我刚刚更新了我的问题以供您回答。不要使用,c1
,只需使用c1
@Akhilesh updated,很抱歉typo@Akhilesh事实上它应该是c1、
(带逗号)或c1
(不带逗号),但去掉loss
周围的括号。如果只操作loss
,权重将不会更新,如@jdehesa所说。在你的模型中是否有一些随机操作,比如辍学?c1
和c2
有很大的不同吗?@YuwenYan,绝对!!!dropout从网络中选择随机神经元,并根据所选神经元计算损失。如果要交叉验证,可以在退出()中使用种子。