【发布时间】:2013-07-12 16:11:32
【问题描述】:
我无法弄清楚为什么以下程序中的 while 循环 总是在 1 次迭代后停止。基本上 weightsPrevious 是如何变成的 无论输入如何,都等于一次迭代后的权重。基本上我想要 跟踪两次连续运行的权重列表以及它们是否相等 我想退出。如果我使用具有固定大量迭代的 for 循环,我会看到 连续权重列表在第一次迭代中不相等,但 while 循环总是 一个后退出。任何帮助将不胜感激。
import random
def test(inputs, targets):
inputDim = len(inputs[0])
outputDim = len(targets[0])
if (len(inputs) == len(targets)):
dataSize = len(inputs)
else:
return
weights = [];
for i in range(inputDim + 1):
weights.append([]);
for j in range(outputDim):
weights[i].append(2*random.random() - 1);
weightsPrevious = 0
iterCount = 0
while (weightsPrevious != weights):
iterCount += 1
print("iteration", iterCount)
weightsPrevious = weights.copy()
for k in range(dataSize):
for j in range(outputDim):
weights[0][j] += 0.25*(targets[k][j] - 1)*(-1)
for i in range(inputDim):
weights[i + 1][j] += 0.25*(targets[k][j] - 1)*inputs[k][i]
return weights
test([[0,0],[0,1],[1,0],[1,1]],[[0],[1],[1],[1]])
编辑:即使删除最后一个 return 语句,我也得到相同的结果
【问题讨论】:
标签: python variable-alias