文章目录
全连接神经网络
步骤:
学习过程中特此记录一下遇到的问题:
问题一:
为什么初始化单层神经网络时,为
W1 = np.random.randn(n_h, n_x) * 0.01`
而构建多层神经网络时,为
parameters["W" + str(l)] = np.random.randn(layers_dims[l], layers_dims[l - 1]) / np.sqrt(layers_dims[l - 1])
解答:
1、在课程2『改善深层神经网络:超参数调试、正则化以及优化』中第一周的第11讲『神经网络的权重初始化』中有详细解释:
2、只有2层及以下神经网络的权重初始化才是*0.01,而多层神经网络都要 /np.sqrt(layers_dims[l-1]),即要除以其前一层神经元数量的平方根。
2、原因:因为
我们希望初始时要足够小,不能太大,否则会进入激活函数的饱和区使得梯度下降很慢,产生梯度消失。 但是如果第层神经元数量n越大,那么值必须设置越小,所以某层W值一定要同它的输入神经元数(即前一层神经元数)挂钩,因此才会有: