Numpy数组的行为不符合预期

时间:2018-01-08 07:05:13

标签: python python-2.7 numpy

所以我编写了这个python程序,其中一部分是它的行为,就像我想的那样。我哪里错了?任何建议的纠正都是最有责任的。

print(grad2)
print(xorTrainingWeights[1:3] - learningRate * grad2[1:3])
xorTrainingWeights[1:3] = xorTrainingWeights[1:3] - learningRate * grad2[1:3]
print(xorTrainingWeights[1:3])

这里变量的值是:

xorTrainingWeights = np.array([1, 2, 3])
learningRate = 0.01
grad2 = np.dot(xorTrainingExamples.transpose(), delta2) / 4

print语句的输出如下:

第一次迭代:

[ 0.41579347  0.23752538  0.24488529]
[ 1.99762475  2.99755115]
[1 2]

第二次迭代:

[ 0.38661089  0.21570272  0.23364698]
[ 0.99784297  1.99766353]
[0 1]

那么究竟什么是错的。即使我减去grad2乘以learningRate时它将是一个小值,但该数字仍然被置于最低整数。

1 个答案:

答案 0 :(得分:3)

您的问题是xorTrainingWeightsdtype=int,因此重新分配时您的值会被覆盖。

检查一下:

test = np.array([1,2,3])
print(test)
test[1:3] = test[1:3] - 0.001
print(test)

test = np.array([1.,2.,3.])
# or test = np.array([1,2,3], dtype=float)
# or test = test.astype(float)
print(test)
test[1:3] = test[1:3] - 0.001
print(test)

给出:

[1 2 3]
[1 1 2]
[ 1.  2.  3.]
[ 1.     1.999  2.999]