【问题标题】:Tensorflow 2.x compute and minimize loss (same step)Tensorflow 2.x 计算并最小化损失(相同步骤)
【发布时间】:2021-09-06 00:21:16
【问题描述】:

opt.minimize(loss,vars=[...]) 不返回损失。

之后我可以计算损失,但我会评估损失函数两次。

如何在“单个”步骤中进行最小化和损失计算,以便返回损失。

在 Tensorflow 1.x 中,人们会这样做:

train_op = Optimizer.minimize(loss)
sess.run([loss, train_op], feed_dict=feed)

我将如何在 Tensorflow 2 中做到这一点

【问题讨论】:

  • opt.minimize(loss, var_list=[...]) 工作吗?

标签: python tensorflow


【解决方案1】:

一种解决方案是使用渐变胶带。

import tensorflow as tf
opt = tf.keras.optimizers.SGD(learning_rate=0.1)
loss_fn = lambda: 3 * var1 * var1 + 2 * var2 * var2
var1 = tf.Variable(100.0)
var2 = tf.Variable(-2.0)


with tf.GradientTape() as tape:
  loss = loss_fn() # alternativly some model.predict
  print(loss)
grads = tape.gradient(loss, [var1,var2])
opt.apply_gradients(zip(grads, [var1,var2]))
print(var1.numpy())
print(var2.numpy())

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-09-09
    • 1970-01-01
    • 2016-05-21
    • 2021-02-21
    • 2018-04-13
    • 1970-01-01
    • 2018-06-11
    • 1970-01-01
    相关资源
    最近更新 更多