我开始学习机器学习。现在我试着玩tensorflow。
我常常看到这样的例子:
pred = tf.add(tf.mul(X, W), b)
我也在一个简单的numpy实现中看到了这样一条线。为什么始终使用x*W+b
代替W*x+b
?如果矩阵以这种方式成倍增加是否有优势?我看到有可能(如果X
,W
和b
被转置),但我没有看到优势。在数学课堂上,我们总是只使用Wx+b
。
非常感谢
答案 0 :(得分:5)
这就是原因:
默认情况下,w是权重向量,在数学中,向量被视为列,而不是行。
X是数据的集合。它是一个矩阵nxd(其中n是数据的数量,d是特征的数量)(大写字母X是矩阵n x d,小写字母只有1个数据1 x d矩阵)。
要正确地将两者相乘并在正确的特征中使用正确的权重,您必须使用X * w + b:
如果乘以w * X,则乘以(1 x d)*(n x d)并且没有任何意义。
答案 1 :(得分:1)
我也对此感到困惑。我想这可能是一个维度问题。对于* m维矩阵W和n维向量x,使用x W + b可以很容易地将其视为将m维特征映射到m维特征,即,您可以轻松地想到W作为n维 - > m维操作,其中W x + b(x现在必须是m维矢量)变为m维 - > n维操作,在我看来看起来不太舒服。 :d