m0_47925004 2021-05-25 18:45 采纳率: 50%
浏览 980
已采纳

bp神经网络各层激活函数的选择

急!数据挖掘作业。求助bp神经网络,输入值是只含0和1的数,输出值也是只含0和1的数,那么输入层激活函数,输出层激活函数,隐含层激活函数怎么选择呢?孩子试了一下午了,做出来误差太大了。

  • 写回答

2条回答 默认 最新

  • CSDN专家-ProfSnail 2021-05-25 19:04
    关注

    以下是我想出来的几个思路用于重新考虑你自己的神经网络。

    1. 你用了几层神经网络?一层神经网络很可能无法解决异或等线性不可分问题,多层神经网络加上非线性激活函数可以解决这一问题。

    2. 你是自己手写神经网络,还是用到了Pytorch等框架?如果是自己手写神经网络,请检查反向传播的梯度计算方法是否有误。

    3. 学习速率是否设置的过高或者过低?学习速率过高可能会使得网络一直很快的掠过误差极小值点,导致误差一直较大。学习速率过低,也可能导致很慢才能收敛到合适的结果。一般初始学习速率设置为0.001或者0.0001,如果你的学习速率设置为1,那么很可能学习速率过高了。

    4. 你用的哪种激活函数,是否使用的是早期神经网络常用的sigmod函数?如果是sigmod函数,请将他替换为Relu激活函数,因为在实践中被证明,sigmod函数在正数或者负数趋向无穷的时候,会出现梯度消失的情形。

    5. 是否使用了优化器来优化反向传播时候的梯度?比较常用的优化器是Adam优化器,他可以适度的调整多个维度上面的反向传播回来的梯度值。建议使用Adam优化器进行优化。

    6. 迭代了多少次?如果迭代次数不够的话,可能网络无法收敛。

     

    请按照上述提示检查自己的代码,并及时采纳这条回答。及时的采纳是对付出的肯定~

    如果有其余问题,请留言讨论。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥20 wireshark抓不到vlan
  • ¥20 关于#stm32#的问题:需要指导自动酸碱滴定仪的原理图程序代码及仿真
  • ¥20 设计一款异域新娘的视频相亲软件需要哪些技术支持
  • ¥15 stata安慰剂检验作图但是真实值不出现在图上
  • ¥15 c程序不知道为什么得不到结果
  • ¥40 复杂的限制性的商函数处理
  • ¥15 程序不包含适用于入口点的静态Main方法
  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来