tensorflow-正则化与指数衰减率

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

globalStep=tf.Variable(0)
learningRate=tf.train.exponential_decay(0.1,globalStep,100,0.96,staircase=True)
learningStep=tf.train.GradientDescentOptimizer(learningRate).minimize(losss,global_step=globalStep)

正则化
正则化可避免过拟合,模型的复杂程度,由神经网络的所有参数决定,w和b,一般是由权重w决定。
1.L1正则化
L1:

L2:

L1使参数变得稀疏,很多参数会为0,这样,可以达到类似特征提取的作用。L1不可导。
L2公式可导,所以对其优化更简洁,但其没有稀疏作用。
可将2个正则化一起使用

#L2
loss=tf.reduce_mean(tf.square(y_-y)+tf.contrib.layers.l2_regularizer(lambda)(w)
#lambda为正则化权重,即:R(w)*lambda
#L1
loss=tf.reduce_mean(tf.square(y_-y)+tf.contrib.layers.l1_regularizer(lambda)(w)

原文地址:http://blog.51cto.com/13959448/2321783

时间: 2024-10-10 13:38:02

tensorflow-正则化与指数衰减率的相关文章

TensorFlow(三)---------正则化

TensorFlow正则化经常被用于Deep-Learn中,泛化数据模型,解决过拟合问题.再深度学习网络只有在有足够大的数据集时才能产生惊人的学习效果.当数据量不够时,过拟合的问题就会经常发生.然而,只选取我们需要的数据量的模型,就会非常难以继续进行泛化和优化.所以正则化技术孕育而生~~~~~~~ 正则化的基本思想是向损失函数添加一个惩罚项用于惩罚大的权重,隐式的减少自由参数的数量.可以达到弹性地适应不同数据量训练的要求而不产生过拟合的问题.~~~~~~ 1 #正则化 2 import tens

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

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

Adam优化算法

深度学习常常需要大量的时间和计算机资源进行训练,这也是困扰深度学习算法开发的重大原因.虽然我们可以采用分布式并行训练加速模型的学习,但需要的计算资源并没有丝毫减少.而唯有需要资源更少.令模型收敛更快的最优化算法,才能从根本上加速机器的学习速度和效果,Adam算法正为此而生! Adam优化算法是随机梯度下降算法的扩展式,进来其广泛的应用与深度学习的应用中,尤其是计算机视觉和自然语言处理等任务.本文分为两部分,前一部分简要介绍了Adam优化算法的特性和其在深度学习中的应用,后一部分从Adam优化算法

Adam 算法

简介 Adam 是一种可以替代传统随机梯度下降(SGD)过程的一阶优化算法,它能基于训练数据迭代地更新神经网络权重.Adam 最开始是由 OpenAI 的 Diederik Kingma 和多伦多大学的 Jimmy Ba 在提交到 2015 年 ICLR 论文(Adam: A Method for Stochastic Optimization)中提出的. 「Adam」,其并不是首字母缩写,也不是人名.它的名称来源于适应性矩估计(adaptive moment estimation).在介绍这个

五个常见 AI 开发库

上一篇文章已经写过了,人工智能的发展不可谓不曲折,三起两落,不同的历史阶段,主流的研究方法不一样,开始时的 if-else 结构,简单的逻辑判断字符串匹配,到后期的穷举计算等,慢慢发展到现在的大数据与深度学习相结合的主流研究方法,逐渐体现出了较大的优势,同时也涌现出了不同的深度学习(机器学习)框架,以下挑选五种主流的框架进行介绍进行对比分析,以供大家参考使用: TensorFlow:推荐指数 ☆☆☆☆☆ TensorFlow 可谓大名鼎鼎,是 Google 大脑团队开发的深度学习框架,Googl

79、tensorflow计算一个五层神经网络的正则化损失系数、防止网络过拟合、正则化的思想就是在损失函数中加入刻画模型复杂程度的指标

''' Created on Apr 20, 2017 @author: P0079482 ''' import tensorflow as tf #获取一层神经网络边上的权重,并将这个权重的L2正则化损失加入名称为'losses'的集合中 def get_weight(shape,lambda1): #生成一个变量 var = tf.Variable(tf.random_normal(shape),dtype=tf.float32) #add_to_collection函数将这个新生成变量的L

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

train_step = tf.train.GradientDescentOptimizer(x) 在之前的几个例子中都出现了如上代码. 这个优化算法的参数就是学习效率.那么这个学习效率是什么意思,到底取什么样的值比较好呢? 之前已经讲过,优化算法会反向修改函数中设置为Variable的变量值,使得误差逐步缩小.而这里的学习效率就是Variable更新变化的幅度. 如果幅度过大,参数就很可能跨过最优值,最后在最优值的两侧来回浮动. 如果幅度太小,又会大大的增加学习时间. 比较理想的做法是,在学习

TensorFlow 过拟合与正则化(regularizer)

所谓过拟合,就是当一个模型过于复杂后,它可以很好的处理训练数据的每一个数据,甚至包括其中的随机噪点.而没有总结训练数据中趋势.使得在应对未知数据时错误里一下变得很大.这明显不是我们要的结果. 我们想要的是在训练中,忽略噪点的干扰,总结整体趋势.在应对未知数据时也能保持训练时的正确率. 上图中第一种情况,模型过于简单,未能很好的反应数据的总体趋势. 第三种情况就属于过拟合的情况.虽然完美的反应了练习数据的状况,但是明显被噪点影响了. 第二种情况是我们想要的理想状况. 为了避免过拟合,通常使用的方法

TensorFlow L2正则化

TensorFlow L2正则化 L2正则化在机器学习和深度学习非常常用,在TensorFlow中使用L2正则化非常方便,仅需将下面的运算结果加到损失函数后面即可 reg = tf.contrib.layers.apply_regularization(tf.contrib.layers.l2_regularizer(1e-4), tf.trainable_variables())