Когда вы делаете переменную потерь, вы присваиваете ей начальное значение, это не делает ее функцией, которая будет переоценивать потери при каждом ее вызове.
Мы можем сделать функцию потерь, которая вызывается для расчета потерь каждый раз
Редактировать: я изменил код, приведенный ниже, чтобы переназначить значение переменной тензор потока потерь, а не возвращать новую переменную.
import tensorflow as tf
import tensorflow.keras.backend as K
# Function that updates the loss
@tf.function
def update_loss(X, loss):
loss.assign((X+1.0)**2)
def test():
# Initialise a value of loss
loss = tf.Variable(0.0)
print(K.eval(loss))
# Initialise variable
X = tf.Variable(2.0)
# Update loss
update_loss(X, loss)
print(K.eval(loss))
# Change network by adding 1.0
X.assign_add(1.0)
# Update loss
update_loss(X, loss)
print(K.eval(loss))