解读keras中的正则化(regularization)问题

 更新时间:2022年12月15日 16:52:51   作者:Cold__Heart  
这篇文章主要介绍了解读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

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Python的shutil模块中文件的复制操作函数详解

    Python的shutil模块中文件的复制操作函数详解

    shutil被定义为Python中的一个高级的文件操作模块,拥有比os模块中更强大的函数,这里我们就来看一下Python的shutil模块中文件的复制操作函数详解
    2016-07-07
  • pandas筛选某列出现编码错误的解决方法

    pandas筛选某列出现编码错误的解决方法

    今天小编就为大家分享一篇pandas筛选某列出现编码错误的解决方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-11-11
  • Boston数据集预测放假及应用优缺点评估

    Boston数据集预测放假及应用优缺点评估

    这篇文章主要为大家介绍了Boston数据集预测放假及应用优缺点评估,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-10-10
  • 利用Python Matlab绘制曲线图的简单实例

    利用Python Matlab绘制曲线图的简单实例

    们经常会遇到这种情况,有一个数学函数,我们希望了解他的图像,这个时候使用python 的matplotlib就可以帮助我们,下面这篇文章主要介绍了利用Python Matlab绘制曲线图的相关资料,需要的朋友可以参考下
    2021-12-12
  • Pytorch使用Visdom进行数据可视化的示例代码

    Pytorch使用Visdom进行数据可视化的示例代码

    pytorch Visdom可视化,是一个灵活的工具,用于创建,组织和共享实时丰富数据的可视化,这个博客简要介绍一下在使用Pytorch进行数据可视化的一些内容,感兴趣的朋友可以参考下
    2023-12-12
  • python executemany的使用及注意事项

    python executemany的使用及注意事项

    这篇文章主要介绍了python executemany的使用及注意事项,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2017-03-03
  • Perl中著名的Schwartzian转换问题解决实现

    Perl中著名的Schwartzian转换问题解决实现

    这篇文章主要介绍了Perl中著名的Schwartzian转换问题解决实现,本文详解讲解了Schwartzian转换涉及的排序问题,并同时给出实现代码,需要的朋友可以参考下
    2015-06-06
  • python argparse的使用步骤(全网最全)

    python argparse的使用步骤(全网最全)

    argparse是python的一个命令行参数解析包,在代码需要频繁修改参数时,方便使用,主要用法就是在命令行输入自己想要修改的参数,这篇文章主要介绍了python argparse的使用步骤(全网最全),需要的朋友可以参考下
    2023-04-04
  • opencv3/C++ 平面对象识别&透视变换方式

    opencv3/C++ 平面对象识别&透视变换方式

    今天小编就为大家分享一篇opencv3/C++ 平面对象识别&透视变换方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-12-12
  • python怎么删除缓存文件

    python怎么删除缓存文件

    在本篇文章里小编给大家整理的是一篇关于python删除缓存文件方法,需要的朋友们可以学习下。
    2020-07-07

最新评论