我开始学习机器学习。现在我尝试使用TensorFlow进行一些实验。
我经常看到这样的例子:
pred = tf.add(tf.mul(X, W), b)
我也在一份普通的NumPy实现中看到了这样的代码行。为什么总是使用x*W+b
而不是W*x+b
?如果以这种方式进行矩阵乘法是否有优势?我知道这是可能的(如果X
、W
和b
被转置),但我看不出有什么优势。在学校的数学课上,我们总是只使用Wx+b
。
非常感谢
回答:
原因如下:
-
默认情况下,w是一个权重向量,在数学中向量被视为列而不是行。
-
X是一组数据。它是一个nxd的矩阵(其中n是数据的数量,d是特征的数量)(大写X是一个n x d的矩阵,小写x仅表示一个1 x d的矩阵)。
为了正确地乘以两者并在正确的位置使用正确的权重,你必须使用X*w+b:
- 使用X*w,你可以将每个特征乘以其对应的权重,并通过添加b在每个预测上加上偏置项。
如果你乘以w * X,你会得到一个(1 x d)*(n x d)的乘积,这没有意义。