10

我可以制作一个神经网络,我只需要澄清偏见的实现。哪种方式更好:B1, B2, .. Bn为每一层实现偏置矩阵,将矩阵与权重矩阵分开,或者通过将 a 添加1到前一层输出(该层的输入)将偏置包含在权重矩阵中。在图像中,我问这个实现是否:

在此处输入图像描述

或者这个实现:

在此处输入图像描述

是最好的。谢谢

4

3 回答 3

1

我认为最好的方法是有两个单独的矩阵,一个用于权重,一个用于偏差。为什么?:

  • 我不相信计算负载会增加,因为W*x并且W*x + b应该等效于在 GPU 上运行。在数学和计算上它们是等价的。

  • 更大的模块化。假设您想使用不同的初始化器(一、零、glorot ...)来初始化权重和偏差。通过拥有两个单独的矩阵,这很简单。

  • 更易于阅读和维护。

于 2018-11-15T09:28:46.117 回答
0

通过将 1 添加到前一层输出(该层的输入)来包括权重矩阵中的偏差

这似乎是这里实现的内容:Machine Learning with Python: Training and Testing the Neural Network with MNIST data set in the paragraph “Networks with multiple hidden layers”。

我不知道这是否是最好的方法。(可能不相关但仍然:在提到的示例代码中,它与 sigmoid 一起工作,但当我用 ReLU 替换它时失败了)。

于 2018-11-13T11:15:10.500 回答
0

在我看来,我认为为每一层分别实现偏置矩阵是可行的方法。这将创建许多您的模型必须学习的超参数,但它会给您的模型更多的收敛自由度。

欲了解更多信息,请阅读

于 2018-11-15T12:03:55.693 回答