【问题标题】:Dot product in neural network forward propagation神经网络前向传播中的点积
【发布时间】:2018-01-06 17:30:15
【问题描述】:

在神经网络前向传播中,在计算权重和输入的点积时,哪个先出现?方法 1) 还是方法 2)?

1) Weight.dot(Input) + Bias

2) Input.dot(Weight) + Bias

我已经看到了这两种方法。我很困惑。

【问题讨论】:

  • 我投票结束这个问题,因为它不是关于 help center 中定义的编程,而是关于 ML 理论和线性代数。

标签: machine-learning neural-network


【解决方案1】:

两者的区别在于权重和输入在点积中的顺序。然而,点积运算的commutative 特性表明顺序无关紧要;无论如何,结果都是一样的。

话虽如此,Weight.dot(Input) + Bias 是我最熟悉的。

从数学的角度来看,您可能会考虑使用Weight.dot(Input) 的方法,因为权重被视为系数,因此首先出现是最合乎逻辑的。

从程序化的角度来看,这在很大程度上取决于实施;最好在输入对象上调用dot() 方法而不是权重。

请注意dot productmatrix multiplication 不同。正如您所指出的,矩阵乘法不一定是可交换的。我主要使用的库 Tensorflow 使用 tf.matmul() 实现矩阵乘法。在神经网络的实现中,始终使用权重作为第二个参数,这表明在这种情况下,第二种方法将是首选。

【讨论】:

  • 谢谢。我同意当权重和输入是向量时,顺序无关紧要。但是当它们是矩阵时,顺序就会很重要。我认为也会影响梯度下降的推导方式。
  • @Bon 矩阵乘法和点积之间存在差异,我认为这引起了一些混乱。为了充分肯定,我查看了来自 Tensorflow 的示例,并且始终使用权重。我会在我的回答中说明这一点。
【解决方案2】:

两个向量的点积是可交换的。不管是 input.dot(weight) 还是 weight.dot(input)。

来源:http://www.citycollegiate.com/vectorXIh.htm

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-29
    • 2015-03-03
    • 2012-02-21
    • 2011-01-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多