gpt4 book ai didi

numpy - 值错误 : matrices are not aligned

转载 作者:行者123 更新时间:2023-12-04 23:20:47 25 4
gpt4 key购买 nike

我有以下代码:

dotp = np.dot(X[i], w)
mult = -Y[i] * dotp
lhs = Y[i] * X[i]
rhs = logistic(mult)
s += lhs * rhs

它向我抛出以下错误(为简洁起见被截断):
  File "/Users/leonsas/Projects/temp/learners/learners.py", line 26, in log_likelihood_grad
s += lhs * rhs
File "/usr/local/lib/python2.7/site-packages/numpy/matrixlib/defmatrix.py", line 341, in __mul__
return N.dot(self, asmatrix(other))

`ValueError: matrices are not aligned`

我希望 lhs 是一个列向量,而 rhs 是一个标量,这样操作应该可以工作。
为了调试,我打印了尺寸:
    print "lhs", np.shape(lhs)
print "rhs", rhs, np.shape(rhs)

哪些输出:
lhs (1, 18209)
rhs [[ 0.5]] (1, 1)

因此,它们似乎与乘法兼容。关于我做错了什么的任何想法?

编辑:有关我正在尝试做什么的更多信息。

此代码用于实现对数似然梯度来估计系数。

enter image description here

哪里 z是权重与 x 值的点积。

我试图实现这一点:
def log_likelihood_grad(X, Y, w, C=0.1):
K = len(w)
N = len(X)
s = np.zeros(K)

for i in range(N):
dotp = np.dot(X[i], w)
mult = -Y[i] * dotp
lhs = Y[i] * X[i]
rhs = logistic(mult)
s += lhs * rhs

s -= C * w

return s

最佳答案

你有一个矩阵 lhs形状(1, 18209)rhs形状(1, 1)而你正试图将它们相乘。因为他们来自 matrix类型(从堆栈跟踪中可以看出),*运算符转换为 dot .矩阵乘积仅适用于第一个矩阵中的列数和第二个矩阵中的行数相等的情况,而在您的情况下它们不是( 182091 )。因此错误。

如何修复它:检查代码背后的数学并修复公式。也许您忘记转置第一个矩阵或类似的东西。

关于numpy - 值错误 : matrices are not aligned,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27515841/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com