Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/332.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/13.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
Java ArrayList.get(索引)不返回变量?_Java_Arraylist_Java 8 - Fatal编程技术网

Java ArrayList.get(索引)不返回变量?

Java ArrayList.get(索引)不返回变量?,java,arraylist,java-8,Java,Arraylist,Java 8,我正在用Java编写一个神经网络,但是ArrayList.get()没有返回变量,这使我遇到了麻烦 double train(ArrayList<Double> inputVector, double desiredOutput) { double result = output(inputVector); double error = desiredOutput - result; double delta = learningRate_ * err

我正在用Java编写一个神经网络,但是ArrayList.get()没有返回变量,这使我遇到了麻烦

    double train(ArrayList<Double> inputVector, double desiredOutput) {
    double result = output(inputVector);
    double error = desiredOutput - result;
    double delta = learningRate_ * error * result * (1.0 - result);
    for (int i = 0; i < outputLayer_.weights_.size(); i++) {
        outputLayer_.weights_.get(i).doubleValue() += delta * lastOutput_.get(i);
    }
    ArrayList<Double> hiddenDelta = new ArrayList<Double>();
    for (int j = 0; j < hiddenLayer_.size(); j++) {
        double HiddenDelta = delta * outputLayer_.weights_.get(j + 1) * lastOutput_.get(j + 1) * (1 - lastOutput_.get(j + 1));
        for (int l = 0; l < hiddenLayer_.get(j).weights_.size(); l++) {
            hiddenLayer_.get(j).weights_.get(l) += HiddenDelta * inputVector.get(l);
        }
    }
双序列(ArrayList输入向量,双期望输出){
双结果=输出(inputVector);
双重错误=期望输出-结果;
双增量=学习率误差*结果*(1.0-结果);
对于(int i=0;i
我得到的错误出现在两行尝试+=,每行都在for循环中(第一行和第三行),它告诉我应该有一个变量。我使用JDK 8和Intellij。我使用以下方法创建权重列表:

ArrayList<Double> weights_ = new ArrayList<Double>();
ArrayList权重\=new ArrayList();

每个列表都以类似的形式初始化。

表达式
outputLayer.weights\uu.get(i).doubleValue()
为只读。您无法为其赋值

首先将其值放入变量中:

double newWeight = outputLayer_.weights_.get(i).doubleValue() + delta * lastOutput_.get(i);
然后指定新的计算值:

outputLayer_.weights_.set(i, newWeight);

表达式
outputLayer\uu0.weights\u0.get(i).doubleValue()
是只读的。不能为其赋值

首先将其值放入变量中:

double newWeight = outputLayer_.weights_.get(i).doubleValue() + delta * lastOutput_.get(i);
然后指定新的计算值:

outputLayer_.weights_.set(i, newWeight);

你看到get和set之间有区别吗?这是不允许的。首先获取值,然后在其中添加任何值。我尝试使用:hiddenLayer\uz.get(j).weights\uz.get(l).doubleValue()+=HiddenDelta*inputVector.get(l);它给了我同样的错误。你看到get和set之间的区别了吗?这是不允许的。首先获取值,然后在其中添加任何值。我尝试使用:hiddenLayer_u2;。get(j)。weights_2;。get(l)。doubleValue()+=HiddenDelta*inputVector.get(l);它给了我同样的错误。