2016-11-16 391 views
3

我开始学习机器学习。现在我试着玩tensorflow。机器学习:为什么xW + b而不是Wx + b?

经常看见的例子是这样的:

pred = tf.add(tf.mul(X, W), b) 

我还看到在一个普通的numpy的实现这样的线。为什么总是使用x*W+b而不是W*x+b?如果矩阵以这种方式相乘,是否有优势?我发现这是可能的(如果X,Wb转置),但我没有看到一个优势。在数学课的学校,我们总是只用Wx+b

非常感谢您

回答

5

就是这个原因:

  • 默认情况下,w是权重的矢量和数学向量被视为列,而不是一行。

  • X是数据的集合。它是一个矩阵nxd(其中n是数据的数量,d是特征的数量)(大写字母X是矩阵n x d,小写字母只有1个数据1 x d矩阵)。

要正确繁殖都和正确的功能,必须使用X * W + 20b使用正确的重量:

  • 随着X *宽你mutliply其相应的权重,并通过增加每一个功能b你在每个预测中加上偏差项。

如果您乘以w * X您乘以a(1 x d)*(n x d)并且它没有意义。

+0

如果X是数据记录(列是记录并且行是要素)和W的权重(行是输入要素的数量,列是输出要素)的集合,那么它也会工作。输出是一个矩阵(列是记录,行是特征)。 cours ethe偏差必须添加,但这是没有问题的。我不能认为这样的缺点吗?谢谢 –

+0

在X中每一行都是一个记录,每一列都有一个特征,用这个记法可以使用X * W。如果你使用了不同的表示法(例如在每一行的y行和每一列记录中),你必须使用W'* X(注意W'表示W的转置,因为你需要W是行而不是列) – Rob

1

我也对此感到困惑。我想这可能是一个维度问题。对于* m维矩阵W和n维向量x,可以很容易地将W + b看作是将n维特征映射到m维特征的过程,也就是说,您可以轻易地将W视为n维 - > m维操作,其中W + x + b(x必须是m维向量)变成m维 - > n维操作,在我看来,这看起来不太舒服。 :D

+0

很高兴看到有其他人也与此混淆:)感谢您的解释:)! –

+0

这并没有真正回答这个问题。如果您有不同的问题,可以通过单击[提问](http://stackoverflow.com/questions/ask)来提问。您还可以[添加赏金](http://stackoverflow.com/help/privileges/set-bounties)在您拥有足够的[声誉](http://stackoverflow.com/help/)时吸引更多人关注此问题什么声誉)。 - [发表评论](/ review/low-quality-posts/14390889) –

+1

@KevinMeier我已经看到很多使用_xW [:,i] _的纸张来表示映射功能的第i个元件,所以我在网上搜索在机器学习中发现是否使用_xW + b_而不是_Wx + b_是很常见的。但是,我找不到合适的答案。希望有一天能解释这个问题:)! – Yugnaynehc

相关问题