📅  最后修改于: 2023-12-03 15:20:33.959000             🧑  作者: Mango
二进制交叉熵损失是一种用于分类问题的损失函数,常用于二元分类任务中。TensorFlow中提供了tf.keras.losses.BinaryCrossentropy()
函数来实现该损失函数。
该函数有两种使用方法:
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
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
,则返回的是一个向量,需要对其进行取平均等处理。