卷积神经网络的基本结构
卷积神经网络的基本结构
与传统的全连接神经网络一样,卷积神经网络依然是一个层级网络,只不过层的功能和形式发生了变化。
典型的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算法等部分。 自动控制器是无人机飞行控制的核心部分,它负责接收来自无人机传感器和其他系统的信息,并根据预设的算法和逻辑,对无人机的姿…...
利用ngx_stream_return_module构建简易 TCP/UDP 响应网关
一、模块概述 ngx_stream_return_module 提供了一个极简的指令: return <value>;在收到客户端连接后,立即将 <value> 写回并关闭连接。<value> 支持内嵌文本和内置变量(如 $time_iso8601、$remote_addr 等)&a…...
反向工程与模型迁移:打造未来商品详情API的可持续创新体系
在电商行业蓬勃发展的当下,商品详情API作为连接电商平台与开发者、商家及用户的关键纽带,其重要性日益凸显。传统商品详情API主要聚焦于商品基本信息(如名称、价格、库存等)的获取与展示,已难以满足市场对个性化、智能…...
Java-41 深入浅出 Spring - 声明式事务的支持 事务配置 XML模式 XML+注解模式
点一下关注吧!!!非常感谢!!持续更新!!! 🚀 AI篇持续更新中!(长期更新) 目前2025年06月05日更新到: AI炼丹日志-28 - Aud…...
LLM基础1_语言模型如何处理文本
基于GitHub项目:https://github.com/datawhalechina/llms-from-scratch-cn 工具介绍 tiktoken:OpenAI开发的专业"分词器" torch:Facebook开发的强力计算引擎,相当于超级计算器 理解词嵌入:给词语画"…...
UR 协作机器人「三剑客」:精密轻量担当(UR7e)、全能协作主力(UR12e)、重型任务专家(UR15)
UR协作机器人正以其卓越性能在现代制造业自动化中扮演重要角色。UR7e、UR12e和UR15通过创新技术和精准设计满足了不同行业的多样化需求。其中,UR15以其速度、精度及人工智能准备能力成为自动化领域的重要突破。UR7e和UR12e则在负载规格和市场定位上不断优化…...
【数据分析】R版IntelliGenes用于生物标志物发现的可解释机器学习
禁止商业或二改转载,仅供自学使用,侵权必究,如需截取部分内容请后台联系作者! 文章目录 介绍流程步骤1. 输入数据2. 特征选择3. 模型训练4. I-Genes 评分计算5. 输出结果 IntelliGenesR 安装包1. 特征选择2. 模型训练和评估3. I-Genes 评分计…...
【学习笔记】erase 删除顺序迭代器后迭代器失效的解决方案
目录 使用 erase 返回值继续迭代使用索引进行遍历 我们知道类似 vector 的顺序迭代器被删除后,迭代器会失效,因为顺序迭代器在内存中是连续存储的,元素删除后,后续元素会前移。 但一些场景中,我们又需要在执行删除操作…...
在鸿蒙HarmonyOS 5中使用DevEco Studio实现指南针功能
指南针功能是许多位置服务应用的基础功能之一。下面我将详细介绍如何在HarmonyOS 5中使用DevEco Studio实现指南针功能。 1. 开发环境准备 确保已安装DevEco Studio 3.1或更高版本确保项目使用的是HarmonyOS 5.0 SDK在项目的module.json5中配置必要的权限 2. 权限配置 在mo…...
Linux信号保存与处理机制详解
Linux信号的保存与处理涉及多个关键机制,以下是详细的总结: 1. 信号的保存 进程描述符(task_struct):每个进程的PCB中包含信号相关信息。 pending信号集:记录已到达但未处理的信号(未决信号&a…...
DriveGPT4: Interpretable End-to-end Autonomous Driving via Large Language Model
一、研究背景与创新点 (一)现有方法的局限性 当前智驾系统面临两大核心挑战:一是长尾问题,即系统在遇到新场景时可能失效,例如突发交通状况或非常规道路环境;二是可解释性问题,传统方法无法解释智驾系统的决策过程,用户难以理解车辆行为的依据。传统语言模型(如 BERT…...
