卷积神经网络的基本结构

卷积神经网络的基本结构

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

典型的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

相关推荐
数据分析能量站21 分钟前
神经网络-AlexNet
人工智能·深度学习·神经网络
Ven%27 分钟前
如何修改pip全局缓存位置和全局安装包存放路径
人工智能·python·深度学习·缓存·自然语言处理·pip
szxinmai主板定制专家41 分钟前
【NI国产替代】基于国产FPGA+全志T3的全国产16振动+2转速(24bits)高精度终端采集板卡
人工智能·fpga开发
YangJZ_ByteMaster1 小时前
EndtoEnd Object Detection with Transformers
人工智能·深度学习·目标检测·计算机视觉
Anlici1 小时前
模型训练与数据分析
人工智能·机器学习
余~~185381628001 小时前
NFC 碰一碰发视频源码搭建技术详解,支持OEM
开发语言·人工智能·python·音视频
唔皇万睡万万睡2 小时前
五子棋小游戏设计(Matlab)
人工智能·matlab·游戏程序
视觉语言导航2 小时前
AAAI-2024 | 大语言模型赋能导航决策!NavGPT:基于大模型显式推理的视觉语言导航
人工智能·具身智能
volcanical2 小时前
Bert各种变体——RoBERTA/ALBERT/DistillBert
人工智能·深度学习·bert
知来者逆2 小时前
Binoculars——分析证实大语言模型生成文本的检测和引用量按学科和国家明确显示了使用偏差的多样性和对内容类型的影响
人工智能·深度学习·语言模型·自然语言处理·llm·大语言模型