【写在前面】:大家好,我是【猪葛】
一个很看好AI前景的算法工程师
在接下来的系列博客里面我会持续更新Keras的教学内容(文末有大纲)
内容主要分为两部分
第一部分是Keras的基础知识
第二部分是使用Keras搭建FasterCNN、YOLO目标检测神经网络
代码复用性高
如果你也感兴趣,欢迎关注我的动态一起学习
学习建议:
有些内容一开始学起来有点蒙,对照着“学习目标”去学习即可
一步一个脚印,走到山顶再往下看一切风景就全明了了
本篇博客学习目标:1、理解网络层约束项的用法
文章目录
一、约束项的概念和使用
概念:
constraints
模块的函数允许在优化期间对网络参数设置约束(例如非负性)。
使用:
约束是以层为对象进行的。具体的 API 因层而异,但 Dense
,Conv1D
,Conv2D
和 Conv3D
这些层具有统一的 API。
约束层开放 2 个关键字参数:
kernel_constraint
用于主权重矩阵。只能接受函数实例对象bias_constraint
用于偏置。只能接受函数实例对象
用法举例:
from tensorflow.keras.constraints import max_norm
model.add(Dense(64, kernel_constraint=max_norm(2.)))
或者:
import tensorflow.keras as keras
model.add(Dense(64, kernel_constraint=keras.constraints.MaxNorm(max_value=2, axis=0))
二、可用的约束
keras中自带的可用的约束有(一般我们对网络层的约束选项都选择None
就可以了):
keras.constraints.MaxNorm(max_value=2, axis=0) # MaxNorm 最大范数权值约束。映射到每个隐藏单元的权值的约束,使其具有小于或等于期望值的范数。
keras.constraints.NonNeg() # 权重非负的约束。
keras.constraints.UnitNorm(axis=0) # 映射到每个隐藏单元的权值的约束,使其具有单位范数。
keras.constraints.MinMaxNorm(min_value=0.0, max_value=1.0, rate=1.0, axis=0) # MinMaxNorm 最小/最大范数权值约束。映射到每个隐藏单元的权值的约束,使其范数在上下界之间。
约束项我们不常用,一般防止过拟合我们使用比较多的方式是正则化,关于正则化的内容欢迎翻看这篇博客:【Keras教学(7)】正则化Regularizers
本期内容就到这里,后续系列内容会持续更新,欢迎关注我的动态一起学习,附上系列内容内容大纲: