gpt4 book ai didi

python - 如何在不更新 tensorflow 模型的情况下计算损失

转载 作者:太空宇宙 更新时间:2023-11-04 05:03:08 25 4
gpt4 key购买 nike

据我了解,下面的代码将同时计算模型中的损失和更新参数。

_, 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

我试过下面的代码,只是在没有optimizer

的情况下运行
c1 = sess.run([loss], feed_dict={x:x, y:y})
c2 = sess.run([loss], feed_dict={x:x, y:y})

但是c1还是不等于c2

更新2

我模型中的 dropout 层导致我的 UPDATE1 中的 c1 和 c2 不同

最佳答案

要在不更新模型的情况下计算损失,只需运行 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的不同值,因为c2是更新之后的损失值模型。

关于python - 如何在不更新 tensorflow 模型的情况下计算损失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45216094/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com