tf.train.exponential_decay()

tf.train.exponential_decay()
功能:实现指数衰减学习率;先使用一个较大的学习率来快速得得到一个比较优的解,然后随着迭代的继续逐步减小学习率。
例子:

import tensorflow as tf;    
import numpy as np;    

#step1: 创建数据类型 
#定义占位符;运行时必须传入值  
x = tf.placeholder(tf.float32, shape=[None, 1], name='x')  
y = tf.placeholder(tf.float32, shape=[None, 1], name='y') 

#创建变量w;其初始化值为0.0 
w = tf.Variable(tf.constant(0.0))  

#设置存储训练轮数的变量
#意思是第一次训练、第二次训练。。。
global_steps = tf.Variable(0, trainable=False) 

#设置指数衰减学习率
#tf.train.exponential_decay(learning_rate, global_steps, decay_steps, decay_rate, staircase=True/False):
#实现指数衰减学习率;先使用一个较大的学习率来快速得得到一个比较优的解,然后随着迭代的继续逐步减小学习率。
#learning_rate-学习率
#global_steps-训练轮数
#decay_steps-完整的使用一遍训练数据所需的迭代轮数;=总训练样本数/batch
#decay_rate-衰减速度
#staircase-衰减方式;=True,那就表明每decay_steps次计算学习速率变化,更新原始学习速率;=alse,那就是每一步都更新学习速率。
learning_rate = tf.train.exponential_decay(0.1, global_steps, 10, 0.5, staircase=False) 

#step2:定义损失函数 
#tf.pow-求幂函数
loss = tf.pow(w*x-y, 2)  

#step3: 定义优化函数 
train_step = tf.train.GradientDescentOptimizer(learning_rate).minimize(loss, global_step=global_steps)  

with tf.Session() as sess:  
    sess.run(tf.global_variables_initializer())  
    for i in range(10):  
        sess.run(train_step, feed_dict={x:np.linspace(1,2,10).reshape([10,1]),\
                                        y:np.linspace(1,2,10).reshape([10,1])})  
        print(sess.run(learning_rate))
        print(sess.run(global_steps))

结果:
0.0933033
1
0.0870551
2
0.0812252
3
0.0757858
4
0.0707107
5
0.0659754
6
0.0615572
7
0.0574349
8
0.0535887
9
0.05
10

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值