机器学习(十七):神经网络中的Softmax代码实现及多标签分类问题

一、神经网络使用Softmax

下图的神经网络中,隐藏层用ReLU激活函数,输出层使用Softmax激活函数。输出层的结果\vec{a}^{[3]}如下:

Softmax激活函数和ReLU、Sigmoid激活函数的区别:

  • ReLU、Sigmoid激活函数的每个神经元激活值只和该神经元的z有关:

         

  • Softmax激活函数的每个神经元激活值和所有神经元的z有关:

         

二、TensorFlow中的代码实现

损失函数使用稀疏范畴交叉熵损失函数SparseCategoricalCrossentropy。以下代码不是最优实现方式!!

以上的代码实现会存在数据误差。

举个例子:下面两种计算方式中,第二种存在四舍五入的误差

更优的代码实现方式:

  • 输出层的激活函数使用线性激活函数,输出的是z_{1}z_{2}z_{3}....z_{n}
  • 通过SparseCategoricalCrossentropy(from_logits=True)计算损失
  • 此时拟合预测得到的logits=model(x)的值是z_{1}z_{2}z_{3}....z_{n},而不是a_{1}a_{2}a_{3}....a_{n},因此,需要通过tf.nn.softmax(logits)计算得到a_{1}a_{2}a_{3}....a_{n}

       

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

三、多标签分类问题

在多标签分类中,一个样本可以预测一个或多个类标签,例如输入一张图片,判断是否包含车、大巴、行人,此时预测输出三个标签,[yes,no,yes]或者[1,0,1]

对于多标签分类问题,需要构建一个神经网络输出三个输出量

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值