目录

1.数据增强

2.Dropout

 3.BatchNormalization

4.正则化(权值衰减 ) 


1.数据增强

    数据增强采用的方法是从现有的示例中生成额外的训练数据,方法是使用生成可信图像的随机转换来增强这些数据。这有助于将模型暴露到数据的更多方面,并能更好地泛化。

Tensorflow中的用于数据增强的预处理层:

在训练过程中随机调整亮度的预处理层tf.keras.layers.RandomBrightness(
factor, #亮度范围单个值或者表示上下限的元组(-1,1),单个值时factor=0.2表示(-0.2,0.2)

value_range=(0, 255), #输入像素值范围(0,1)或(0,255)

seed=None, #随机数种子

**kwargs
)

 在训练过程中随机调整对比度的预处理层

tf.keras.layers.RandomContrast(
factor, #对比度范围单个数或者表示上下限的元组,单个数时其范围为[1-值,1+值]

seed=None,

**kwargs
)

 在训练过程中随机裁剪图像的预处理层

tf.keras.layers.RandomCrop(

 height, #输出高

width, #输出宽

seed=None,

**kwargs
)

 在训练过程中随机翻转图像的预处理层

tf.keras.layers.RandomFlip(
mode=HORIZONTAL_AND_VERTICAL, #翻转模式:horizontal”水平、“vertical”垂直或“horizontal_and_vertical”水平且垂直。默认为“horizontal_and_vertical”(水平左右,垂直上下)

seed=None, **kwargs
)

 在训练过程中随机改变图像高度的预处理层

tf.keras.layers.RandomHeight(
factor, #高度调整范围:一个正浮点数,或一个大小为2的元组

interpolation='bilinear', #插值方式

seed=None, **kwargs
)

 在训练过程中随机旋转图像的预处理层

tf.keras.layers.RandomRotation(
    factor,#一个表示为2的小数的浮点数,或一个大小为2的元组,表示顺时针和逆时针旋转的上下界。正值表示逆时针旋转,负值表示顺时针旋转。
    fill_mode='reflect',#输入边界以外的点的填充模式{"constant", "reflect", "wrap", "nearest"}
    interpolation='bilinear',#插值模式。支持值:“nearest”,“bilinear”。
    seed=None,
    fill_value=0.0,
    **kwargs
)

在训练过程中随机平移图像的预处理层

 tf.keras.layers.RandomTranslation(
    height_factor,#表示为值的一部分的浮点数,或大小为2的元组,表示垂直移动的下限和上限
    width_factor,# 水平移动上下限
    fill_mode='reflect',#输入边界以外的点的填充模式{"constant", "reflect", "wrap", "nearest"}
    interpolation='bilinear',#插值模式。支持值:“nearest”,“bilinear”。
    seed=None,
    fill_value=0.0,
    **kwargs
)

在训练过程中随机改变图像宽度的预处理层

 tf.keras.layers.RandomWidth(
    factor, interpolation='bilinear', seed=None, **kwargs
)

在训练过程中随机缩放图像的预处理层

tf.keras.layers.RandomZoom(
    height_factor,
    width_factor=None,
    fill_mode='reflect',
    interpolation='bilinear',
    seed=None,
    fill_value=0.0,
    **kwargs
)

2.Dropout

    学习的过程中随机删除神经元的方法;训练时,随机选出隐藏层的神经元,然后将其删除,被删除的神经元不再进行信号的传递。

tf.keras.layers.Dropout(
rate, #随机失活比例

noise_shape=None, #

seed=None, #随机数种子

**kwargs
)

 3.BatchNormalization

   调整激活值(激活函数输出值)的分布使其具有适当的广度,具体为向神经网络中插入数据正规化的层。

(1)可以加快学习速度
(2)不那么依赖初始值
(3)抑制过拟合
   以mnin batch(批量数据)为单位进行均值为0,方差为1的正规化
 vb=1/m*np.sum(xi);方差a^2=1/m*np.sum(xi-vb)^2
 xi=(xi-vb)/np.sqrt(a^2+10e-7)
   正规化后进行缩放和平移变换:yi=γ*xi+B;初始γ=1,b=0

 tf.keras.layers.BatchNormalization(
    axis=-1, #批处理时归一化的轴
    momentum=0.99,
    epsilon=0.001,
    center=True,#是否向归一化张量中添加偏置
    scale=True, #是否使用gamma
    beta_initializer='zeros', 
    gamma_initializer='ones',
    moving_mean_initializer='zeros',
    moving_variance_initializer='ones',
    beta_regularizer=None, #beta权值的正则化器。
    gamma_regularizer=None, #gamma的正则化器
    beta_constraint=None, #beta的约束
    gamma_constraint=None, #gamma的约束
    **kwargs
)

4.正则化(权值衰减 ) 

     给损失函数加上某种限制,抑制过拟合。

#L1正则化:

tf.keras.regularizers.L1(
   l1=0.01, #惩罚因子

**kwargs
)

#L1 L2正则化

tf.keras.regularizers.L1L2(
    l1=0.0, l2=0.0
)

 #L2正则化

tf.keras.regularizers.L2(
    l2=0.01, **kwargs
)

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐