tensorflow 中的L1和L2正则化
import tensorflow as tf
weights = tf.constant([[1.0, -2.0],[-3.0 , 4.0]]) >>> sess.run(tf.contrib.layers.l1_regularizer(0.5)(weights))
5.0
>>> sess.run(tf.keras.regularizers.l1(0.5)(weights))
5.0
>>> sess.run(tf.keras.regularizers.l1()(weights))
0.099999994
>>> sess.run(tf.keras.regularizers.l1(1)(weights))
10.0
>>> sess.run(tf.nn.l2_loss(weights))
15.0
>>> sess.run(tf.keras.regularizers.l2(1)(weights))
30.0
>>> sess.run(tf.keras.regularizers.l2(0.5)(weights))
15.0
>>> sess.run(tf.contrib.layers.l1_regularizer(0.5)(weights))
5.0
>>> sess.run(tf.contrib.layers.l2_regularizer(0.5)(weights))
7.5
>>> sess.run(tf.contrib.layers.l2_regularizer(1.0)(weights))
15.0
在tensorflow中,tf.nn中只有tf.nn.l2_loss,却没有l1_loss,于是自己网上查阅资料,了解到tf.contrib.layers中有tf.contrib.layers.l1_regularizer(),但是tf.contrib目前新版本已经被弃用了,后来发现tf.keras.regularizers下面有l1和l2正则化器,但是该正则化器的l2有点不一样,从上面的结果可以看出,scale都为1时,它要多一倍。可以查看源代码,tf.nn.l2_loss和 tf.contrib.layers.l2_regularizer 中都统一除以了2.所以值要少一半。
>>> sess.run(tf.nn.l2_loss(weights))
15.0
>>> sess.run(tf.keras.regularizers.l2(1)(weights))
30.0
>>> sess.run(tf.contrib.layers.l2_regularizer(1.0)(weights))
15.0
将scale设为0.5后,可以得到一样的值,因此,以后在损失函数中可以使用这样的方式来求l2损失和l1损失。
>>> sess.run(tf.keras.regularizers.l2(0.5)(weights))
15.0
参考了 day-17 L1和L2正则化的tensorflow示例 - 派森蛙 - 博客园
https://www.cnblogs.com/python-frog/p/9416970.html
'''
输入:
x = [[1.0,2.0]]
w = [[1.0,2.0],[3,0,4.0]] 输出:
y = x*w = [[7.0,10.0]]
l1 = (1.0+2.0+3.0+4.0)*0.5 = 5.0
l2 = (1.0**2 + 2.0**2 + 3.0**2 + 4.0**2) / 2)*0.5 = 7.5
''' import tensorflow as tf
from tensorflow.contrib.layers import * w = tf.constant([[1.0,2.0],[3.0,4.0]])
x = tf.placeholder(dtype=tf.float32,shape=[None,2])
y = tf.matmul(x,w) with tf.Session() as sess:
init = tf.global_variables_initializer()
sess.run(init)
print(sess.run(y,feed_dict={x:[[1.0,2.0]]}))
print("=========================")
print(sess.run(l1_regularizer(scale=0.5)(w)))
#(1.0+2.0+3.0+4.0)*0.5 = 5.0
print("=========================")
print(sess.run(l2_regularizer(scale=0.5)(w)))
#(1.0**2 + 2.0**2 + 3.0**2 + 4.0**2) / 2)*0.5 = 7.5
tensorflow 中的L1和L2正则化的更多相关文章
- 机器学习中的L1、L2正则化
目录 1. 什么是正则化?正则化有什么作用? 1.1 什么是正则化? 1.2 正则化有什么作用? 2. L1,L2正则化? 2.1 L1.L2范数 2.2 监督学习中的L1.L2正则化 3. L1.L ...
- day-17 L1和L2正则化的tensorflow示例
机器学习中几乎都可以看到损失函数后面会添加一个额外项,常用的额外项一般有两种,一般英文称作ℓ1-norm和ℓ2-norm,中文称作L1正则化和L2正则化,或者L1范数和L2范数.L2范数也被称为权重衰 ...
- 4.机器学习——统计学习三要素与最大似然估计、最大后验概率估计及L1、L2正则化
1.前言 之前我一直对于“最大似然估计”犯迷糊,今天在看了陶轻松.忆臻.nebulaf91等人的博客以及李航老师的<统计学习方法>后,豁然开朗,于是在此记下一些心得体会. “最大似然估计” ...
- 深入理解L1、L2正则化
过节福利,我们来深入理解下L1与L2正则化. 1 正则化的概念 正则化(Regularization) 是机器学习中对原始损失函数引入额外信息,以便防止过拟合和提高模型泛化性能的一类方法的统称.也就是 ...
- L1 与 L2 正则化
参考这篇文章: https://baijiahao.baidu.com/s?id=1621054167310242353&wfr=spider&for=pc https://blog. ...
- Spark2.0机器学习系列之12: 线性回归及L1、L2正则化区别与稀疏解
概述 线性回归拟合一个因变量与一个自变量之间的线性关系y=f(x). Spark中实现了: (1)普通最小二乘法 (2)岭回归(L2正规化) (3)La ...
- L1与L2正则化的对比及多角度阐述为什么正则化可以解决过拟合问题
正则化是一种回归的形式,它将系数估计(coefficient estimate)朝零的方向进行约束.调整或缩小.也就是说,正则化可以在学习过程中降低模型复杂度和不稳定程度,从而避免过拟合的危险. 一. ...
- L1与L2正则化
目录 过拟合 结构风险最小化原理 正则化 L2正则化 L1正则化 L1与L2正则化 参考链接 过拟合 机器学习中,如果参数过多.模型过于复杂,容易造成过拟合. 结构风险最小化原理 在经验风险最小化(训 ...
- L1、L2正则化详解
正则化是一种回归的形式,它将系数估计(coefficient estimate)朝零的方向进行约束.调整或缩小.也就是说,正则化可以在学习过程中降低模型复杂度和不稳定程度,从而避免过拟合的危险. 一. ...
随机推荐
- centos最小化安装时网络配置
查看网卡: ip addr 修改网络配置文件 vi /etc/sysconfig/network-scripts/ifcfg-enp33 BOOTPROTO=dhcp ONBOOT=yes 重启网络服 ...
- javabst1
(单选题)下列概念中不包括任何实现,与存储空间没有任何关系的是() A)类 B)接口 C)抽象类 D)对象 2.(单选题)HTTP状态码中表示请求资源不存在的是(). A)100 B)200 C)30 ...
- C语言学习笔记--关于指针的一些小认知
int main() { int i; char *str = "hu mian yuan"; int length = strlen(str); printf("str ...
- Grafana & Graphite & Collectd:监控系统
简介 监控是运维工作中的一个重要组成部分,今天介绍一套新的监控工具,方便好用,扩展性强,这套工具有三个组件,Grafana & Graphite & Collectd: Grafana ...
- 【LaTeX】记录一下LaTeX的安装和使用
由于排版论文的需要,了解了一些LaTeX的相关内容,下面简单记录关于LaTeX的安装和使用 维基百科: LaTeX(/ˈlɑːtɛx/,常被读作/ˈlɑːtɛk/或/ˈleɪtɛk/),文字形式写作L ...
- Yandex Big Data Essentials Week1 Unix Command Line Interface File System exploration
File System Function In computing, a file system or filesystem is used to control how data is stored ...
- ls-remote -h -t git://github.com/adobe-webplatform/eve.git
npm WARN deprecated bfj-node4@5.3.1: Switch to the `bfj` package for fixes and new features! npm WAR ...
- 20200221--python学习第14天
今日内容 带参数的装饰器:flash框架+django缓存+写装饰器实现被装饰的函数要执行N次 模块: os sys time datetime和timezone[了解] 内容回顾与补充 1.函数 写 ...
- RF-ui自动化
1.关于时间等待 Wait Until Keyword Succeeds 3x 300ms Wait Until Element Is Visible ${x ...
- [Python]获取字典所有值
方法一:Key Value 直接获取 databases = {1: 'Student', 2: 'School'} for k,v in databases.items(): print(k,v) ...