多层感知器的代码,需要一个比较复杂的调试过程,不过也有一些方法来加快这一速度,其中有几个地方要注意:
1、输入层、输出层、中间层的学习率和动量参数不能一样,
2、3个层的权值策略不能一样
输入层的权值的最好效果是能将相差较大的输入样本,输出成分布不能太接近饱和的输出
关于权值初始化的问题,可以考虑 Nguyen-Widrow algorithm,这也是matlab的权值矩阵初始化策略
采用tanh函数,要意识到,它的输出极限是[-a,+a]
3、在输出层外加上一个硬限幅层,保证输出为需要的结果
硬限幅层要灵活,不一定是下面这种形式
if v>=0:
return 1
else:
return 0