📜  tensorflow 二进制交叉熵损失 (1)

📅  最后修改于: 2023-12-03 15:20:33.959000             🧑  作者: Mango

TensorFlow 二进制交叉熵损失

二进制交叉熵损失是一种用于分类问题的损失函数,常用于二元分类任务中。TensorFlow中提供了tf.keras.losses.BinaryCrossentropy()函数来实现该损失函数。

使用方法

该函数有两种使用方法:

  1. 直接调用函数
import tensorflow as tf

y_true = [[0.0], [1.0], [1.0], [0.0]]
y_pred = [[0.2], [0.8], [0.9], [0.1]]

bce = tf.keras.losses.BinaryCrossentropy()
result = bce(y_true, y_pred)

print(result.numpy())

输出结果:

1.2755398
  1. 作为模型的损失函数
import tensorflow as tf

model = tf.keras.models.Sequential()
model.add(tf.keras.layers.Dense(1, activation='sigmoid'))

model.compile(optimizer='adam', loss=tf.keras.losses.BinaryCrossentropy())

x_train = [[0.0], [0.0], [1.0], [1.0]]
y_train = [[0.0], [1.0], [1.0], [0.0]]

model.fit(x_train, y_train, epochs=10)
参数说明
  • reduction:指定损失函数的计算方式。可以选择的取值有:

    • tf.keras.losses.Reduction.SUM:对所有样本的损失值求和。
    • tf.keras.losses.Reduction.NONE:不对损失值进行计算,相当于每个样本的损失值单独计算,返回的值是一个向量。
    • tf.keras.losses.Reduction.AUTO:自动选择计算方式。
  • from_logits:指定y_pred是否需要经过sigmoid函数。如果为True,则认为y_pred是未经过sigmoid函数的原始值,损失函数会自动对其进行sigmoid处理。

  • label_smoothing:用于减少过拟合,对y_true进行平滑处理。

返回值说明

返回的值是一个张量,表示所有样本的损失值。如果选择tf.keras.losses.Reduction.NONE,则返回的是一个向量,需要对其进行取平均等处理。

参考资料