我想在 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))
Run Code Online (Sandbox Code Playgroud)
它给出了错误
TypeError: sigmoid_cross_entropy() missing 2 required positional arguments: 'multi_class_labels' and 'logits'
Run Code Online (Sandbox Code Playgroud)
如果我添加
loss=tf.losses.sigmoid_cross_entropy(y_true, y_pred, label_smoothing=0.1))
Run Code Online (Sandbox Code Playgroud)
它给
NameError: name 'y_true' is not defined
Run Code Online (Sandbox Code Playgroud)
我该如何使用这个损失函数?
Keras 将两个参数传递给其损失函数。为了使用更多,您可以将任何原生 TF 函数包装为自定义函数,传递所需的参数并将其传递给 Kerasmodel.fit
def custom_loss(y_true, y_pred):
return tf.compat.v1.losses.sigmoid_cross_entropy(y_true, y_pred, label_smoothing=0.1)
model.compile(optimizer, loss=custom_loss)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3172 次 |
| 最近记录: |