卷积神经网络的基本结构

卷积神经网络的基本结构

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

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

相关推荐
CSDN云计算10 分钟前
如何以开源加速AI企业落地,红帽带来新解法
人工智能·开源·openshift·红帽·instructlab
艾派森21 分钟前
大数据分析案例-基于随机森林算法的智能手机价格预测模型
人工智能·python·随机森林·机器学习·数据挖掘
hairenjing112323 分钟前
在 Android 手机上从SD 卡恢复数据的 6 个有效应用程序
android·人工智能·windows·macos·智能手机
小蜗子27 分钟前
Multi‐modal knowledge graph inference via media convergenceand logic rule
人工智能·知识图谱
SpikeKing40 分钟前
LLM - 使用 LLaMA-Factory 微调大模型 环境配置与训练推理 教程 (1)
人工智能·llm·大语言模型·llama·环境配置·llamafactory·训练框架
黄焖鸡能干四碗1 小时前
信息化运维方案,实施方案,开发方案,信息中心安全运维资料(软件资料word)
大数据·人工智能·软件需求·设计规范·规格说明书
1 小时前
开源竞争-数据驱动成长-11/05-大专生的思考
人工智能·笔记·学习·算法·机器学习
ctrey_1 小时前
2024-11-4 学习人工智能的Day21 openCV(3)
人工智能·opencv·学习
攻城狮_Dream1 小时前
“探索未来医疗:生成式人工智能在医疗领域的革命性应用“
人工智能·设计·医疗·毕业
Chef_Chen2 小时前
从0开始机器学习--Day17--神经网络反向传播作业
python·神经网络·机器学习