我可以制作一个神经网络,我只需要澄清偏见的实现。哪种方式更好:B1, B2, .. Bn
为每一层实现偏置矩阵,将矩阵与权重矩阵分开,或者通过将 a 添加1
到前一层输出(该层的输入)将偏置包含在权重矩阵中。在图像中,我问这个实现是否:
或者这个实现:
是最好的。谢谢
我可以制作一个神经网络,我只需要澄清偏见的实现。哪种方式更好:B1, B2, .. Bn
为每一层实现偏置矩阵,将矩阵与权重矩阵分开,或者通过将 a 添加1
到前一层输出(该层的输入)将偏置包含在权重矩阵中。在图像中,我问这个实现是否:
或者这个实现:
是最好的。谢谢
我认为最好的方法是有两个单独的矩阵,一个用于权重,一个用于偏差。为什么?:
我不相信计算负载会增加,因为W*x
并且W*x + b
应该等效于在 GPU 上运行。在数学和计算上它们是等价的。
更大的模块化。假设您想使用不同的初始化器(一、零、glorot ...)来初始化权重和偏差。通过拥有两个单独的矩阵,这很简单。
更易于阅读和维护。
通过将 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 替换它时失败了)。
在我看来,我认为为每一层分别实现偏置矩阵是可行的方法。这将创建许多您的模型必须学习的超参数,但它会给您的模型更多的收敛自由度。
欲了解更多信息,请阅读此。