首页 文章

在3层神经网络中初始化权重

提问于
浏览
2

因此,我正在学习SIMPLEST编写神经网络的方法,可以根据您的需要以多种方式进行修改,基本上就像模板一样 . 我发现我是trask的11行神经网络代码,并且权重初始化非常有意义:

syn0 = 2*np.random.random((3,1)) - 1

但是,当我查看它的扩展3层网络时,它看起来像这样:

syn0 = 2*np.random.random((3,4)) - 1
syn1 = 2*np.random.random((4,1)) - 1

我会理解syn1是否有点不同,但两者现在不同了!他没有解释它,只给出一个评论说,“用平均值0随机初始化我们的权重 . ”

有人可以向我解释这背后的数学推理吗?如果你愿意,你会疯狂,我从5开始就是一名数学家 .

1 回答

  • 1

    如果不同,你指的是 np.random.random() 的参数,那是因为你正在创建具有不同形状/尺寸的权重 . 在此示例中(忽略偏差),您尝试从维度3的输入转换为维度1的输出 . 对于一个图层,您需要形状 (3,1) . 对于两个图层,您需要形状 (3,n)(n,1) ,其中 n 是任何整数 . 这只是为了确保矩阵乘法有效 . 这里 n = 4 被选为隐藏层维度 .

相关问题