微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

定义一个可调用的“损失”函数

如何解决定义一个可调用的“损失”函数

我正在尝试在启用了急切执行的 Tensorflow 版本 tf.train.AdamOptimizer.minimize() 上使用 1.15.2 优化损失函数(使用证据下界定义)。我尝试了以下方法

learning_rate = 0.01
optim = tf.train.AdamOptimizer(learning_rate=learning_rate)
train_op = optim.minimize(loss)

并得到以下内容RuntimeError: "loss" passed to Optimizer.compute_gradients should be a function when eager execution is enabled.

如果我禁用急切执行,这会很好用,但是因为我需要将 tensorflow 变量保存为 numpy 数组,所以我需要启用急切执行。文档提到,当启用急切执行时,损失必须是调用。所以损失函数的定义方式应该是不接受输入但给出损失。我不太确定如何实现这样的目标。

我尝试了 train_op = optim.minimize(lambda: loss) 但得到了 ValueError: No gradients provided for any variable,check your graph for ops that do not support gradients,between variables [] and loss <function <lambda> at 0x7f3c67a93b00>

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。