gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 17:10:01 26 4
gpt4 key购买 nike

我正在用 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com