tensorflow中softmax激活函数与交叉熵损失函数相结合
求分类问题时,先使用softmax激活函数使输出符合概率分布,再用交叉熵求损失函数
tensorflow中提供了两个等价的API:
1. y_pro = tf.nn.softmax(y)
loss1 = tf.losses.categorical_crossentropy(y_, y)
2.loss2 = tf.nn.softmax_cross_entropy_with_logits(y_, y)
代码演示:
import tensorflow as tf
import numpy as np
y_ = np.array([[1, 0, 0], [0, 1, 0], [0, 0, 1]]) #生成真实值y_
y = np.array([[1, 2, 3], [2, 3, 4], [3, 4, 5]]) #生成预测值y
y_pro = tf.nn.softmax(y) #使用softmax()方法,使输出符合概率分布
loss1 = tf.losses.categorical_crossentropy(y_, y_pro) #计算损失值
loss2 = tf.nn.softmax_cross_entropy_with_logits(y_, y) #可以同时使用softmax()方法和交叉熵来计算损失值
print("分步运算后loss1是:", loss1) #打印loss1
print("一起运算后loss2是:", loss2) #打印loss2