卷积神经网络的基本结构

卷积神经网络的基本结构

与传统的全连接神经网络一样,卷积神经网络依然是一个层级网络,只不过层的功能和形式发生了变化。

典型的CNN结构包括:

  1. 数据输入层(Input Layer)
  2. 卷积层(Convolutional Layer)
  3. 激活层(Activation Layer)
  4. 池化层(Pooling Layer)
  5. 全连接层(Full Connection Layer)
  6. 损失层(Loss Function Layer)
  7. 精度层(Accuracy Layer)

1.数据输入层

数据输入层不属于 网络结构。与传统的全连接神经网络不同,卷积神经网络的输入层是原始图像 ,而非提取的信息,因此卷积神经网络是一个无监督的特征学习网络

数据输入层 主要对原始图像数据进行预处理 ,基础操作包括取均值灰度归一化 ,还有一些数据增强的相关操作。

python 复制代码
# 这是一个典型的使用protobuf协议进行配置的网络输入层,它是Caffe的深度学习模型的配置文件
layer{
    name: "data"
    type: "ImageData"# 输入层的类型是ImageData,也就是原生的图像格式
    top: "data"
    top: "clc-label"
    # 该层有两个参数:image_data_param 和 transform_param 
    # 参数有一些属性,都是图像预处理参数
    image_data_param { # 这个参数有三个属性
        source: "all_shuffle_train.txt" # 表示输入训练文件路径
        batch size: 96 # 表示训练时输入数据的批处理大小
        shuffle: true # 表示是否采用随机操作
    }
    transform_param {
        mean_value: 104.008 # mean_value表示GRB的均值
        mean_value: 116.669 
        mean_value: 122.675
        crop_size: 48 # 表示输入训练图像尺寸
        mirror: true # 是数据增强操作,指代水平翻转
    }
    include: { phase: TRAIN}
}

2.卷积层

卷积层是网络的特征提取层。卷积神经网络一般包含多个卷积层,一个卷积层可以有多个不同的卷积核。

python 复制代码
# 这是一个典型的卷积网络层。
# 包含两类参数,即权重参数和偏置参数,其中配置了两个param属性,分别表示这两类参数的学习率
layer{
    name: "conv1"
    type: "Convolution"
    bottom: "data"
    top: "conv1"
    param {
        lr_mult:1
        decay_mult:1
    }
    param {
        lr_mult:2
        decay_mult: 0
    }
    convolution_param {
        num_output:12 # 输出特征层的通道数目
        pad:1 # 在卷积前进行边界填充像素的行列数
        kernel_size:3 # 卷积步长
        stride:2
        weight_filler{ # 卷积权重参数的初始化策略
            type:"xavier"
            std:0.01
        }
        bias_filler { # 这里配置的是偏置参数的初始化方法
            type: "constant"
            value:0.2
        }
    }
}

3.激活层

网络需要激活层进行特征的选择和抑制,早期的Sigmoid等函数使用较多,现在多实用形式更加简单的ReLU函数。

python 复制代码
# 这是一个激活层
# RELU激活层非常简单,没有需要学习的参数。(有的激活层有需要学习的参数)
layer{
    name: "relu1"
    type:"ReLU"
    bottom: "conv1"
    top: "conv1"
}

4.池化层

池化层用于降低特征平面的分辨率及抽象特征

池化用于压缩网络参数和数据,以降低过拟合。

如果输入为一幅图像,那么池化层最主要的作用就是在压缩图像的同时保持该图像特征的不变性

python 复制代码
# 这是一个池化层
# 池化层包含一个参数pooling_param
layer {
    name: "pool"
    type: "Pooling"
    bottom: "conv3"
    top: "pool"
    pooling_param { # 这个参数中有三个属性
        pool: MAX # 最大池化
        kernel_size: 3 # 池化操作的核的大小
        stride: 2 # 步长
    }
}

5.全连接层

全连接层通常在卷积神经网络结构的最后,它也有权重和偏置两个参数。

python 复制代码
# 这是一个全连接层,通常在卷积神经网络结构的最后,也有权重和偏置两个参数
# 其中配置了两个param属性,分别表示这两类参数的学习率
layer {
    name: "fc"
    type: "InnerProduct"
    bottom: "pool"
    top: "fc"
    param {
        lr_mult: 1
        decay_mult: 1
    }
    param {
        lr_mult: 2
        decay_mult: 1
    }
    inner_product_param {
        num_output: 2 # 输出特征维度,通常是分类任务的类别数目
        weight_filler{ # 权重参数的初始化方式
            type: "xavier"
        }
        bias_filler{ # 偏置参数的初始化方式
            type: "constant"
            value: 0
        }
    }
}

6.损失层

卷积神经网络的优化原理同一般的机器学习算法类似,需要定义损失目标函数,找到最小化损失函数的参数值 ,通常利用SGD(随机梯度下降 )等算法来调整权值

python 复制代码
# 这是一个softmax损失层,损失层的输入就是网络的输出和真实的标签
layer {
    name: "loss"
    type: "SoftmaxWithLoss"
    bottom: "fc"
    bottom: "clc-label"
    top: "loss"
}

7.精度层

损失目标函数可以反映网络性能的优劣,但不是最终需要的指标。

对于分类任务,最终需要的是分类精度;

对于回归任务,需要的是定位精度。

因此,一个卷积神经网络还需要接上网络精度层

python 复制代码
# 这是一个分类任务的精度层,它与损失层一样,输入是网络的输出和真实的标签
layer {
    bottom: "fc"
    bottom: "clc-label"
    top: "acc"
    name: "acc"
    type: "Accuracy"
}

上面定义的完整的网络结构如图1.20所示。
参考文献:

1.书名:《深度学习之图像识别 核心算法与实战案例 (全彩版)》

作者:言有三著

出版社:清华大学出版社

出版时间:2023年7月第一版(第一次印刷)

ISBN:978-7-302-63527-7

相关推荐
985小水博一枚呀13 分钟前
【深度学习|可视化】如何以图形化的方式展示神经网络的结构、训练过程、模型的中间状态或模型决策的结果??
人工智能·python·深度学习·神经网络·机器学习·计算机视觉·cnn
LluckyYH2 小时前
代码随想录Day 46|动态规划完结,leetcode题目:647. 回文子串、516.最长回文子序列
数据结构·人工智能·算法·leetcode·动态规划
古猫先生2 小时前
YMTC Xtacking 4.0(Gen5)技术深度分析
服务器·人工智能·科技·云计算
一水鉴天2 小时前
智能工厂的软件设计 “程序program”表达式,即 接口模型的代理模式表达式
开发语言·人工智能·中间件·代理模式
Hiweir ·3 小时前
机器翻译之创建Seq2Seq的编码器、解码器
人工智能·pytorch·python·rnn·深度学习·算法·lstm
Element_南笙3 小时前
数据结构_1、基本概念
数据结构·人工智能
FutureUniant3 小时前
GitHub每日最火火火项目(9.21)
人工智能·计算机视觉·ai·github·音视频
菜♕卷3 小时前
深度学习-03 Pytorch
人工智能·pytorch·深度学习
明明真系叻3 小时前
第十二周:机器学习笔记
人工智能·机器学习
你的陈某某4 小时前
【变化检测】基于ChangeStar建筑物(LEVIR-CD)变化检测实战及ONNX推理
深度学习·变化检测