Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
ASK java levenberg-marquardt算法_Java - Fatal编程技术网

ASK java levenberg-marquardt算法

ASK java levenberg-marquardt算法,java,Java,我尝试用java代码实现levenberg算法,但遇到了一些困难,我不知道问题出在哪里,但MSE的数量没有下降。我用1个隐藏层,18个输入神经元,7个隐藏神经元和3个输出神经元组成了这个网络。以下是我用来计算雅可比矩阵的公式: b2=f'yin wjk=b2*zj din=sumb2*wjk b1=din*f'zin vij=b1*xi 所有这些都将保存在雅可比矩阵中 j[iteration][]={vij,b1,wjk,b2} 为了得到网络误差,它将与雅可比转置相乘,以找到它的梯度,我使用以

我尝试用java代码实现levenberg算法,但遇到了一些困难,我不知道问题出在哪里,但MSE的数量没有下降。我用1个隐藏层,18个输入神经元,7个隐藏神经元和3个输出神经元组成了这个网络。以下是我用来计算雅可比矩阵的公式:

b2=f'yin wjk=b2*zj din=sumb2*wjk b1=din*f'zin vij=b1*xi 所有这些都将保存在雅可比矩阵中

j[iteration][]={vij,b1,wjk,b2}
为了得到网络误差,它将与雅可比转置相乘,以找到它的梯度,我使用以下代码:

public double err(int[]t,double[]y){
    double err=0;
    for(int z=0;z<out;z++){
        err+=t[z]-y[z];
    }return err;
}
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,我使用了以下代码:

public double err(int[]t,double[]y){
    double err=0;
    for(int z=0;z<out;z++){
        err+=t[z]-y[z];
    }return err;
}
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;

}

迭代所有数据输入时,我调用了error和MSE函数,所有MSE之和将被数据输入之和除以。

我没有立即看到任何类似于Levenberg-Marquardt算法的实现。首先,LM是一种迭代算法,我在这里看不到任何迭代代码。你能解释一下a,这些函数的作用是什么,b,每个参数的意思是什么,c,在这些代码中,均方误差是计算出来的吗?对于我们来说,看看你正在拟合的数据和你正在拟合的方程的例子也是很有价值的。