指数衰减学习率

#coding:utf-8
#设损失函数 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)
#定义待优化参数,初值给10S
w = tf.Variable(tf.constant(5,dtype=tf.float32))
#定义损失函数loss
loss = tf.square(w+1)
train_step = tf.train.GradientDescentOptimizer(learing_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)
        learing_rate_val = sess.run(learning_rate)
        global_step_val = sess.run(global_step)
        w_val = sess.run(w)
        loss_val = sess.run(loss)
        print "After %s steps: global_step is %f, w is %f, learning_rate is %f, loss is %f." % (i,global_step_val,w_val,learing_rate_val,loss_val) 

原文地址:https://www.cnblogs.com/144823836yj/p/9135759.html

时间: 2024-08-30 17:29:19

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

tensorflow-正则化+指数衰减+滑动平均

#!/usr/bin/env python2 # -*- coding: utf-8 -*- """ Created on Tue Sep 19 09:42:22 2017 @author: myhaspl """ import tensorflow as tf from tensorflow.examples.tutorials.mnist import input_data INPUT_NODE=784 OUTPUT_NODE=10 LAYE

神经网络优化(二) - 学习率

1 学习率的基本定义 学习率learning_rate:每次参数更新的幅度. 简单示例: 假设损失函数 loss = ( w + 1 )2,则梯度为 参数 w 初始化为 5 ,学习率为 0.2 ,则 运行次数 参数w值 计算 1次 5 5-0.2*(2*5+2) = 2.6 2次 2.6 2.6-0.2*(2*2.6+2) = 1.16 3次 1.16 1.16-0.2*(2*1.16+2) = 0.296 4次 0.296   2 学习率的初步应用 2.1  学习率 0.2 时 # 已知损失函

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】四、深层神经网络

一.深度学习与深层神经网络 1.线性模型局限性 线性模型无论多少层,表达能力是一致的.可以通过激活函数实现非线性. 2.多层网络可以解决异或运算 二.损失函数定义 1.经典损失函数: 分类问题: 二分类:取0.5作为阈值 多分类:设置n个输出节点,每个对应该类的可能性.神经网络输出向量 ->概率分布:softmax. 两个向量的距离:交叉熵 - sigma  p_x log(q_x),其中p代表y,q代表yHat softmax: 最后加一层 y' = normed(e^y) reduce_me

人工智能实践:全连接网络基础

MNIST数据集 MNIST数据集:包含7万张黑底白字手写数字图片,其中55000张为训练集, 5000张为验证集,10000张为测试集.每张图片大小为28*28像素,图片中纯黑色像素值为0,纯白色像素值为1.数据集的标签是长度为10的一维数组,数组中每个元素索引号表示对应数字出现的概率. 在将mnist数据集作为输入喂入神经网络时,需先将数据集中每张图片变为长度 784一维数组,将该数组作为神经网络输入特征喂入神经网络. 例如: 一张数字手写体图片变成长度为784的一维数组[0.0.0.0.0

神经网络优化(一)

一.损失函数(loss) [前向传播的预测值y与已知答案y_的差距]: 1.优化目标:使loss达到最小值. 2.优化方法:均方误差(mse) 交叉熵(ce) 自定义 详解: 1.均方误差mse: 公式: 函数:loss_mse = tf.reduce_mean(tf.square(y_ - y)) tf.reduce_mean(x)  :表示计算所有元素的平均值. 2.交叉熵cs: 表征两个概率分布之间的距离 公式: 函数:ce = -tf.reduce_mean(y_*tf.log(tf.c

神经网络优化(二) - 搭建神经网络八股

为提高程序的可复用性,搭建模块化的神经网络八股 1 前向传播 前向传播就是设计.搭建从输入(参数 x ) 到输出(返回值为预测或分类结果 y )的完整网络结构,实现前向传播过程,一般将其放在 forward.py 文件中 前向传播需要定义三个函数(实际上第一个函数是框架,第二.三个函数是赋初值过程) def forward(x, regularizer): w = b = y = return y 函数功能: 定义前向传播过程,返回值为y 完成网络结构的设计,实现从输入到输出的数据通路 regu

实现手写体 mnist 数据集的识别任务

实现手写体 mnist 数据集的识别任务,共分为三个模块文件,分别是描述网络结构的前向传播过程文件(mnist_forward.py). 描述网络参数优化方法的反向传播 过 程 文件 ( mnist_backward.py ). 验证 模 型 准确 率 的  测试 过 程 文件(mnist_test.py). 前向传播过程文件(mnist_forward.py) 在前向传播过程中,需要定义网络模型输入层个数.隐藏层节点数.输出层个数,定义网络参数 w.偏置 b,定义由输入到输出的神经网络架构.

学习率衰减

在我们训练模型的时候,通常会遇到这种情况.我们平衡模型的训练速度和损失(loss)后选择了相对合适的学习率(learning rate).但是训练集的损失下降到一定的程度后就不在下降了,比如training loss一直在0.7和0.9之间来回震荡,不能进一步下降.如下图所示: 遇到这种情况通常可以通过适当降低学习率(learning rate)来实现.但是,降低学习率又会延长训练所需的时间. 学习率衰减(learning rate decay)就是一种可以平衡这两者之间矛盾的解决方案.学习率衰