java - ArrayList.get(index) 不返回变量?

标签 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_ * 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);
        }
    }

我得到的错误是在尝试 += 的两行上,每行都在 for 循环内(第一行和第三行),它告诉我需要一个变量。我正在使用 JDK 8 和 Intellij。我使用以下内容来创建权重列表:

ArrayList<Double> weights_ = new ArrayList<Double>();

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

最佳答案

表达式outputLayer_.weights_.get(i).doubleValue()是只读的。您无法为其分配值。

首先将其值放入变量中:

double newWeight = outputLayer_.weights_.get(i).doubleValue() + delta * lastOutput_.get(i);

然后分配新的计算值:

outputLayer_.weights_.set(i, newWeight);

关于java - ArrayList.get(index) 不返回变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24173737/

相关文章:

java - 如何在 XML 中指定复杂类型的列表?

Java SneakyThrow 异常、类型删除

java - 咖啡因 Springboot 集成

java - 如何从 Java8 中的对象流中获取公共(public)项

java - 是否可以在 openJRE 没有 java FX 的环境中运行 JavaFX jar?

java - 如何处理 Collection 中返回类型的泛型类型

java - Web 服务互操作性

java - 如何在Java中对包含多个句点/点的字符串进行排序?

java - Android 解析 ArrayList

java - 列为 O(log(n))