我尝试在 java 代码中实现 levenberg 算法,但遇到了一些困难,我不知道是什么问题,但是 MSE 的数量并没有下降。我用 1 个隐藏层、18 个输入神经元、7 个隐藏神经元和 3 个输出神经元制作了这个网络。这些是我用来计算雅可比矩阵的公式:
- b2=f'(阴)
- wjk=b2*zj
- din=sum(b2*wjk)
- b1=din*f'(zin)
- vij=b1*xi
所有这一切,将保存在雅可比矩阵中
j[iteration][]={vij,b1,wjk,b2}
为了获得网络错误,它将与 jacobian transpose 相乘以找到它的梯度,我使用了以下代码:
public double err(int[]t,double[]y){
double err=0;
for(int z=0;z<out;z++){
err+=t[z]-y[z];
}return err;
}
为了计算这个网络的 MSE,我使用了这个代码:
public double mse(int[]t,double[]y){
double mse=0;
for(int z=0;z<out;z++){
mse+=Math.pow(t[z]-y[z],2);
}return mse;
}
我在迭代所有数据输入时调用了错误和 MSE 函数,并且所有 MSE 的总和将除以数据输入的总和。