【发布时间】:2016-05-15 02:54:55
【问题描述】:
当您尝试调用两个行向量的点积时,我试图了解 numpy 的工作原理。
我有这个代码:
X = np.array([[1,2,3]])
THETA = np.array([[1,2,3]])
print X.dot(THETA)
这给了我错误:
ValueError: shapes (1,3) and (1,3) not aligned: 3 (dim 1) != 1 (dim 0)
我认为你可以取两个行向量的点积但是得到:
x1*theta1 + x2*theta2 + x3*theta3
这也将转移到两个列向量的点积。
奇怪的是,我必须对第二个矩阵进行转置才能实际使用点积:
print X.dot(THETA.T)
array([[14]])
但是,我不认为这实际上会起作用,以及为什么它会起作用,而不是仅仅进行行点行操作。谁能帮我理解发生了什么?是不是我很久以前就忘记了的线性代数规则?
【问题讨论】:
-
为什么将向量表示为二维数组?向量是一维的。去掉多余的括号。
-
@Will 这是为机器学习任务计算感知器决策边界的公式的一部分。我的猜测是我们必须有一个正确的形状才能进行以后的计算。然而,我看到他使用代码
X.dot(THETA.T)来计算线性响应,我很难理解他为什么要转置它。