我想在keras model.fit中使用标签平滑,但是会出错。 如果我尝试
model = tf.keras.Model(inputs=inputs, outputs=predictions)
optimizer = tf.keras.optimizers.Adam(0.001)
model.compile(optimizer=optimizer, loss=tf.losses.sigmoid_cross_entropy(label_smoothing=0.1))
出现错误
TypeError: sigmoid_cross_entropy() missing 2 required positional arguments: 'multi_class_labels' and 'logits'
如果我添加
loss=tf.losses.sigmoid_cross_entropy(y_true, y_pred, label_smoothing=0.1))
它给出
NameError: name 'y_true' is not defined
我如何使用此丢失功能?
答案 0 :(得分:1)
Keras将两个参数传递给其损失函数。为了使用更多功能,您可以将任何本地TF函数包装为自定义函数,传递所需的参数并将其传递给Keras model.fit
def custom_loss(y_true, y_pred):
return tf.losses.sigmoid_cross_entropy(y_true, y_pred, label_smoothing=0.1)
model.compile(optimizer, loss=custom_loss)