如何在张量流中不更新模型的情况下计算损失

时间:2017-07-20 13:23:56

标签: 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,因为第一行已更新模型。

UPDATE1

我尝试过以下代码,只运行optimizer

c1 = sess.run([loss], feed_dict={x:x, y:y})
c2 = sess.run([loss], feed_dict={x:x, y:y})

但是c1仍然不等于c2

UPDATE2

我模型中的辍学图层导致我UPDATE1

中的c1和c2差异

1 个答案:

答案 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})

仍会产生c1c2的不同值,因为{/ 1}}是更新模型后的损失值