如何在keras中将tf.losses.sigmoid_cross_entropy与标签平滑一起使用

时间:2019-04-28 20:49:33

标签: tensorflow

我想在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

我如何使用此丢失功能?

1 个答案:

答案 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)