一、神经网络使用Softmax
下图的神经网络中,隐藏层用ReLU激活函数,输出层使用Softmax激活函数。输出层的结果如下:

Softmax激活函数和ReLU、Sigmoid激活函数的区别:
- ReLU、Sigmoid激活函数的每个神经元激活值只和该神经元的z有关:
![]()
- Softmax激活函数的每个神经元激活值和所有神经元的z有关:
![]()
二、TensorFlow中的代码实现
损失函数使用稀疏范畴交叉熵损失函数SparseCategoricalCrossentropy。以下代码不是最优实现方式!!

以上的代码实现会存在数据误差。
举个例子:下面两种计算方式中,第二种存在四舍五入的误差

更优的代码实现方式:
- 输出层的激活函数使用线性激活函数,输出的是
、
、
....
- 通过SparseCategoricalCrossentropy(from_logits=True)计算损失
- 此时拟合预测得到的logits=model(x)的值是
、
、
....
,而不是
、
、
....
,因此,需要通过tf.nn.softmax(logits)计算得到
、
、
....

逻辑回归在TensorFlow中的代码实现可优化为:

三、多标签分类问题
在多标签分类中,一个样本可以预测一个或多个类标签,例如输入一张图片,判断是否包含车、大巴、行人,此时预测输出三个标签,[yes,no,yes]或者[1,0,1]
对于多标签分类问题,需要构建一个神经网络输出三个输出量

学习来源:吴恩达机器学习,9.3-9.5
1400

被折叠的 条评论
为什么被折叠?



