二元分类loss函数binary_crossentropy和BinaryCrossentropy的区别

在自定义训练模式里:

1.loss函数的声明及输出维度

  BinaryCrossentropy(官网链接)可以直接申明,如下:

#set loss func
loss=tf.losses.BinaryCrossentropy(from_logits=True) # from_logits=True表示最后一层没有添加激活

  其在作为独立函数使用时,输出的时loss的均值,维度为1

# Example 1: (batch_size = 1, number of samples = 4)
y_true = [0, 1, 0, 0]
y_pred = [-18.6, 0.51, 2.94, -12.8]
bce = tf.keras.losses.BinaryCrossentropy(from_logits=True)
bce(y_true, y_pred).numpy()
0.865

  而binary_crossentropy(官网链接)不可以申明

loss=tf.losses.binary_crossentropy()

TypeError: binary_crossentropy() missing 2 required positional arguments: 'y_true' and 'y_pred'

  binary_crossentropy直接使用填入数据,输出loss大小和BATCHSIZE相同,维度为1*BATCHSIZE

y_true = [[0, 1], [0, 0]]
y_pred = [[0.6, 0.4], [0.4, 0.6]]
loss = tf.keras.losses.binary_crossentropy(y_true, y_pred)
assert loss.shape == (2,)
loss.numpy()
array([0.916, 0.714], dtype=float32)

2.在使用上

一般compile的时候,使用的是小写的binary_crossentropy

你可能感兴趣的:(python,图像处理)