categorical_crossentropy用于多分类。
tensorflow2.0+中提供了计算方法:
y_true = tf.constant([[0,1,0],[0,0,1]])
# 这里的y_pred是经过softmax激活函数运算后的值
y_pred = tf.constant([[0.05,0.95,0],[0.1,0.8,0.1]])
# 如果y_pred不经过softmax激活函数,这里加上参数 from_logits=True
tf.keras.losses.categorical_crossentropy(y_true, y_pred)
# 输出:<tf.Tensor: shape=(2,), dtype=float32, numpy=array([0.05129331, 2.3025851 ], dtype=float32)>
# 对应计算:
-1 * ln(0.95)
-1 * ln(0.1)