Deep Learning Specialization课程笔记——超参数设定,批量标准化等

Hyperparameter tuning

学习速率alpha的设定十分重要。在随机选取时,不要用grid,而是随机选点,如下图,因为可能某个超参数比另一个效果更显著,所以随机选时可以给这个显著参数更多的机会(25个值而非5个值)。

之后可以小范围再进行密度更高的抽样,如下图:



另外,可以选取恰当的scale来研究超参数,比如0.0001-0.1,可以把尺度设为0.0001-0.001,0.001-0.01,0.01-0.1,在每个区域内有相同数量的取样(对数尺度上取样)。这是因为,在小范围内,算法对参数取值的改变可能会更加敏感。

超参数调整方法 1.babysitting a model  2.training  many models in parallel,决定条件根据资源够不够。


Batch Normalization


在神经网络中batch norm的使用是对z的操作(它应用于隐藏层,而不是输入项)


在编程框架中,它可能仅仅是一行代码,如在tensorflow里:tf.nn.batch-normalization

那么为什么要批量归一化呢?

协变量:如果我们学习了某种x-y映射,x分布变了,那么就要重新训练算法,尽管x-y映射的真函数没变。比如训练时使用黑猫,测试集用彩色猫,效果就不会好。

批量归一化可以使得:当神经网络在刷新前几层参数时,z21和z22的值会变化,但均值和方差会保持不变。

对神经网络的某一层来讲,这意味着:这一层适应前面层变化的力量被减弱)(因为它们被同一均值和方差限制),有一点独立于其他层的意思,将有效提升整个网络的学习速度。

BN的第二个效果:轻微的正则化。这是因为,归一化后减去均值仍有附加噪声。(使后续的隐藏单元不要过度依赖前面的隐藏单元)在隐藏单元上增加噪声可以解决过拟合问题,即起到正则化的效果。(但不要把BN当做正则化方法)

那么在测试集中,如果只测试一个实例,使用它的均值和方差就不太合理了,要怎么做呢?

当在进行训练时,平均数和方差实际上是用最小批的指数加权平均来计算的,用不同的最小批来训练神经网络时,保持一个移动均值来记录每一层的平均数和方差。最后在测试时,使用当前的z(非z_norm)和训练最新的平均数和方差。


Multi-class classification

softmax回归的一个例子:设猫为class 1,狗 class 2,小鸡 class 3,others class 0

这种情况下,输出层L的单元数为4,最后可以得到四种结果的概率。这时,各类分类的边界是线性的,如下:


softmax来自于和hardmax的对比:同一组数据的结果,softmax可能是[0.842 0.042 0.002 0.114]而hardmax为[1 0 0 0]


Tensorflow

import numpy
import tensorflow as tf
w=tf.Variable(0,dtype=tf.float32)
#cost=tf.add(tf.add(w**2,tf.multiply(-10.,w)),25)
cost=w**2-10*w+25
train = tf.train.GradientDescentOptimizer(0.01).minimize(cost)
init=tf.global_variables_initializer()
session=tf.Session()
session.run(init)
print(session.run(w))#输出为0.0
session.run(train)
print(session.run(w))#输出为0.1,一次迭代
for i in range(1000):
    session.run(train)
print(session.run(w))#输出为4.999,接近答案5(1000次迭代)

另一种输出相同的写法:

coefficients = np.array([[1.],[-20.],[100.]])
w=tf.Variable(0,dtype=tf.float32)
x=tf.placeholder(tf.float32,[3,1])
#cost=tf.add(tf.add(w**2,tf.multiply(-10.,w)),25)
#cost=w**2-10*w+25
cost=x[0][0]*w**2+x[1][0]*w+x[2][0]
session.run(train,feed_dict={x:coefficients})
print(session.run(w))#输出为0.1,一次迭代


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Sklearn和DeepLearning4j是两个不同的机器学习框架。Sklearn是一个流行的Python机器学习库,提供了各种常用机器学习算法的实现和工具。它包括了数据预处理、特征选择、模型评估等功能。而DeepLearning4j是一个用Java编写的深度学习库,主要用于建立和训练神经网络模型。 在你提供的引用中,引用是Sun等人在2016年的一篇论文,标题为"Deep Residual Learning for Image Recognition",该论文介绍了一种深度学习模型用于图像识别的方法。引用是一段代码,用于在Sklearn中进行平面数据分类的实验。引用则是一篇关于数据预处理的文章目录。 综上所述,Sklearn是一个Python机器学习库,而DeepLearning4j是一个Java深度学习库,它们分别用于不同的机器学习任务。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [深度残差收缩网络和极端随机森林.zip](https://download.csdn.net/download/qq_30803353/87761760)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [Coursera-Deep Learning Specialization 课程之(一):Neural Networks and Deep Learning-weak3编程作业](https://blog.csdn.net/leaeason/article/details/78262356)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [MachineLearning&DeepLearning:数据预处理](https://blog.csdn.net/qq_34262612/article/details/108392610)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值