tensorflow学习笔记(4)-学习率


首先学习率如下图

所以在实际运用中我们会使用指数衰减的学习率

在tf中有这样一个函数

tf.train.exponential_decay(learning_rate, global_step, decay_steps, decay_rate, staircase=False, name=None)

首先看下它的数学表达式:decayed_learing_rate=learing_rate*decay_rate^(gloabl_steps/decay_steps)

  如图

  1. 第一个参数是学习率,
  2. /第二个参数是用来计算训练论数的,每次加一
  3. 第三个参数通常设为常数
  4. 第四个参数是学习率下降的倍率
  5. 第五个参数设为True则指数部分会采用取整的方式
# -*- coding: utf-8 -*-
"""
Created on Sun May 27 11:19:46 2018 @author: Administrator
"""
#设算是函数loss=(w+1)^2令w初始值为常熟10,反向传播求最优w,求最小loss对应的w的值
#使用指数衰减的学习率,在迭代初期有比较搞的下降速度,可以在比较小的训练轮数下更有收敛度 import tensorflow as tf
LEARNING_RATE_BASE=0.1 #最初学习率
LEARNING_RATE_DECAY=0.99#学习率衰减
LEARNING_RATE_STEP=1#喂入多少伦BATCH_SIZE后更新一次学习率,一般威威总样本数/BATCH_SIZE #运行了几轮BATCH_SIZE的计数器,初值给0,设为不被训练
global_step=tf.Variable(0,trainable=False)
#定义指数下降学习率
learning_rate=tf.train.exponential_decay(LEARNING_RATE_BASE,global_step,
LEARNING_RATE_STEP,LEARNING_RATE_DECAY
,staircase=True)
#定义待优化参数,初始值10
w=tf.Variable(tf.constant(5,dtype=tf.float32))
#定义损失函数
loss=tf.square(w+1)
#定义反向传播方法
train_step=tf.train.GradientDescentOptimizer(learning_rate).minimize(
loss,global_step=global_step)
#生成会话,训练40论
with tf.Session() as sess:
init_op=tf.global_variables_initializer()
sess.run(init_op)
for i in range(40):
sess.run(train_step)
#更新学习速率
learning_rate_val=sess.run(learning_rate)
global_step_val=sess.run(global_step)
w_val=sess.run(w)
loss_val=sess.run(loss)
print("在%s次训练后 global_step为%f权重为%f,学习率为%f,损失为%f"%(i,
global_step_val,
w_val,learning_rate_val,
loss_val))

运行结果如下,我们也可以改变学习率更改的速率或者其他参数来看对损失率的影响。

tensorflow学习笔记(4)-学习率的更多相关文章

  1. tensorflow学习笔记(2)-反向传播

    tensorflow学习笔记(2)-反向传播 反向传播是为了训练模型参数,在所有参数上使用梯度下降,让NN模型在的损失函数最小 损失函数:学过机器学习logistic回归都知道损失函数-就是预测值和真 ...

  2. tensorflow学习笔记——使用TensorFlow操作MNIST数据(2)

    tensorflow学习笔记——使用TensorFlow操作MNIST数据(1) 一:神经网络知识点整理 1.1,多层:使用多层权重,例如多层全连接方式 以下定义了三个隐藏层的全连接方式的神经网络样例 ...

  3. TensorFlow学习笔记——LeNet-5(训练自己的数据集)

    在之前的TensorFlow学习笔记——图像识别与卷积神经网络(链接:请点击我)中了解了一下经典的卷积神经网络模型LeNet模型.那其实之前学习了别人的代码实现了LeNet网络对MNIST数据集的训练 ...

  4. tensorflow学习笔记——使用TensorFlow操作MNIST数据(1)

    续集请点击我:tensorflow学习笔记——使用TensorFlow操作MNIST数据(2) 本节开始学习使用tensorflow教程,当然从最简单的MNIST开始.这怎么说呢,就好比编程入门有He ...

  5. TensorFlow学习笔记6-数值计算基础

    TensorFlow学习笔记6-数值计算 本笔记内容为"数值计算的基础知识".内容主要参考<Deep Learning>中文版. \(X\)表示训练集的矩阵,其大小为m ...

  6. Tensorflow学习笔记No.8

    使用VGG16网络进行迁移学习 使用在ImageNet数据上预训练的VGG16网络模型对猫狗数据集进行分类识别. 1.预训练网络 预训练网络是一个保存好的,已经在大型数据集上训练好的卷积神经网络. 如 ...

  7. Tensorflow学习笔记No.10

    多输出模型 使用函数式API构建多输出模型完成多标签分类任务. 数据集下载链接:https://pan.baidu.com/s/1JtKt7KCR2lEqAirjIXzvgg 提取码:2kbc 1.读 ...

  8. Tensorflow学习笔记2:About Session, Graph, Operation and Tensor

    简介 上一篇笔记:Tensorflow学习笔记1:Get Started 我们谈到Tensorflow是基于图(Graph)的计算系统.而图的节点则是由操作(Operation)来构成的,而图的各个节 ...

  9. Tensorflow学习笔记2019.01.22

    tensorflow学习笔记2 edit by Strangewx 2019.01.04 4.1 机器学习基础 4.1.1 一般结构: 初始化模型参数:通常随机赋值,简单模型赋值0 训练数据:一般打乱 ...

随机推荐

  1. 洛谷P4525 【模板】自适应辛普森法1(simpson积分)

    题目描述 计算积分 结果保留至小数点后6位. 数据保证计算过程中分母不为0且积分能够收敛. 输入输出格式 输入格式: 一行,包含6个实数a,b,c,d,L,R 输出格式: 一行,积分值,保留至小数点后 ...

  2. Windows系统常见问题

    1.Windows自动更新灰色不能修改HKEY_LOCAL_MACHINE/Software/Policies/Microsoft/WindowsWindowsUpdate的资料夹,在WindowsU ...

  3. 初识Java——第一章 初识Java

    1. 计算机程序: 为了让计算机执行某些操作或解决某个问题而编写的一系列有序指令的集合. 2. JAVA相关的技术:      1).安装和运行在本机上的桌面程序      2).通过浏览器访问的面向 ...

  4. 关于vue中mockjs的使用

    使用vue的时候,后台可能不能及时作出接口,那么就需要我们前端自己模拟数据,使用mockjs可以进行模拟数据. 首先安装mockjs,cnpm install mockjs --save-dev: 其 ...

  5. Java : Netty 入门案例

    接收端代码: public class IOServer { public static void main(String[] args) throws IOException, Interrupte ...

  6. Libcurl交叉编译

    目录 配置configure 执行make 取得su权限 开始安装 踩坑总结 配置configure ./configure --build=arm --host=mipsel-openwrt-lin ...

  7. MCUXpresso release build 时提示GFLIB等函数未引用的问题

    MCUXpresso release build 时提示 GFLIB 等函数未引用的问题 最近在使用 MCUXpresso 编译工程时选择 Debug(Debug build) 能顺利编译,但是选择 ...

  8. Nginx的try_files使用详解

    try_files 语法: try_files file ... uri 或 try_files file ... = code 默认值: 无 作用域: server location 按顺序检查文件 ...

  9. Java设计模式(20)——行为模式之命令模式(Command)

    一.概述 概念 类似C中的callback! UML简图 角色 客户端:创建具体命令,指定接收者 命令接口:声明命令的接口 具体命令:定义接收者和行为之间的弱耦合(execute执行方法) 请求者(I ...

  10. Android开发——Context类的各种细节问题

    0. 前言   Context相信所有的Android开发人员基本上每天都在接触,因为它太常见了.但实际上Context有太多小的细节并不被大家所关注,那么今天我们就来学习一下那些你所不知道的细节. ...