卷积神经网络的基本结构
卷积神经网络的基本结构
与传统的全连接神经网络一样,卷积神经网络依然是一个层级网络,只不过层的功能和形式发生了变化。
典型的CNN结构包括:
- 数据输入层(Input Layer)
- 卷积层(Convolutional Layer)
- 激活层(Activation Layer)
- 池化层(Pooling Layer)
- 全连接层(Full Connection Layer)
- 损失层(Loss Function Layer)
- 精度层(Accuracy Layer)
1.数据输入层
数据输入层不属于网络结构。与传统的全连接神经网络不同,卷积神经网络的输入层是原始图像,而非提取的信息,因此卷积神经网络是一个无监督的特征学习网络。
数据输入层主要对原始图像数据进行预处理,基础操作包括取均值和灰度归一化,还有一些数据增强的相关操作。
# 这是一个典型的使用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.675crop_size: 48 # 表示输入训练图像尺寸mirror: true # 是数据增强操作,指代水平翻转}include: { phase: TRAIN}
}
2.卷积层
卷积层是网络的特征提取层。卷积神经网络一般包含多个卷积层,一个卷积层可以有多个不同的卷积核。
# 这是一个典型的卷积网络层。
# 包含两类参数,即权重参数和偏置参数,其中配置了两个param属性,分别表示这两类参数的学习率
layer{name: "conv1"type: "Convolution"bottom: "data"top: "conv1"param {lr_mult:1decay_mult:1}param {lr_mult:2decay_mult: 0}convolution_param {num_output:12 # 输出特征层的通道数目pad:1 # 在卷积前进行边界填充像素的行列数kernel_size:3 # 卷积步长stride:2weight_filler{ # 卷积权重参数的初始化策略type:"xavier"std:0.01}bias_filler { # 这里配置的是偏置参数的初始化方法type: "constant"value:0.2}}
}
3.激活层
网络需要激活层进行特征的选择和抑制,早期的Sigmoid等函数使用较多,现在多实用形式更加简单的ReLU函数。
# 这是一个激活层
# RELU激活层非常简单,没有需要学习的参数。(有的激活层有需要学习的参数)
layer{name: "relu1"type:"ReLU"bottom: "conv1"top: "conv1"
}
4.池化层
池化层用于降低特征平面的分辨率及抽象特征。
池化用于压缩网络参数和数据,以降低过拟合。
如果输入为一幅图像,那么池化层最主要的作用就是在压缩图像的同时保持该图像特征的不变性。
# 这是一个池化层
# 池化层包含一个参数pooling_param
layer {name: "pool"type: "Pooling"bottom: "conv3"top: "pool"pooling_param { # 这个参数中有三个属性pool: MAX # 最大池化kernel_size: 3 # 池化操作的核的大小stride: 2 # 步长}
}
5.全连接层
全连接层通常在卷积神经网络结构的最后,它也有权重和偏置两个参数。
# 这是一个全连接层,通常在卷积神经网络结构的最后,也有权重和偏置两个参数
# 其中配置了两个param属性,分别表示这两类参数的学习率
layer {name: "fc"type: "InnerProduct"bottom: "pool"top: "fc"param {lr_mult: 1decay_mult: 1}param {lr_mult: 2decay_mult: 1}inner_product_param {num_output: 2 # 输出特征维度,通常是分类任务的类别数目weight_filler{ # 权重参数的初始化方式type: "xavier"}bias_filler{ # 偏置参数的初始化方式type: "constant"value: 0}}
}
6.损失层
卷积神经网络的优化原理同一般的机器学习算法类似,需要定义损失目标函数,找到最小化损失函数的参数值,通常利用SGD(随机梯度下降)等算法来调整权值。
# 这是一个softmax损失层,损失层的输入就是网络的输出和真实的标签
layer {name: "loss"type: "SoftmaxWithLoss"bottom: "fc"bottom: "clc-label"top: "loss"
}
7.精度层
损失目标函数可以反映网络性能的优劣,但不是最终需要的指标。
对于分类任务,最终需要的是分类精度;
对于回归任务,需要的是定位精度。
因此,一个卷积神经网络还需要接上网络精度层。
# 这是一个分类任务的精度层,它与损失层一样,输入是网络的输出和真实的标签
layer {bottom: "fc"bottom: "clc-label"top: "acc"name: "acc"type: "Accuracy"
}
上面定义的完整的网络结构如图1.20所示。

参考文献:
1.书名:《深度学习之图像识别 核心算法与实战案例 (全彩版)》
作者:言有三著
出版社:清华大学出版社
出版时间:2023年7月第一版(第一次印刷)
ISBN:978-7-302-63527-7
相关文章:

卷积神经网络的基本结构
卷积神经网络的基本结构 与传统的全连接神经网络一样,卷积神经网络依然是一个层级网络,只不过层的功能和形式发生了变化。 典型的CNN结构包括: 数据输入层(Input Layer)卷积层(Convolutional Layer&#x…...
python:使用GDAL库读取遥感影像指定行列数/经纬度坐标的像素值
作者:CSDN @ _养乐多_ 本文将介绍如何使用GDAL库来读取单波段遥感影像数据,如何获取指定行列位置的像素的经纬度坐标,并根据像素行列数或者经纬度坐标获取像素值。代码由python实现。 文章目录 一、读取影像二、获取指定行列位置的像素坐标三、根据地理坐标获取像素值四、根…...

Redis篇----第一篇
系列文章目录 文章目录 系列文章目录前言一、什么是 Redis?二、Redis 与其他 key-value 存储有什么不同?三、Redis 的数据类型?四、使用 Redis 有哪些好处?五、Redis 相比 Memcached 有哪些优势?前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住…...

C语言-----用二维数组解决菱形的打印问题
1.打印菱形,多组输入,一个整数(2~20),表示输出的行数,也表示组成“X”的反斜线和正斜线的长度。 #include <stdio.h>int main() {int n0;while(scanf("%d",&n)! EOF){int i0;int j0;f…...

.NET Core WebAPI中使用swagger版本控制,添加注释
一、效果 二、实现步骤 在代码中添加注释 在项目属性中生成API文档 在Program中注册Swagger服务并配置文档信息 // 添加swagger注释 builder.Services.AddSwaggerGen(x > {x.SwaggerDoc("v1", new OpenApiInfo { Title "Swagger标题", Version "…...

css篇---移动端适配的方案有哪几种
移动端适配 移动端适配是指同一个页面可以在不同的移动端设备上都有合理的布局。主流实现的方案有 响应式布局通过rem或者vw,vh 等实现不同设备有相同的比例而实现适配 首先需要了解viewport 【视口】 视口代表了一个可看见的多边形区域(通常来说是矩形࿰…...

一、部署Oracle
部署Oracle 一、Docker部署1.Oracle11g1.1 测试环境1.1.1 拉取镜像1.1.2 启动容器1.1.3 配置容器环境变量1.1.4 修改sys、system用户密码1.1.5 创建表空间1.1.6 创建用户并授权1.1.5 使用DBeaver测试连接 二、安装包部署 一、Docker部署 1.Oracle11g 1.1 测试环境 当前只能用…...
11-编写自动化测试
上一篇: 10-通用类型、特质和生命周期 Edsger W. Dijkstra 在 1972 年发表的文章《The Humble Programmer》中说:"程序测试可以非常有效地显示错误的存在,但对于显示错误的不存在却无能为力。这并不意味着我们不应该尽可能多地进行测试&…...

爱上JVM——常见问题(一):JVM组成
1 JVM组成 1.1 JVM由那些部分组成,运行流程是什么? 难易程度:☆☆☆ 出现频率:☆☆☆☆ JVM是什么 Java Virtual Machine Java程序的运行环境(java二进制字节码的运行环境) 好处: 一次编写&…...
C#系列-EF扩展框架AutoMapper应用实例(40)
AutoMapper是一个对象到对象的映射器,它用于将一个对象的属性映射到另一个对象的属性。它主要用于在应用程序的不同层之间传输数据时,自动将数据传输对象(DTOs)映射到领域模型,或者将领域模型映射到视图模型等。 下面…...

DataX源码分析-插件机制
系列文章目录 一、DataX详解和架构介绍 二、DataX源码分析 JobContainer 三、DataX源码分析 TaskGroupContainer 四、DataX源码分析 TaskExecutor 五、DataX源码分析 reader 六、DataX源码分析 writer 七、DataX源码分析 Channel 八、DataX源码分析-插件机制 文章目录 系列文章…...
容器高级知识: 适配器模式与 Sidecar 模式的区别
适配器模式与 Sidecar 模式的区别 在 Kubernetes 中,适配器模式和 Sidecar 模式都是扩展您的主应用程序容器功能的方法,但它们具有不同的目的和功能: Sidecar 模式: 通用目的: 为主应用程序提供 补充功能࿰…...
使用Xdisplay将ipad作为扩展显示器Agent闪退问题
1. 正常流程贴子挺多,可以参考这几篇 https://blog.csdn.net/Shi_Xueqing/article/details/129744496 如何将ipad作为win10的扩展屏(使用USB线连接)_ipad win usb 上网-CSDN博客 2.在进行pc端软件设置的时候发生闪退 解决方法:…...

DVXplorer事件相机入门
DV官方文档:Get Started DV (inivation.gitlab.io) DV事件相机的ROS包:https://github.com/uzh-rpg/rpg_dvs_ros 事件相机的资源汇总:https://github.com/uzh-rpg/event-based_vision_resources 1.DV事件相机ROS包驱动程序安装 注意&#x…...

ubuntu屏幕小的解决办法
1. 安装vmware tools , 再点自适应客户机 执行里面的vmware-install.pl这个文件 :sudo ./vmware-install.pl 执行不了可以放到家目录,我放在了/home/book 里面 最后点这个自适应客户机 然后我这里点不了是因为我点了控制台视图和拉伸客户机,…...

黑群晖一键修复:root、AME、DTS、转码、CPU型号等
食用方法:SSH连接群晖使用临时root权限执行 AME3.x激活补丁 只适用于x86_64的:DSM7.x Advanced Media Extensions (AME)版本3.0.1-2004、3.1.0-3005 激活过程需要下载官方的解码包,过程较慢,耐心等待。。。 DSM7.1和7.2的AME版…...

Repo命令使用实例(三十八)
简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 优质专栏:多媒…...
2024年华为OD机试真题-分披萨-Python-OD统一考试(C卷)
题目描述: “吃货”和“馋嘴”两人到披萨店点了一份铁盘(圆形)披萨,并嘱咐店员将披萨按放射状切成大小相同的偶数扇形小块。但是粗心服务员将披萨切成了每块大小都完全不同奇数块,且肉眼能分辨出大小。 由于两人都想吃到最多的披萨,他们商量了一个他们认为公平的分法:从…...

找负环(图论基础)
文章目录 负环spfa找负环方法一方法二实际效果 负环 环内路径上的权值和为负。 spfa找负环 两种基本的方法 统计每一个点的入队次数,如果一个点入队了n次,则说明存在负环统计当前每个点中的最短路中所包含的边数,如果当前某个点的最短路所…...

无人机飞控算法原理基础研究,多旋翼无人机的飞行控制算法理论详解,无人机飞控软件架构设计
多旋翼无人机的飞行控制算法主要涉及到自动控制器、捷联式惯性导航系统、卡尔曼滤波算法和飞行控制PID算法等部分。 自动控制器是无人机飞行控制的核心部分,它负责接收来自无人机传感器和其他系统的信息,并根据预设的算法和逻辑,对无人机的姿…...

前后端交互过程中—各类文件/图片的上传、下载、显示转换
前后端交互过程中—各类文件/图片的上传、下载、显示转换 图片补充:new Blob()URL.createObjectURL()替代方案:FileReader.readAsDataURL()对比: tiff文件TIFF库TIFF转换通过url转换tiff文件为png通过文件选择的方式转换tiff文件为png 下…...

Python训练营打卡 Day46
道注意力(SE注意力) 知识点回顾: 不同CNN层的特征图:不同通道的特征图什么是注意力:注意力家族,类似于动物园,都是不同的模块,好不好试了才知道。通道注意力:模型的定义和插入的位置通道注意力后…...
SQLServer中的存储过程与事务
一、存储过程的概念 1. 定义 存储过程(Stored Procedure)是一组预编译的 SQL 语句的集合,它们被存储在数据库中,可以通过指定存储过程的名称并执行来调用它们。存储过程可以接受输入参数、输出参数,并且可以返回执行…...
青少年编程与数学 02-020 C#程序设计基础 16课题、文件操作
青少年编程与数学 02-020 C#程序设计基础 16课题、文件操作 一、文件操作1. 什么是文件操作?2. 文件操作在程序设计中的重要性小结 二、C#文件操作1. 引入命名空间2. 常见文件操作(1)创建文件(2)写入文件(3…...

华为云Flexus+DeepSeek征文|基于华为云Flexus X和DeepSeek-R1打造个人知识库问答系统
目录 前言 1 快速部署:一键搭建Dify平台 1.1 部署流程详解 1.2 初始配置与登录 2 构建专属知识库 2.1 进入知识库模块并创建新库 2.2 选择数据源导入内容 2.3 上传并识别多种文档格式 2.4 文本处理与索引构建 2.5 保存并完成知识库创建 3接入ModelArts S…...
服务器租用:高防CDN和加速CDN的区别
CDN全称为内容分发网络,其主要的作用原理能够加快网站的数据传输的速度,随着技术的快速发展,CDN也分为高防CDN和加速CDN两种不同的类型,本文将为大家介绍一下高防CDN和加速CDN两者之间的区别有哪些? 高防CDN能够有效抵…...
3.2 HarmonyOS NEXT跨设备任务调度与协同实战:算力分配、音视频协同与智能家居联动
HarmonyOS NEXT跨设备任务调度与协同实战:算力分配、音视频协同与智能家居联动 在万物互联的全场景时代,设备间的高效协同是释放分布式系统潜力的关键。HarmonyOS NEXT通过分布式任务调度技术,实现了跨设备算力动态分配与任务无缝流转&#…...
javascript中Cookie、BOM、DOM的使用
Cookie 在客户端存储小型文本数据(通常 ≤ 4KB),常用于会话管理、个性化设置等场景。 名称描述作用生命周期存储位置安全性会话 Cookie临时存储,浏览器关闭后自动删除会话管理、个性化设置浏览器关闭内存高持久 Cookie设置过期时…...
C#中的密封类与静态类:特性、区别与应用实例
深入解析两类特殊类的设计哲学与实战应用 在面向对象编程领域中,C#提供了多种特殊的类类型以满足不同设计需求。其中密封类(sealed class)和静态类(static class)是最常用的两种特殊类类型。本文将从设计理念、应用场…...

实践篇:利用ragas在自己RAG上实现LLM评估②
文章目录 使用ragas做评估在自己的数据集上评估完整代码代码讲解1. RAG系统构建核心组件初始化文档处理流程 2. 评估数据集构建3. RAGAS评估实现1. 评估数据集创建2. 评估器配置3. 执行评估 本系列阅读: 理论篇:RAG评估指标,检索指标与生成指…...