我可以建立一个神经网络,我只需要澄清偏见的实现。哪种方法更好:在权重矩阵或各自独立的矩阵中为每一层实现偏差矩阵B1, B2, .. Bn
,通过添加{{1 }}到上一层的输出(该层的输入)。在图像中,我正在询问是否实现:
或此实现:
是最好的。谢谢
答案 0 :(得分:1)
我认为最好的方法是有两个单独的矩阵,一个矩阵用于重量测量,另一个矩阵用于偏差。为什么? :
我不相信计算量会增加,因为W*x
和W*x + b
应该等效地在GPU上运行。在数学和计算上它们是等效的。
更大的模块化。假设您要使用不同的初始值设定项(1、0和glorot等)来初始化权重和偏差。通过具有两个单独的矩阵,这很简单。
更易于阅读和维护。
答案 1 :(得分:0)
通过将上一层输出(该层的输入)加1来在权重矩阵中包括偏差。
这似乎是在此处实现的:Machine Learning with Python: Training and Testing the Neural Network with MNIST data set在“具有多个隐藏层的网络”段落中。
我不知道这是否是最好的方法。 (也许不相关,但仍然如此:在上述示例代码中,它可以与sigmoid一起使用,但是当我用ReLU替换时失败了。)
答案 2 :(得分:0)
在我看来,我认为分别为每一层实现偏差矩阵是可行的方法。这将创建许多模型必须学习的超参数,但它将为模型提供更多的收敛自由。
有关更多信息,请阅读this。