神经网络对于不同的训练样本输出同样的结果解决方法

最近在学习深度学习的知识,如果想学习的话我推荐网易云课堂的吴恩达教授的DeepLearning.ai课程,讲解很详细。我在自学完第一门课程之后,开始使用Python尝试搭建我的第一个神经网络。
第一次尝试搭建的是一个四层的神经网络,包含三个隐藏层和一个输出层,节点数分别为4,3,2,1。隐藏层使用的激活函数是tanh,输出层使用的激活函数是sigmoid,因为输出的是一个二元分类标签。但是这个神经网络的训练效果并不好,对于不同的训练样本输出的结果几乎是一样的。不管是改变学习率还是对输入的参数进行归一化处理都无法改变输出结果。
通过网上查阅资料,我选择了重新搭建一个新的两层的神经网络,包含一个隐藏层和一个输出层,节点数分别为20,1。隐藏层使用的激活函数是tanh,输出层使用的激活函数是sigmoid,学习率为0.01,并对输入的特征数据进行了归一化处理。这个神经网络的训练效果很好,通过十万次的训练后,训练集的平均准确率有0.89左右,测试集的准确率有0.78左右。可能加大训练次数能够使准确率进一步提高。
对于第一个神经网络输出的结果全部一样的问题,我的猜测是因为神经网络的隐藏层太多,多层的处理和过少的节点数目导致样本的特征在训练过程中丢失了,使得后面的隐藏层得到的数据基本一致,因此对于不同的输入样本会有同样的输出结果。
不管怎么说,自己的第一个神经网络总算是搭起来了,而且能跑,而且效果还不错。深度学习真的很神奇。如果以后有机会,我会把代码贴出来,不过现在因为这属于学校的实验报告作业,暂时还不能贴出来。

  • 5
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值