解读keras中的正则化(regularization)问题
作者:Cold__Heart 发布时间:2023-08-13 12:28:45
标签:keras,正则化,regularization
keras中正则化(regularization)
keras内置3种正则化方法
keras.regularizers.l1(lambda)
keras.regularizers.l2(lambda)
keras.regularizers.l1_l2(l1=lambda1, l2=lambda2)
目前我的理解是lambda越大,对参数的约束就越强,也就是惩罚力度越大。
其中L1正则化方法,是对|w|进行惩罚,使得w趋近0
而L2正则化方法,是对w2进行惩罚,使得w尽可能小
Dense,Conv1D,Conv2D,Conv3D有统一的正则化API,见keras中文文档。
3个正则化关键字
1. kernel_regularizer
对权值进行正则化,大多数情况下使用这个
2. bias_regularizer
限制bias的大小,使得输入和输出接近
3. activity_regularizer
对输出进行正则化,使得输出尽量小
keras中添加正则化
正则项
正则项在优化过程中层的参数或层的激活值添加惩罚项,这些惩罚项将与损失函数一起作为网络的最终优化目标
惩罚项基于层进行惩罚,目前惩罚项的接口与层有关,但Dense, Conv1D, Conv2D, Conv3D具有共同的接口。
这些层有三个关键字参数以施加正则项:
kernel_regularizer
:施加在权重上的正则项,为keras.regularizer.Regularizer对象bias_regularizer
:施加在偏置向量上的正则项,为keras.regularizer.Regularizer对象activity_regularizer
:施加在输出上的正则项,为keras.regularizer.Regularizer对象
例子
from keras import regularizers
model.add(Dense(64, input_dim=64,
kernel_regularizer=regularizers.l2(0.01),
activity_regularizer=regularizers.l1(0.01)))
可用正则项
keras.regularizers.l1(0.)
keras.regularizers.l2(0.)
keras.regularizers.l1_l2(0.)
开发新的正则项
任何以权重矩阵作为输入并返回单个数值的函数均可以作为正则项,示例:
from keras import backend as K
def l1_reg(weight_matrix):
return 0.01 * K.sum(K.abs(weight_matrix))
model.add(Dense(64, input_dim=64,
kernel_regularizer=l1_reg)
可参考源代码keras/regularizer.py
来源:https://blog.csdn.net/Cold__Heart/article/details/102238029


猜你喜欢
- 本文实例讲述了SQL Server数据表字段自定义自增数据格式的方法。分享给大家供大家参考,具体如下:--修改数据表SYS_Company中
- 1.panic是什么panic() 是一个内建的函数2.panic有什么用作用:可以使用panic停止程序继续运行,所以大多数都是在demo
- 本文实例讲述了PHP中soap的用法,分享给大家供大家参考。具体用法分析如下:PHP 使用soap有两种方式。一、用wsdl文件服务器端:&
- 我遇到的一个小需求,就是希望通过判断pandas dataframe中一列的值在两个条件范围(比如下面代码中所描述的逻辑,取小于u-3ε和大
- 根据网上的一些说法,在python里获取ms级系统时间可以通过以下方式获取:import datetimeprint(datetime.da
- 这篇文章主要介绍了Python定时器线程池原理详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可
- 代码如下:# -*- coding: utf-8 -*-#!/usr/bin/python# filename: todo.py# code
- 图形由json格式加载,可以灵活配置。下一步是完善用户的操作,做这个感觉还是蛮有意思的。呵呵。截图:部分源码:<script type
- Python中怎么使用第三方模块?在Python可以在代码中导入模块,然后就可以使用第三方模块了。import 语句想使用Python源文件
- 如下所示:import numpy as npimport matplotlib.pyplot as pltx = np.linspace(
- 一、sqlSession简单介绍拿到SqlSessionFactory对象后,会调用SqlSessionFactory的openSesiso
- 前言因为NLP作业需要用到kenlm,而kenlm在linux下更为方便。本人win10之前开启了子系统,所以就打算在子系统下进行相关作业的
- 前言这篇文章主要记录一下平时自己实践得到的, 博客中学习的以及在一些项目源码中看到的 javascript 技巧。有些东西可以说是奇淫技巧,
- 发现ie7的空格间距要比ie6/firefox/opera的都要宽一点。比如有时候排版的时候,我会采用简单的空格来分隔。<div&nb
- 1、需求我们的代码已经变得无法阅读,到处都是硬编码的切片索引,我们想优化他们。2、解决方案代码中如果有很多硬编码的索引值,将导致可读性和维护
- 当前的调试部分可以使用 go run filename.go 来执行。可以生成一个 build.sh 脚本,用于在指定位置产生已编译好的 可
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN&
- 前言在业务开展中,会遇到类似需求。需求1:UPDATE表TEST_TB01中的记录;满足条件:这些记录不在TEST_TB02中。需求2:UP
- 该脚本是为了结合之前的编写的脚本,来实现数据的比对模块,实现数据的自动化!由于数据格式是定死的,该代码只做参考,有什么问题可以私信我!CSV
- 1 GitHub创建作为图床的仓库1.1 在GitHub中创建一个仓库注意仓库要是public的,不然上传的图片还是无法使用的。如果不知道怎