我正在尝试在启用了急切执行tf.train.AdamOptimizer.minimize()
的 Tensorflow 版本上优化损失函数(使用证据下限定义)。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>