热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

跟我学算法吴恩达老师(超参数调试,batch归一化,softmax使用,tensorflow框架举例)...

1.在我们学习中,调试超参数是非常重要的。超参数的调试可以是a学习率,(β1和β2,ε)在Adam梯度下降中使

1. 在我们学习中,调试超参数是非常重要的。

超参数的调试可以是a学习率,(β1和β2,ε)在Adam梯度下降中使用, layers层数, hidden units 隐藏层的数目,

learning_rate_dacay 学习率衰减, mini-batch size 每次迭代的样本数目

当需要调节的参数的数目较多时,我们通常使用随机参数选择进行参数调节.

比如学习率的范围为0.0001 - 1 , 在0.0001-0.001之间,样本随学习率的变化较大,因此有必要增加这部分的权重,我们使用log函数

a_1 = log10(0.0001) = -4 

a_2 = log10(1) = 0 

r = -4 * np.random.randn()  (生成-4-0的数字)

a = 10^r 来决定学习率

还有β1的范围为0.9-0.999

1-β1= 0.0001-0.1

β_1 = log10(0.0001) = -4 

β_2 = log10(0.1) = -1 

r = -4*np,random.randn(0.25, 1)

 β1 =1 -  10^r 

2. batch归一化

 

μ = 1/mΣZ(i)  #表示输入样本的所有均值

δ2 = 1/mΣ(Z(i) - μ) #表示方差

Z(i) = (Z(i) - μ) / (np.sqrt(δ2 + ε))  #进行归一化操作 ε防止分母出现0的出现  

Z(i) = γ*Z(i) + β   # 为了使得Z(i) 的取值范围更大,在后续的激活函数中表现得更多样

此时的反向传播的训练参数为

w := w - a * dw 

γ := γ - a * dγ

β := β - a * dβ

由于进行了去均值的操作,所以使得b就被消去了

batch归一化的作用,使得前层数据不会变得那么多变,使得当前层的训练变得更加独立和容易,对前一层的依赖也就越少,

由于计算的均值和标准差,使得一定的噪音信号产生,有点类似dropout,使得训练算法不过分依赖某些神经元,起到了轻微的正则化的作用

下面是tensorflow实现的,使用的是RMS梯度下降

conv_bn = tf.contrib.layers.batch_norm(conv, momentum, scale=True, epsilon=1e-5,is_training = self.training, scope=names)
scale是指系数λ。
实际在搭建好包含BN层的网络之后,进行训练时需要注意使用如下模式代码:rmsprop
= tf.train.RMSPropOptimizer(learning_rate= self.lr)
with tf.control_dependencies(self.update_ops):self.train_rmsprop
= rmsprop.minimize(loss)

 

3.softmax使用

 

对于logistics回归,是一个参数输入一个参数输出, 

对于softmax实现的是一个多分类问题,输入是1*4, 输出也是1*4 

Z[l] = W[l] * a[l-1] + b[l]

t = e^(Z[l])

a(i)[l] = t(i) / Σ(t(i))

举例说明

z[l] = [5, 2, -1, 3]

t = [148.4, 7.4, 0.4, 20.1]

a = [0.842, 0.042, 0.002, 0.114]

我们在做这类标签时,

y = [0, 1, 0, 0] 

y_1 = [0.3, 0,2, 0.1, 0.4]  #y_1表示softmax的输出值

loss(y_1, y) =  - Σy*logy_1 = -logy_1(2) 即保证y_1的第二数越来越大

y = [y[1], y[2], y[m]]  # m 表示样本的个数, y的样本shape为(4, m)

j = 1/mΣloss(y_1, y)  # 总的损失函数

 

 

4. tensorflow 框架举例

import numpy as np
import tensorflow as tfcoffitent = np.array([[0.1], [0.2], [0.3]])
w
= tf.Variable(0, dtype=tf.float32)
# cost = (tf.add(w**2, tf.multiply(-10, w)), 25)
#
表示迟点输入x
x = tf.placeholder(tf.float32, [3, 1])
# cost = w**2 - 10*w + 25
cost = x[0][0]*w**2 + x[1][0]*w + x[2][0]train = tf.train.GradientDescentOptimizer(0.001).minimize(cost)init = tf.global_variables_initializer()
session
= tf.Session()
session.run(init)
print(session.run(w))session.run(train, feed_dict={x:coffitent})
print(session.run(w))for i in range(1000):# feed_dict 表示需要输入的参数session.run(train, feed_dict={x:coffitent})
print(session.run(w))

 

转:https://www.cnblogs.com/my-love-is-python/p/9720413.html



推荐阅读
  • Python瓦片图下载、合并、绘图、标记的代码示例
    本文提供了Python瓦片图下载、合并、绘图、标记的代码示例,包括下载代码、多线程下载、图像处理等功能。通过参考geoserver,使用PIL、cv2、numpy、gdal、osr等库实现了瓦片图的下载、合并、绘图和标记功能。代码示例详细介绍了各个功能的实现方法,供读者参考使用。 ... [详细]
  • 不同优化算法的比较分析及实验验证
    本文介绍了神经网络优化中常用的优化方法,包括学习率调整和梯度估计修正,并通过实验验证了不同优化算法的效果。实验结果表明,Adam算法在综合考虑学习率调整和梯度估计修正方面表现较好。该研究对于优化神经网络的训练过程具有指导意义。 ... [详细]
  • 本文由编程笔记#小编为大家整理,主要介绍了logistic回归(线性和非线性)相关的知识,包括线性logistic回归的代码和数据集的分布情况。希望对你有一定的参考价值。 ... [详细]
  • 使用正则表达式爬取36Kr网站首页新闻的操作步骤和代码示例
    本文介绍了使用正则表达式来爬取36Kr网站首页所有新闻的操作步骤和代码示例。通过访问网站、查找关键词、编写代码等步骤,可以获取到网站首页的新闻数据。代码示例使用Python编写,并使用正则表达式来提取所需的数据。详细的操作步骤和代码示例可以参考本文内容。 ... [详细]
  • 开源Keras Faster RCNN模型介绍及代码结构解析
    本文介绍了开源Keras Faster RCNN模型的环境需求和代码结构,包括FasterRCNN源码解析、RPN与classifier定义、data_generators.py文件的功能以及损失计算。同时提供了该模型的开源地址和安装所需的库。 ... [详细]
  • Python使用Pillow包生成验证码图片的方法
    本文介绍了使用Python中的Pillow包生成验证码图片的方法。通过随机生成数字和符号,并添加干扰象素,生成一幅验证码图片。需要配置好Python环境,并安装Pillow库。代码实现包括导入Pillow包和随机模块,定义随机生成字母、数字和字体颜色的函数。 ... [详细]
  • 本文整理了315道Python基础题目及答案,帮助读者检验学习成果。文章介绍了学习Python的途径、Python与其他编程语言的对比、解释型和编译型编程语言的简述、Python解释器的种类和特点、位和字节的关系、以及至少5个PEP8规范。对于想要检验自己学习成果的读者,这些题目将是一个不错的选择。请注意,答案在视频中,本文不提供答案。 ... [详细]
  • 本文介绍了lua语言中闭包的特性及其在模式匹配、日期处理、编译和模块化等方面的应用。lua中的闭包是严格遵循词法定界的第一类值,函数可以作为变量自由传递,也可以作为参数传递给其他函数。这些特性使得lua语言具有极大的灵活性,为程序开发带来了便利。 ... [详细]
  • Java实战之电影在线观看系统的实现
    本文介绍了Java实战之电影在线观看系统的实现过程。首先对项目进行了简述,然后展示了系统的效果图。接着介绍了系统的核心代码,包括后台用户管理控制器、电影管理控制器和前台电影控制器。最后对项目的环境配置和使用的技术进行了说明,包括JSP、Spring、SpringMVC、MyBatis、html、css、JavaScript、JQuery、Ajax、layui和maven等。 ... [详细]
  • 开发笔记:加密&json&StringIO模块&BytesIO模块
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了加密&json&StringIO模块&BytesIO模块相关的知识,希望对你有一定的参考价值。一、加密加密 ... [详细]
  • CSS3选择器的使用方法详解,提高Web开发效率和精准度
    本文详细介绍了CSS3新增的选择器方法,包括属性选择器的使用。通过CSS3选择器,可以提高Web开发的效率和精准度,使得查找元素更加方便和快捷。同时,本文还对属性选择器的各种用法进行了详细解释,并给出了相应的代码示例。通过学习本文,读者可以更好地掌握CSS3选择器的使用方法,提升自己的Web开发能力。 ... [详细]
  • 本文介绍了计算机网络的定义和通信流程,包括客户端编译文件、二进制转换、三层路由设备等。同时,还介绍了计算机网络中常用的关键词,如MAC地址和IP地址。 ... [详细]
  • 本文介绍了在处理不规则数据时如何使用Python自动提取文本中的时间日期,包括使用dateutil.parser模块统一日期字符串格式和使用datefinder模块提取日期。同时,还介绍了一段使用正则表达式的代码,可以支持中文日期和一些特殊的时间识别,例如'2012年12月12日'、'3小时前'、'在2012/12/13哈哈'等。 ... [详细]
  • Python爬虫中使用正则表达式的方法和注意事项
    本文介绍了在Python爬虫中使用正则表达式的方法和注意事项。首先解释了爬虫的四个主要步骤,并强调了正则表达式在数据处理中的重要性。然后详细介绍了正则表达式的概念和用法,包括检索、替换和过滤文本的功能。同时提到了re模块是Python内置的用于处理正则表达式的模块,并给出了使用正则表达式时需要注意的特殊字符转义和原始字符串的用法。通过本文的学习,读者可以掌握在Python爬虫中使用正则表达式的技巧和方法。 ... [详细]
  • 本文详细介绍了Python中正则表达式和re模块的使用方法。首先解释了转义符的作用,以及如何在字符串中包含特殊字符。然后介绍了re模块的功能和常用方法。通过学习本文,读者可以掌握正则表达式的基本概念和使用技巧,进一步提高Python编程能力。 ... [详细]
author-avatar
我叫梁家耀_312
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有