如何在 tensorflow 2x 中使用 Adam().minimize?
How to use Adam().minimize in tensorflow 2x?
首先我禁用急切执行
然后,我计算损失函数如下:
def loss_fn(x, y):
y_ = model(x, training=True)
loss = tf.reduce_mean(tf.square(y_ - y))
return loss
我的优化器是:
opt = Adam(1e-3)
现在,我想把上面的损失降到最低。我写了下面的代码:
def train(x, y):
loss = loss_fn(x, y)
opt.minimize(loss, var_list=model.trainable_variables)
但出现以下错误:
TypeError: 'Tensor' object is not callable
我决定尝试以下方法:
def train(x, y):
loss = loss_fn(x, y)
opt.minimize(lambda: loss, var_list=model.trainable_variables)
但我也有以下错误:
ValueError: No gradients provided for any variable: ['dense/kernel:0', 'dense/bias:0', ...]
我找了一些 link 但我没有得到我想要的。 link 示例:Tensorflow 2: How can I use AdamOptimizer.minimize() for updating weights
有人帮我吗?
minimize
函数需要一个损失函数作为参数,以便使用其中的梯度带计算梯度。所以你可以这样写train
函数,
def train(x, y):
opt.minimize(lambda : loss_fn(x, y), var_list=model.trainable_variables)
首先我禁用急切执行 然后,我计算损失函数如下:
def loss_fn(x, y):
y_ = model(x, training=True)
loss = tf.reduce_mean(tf.square(y_ - y))
return loss
我的优化器是:
opt = Adam(1e-3)
现在,我想把上面的损失降到最低。我写了下面的代码:
def train(x, y):
loss = loss_fn(x, y)
opt.minimize(loss, var_list=model.trainable_variables)
但出现以下错误:
TypeError: 'Tensor' object is not callable
我决定尝试以下方法:
def train(x, y):
loss = loss_fn(x, y)
opt.minimize(lambda: loss, var_list=model.trainable_variables)
但我也有以下错误:
ValueError: No gradients provided for any variable: ['dense/kernel:0', 'dense/bias:0', ...]
我找了一些 link 但我没有得到我想要的。 link 示例:Tensorflow 2: How can I use AdamOptimizer.minimize() for updating weights
有人帮我吗?
minimize
函数需要一个损失函数作为参数,以便使用其中的梯度带计算梯度。所以你可以这样写train
函数,
def train(x, y):
opt.minimize(lambda : loss_fn(x, y), var_list=model.trainable_variables)