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

问题描述

我正在尝试在启用了急切执行的 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 (将#修改为@)