Press "Enter" to skip to content

深度神经网络最终模型参数

本站内容均来自兴趣收集,如不慎侵害的您的相关权益,请留言告知,我们将尽快删除.谢谢.

改进深度神经网络-初始化:

 

训练神经网络需要指定权值的初始值。选择好的初始化方法可以提高学习效率和准确性。

 

如果您正在阅读我以前的教程分析,您可能会按照我的权重初始化说明进行操作,到目前为止,它已经成功了。但是我们如何选择另一个神经网络的初始化呢?在这一部分中,我将向您展示不同的初始化方法会导致不同的结果。

 

选择合适的初始化可以加快梯度下降的收敛速度,增加梯度下降收敛到较低训练误差的几率。

 

我将使用我上一个教程中的代码,在那里我们用来对圆进行分类。在我们使用随机权重初始化之前,现在我们尝试“他初始化”,这是以何等人2015年的第一作者的名字命名的。(如果您听说过“Xavier Initialization”,这是相似的,除了Xavier Initialization对以下各项的权重W[l]使用比例因子:

在此之前,我们使用了以下代码:

 

唯一不同的是,它不是将np.随机.randn(..,..)相乘。乘以0.01,我们将它乘以sqrt(2/上一层的维度),这是“he”初始化对RELU激活的层建议的:

 

首先,让我们用随机初始化来测试我们的结果,以便我们可以比较差异:

从上面的图可以看出,只有经过8000步的训练,成本才会下降。

分类结果对我们来说是相当好的。

从上面的图中,我们可以看到成本几乎是立即下降的;我们不需要等待8000步就能看到改善。

分类结果比使用随机初始化好1%。

 

结论:

 

我们应该记住,不同的参数初始化方法会导致不同的结果。随机初始化用于打破对称性,并确保不同的隐藏单元可以学习不同的东西。

 

不要初始化过大的值,但是使用过大的随机数初始化会减慢优化速度。正如您所看到的,“he”初始化对于具有RELU激活的网络工作得很好。

 

这是最后一期深度学习教程。为了获得更好的结果,您可以通过实施L2正则化、丢弃和梯度检查来优化此深度神经网络。您可以尝试使用Momentum、ADAM优化器或使用小批量实施培训来进行优化。

 

完整的教程代码和猫与狗的图像数据集可以在我的GitHub页面上找到。 GitHub

 

最初发表于https://pylessons.com/Deep-neural-networks-part6 https://pylessons.com/Deep-neural-networks-part6

 

Be First to Comment

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注