Java 神经网络自适应学习码

Java 神经网络自适应学习码,java,double,neural-network,nan,Java,Double,Neural Network,Nan,我有以下代码 public void alearningrate(){ //adopt learningrate System.out.println(errorpositive+""+learningrate); if ((errorpositive&&errorgradient>0)||!errorpositive&&errorgradient<0){ learningra

我有以下代码

public void alearningrate(){

        //adopt learningrate 
        System.out.println(errorpositive+""+learningrate);
        if ((errorpositive&&errorgradient>0)||!errorpositive&&errorgradient<0){
            learningrate=learningrate*1.5;

        }else{
            learningrate=learningrate*0.75;
        }
        if (learningrate<0.0001){
            learningrate=0.0001;
        }
    }

    public void lastblame(double blame){

        errorpositive=errorgradient>0;
        errorgradient= Math.exp(-value)/Math.pow(1+Math.exp(-value), 2)*blame;
        if (value==Double.NaN){
            System.out.println("nan detected=?");
            errorgradient=1;
        }
        for (int i=0; i<weight.length;i++){
            weight[i]=weight[i]+learningrate*source[i].output()*errorgradient;
        }

        //alearningrate();

    }
    public void hiddenblame(double blame){
        System.out.println(value);
        errorpositive=errorgradient>0;
        errorgradient=Math.exp(-value)/Math.pow(1+Math.exp(-value), 2)*blame;
        if (value==Double.NaN){
            System.out.println("nan detected=?");
            errorgradient=1;
        }
        for (int i=0; i<weight.length;i++){
            weight[i]=weight[i]+learningrate*source[i].output()*errorgradient;
        }
        System.out.println(errorgradient);
        alearningrate();

    }
public void alearningrate(){
//采用学习率
System.out.println(errorpositive+“”+学习率);

如果((errorpositive&&errorgradient>0)| |!errorpositive&&errorgradient对于初学者来说,value==Double.NaN将永远不会为真,因为两个NaN被定义为比较false原则上,我正在寻找一种避免NaN的方法,但如何检测它们?
Double#isNan(value)
Plus,你问的错误在哪里?你没有
errorgradient
方法,你有一个名为
errorgradient
的变量,你在多个地方使用。errorgradient变为NaN,所以其中一个方法导致errorgradient变为NaN。当我禁用alearngrate()时方法它停止给问题。