首页 > 解决方案 > 在 3 层神经网络中初始化权重

问题描述

因此,我正在学习编写神经网络的最简单方法,一种可以根据您的需要以多种方式进行修改的方法,基本上就像一个模板。我发现我是 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 岁开始就是数学家。

标签: pythonneural-network

解决方案


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


推荐阅读