Tensorflow实现多层感知机MLP(Multi-Layer Perception)(tf实战观后感)

参考:书籍《TensorFlow实战》第四章

在完成第三章softmax regression后,发现无隐藏层只能根据像素点来学习特征,故通过加入一层隐藏层来实现多层感知机,来通过隐藏层学习更多特征。

1.虽然Sigmoid最接近概率分布输出,但在反向传播时会出现gradient vanishment。Relu函数max(0,x)从正面解决了梯度弥散的问题,而不需要通过无监督的逐层初始化权重来绕行。Relu特点如下:(1)单边抑制(x < 0为0)(2)相对宽阔的兴奋边界(3)稀疏激活性

实践中大部分情况下,将隐藏层的激活函数从Sigmoid替换成ReLU都可以带来训练速度及模型准确率的提升。当然神经网络的输出层一般都还是Sigmoid函数,因为它最接近概率输出分布,这也是为什么再输出层经常初始化W,b为0,因为sigmoid在0附近最敏感,梯度最大。

2.创建以个Tensorflow默认的InteractiveSession,这样后面执行各项操作就无须制定Session了。

3.在神经网络中,因为参数众多,经常出现参数比数据还多的情况,就非常容易出现只是记忆了训练集特征的情况,可以用Dropout解决。本次训练就是用到了dropout方法每次随机选取百分之75的隐藏层神经元来训练,以防overfitting。

4.函数tf.truncated_normal()

从截断的正态分布中输出随机值。生成的值服从具有指定平均值和标准偏差的正态分布,如果生成的值大于平均值2个标准偏差的值则丢弃重新选择。
在正态分布的曲线中,横轴区间(μ-σ,μ+σ)内的面积为68.268949%。横轴区间(μ-2σ,μ+2σ)内的面积为95.449974%。 在tf.truncated_normal中如果x的取值在区间(μ-2σ,μ+2σ)之外则重新进行选择。这样保证了生成的值都在均值附近。

5.tf.reduce_sum()

函数名的前缀为什么是reduce_其实也就很容易理解了,reduce就是“对矩阵降维”的含义,下划线后面的部分就是降维的方式,在reduce_sum()中就是按照求和的方式对矩阵降维。那么其他reduce前缀的函数也举一反三了,比如reduce_mean()就是按照某个维度求平均值,等等。其中参数reduction_indices为1时是对每行各列元素求和,为0时是对每列各行元素求和。

总结:全连接神经网络(Fully Connected Network,FCN,MLP的另一种说法)也是有局限的,即使我们使用很深的网络,很多的隐藏结点,很大的迭代论述,也很难再mnist数据集上达到99以上的准确率。

代码见ubuntu中pycharmprojects的test_tensorflow的test2-multilayer perception


多层人工神经网络也叫做多层感知机MLPmulti-layer perceptron),是一种常用的深度学习模型。它由多个神经元组成的神经网络,其中神经元按照层次排列,每一层的神经元通过连接权重与前一层的神经元进行信息传递。 在多层感知机中,通常有一个输入层、若干个隐藏层和一个输出层。输入层接收外部输入数据,隐藏层和输出层对输入数据进行加工和处理,输出层则给出最终的预测结果。每个神经元都有一个激活函数,用于对输入信号进行非线性转换。 多层感知机的训练过程一般使用反向传播算法。首先,通过将训练数据输入网络,根据当前网络参数计算得到输出结果;然后,通过与真实标签比较,计算出误差;最后,根据误差反向传播更新网络参数,以减小误差。这个过程重复进行多次,直到网络的输出结果与真实标签达到较好的匹配。 多层感知机的优势在于可以通过增加隐藏层的深度来提高模型的复杂度和表达能力,从而更好地拟合非线性关系。而激活函数的选择也影响着模型的性能,常用的激活函数有ReLU、Sigmoid和tanh等。 总结而言,多层人工神经网络(多层感知机)是一种有效的深度学习模型,通过反向传播算法进行训练,能够应对更加复杂的非线性关系。在实际应用中,多层感知机被广泛应用于图像识别、自然语言处理、语音识别等领域,并取得了很多显著的成果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值