【问题标题】:How to use Adam().minimize in tensorflow 2x?如何在 tensorflow 2x 中使用 Adam().minimize?
【发布时间】:2023-04-02 21:15:02
【问题描述】:

首先我禁用急切执行 然后,我计算我的损失函数如下:

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', ...]

我寻找了一些链接,但没有得到我想要的。链接示例:Tensorflow 2: How can I use AdamOptimizer.minimize() for updating weights

有人帮我吗?

【问题讨论】:

    标签: python keras tensorflow2.0 minimize


    【解决方案1】:

    minimize 函数需要一个损失函数作为参数,以便使用其中的梯度带计算梯度。所以你可以这样写train函数,

    def train(x, y):
        opt.minimize(lambda : loss_fn(x, y), var_list=model.trainable_variables)
    

    【讨论】:

    • 我不知道该怎么感谢你。效果很好。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-05-23
    • 2016-02-20
    • 1970-01-01
    • 2018-10-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多