深度学习模型的训练和优化及tensorflow基础(下)进阶作业
1.修改隐层数量,修改后会起到什么样的效果
设置隐藏层数量:修改隐层数量,就是增加神经网络的深度,根据前面神经元的个数以及本层设计的神经元个数确定w的shape,b的shape。
修改隐层数量也就是增加了神经网络的深度,达到的效果是使网络的抽象能力更强,学习到的特征更加复杂,结果的准确率越高。
一般认为,增加隐层数可以降低网络误差(也有文献认为不一定能有效降低),提高精度,但也使网络复杂化,从而增加了网络的训练时间和出现“过拟合”的倾向。一般来讲应设计神经网络应优先考虑3层网络(即有1个隐层)。一般地,靠增加隐层节点数来获得较低的误差,其训练效果要比增加隐层数更容易实现。
2.如何修改神经元个数,起到了什么样的效果
修改神经元个数,可以通过对网络结构中的w的shape,b的shape进行修改。
修改神经元个数相当于增加了权重参数的个数,适当的增加神经元个数可以提高网络的准确率和精度,但是过多的神经元也是导致过拟合的“元凶”。
3.如何在模型中添加L1/L2正则化,正则化起什么作⽤
l2_loss = tf.add_n(
[
tf.nn.l2_loss(w)
for w in tf.get_collection(tf.GraphKeys.TRAINABLE_VARIABLES)
]
)
然后将其乘以一个超参数再与交叉熵损失相加构成最终的损失函数
正则化的作用:防止神经网络过度学习数据而造成过拟合现象,可以限制权重w值的大小
4.使用不同的初始化方式对模型有什么影响
使用不同的初始化方式可以让训练之初的效果产生差异,比如让收敛速度更快。
特别的,对于含有局部极小值的情况,通过不同的初始化方式,有可能更加逼近最小值。