我在这里有一个功能,它没有像我希望的那样工作。经过一些测试后,我发现它没有运行“else if”语句。 这是代码:
getWeights : function() {
weights = [];
for (var i = 0; i < hiddenLayer.length; i++) {
weights[i] = {};
for (var j = 0; j < Object.keys(hiddenLayer[i]).length * 3; j++) {
if (i == 0) {
for (var t = 0; t < input.length; t++) {
weights[i]["weightsSet" + j] = 1;
}
}
else {
weightCalc = Object.keys(hiddenLayer[i - 1]).length;
for (var u = 0; u < Object.keys(hiddenLayer[i]).length * weightCalc; u++) {
weights[i]["weightsSet" + j] = 1;
}
}
}
}
},
请帮我找出它无效的原因。 非常感谢任何帮助。
EDIT 删除了评论
编辑2 我解决了这个问题。感谢所有的帮助:)
答案 0 :(得分:0)
尝试按如下方式简化功能,然后调试以查看发生的情况:
getWeights : function() {
weights = [];
for (var i = 0; i < hiddenLayer.length; i++) {
weights[i] = {};
var limit = input.length;
if (i > 0) {
var weightCalc = Object.keys(hiddenLayer[i - 1]).length;
limit = Object.keys(hiddenLayer[i]).length * weightCalc;
}
for (var j = 0; j < Object.keys(hiddenLayer[i]).length * 3; j++) {
for (var t = 0; t < limit; t++) {
weights[i]["weightsSet" + j] = 1;
}
}
}
}
如需任何进一步的帮助,您需要在问题中添加与此代码相关的数据和预期输出。
答案 1 :(得分:-2)
检查第二个或第三个for循环可能是其运行的不定次数