据我了解,下面的代码会同时计算模型中的损失和更新参数。
_, 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
,因为第一行已更新模型。
我尝试过以下代码,只运行optimizer
c1 = sess.run([loss], feed_dict={x:x, y:y})
c2 = sess.run([loss], feed_dict={x:x, y:y})
但是c1仍然不等于c2
我模型中的辍学图层导致我UPDATE1
答案 0 :(得分:1)
要在不更新模型的情况下计算损失,只需运行loss
操作,无需optimizer
操作。
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
的不同值,因为{/ 1}}是更新模型后的损失值。