学习率周期性变化

学习率周期性变化,能后解决陷入鞍点的问题,更多的方式请参考https://github.com/bckenstler/CLR 

base_lr:最低的学习率

max_lr:最高的学习率

step_size:(2-8)倍的每个epoch的训练次数。

scale_fn(x):自定义用来减少最高的学习率。

cycle = np.floor(1+iterations/(2*step_size))
x = np.abs(iterations/step_size - 2*cycle + 1)
lr= base_lr + (max_lr-base_lr)*np.maximum(0, (1-x))*scale_fn(x) 


一,学习率周期性变化
global_steps=tf.placeholder(shape=[1],dtype=tf.int64)
cycle = tf.cast(tf.floor(1. + tf.cast(global_steps, dtype=tf.float32) /(2 * 1000.)), dtype=tf.float32)x = tf.cast(tf.abs(tf.cast(global_steps, dtype=tf.float32) / 1000. - 2. * cycle + 1.), dtype=tf.float32)learning_rate = 1e-6 + (1e-3 - 1e-6) * tf.maximum(0., (1 - x))
with tf.Session() as sess:lr_list = []cycle_list=[]for i in range(8000):lr=sess.run(learning_rate,feed_dict={global_steps:[i]})lr_list.append(lr)cl = sess.run(cycle, feed_dict={global_steps: [i]})cycle_list.append(cl)plt.plot(lr_list)plt.show()print(cycle_list)
def lr_change(base_lr=1e-6, max_lr=1e-3, step_size=1000.,):lr_list=[]for clr_iterations in range(8000):cycle = np.floor(1 + clr_iterations / (2 * step_size))x = np.abs(clr_iterations / step_size - 2 * cycle + 1)lr=base_lr + (max_lr - base_lr) * np.maximum(0, (1 - x))#/(2 ** (cycle - 1))lr_list.append(lr)plt.plot(lr_list,'r')plt.xlabel('iterations')plt.ylabel('learning rate')plt.savefig('./data/learning_rate.jpg')plt.show()

二,学习率周期性衰减

global_steps=tf.placeholder(shape=[1],dtype=tf.int64)
cycle = tf.cast(tf.floor(1. + tf.cast(global_steps, dtype=tf.float32) /(2 * 1000.)), dtype=tf.float32)x = tf.cast(tf.abs(tf.cast(global_steps, dtype=tf.float32) / 1000. - 2. * cycle + 1.), dtype=tf.float32)learning_rate = 1e-6 + (1e-3 - 1e-6) * tf.maximum(0., (1 - x))/tf.cast(2**(cycle-1),dtype=tf.float32)
with tf.Session() as sess:lr_list = []cycle_list=[]for i in range(8000):lr=sess.run(learning_rate,feed_dict={global_steps:[i]})lr_list.append(lr)cl = sess.run(cycle, feed_dict={global_steps: [i]})cycle_list.append(cl)plt.plot(lr_list)plt.show()print(cycle_list)
def lr_change(base_lr=1e-6, max_lr=1e-3, step_size=1000.,):lr_list=[]for clr_iterations in range(8000):cycle = np.floor(1 + clr_iterations / (2 * step_size))x = np.abs(clr_iterations / step_size - 2 * cycle + 1)lr=base_lr + (max_lr - base_lr) * np.maximum(0, (1 - x))/(2 ** (cycle - 1))lr_list.append(lr)plt.plot(lr_list,'r')plt.xlabel('iterations')plt.ylabel('learning rate')plt.savefig('./data/learning_rate.jpg')plt.show() 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/493470.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

清华发布《人工智能AI芯片研究报告》,一文读懂人才技术趋势

来源:Future智能摘要:大数据产业的爆炸性增长下,AI 芯片作为人工智能时代的技术核心之一,决定了平台的基础架构和发展生态。 近日,清华大学推出了《 人工智能芯片研究报告 》,全面讲解人工智能芯片&#xf…

开发者账号申请 真机调试 应用发布

技术博客http://www.cnblogs.com/ChenYilong/ 新浪微博http://weibo.com/luohanchenyilong 开发者账号申请 真机调试 应用发布 技术博客http://www.cnblogs.com/ChenYilong/新浪微博http://weibo.com/luohanchenyilong 要解决的问题 • 开发者账号申请 • 真机调试 • 真机调…

单片机实验-DA实验

一、实验目的 1、了解 D/A 转换的基本原理。 2、了解 D/A 转换芯片 0832 的性能及编程方法。 3、了解单片机系统中扩展 D/A 转换的基本方法。 二.实验设备和器件 1.KEIL软件 2.实验箱 三.实验内容 利用 DAC0832,编制程序产生锯齿波、三角波、正弦…

进化三部曲,从互联网大脑发育看产业互联网的未来

摘要:从互联网的左右大脑发育看,产业互联网可以看做互联网的下半场,但从互联网大脑的长远发育看,互联网依然处于大脑尚未发育成熟的婴儿时期,未来还需要漫长的时间发育。参考互联网右大脑的发育历程,我们判…

pycharm远程连接服务器(docker)调试+ssh连接多次报错

一,登入服务器建docker nvidia-docker run -it -v ~/workspace/:/workspace -w /workspace/ --namefzh_tf --shm-size 8G -p 1111:22 -p 1112:6006 -p 1113:8888 tensorflow/tensorflow:1.4.0-devel-gpu bash 二,开ssh服务 apt-get update apt-get i…

Verilog HDL语言设计4个独立的非门

代码: module yanxu11(in,out); input wire[3:0] in; output reg[3:0] out; always (in) begin out[0]~in[0]; out[1]~in[1]; out[2]~in[2]; out[3]~in[3]; end endmodule timescale 1ns/1ns module test(); reg[3:0] in; wire[3:0] out; yanxu11 U(…

深度长文:表面繁荣之下,人工智能的发展已陷入困境

来源:36氪编辑:郝鹏程摘要:《连线》杂志在其最近发布的12月刊上,以封面故事的形式报道了人工智能的发展状况。现在,深度学习面临着无法进行推理的困境,这也就意味着,它无法让机器具备像人一样的…

Verilog HDL语言设计一个比较电路

设计一个比较电路,当输入的一位8421BCD码大于4时,输出为1,否则为0,进行功能仿真,查看仿真结果,将Verilog代码和仿真波形图整理入实验报告。 代码: module yanxu12(in,out); input wire[3:0] i…

交叉熵

1.公式 用sigmoid推导 上式做一下转换: y 视为类后验概率 p(y 1 | x),则上式可以写为: 则有: 将上式进行简单综合,可写成如下形式: 写成对数形式就是我们熟知的交叉熵损失函数了,这也是交叉熵…

第5章 散列

我们在第4章讨论了查找树ADT,它允许对一组元素进行各种操作。本章讨论散列表(hash table)ADT,不过它只支持二叉查找树所允许的一部分操作。 散列表的实现常常叫作散列(hashing)。散列是一种以常数平均时间执行插入、删除和查找的技术。但是,那…

谷歌自动驾驶是个大坑,还好中国在构建自己的智能驾驶大系统

来源:张国斌中国有堪称全球最复杂的路况,例如上图是去年投入使用的重庆黄桷湾立交桥上下共5层,共20条匝道,堪称中国最复杂立交桥之最,据称走错一个路口要在这里一日游,这样的立交桥如果让谷歌无人驾驶车上去…

Verilog HDL语言设计计数器+加法器

完成课本例题4.12,进行综合和仿真(包括功能仿真和时序仿真),查看仿真结果,将Verilog代码和仿真波形图整理入实验报告。 功能文件: module shiyan1(out,reset,clk); input reset,clk; output reg[3:0] ou…

自动驾驶寒冬与否,关键看“芯”

来源:智车科技摘要:2018年,全世界瞩目的半导体行业大事件无疑是高通收购恩智浦了。虽然,最终这笔收购案以失败结尾,但高通的收购恩智浦的意图就是出自于拓展汽车芯片市场。智能汽车芯片的重要性也得以突显。前不久&…

如何知道自己的CPU支持SLAT

因为WP8 SDK发布,很多WP8的开发者们也开始陆续安装WP8的SDK的,然而安装WP8的SDK有很多软件和硬件的要求,其中有一个就是——要求CPU支持二级地址转换(SLAT),如果CPU不支持二级地址转换的话,在电…

opencv基础知识及其一些例子

opencv官网 一.插值法 1.最近邻插值 上图可看出f(p)f(Q11),缺点可能出现明显的块状。 2.线性插值 3.双线性插值 通过线性插值确定R1和R2,最终在确定P 二.cv2.putText 图片添加文字 import cv2 img cv2.imread(caijian.jpg) font cv2.FONT_HERSHEY_SIMPLEXimgzi cv2.putT…

Verilog HDL语言设计实现过程赋值+译码器

完成课本例题6.11、6.12,进行综合和仿真(功能仿真),查看综合和仿真结果,整理入实验报告。 6.11 module shiyan21(in,clk,out1,out2); input clk,in; output out1,out2; reg out1,out2; always (posedge clk) beg…

【工业4.0】深度报告:独家解密工业4.0真正图谋?跟踪软件帝国的十年

来源:知识自动化要理解工业4.0,就避不开对西门子的研究;而要看懂西门子,不要去要看它的硬件,而要去看它的软件。数字化工厂只是水中花,真正的花朵不在你眼前,而在你身头。德国安贝格和成都的数字…

检测系列--RCNN系列

一.RCNN 框架: 1.selective search 2,区域预处理,尺寸缩放到227227 3.利用Alexnet(去掉最后分类层,4096维向量),做特征提取,一个物体一个SVM分类,(当时认为SVM比softmax分类好)bounding box回归 4.正负样本…

Verilog HDL语言设计实现D触发器+计数器

分别采用结构描述和行为描述方式设计一个基本的D触发器,在此基础上,采用结构描述的方式,用8个D触发器构成一个8位移位寄存器。进行功能仿真,查看结果,把上述内容整理到实验报告。(1)行为描述:单…

2018年全球十大新兴技术:细胞植入人体、营养人造肉……你想试试吗?

来源:光明日报摘要:在不久的将来,技术革新将如何改变我们的生活?人工智能将大幅提升新药物和新材料的开发速度;新型诊断工具将打造更先进的个性化医疗;如果你生病了,医生将可以在你体内植入活细…