• CNN卷积汇总


     

    1,卷积作用:减少参数(卷积核参数共享),卷积过程中不断对上一个输出进行抽象,由局部特征归纳为全局特征(不同卷积层可视化可以观察到这点)

    2,卷积核

    早期卷积核由人工总结,如图像处理中有:

    深度神经网络中,卷积核则由网络训练过程中学习获得。

    3, 神经网络中的卷积类型

    • Group convolution:分组卷积。对通道channel进行分组后分别卷积。减少参数。

    比如输入和输出通道都为64,卷积核大小为3*3,则原始参数量为64*3*3*64=36864,通道分组为8组,每组输入输出都为32,参数量为8*8*3*3*8=4608。为原来的1/8。

    • Depthwise convolution卷积核深度为1,只对相应通道的空间部分卷积
    • Pointwise convolution:卷积核大小为1*1,只对通道部分卷积
    • Depthwise Separable convolution:上面2者结合即为此。先对每个通道的空间部分卷积,再对各个通道卷积,分离了空间与channel。减少参数。

    比如,输入通道为16,输出通道为32,使用卷积核大小3*3,如果直接卷积,则我们需要32个卷积核,每个参数为3*3*16,总参数为32*3*3*16=4608。分开操作时,第一步,我们每个卷积核只一个输入通道进行卷积,即对空间部分卷积,需要16个卷积核,每个3*3*1,共144个参数;第二步,对通道部分卷积,此时不需要对空间卷积了,所以卷积核大小为1*1(即保留原始空间信息),对16个通道卷积,即一个卷积核参数为1*1*16,输出32则用32个卷积核,共16*32=512个参数。总参数656个。参数量为原来的1/7。对于空间和通道较独立的数据,使用此方法不仅效率高,而且效果好。

    • Dilated convolution:空洞卷积。解决下采样(pooling)过程中信息丢失问题,实现像素级的语义分割。

     如图,卷积核大小不变,但是中间可以留空,这样可以增大卷积核的视野,而无需扩大卷积核大小(增加参数/计算量)。

    • 反卷积(转置卷积):反卷积核与元素卷积核的输入输出shape是交换形式,实现还原原始shape的操作。

    4,tensorflow实现

    常规卷积

    tf.nn.conv2d(input, filter, strides, padding, use_cudnn_on_gpu=None, data_format=None, Name=None)

    可以用高级API,这里步长对于样本和通道维度默认设为1了,所以只有2个参数。对于dilation也是如此。同时还有trainable等特性。

    tf.layers.Conv2D(
        filters,
        kernel_size,
        strides=(1, 1),
        padding='valid',
        data_format='channels_last',
        dilation_rate=(1, 1),
        activation=None,
        use_bias=True,
        kernel_initializer=None,
        bias_initializer=<tensorflow.python.ops.init_ops.Zeros object at 0x000001ECFFC4D188>,
        kernel_regularizer=None,
        bias_regularizer=None,
        activity_regularizer=None,
        kernel_constraint=None,
        bias_constraint=None,
        trainable=True,
        name=None,
        **kwargs,
    )

    Depthwise convolution

    tf.nn.depthwise_conv2d(input, filter, strides, padding, rate=None, name=None, data_format=None)

    Separable convolution

    tf.nn.separable_conv2d(input, depthwise_filter, pointwise_filter, strides, padding, rate=None, name=None, data_format=None)

    反卷积

    tf.nn.conv2d_transpose(value, filter, output_shape, strides, padding="SAME", data_format="NHWC", name=None)

    以上参数就不具体说明了,在此只是作个汇总,方便查看。

     参考资料

    https://www.cnblogs.com/noticeable/p/9197640.html

    https://www.cnblogs.com/cvtoEyes/p/8848815.html

  • 相关阅读:
    Nodejs下载和第一个Nodejs示例
    永久关闭Win10工具栏的TaskbarSearch控件
    对称加密,非对称加密,散列算法,签名算法
    【转】TTL和RS232之间的详细对比
    zlg核心板linux系统中查看系统内存等使用信息
    Power BI后台自动刷新数据报错 The operation was throttled by Power BI Premium because there were too many datasets being processed concurrently.
    剪切板和上传文件内容获取
    CSS, LESS, SCSS, SASS总结
    文字程序
    electron 打包“ERR_ELECTRON_BUILDER_CANNOT_EXECUTE”
  • 原文地址:https://www.cnblogs.com/lunge-blog/p/11876606.html
Copyright © 2020-2023  润新知