我想简单地减去尺寸为784×1的2个矩阵 使用此代码
w2 = G.w - alpha *temp
print(w2.size)
但是w2
是一个784×784矩阵。为什么元素减法不能正常工作?
temp和G.w
都是784×1矩阵,alpha
是标量(alpha = 0.1
)
我在Windows 10上使用pycharm。
重新思考创建G.w和temp
答案 0 :(得分:0)
使用reshape()
:
w2 = G.w - alpha *temp.reshape(-1,1)
print(w2.shape)
(784,1)
或transpose()
(速度稍慢,见示例):
w2 = G.w - alpha *temp.transpose()
print(w2.shape)
(784,1)
<强>实施例强>
A = np.random.rand(100,1)
B = np.random.rand(1,100)
print(A.shape)
(100, 1)
print(B.shape)
(1, 100)
print((A - 0.1*B).shape)
(100, 100)
print((A - 0.1*B.reshape(-1,1)).shape) #3.86 µs per loop
(100, 1)
print((A - 0.1*B.transpose()).shape) #5.27 µs per loop
(100, 1)
答案 1 :(得分:0)
这可能是因为您的运营商不按照您的想法工作
对于例如如果temp
是数组[1,2,3]
且alpha
是2
那么
alpha*temp = [1,2,3,1,2,3]
而不是= [2,4,6]
你可以使用普通python数组的numpy数组
#!....initialize G ,w ,alpha, temp
w1 = G*w - alpha*temp
#w1 will be a 784x1 array
w2 = numpy.zeros((784,784))
for i in range(w1.shape[0]):
w2[i][0] = w1[i] #this will set first coloumn to w1