TensorFlow 的学习效率的指数衰减法

train_step = tf.train.GradientDescentOptimizer(x)

在之前的几个例子中都出现了如上代码。

这个优化算法的参数就是学习效率。那么这个学习效率是什么意思,到底取什么样的值比较好呢?

之前已经讲过,优化算法会反向修改函数中设置为Variable的变量值,使得误差逐步缩小。而这里的学习效率就是Variable更新变化的幅度。

如果幅度过大,参数就很可能跨过最优值,最后在最优值的两侧来回浮动。

如果幅度太小,又会大大的增加学习时间。

比较理想的做法是,在学习初期,将这个值设的大一些,当逐渐靠近最优解的时候,逐渐缩小学习效率使得获得的值更加靠近最优值。

TensorFlow就为我们提供了这种方法:指数衰减法

tf.train.exponential_decay

它实现的功能类似如下代码

decayed_learning_rate = learning_rate * decay_rate^(global_step/decay_steps)
  • decayed_learning_rate:  优化后的每一轮的学习效率。
  • learning_rate:               最初设置的学习效率。
  • decay_rate:                  衰减系数。
  • decay_steps:                衰减速度。

将demo1的代码稍作修改,加入今天我们讲到的函数,并且以图形化的方式输出。

我们会看到,原来0.1的学习效率,所产生的线与我们正确线在有一段距离的地方开始上下浮动,不再靠近我们正确值的线段。

而给学习效率加上指数衰减算法后,很快我们的生成的线段就与正确值几乎重合了。

import tensorflow as tf
import numpy as np
import matplotlib.pyplot as plt

x_data = np.random.rand(50).astype(np.float32)
y_data = x_data * 0.1 + 0.3;
###
Weights = tf.Variable(tf.random_uniform([1],-1.0,1.0))
biases = tf.Variable(tf.zeros([1]))

y = Weights*x_data + biases

loss=tf.reduce_mean(tf.square(y-y_data))

global_step = tf.Variable(0)

learning_rate = tf.train.exponential_decay(0.1,global_step,100,0.96,staircase=True)
learning_step = tf.train.GradientDescentOptimizer(learning_rate).minimize(loss,global_step=global_step)

init = tf.global_variables_initializer()
###

sess = tf.Session()
sess.run(init)

fig = plt.figure()
ax = fig.add_subplot(1,1,1)

plt.ion()
plt.show()

for step in range(300):
    sess.run(learning_step)
    if step % 20 == 0:
        y_value=sess.run(y)
        ax.scatter(x_data,y_data)
        ax.scatter(x_data,y_value)
        plt.pause(1)
时间: 2024-10-03 05:05:48

TensorFlow 的学习效率的指数衰减法的相关文章

TensorFlow 中的 tf.train.exponential_decay() 指数衰减法

exponential_decay(learning_rate, global_step, decay_steps, decay_rate, staircase=False, name=None) 使用方式为 tf.train.exponential_decay( ) 在 Tensorflow 中,exponential_decay()是应用于学习率的指数衰减函数. 在训练模型时,通常建议随着训练的进行逐步降低学习率.该函数需要`global_step`值来计算衰减的学习速率. 该函数返回衰减后

tensorflow:实战Google深度学习框架第四章02神经网络优化(学习率,避免过拟合,滑动平均模型)

1.学习率的设置既不能太小,又不能太大,解决方法:使用指数衰减法 例如: 假设我们要最小化函数 y=x2y=x2, 选择初始点 x0=5x0=5 1. 学习率为1的时候,x在5和-5之间震荡. import tensorflow as tf TRAINING_STEPS = 10 LEARNING_RATE = 1 x = tf.Variable(tf.constant(5, dtype=tf.float32), name="x") y = tf.square(x) train_op

tensorflow-正则化与指数衰减率

指数衰减率先用较大的学习率快速迭代,得到一个较优的解.然后,指数衰减法生效,随着迭代的继续逐步减少学习率,这样,可以得到更稳定的解.decayed_learning_rate=learning_rate*decay_rate^(global_step/decay_steps)decay_rate衰减系数decay_steps衰减速度当staircase为True,则global_step/decay_steps为整数(学习率下降阶梯),否则为浮点数(学习率下降平滑). globalStep=tf

深层神经网络常用方法

深度学习所示深层神经网络的代名词,重要特性:多层.非线性. 若只通过线性变换,任意层的神经网络模型与单层神经网络模型的表达能力没有任何区别,这是线性模型的局限性.对于线性可分的问题中,线性模型可解决,但在现实生活中,绝大部分的问题都是无法线性分割的.  感知机:单层神经网络.不能处理异或问题. 1.激活函数 将每一个神经元(神经网络的节点)的输出通过一个非线性函数便可使得整个神经网络的模型非线性化,这个非线性函数就是激活函数.  常用非线性激活函数:tf.nn.relu.tf.sigmoid.t

TensorFlow入门:线性回归

随机.mini-batch.batch(见最后解释) 在每个 epoch 送入单个数据点.这被称为随机梯度下降(stochastic gradient descent).我们也可以在每个 epoch 送入一堆数据点,这被称为 mini-batch 梯度下降,或者甚至在一个 epoch 一次性送入所有的数据点,这被称为 batch 梯度下降. 转自:https://cloud.tencent.com/developer/article/1004866 TensorFlow基本使用 TensorFl

Tensorflow 梯度下降实例

# coding: utf-8 # #### 假设我们要最小化函数 $y=x^2$, 选择初始点 $x_0=5$ # #### 1. 学习率为1的时候,x在5和-5之间震荡. # In[1]: import tensorflow as tf TRAINING_STEPS = 10 LEARNING_RATE = 1 x = tf.Variable(tf.constant(5, dtype=tf.float32), name="x") y = tf.square(x) train_op

Tensorflow一些常用基本概念与函数(四)

摘要:本系列主要对tf的一些常用概念与方法进行描述.本文主要针对tensorflow的模型训练Training与测试Testing等相关函数进行讲解.为'Tensorflow一些常用基本概念与函数'系列之四. 1.序言 本文所讲的内容主要为以下列表中相关函数.函数training()通过梯度下降法为最小化损失函数增加了相关的优化操作,在训练过程中,先实例化一个优化函数,比如 tf.train.GradientDescentOptimizer,并基于一定的学习率进行梯度优化训练: optimize

TensorFlow和深度学习新手教程(TensorFlow and deep learning without a PhD)

前言 上月导师在组会上交我们用tensorflow写深度学习和卷积神经网络.并把其PPT的參考学习资料给了我们, 这是codelabs上的教程:<TensorFlow and deep learning,without a PhD> 当然登入须要FQ,我也顺带巩固下,做个翻译.不好之处请包括指正. 当然须要安装python,教程推荐使用python3.假设是Mac,能够參考博主的另外两片博文,Mac下升级python2.7到python3.6, Mac安装tensorflow1.0 好多专业词

TensorFlow文本与序列的深度模型

TensorFlow深度学习笔记 文本与序列的深度模型 Deep Models for Text and Sequence 转载请注明作者:梦里风林Github工程地址:https://github.com/ahangchen/GDLnotes欢迎star,有问题可以到Issue区讨论官方教程地址视频/字幕下载 Rare Event 与其他机器学习不同,在文本分析里,陌生的东西(rare event)往往是最重要的,而最常见的东西往往是最不重要的. 语法多义性 一个东西可能有多个名字,对这种re