急!数据挖掘作业。求助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. 迭代了多少次?如果迭代次数不够的话,可能网络无法收敛。
请按照上述提示检查自己的代码,并及时采纳这条回答。及时的采纳是对付出的肯定~
如果有其余问题,请留言讨论。
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报