先看代码然后解释为什么需要正则化

import tensorflow as tf
import tensorflow.contrib as contribweight=tf.constant([[1,-2],[-3,4]],dtype=tf.float32)
with tf.Session() as sess:init=tf.global_variables_initializer()sess.run(init)# L1正则化输出为(|1|+|-2|+|-3|+|4|)*0.5=5print(sess.run(contrib.layers.l1_regularizer(0.5)(weight)))# L2正则化输出为(1²+(-2)²+(-3)²+4²)/2*0.5=7.5print(sess.run(contrib.layers.l2_regularizer(0.5)(weight)))# L1和L2正则化print(sess.run(contrib.layers.l1_l2_regularizer(0.5,0.5)(weight)))

1.深度学习中的正则化作用

 提高泛化能力,防止过拟合,大多数正则化策略都会对估计进行正则化,估计的正则化以偏差的增加换取方差的减少

 正则化方法是在训练数据不够多时,或者over training时,常常会导致过拟合(overfitting)。这时向原始模型引入额外信息,以便防止过拟合和提高模型泛化性能的一类方法的统称。

正则化可以帮助防止过度配合,提高模型的适用性。(让模型无法完美匹配所有的训练项。)(使用规则来使用尽量少的变量去拟合数据)

通俗来说 正则化就是说给需要训练的目标函数加上一些规则(限制),让他们不要自我膨胀。

2两种正则化

L1 正则化在原始的代价函数后面加上一个 L1 正则化项,即所有权值 W 的绝对值的和,乘以 λ/n。L1 正则化项的效果是让权值 W 往 0 靠,使网络中的权值尽可能为 0,也就相当于减小了网络复杂度,防止过拟合。事实上,L1 正则化能产生稀疏性,导致 W 中许多项变成零。

L2 正则化,会在代价函数后面再加上一个正则化项 

其中,C0代表原始的代价函数,后面加上 L2 正则化项。事实上,L2 正则化将所有参数 W 的平方的和,乘以 λ/2n。。λ 就是正则项系数,而系数 1/2,主要是为了求导的结果方便,后面那一项求导会产生一个 2,与 1/2 相乘刚好凑整。

L2 正则化项的效果是减小权值 W。事实上,更小的权值 W,从某种意义上说,表示网络的复杂度更低,对数据的拟合刚刚好。

tensorflow中提供的正则化支持

  1. tf.contrib.layers.l1_regularizer(scale, scope=None)
  2. tf.contrib.layers.l2_regularizer(scale, scope=None)

其中,有两个重要的参数。

  • scale: 正则项的系数。(必选)
  • scope: 可选的scope name。(可选)

现在,来看一个案例。这个案例中,我们使用了tf.contrib.layers.l2_regularizer(scale, scope=None)函数。其中, lambd 参数表示来正则化项的权重,W 为需要计算正则化损失的参数。

loss = tf.reduce_mean(tf.square(y-y_) + tf.contrib.layers.l2_regularizer(lambd)(W))

这两个参数是用两个括号括起来的,与我们平时写在一个括号,用逗号分隔开不一样。

3.Dropout(在全连接层使用也是防止过拟合)

  tf.nn.dropout是TensorFlow里面为了防止或减轻过拟合而使用的函数,它一般用在全连接层

  tf.nn.dropout(x, keep_prob, noise_shape=None, seed=None,name=None)

  改变神经网络本身的结构,对于同一组训练数据,利用不同的神经网络训练之后,求其输出的平均值可以减少overfitting

参考博客

https://www.cnblogs.com/bigcome/p/10058662.html

https://blog.csdn.net/Akino_Rito/article/details/79812948

http://blog.720ui.com/2018/tensorflow_03_dl_regular/#L2-%E6%AD%A3%E5%88%99%E5%8C%96

机器学习的L1和L2规范 https://msdn.microsoft.com/zh-cn/magazine/dn904675.aspx

tensorflow中的正则化相关推荐

  1. Tensorflow 中添加正则化项

    为防止网络过拟合,在损失函数上增加一个网络参数的正则化项是一个常用方法,下面介绍如何在Tensorflow中添加正则化项. tensorflow中对参数使用正则项分为两步: step1: 创建一个正则 ...

  2. tensorflow中的正则化解决过拟合问题

    1. 正则化 所谓的过拟合问题指的是当一个模型很复杂时,它可以很好的"记忆"每一个训练数据中的随机噪音的部分而忘记了要去"学习"训练数据中通用的趋势. 为了避免 ...

  3. tensorflow中的正则化函数在_『TensorFlow』正则化添加方法整理

    一.基础正则化函数 tf.contrib.layers.l1_regularizer(scale, scope=None) 返回一个用来执行L1正则化的函数,函数的签名是func(weights). ...

  4. tensorflow中的正则化函数在_tensorflow中的正则化及数据增强

    正则化: 一般可以通过减少特征或者惩罚不重要特征的权重来缓解过拟合,但是我们通常不知道该惩罚那些特征的权重,而正则化就是帮助我们惩罚特征权重的,即特征的权重也会成为模型的损失函数一部分.可以理解为, ...

  5. 深度学习中的正则化技术(附Python代码)

    作者:SHUBHAM JAIN 翻译:和中华 校对:丁楠雅 本文约3500字,建议阅读20分钟. 本文简单介绍了什么是正则化以及在深度学习任务中可以采用哪些正则化技术,并以keras代码具体讲解了一个 ...

  6. TensorFlow 中文文档 介绍

    介绍 本章的目的是让你了解和运行 TensorFlow 在开始之前, 先看一段使用 Python API 撰写的 TensorFlow 示例代码, 对将要学习的内容有初步的印象. 这段很短的 Pyth ...

  7. tensorflow中学习率、过拟合、滑动平均的学习

    1. 学习率的设置 我们知道在参数的学习主要是通过反向传播和梯度下降,而其中梯度下降的学习率设置方法是指数衰减. 通过指数衰减的学习率既可以让模型在训练的前期快速接近较优解,又可以保证模型在训练后期不 ...

  8. TensorFlow中的Keras用法和自定义模型和层

    Keras Keras 是一个用于构建和训练深度学习模型的高阶 API.它可用于快速设计原型.高级研究和生产,具有以下三个主要优势: 方便用户使用 Keras 具有针对常见用例做出优化的简单而一致的界 ...

  9. TensorFlow实战:TensorFlow中的CNN

    这里按照官方api介绍官方api点这里 卷积 不同的ops下使用的卷积操作总结如下: conv2d:Arbitrary filters that can mix channels together(通 ...

最新文章

  1. python人工智能-Python之人工智能(一)
  2. 堆排序时间复杂度_堆排序算法
  3. jvm内置锁synchronized不能被中断
  4. 最值反演[PKUWC2018][loj2542]随机游走
  5. springboot gateway post body 为空_Spring Boot常见属性以及问题总结
  6. 中兴通讯助力MTN建设赞比亚南部首个超100G骨干光网络
  7. 苹果笔记本能学二级计算机吗,怎么辨别苹果笔记本是不是翻新机
  8. 计算机用硬盘做缓存,用SSD固态硬盘做缓存加速怎么样实测
  9. 算法导论课后习题答案
  10. 工业级Pass云平台SpringCloudAlibaba综合项目实战(二):解决方案和工作效率
  11. 关于visio安装时出现出现回滚更改以至于安装失败的解决办法
  12. android手机用Termux安装archlinux
  13. cas4.2登出后,跳转指定链接
  14. Python读取显示raw图片+numpy基本用法记录
  15. 用Java语言实现余弦定理和修正余弦
  16. 计算对数似然函数改变量
  17. 应用代码解决小学鸡兔同笼问题。(已知鸡和兔的总数量为n,总脚数为m。输入n和m,依次输出鸡和兔的数目。如果无解,则输出“no answer”。)
  18. level 1与level 2的区别
  19. 如何面试Java中级开发(16k)试题讲解和Java学习
  20. 程序员“996”,真的能带来高产出吗?

热门文章

  1. 客户异议产生的原因 怎么正确处理客户的异议
  2. Matlab中why函数(一个无用但有趣的函数)
  3. 用C++解线性规划问题
  4. Android Jetpack Compose
  5. matlab学习笔记11_3高维数组操作 filp, shiftdim, size, permute, ipermute
  6. 防雷抗浪涌插排插座推荐,同为科技(TOWE)防雷桌面PDU安全可靠
  7. 2023 NFT防骗指南:六大骗局,3招带你远离…
  8. 蛋白质序列搜索及比对2021.01.24
  9. 【烟台大学】寒暑假登录YTU——手机版+电脑版
  10. C# async/awit 嵌套异步 执行顺序 分析