我正在使用 Tensorflow 2.1 和 Python 3,按照教程“ Tensorflow - 自定义训练:演练”创建我的自定义训练模型。
我正在尝试在我的损失函数上使用汉明距离:
import tensorflow as tf
import tensorflow_addons as tfa
def my_loss_hamming(model, x, y):
global output
output = model(x)
return tfa.metrics.hamming.hamming_loss_fn(y, output, threshold=0.5, mode='multilabel')
def grad(model, inputs, targets):
with tf.GradientTape() as tape:
tape.watch(model.trainable_variables)
loss_value = my_loss_hamming(model, inputs, targets)
return loss_value, tape.gradient(loss_value, model.trainable_variables)
当我调用它时:
loss_value, grads = grad(model, feature, label)
optimizer.apply_gradients(zip(grads, model.trainable_variables))
grads
变量是一个包含 38 个无的列表。
我得到了错误:
No gradients provided for any variable: ['conv1_1/kernel:0', ...]
有没有什么方法可以使用汉明距离而不“中断渐变胶带注册的渐变链”?