当前位置:网站首页>深度学习——以花朵识别为例,分析构造神经网络时用到的各个类构造函数(Dense、Conv2D、Flatten等)

深度学习——以花朵识别为例,分析构造神经网络时用到的各个类构造函数(Dense、Conv2D、Flatten等)

2022-08-06 08:01:45尘心平

​活动地址:CSDN21天学习挑战赛

构造神经网络的layers函数

构造神经网络时主要用到的都是 keras.layers库内 的类的构造函数

layers.Conv2D

layers.Conv2D主要是用来 形成卷积层

参数说明

def __init__(self,
               filters,
               kernel_size,
               strides=(1, 1),
               padding='valid',
               data_format=None,
               dilation_rate=(1, 1),
               groups=1,
               activation=None,
               use_bias=True,
               kernel_initializer='glorot_uniform',
               bias_initializer='zeros',
               kernel_regularizer=None,
               bias_regularizer=None,
               activity_regularizer=None,
               kernel_constraint=None,
               bias_constraint=None,
               **kwargs):
  • filters:int型,表示卷积核数,也即特征图数,与输出的shape的channels一致
  • kernel_size:核大小,int型二元组,一般是(3,3)
  • strides:移动步长,int型二元组,默认(1,1),表示(左右移步长,上下移步长)
  • padding:str型,表示是否采用边缘填充0,默认是valid无填充,值为same表示填充
  • data_format:一般默认是channels_last,即input_shape=(batch_size,w,h,channels)也有channels_first 即input_shape=(batch_size,channels,w,h)
  • activation:激活函数,值之前已讨论过
  • use_bias:是否使用偏置参数,bool型,默认True,使用偏置参数
  • kernel_regularize 对权重参数正则化
  • bias_regularize 对偏置参数正则化
  • activity_regularize 对输出的正则化
  • input-shape 定义输入类型,默认data_format是channels_first,input_shape是(batch_size,height,weight,channels) 且通常batch_size不用指定,指定的话是2的幂

总结

一般使用时,只需要传参filters、kernel_size、padding、activation、input_shape即可

(过拟合时也可能会用到kernel_rehularize)

layers.MaxPooling2D layers.AveragePooling2D

layers.MaxPooling2D 是构建采用最大池化方法的池化层

layers.AveragePooling2D 是构建采用平均池化方法的池化层

两种类的构造函数基本一致,下面统一说明

参数说明

def __init__(self,
               pool_size=(2, 2),
               strides=None,
               padding='valid',
               data_format=None,
               **kwargs):
  • pool_size:int型二元组,默认值(2,2),表示的是池化核的大小,每pool_size取最大值
  • strides:步长,int型二元组或int数值,一般不用设置,默认取pool_size值
  • padding:str型,值为valid表示不采用边缘填充,same表示边缘填充

PS:输出大小的计算:

        采用边缘填充:input_shape/strides 向上取整

        不采用边缘填充:(input_shape-pool_size+1/strides)

总结 

一般使用时,并不需要传参,有时会只传pool_size

layers.Dropout

layers.Dropout 是构建过拟合时采用的丢弃层

参数说明

def __init__(self, rate, noise_shape=None, seed=None, **kwargs)
  • rate:丢弃率,表示每次训练中该层的灭活比,一般值是0~1(1会报错)
  • noise_shape:一维的元组或者列表,长度与输入类型相同,且里面的元素要么为1,要么为输入类型值,哪个轴为1,哪个轴就会被一致地dropout
  • seed:随机数种子

总结

一般使用时,只需要传参rate即可

layers.Flatten

Flatten层用来将输入“压平”,即把多维的输入一维化,常用在从卷积层到全连接层的过渡。Flatten不影响batch的大小。

一般使用时,无参调用

layers.Dense

layers.Dense 是 构建全连接层

参数说明

  def __init__(self,
               units,
               activation=None,
               use_bias=True,
               kernel_initializer='glorot_uniform',
               bias_initializer='zeros',
               kernel_regularizer=None,
               bias_regularizer=None,
               activity_regularizer=None,
               kernel_constraint=None,
               bias_constraint=None,
               **kwargs):
  • units:int型,表示全连接层的输出维度
  • activation:str型,表示激活函数,一般采用的是"relu",其他激活函数见之前的博客中
  • use_bias:bool型,表示是否使用偏置参数,默认值是True
  • kernel_regularize 对权重参数正则化
  • bias_regularize 对偏置参数正则化
  • activity_regularize 对输出的正则化

layers.Rescaling

花朵识别

未完待续……

原网站

版权声明
本文为[尘心平]所创,转载请带上原文链接,感谢
https://blog.csdn.net/weixin_53966032/article/details/126186803

随机推荐