深度学习500问——Chapter12:网络搭建及训练(3)

news2024/11/26 13:44:28

文章目录

12.3.5 Caffe有哪些接口

12.4 网络搭建有什么原则

12.4.1 新手原则

12.4.2 深度优先原则

12.4.3 卷积核size一般为奇数

12.4.4 卷积核不是越大越好

12.5 有哪些经典的网络模型值得我们去学习的

12.6 网络训练有哪些技巧

12.6.1 合适的数据集

12.6.2 合适的预处理方法

12.6.3 网络的初始化

12.6.4 小规模数据训练

12.6.5 设置合理Learning Rate

12.6.6 损失函数


12.3.5 Caffe有哪些接口

Caffe深度学习框架支持多种编程接口,包括命令行、Python和Matlab,下面将介绍如何使用这些接口。

1. Caffe Python接口

Caffe提供 Python 接口,即Pycaffe,具体实现在caffe、python文件夹内。在Python代码中import caffe,可以load models(导入模型)、forward and backward (前向、反向迭代)、handle IO(数据输入输出)、visualize networks(绘制net)和instrument model solving(自定义优化方法)。所有的模型数据、计算参数都是暴露在外、可供读写的。   

(1)caffe.Net 是主要接口,负责导入数据、校验数据、计算模型。   

(2)caffe.Classsifier 用于图像分类。   

(3)caffe.Detector 用于图像检测。   

(4)caffe.SGDSolver 是露在外的 solver 的接口。   

(5)caffe.io 处理输入输出,数据预处理。   

(6)caffe.draw 可视化 net 的结构。   

(7)caffe blobs 以 numpy ndarrys 的形式表示,方便而且高效。

2. Caffe MATLAB接口

MATLAB接口(Matcaffe)在 caffe/matlab 目录的 caffe 软件包。在 matcaffe 的基础上,可将Caffe整合到MATLAB代码中。   

MATLAB接口包括:

(1)MATLAB 中创建多个网络结构。   

(2)网络的前向传播(Forward)与反向传播(Backward)计算。   

(3)网络中的任意一层以及参数的存取。   

(4)网络参数保存至文件或从文件夹加载。   

(5)blob 和 network 形状调整。   

(6)网络参数编辑和调整。   

(7)创建多个 solvers 进行训练。   

(8)从solver 快照(Snapshots)恢复并继续训练。   

(9)访问训练网络(Train nets)和测试网络(Test nets)。   

(10)迭代后网络交由 MATLAB 控制。   

(11)MATLAB代码融合梯度算法。

3. Caffe命令行接口

命令行接口 Cmdcaffe 是 Caffe 中用来训练模型、计算得分以及方法判断的工具。Cmdcaffe 存放在 caffe/build/tools 目录下。

caffe train

caffe train 命令用于模型学习,具体包括:   

(1)caffe train 带 solver.prototxt 参数完成配置。   

(2)caffe train 带 snapshot mode_iter_1000.solverstate 参数加载 solver snapshot。   

(3)caffe train 带 weights 参数 model.caffemodel 完成 Fine-tuning 模型初始化。

caffe test

caffe test 命令用于测试运行模型的得分,并且用百分比表示网络输出的最终结果,比如 accuracyhuoloss 作为其结果。测试过程中,显示每个 batch 的得分,最后输出全部 batch 的平均得分值。

caffe time

caffe time 命令用来检测系统性能和测量模型相对执行时间,此命令通过逐层计时与同步,执行模型检测。

参考文献: 1.深度学习:Caffe之经典模型讲解与实战/ 乐毅,王斌

12.4 网络搭建有什么原则

12.4.1 新手原则

刚入门的新手不建议直接上来就开始搭建网络模型。比较建议的学习顺序如下:

  • 1.了解神经网络工作原理,熟悉基本概念及术语。
  • 2.阅读经典网络模型论文+实现源码(深度学习框架视自己情况而定)。
  • 3.找数据集动手跑一个网络,可以尝试更改已有的网络模型结构。
  • 4.根据自己的项目需要设计网络。

12.4.2 深度优先原则

通常增加网络深度可以提高准确率,但同时会牺牲一些速度和内存。但深度不是盲目堆起来的,一定要在浅层网络有一定效果的基础上,增加深度。深度增加是为了增加模型的准确率,如果浅层都学不到东西,深了也没效果。

12.4.3 卷积核size一般为奇数

卷积核为奇数有以下好处:

  • 1 保证锚点刚好在中间,方便以 central pixel为标准进行滑动卷积,避免了位置信息发生偏移 。
  • 2 保证在填充(Padding)时,在图像之间添加额外的零层,图像的两边仍然对称。

12.4.4 卷积核不是越大越好

AlexNet中用到了一些非常大的卷积核,比如11×11、5×5卷积核,之前人们的观念是,卷积核越大,感受野越大,看到的图片信息越多,因此获得的特征越好。但是大的卷积核会导致计算量的暴增,不利于模型深度的增加,计算性能也会降低。于是在VGG、Inception网络中,利用2个3×3卷积核的组合比1个5×5卷积核的效果更佳,同时参数量(3×3×2+1=19<26=5×5×1+1)被降低,因此后来3×3卷积核被广泛应用在各种模型中。

12.5 有哪些经典的网络模型值得我们去学习的

提起经典的网络模型就不得不提起计算机视觉领域的经典比赛:ILSVRC .其全称是 ImageNet Large Scale Visual Recognition Challenge.正是因为ILSVRC 2012挑战赛上的AlexNet横空出世,使得全球范围内掀起了一波深度学习热潮。这一年也被称作“深度学习元年”。而在历年ILSVRC比赛中每次刷新比赛记录的那些神经网络也成为了人们心中的经典,成为学术界与工业届竞相学习与复现的对象,并在此基础上展开新的研究。

序号年份网络名称获得荣誉
12012AlexNetILSVRC图像分类冠军
22014VGGNetILSVRC图像分类亚军
32014GoogLeNetILSVRC图像分类冠军
42015ResNetILSVRC图像分类冠军
52017SeNetILSVRC图像分类冠军

1.  AlexNet

  • 论文:ImageNet Classification with Deep Convolutional Neural Networks 
  • 代码实现:tensorflow 
  • 主要特点:

1.第一次使用非线性激活函数ReLU。

2.增加防加过拟合方法:Droupout层,提升了模型鲁棒性。

3.首次使用数据增强。

4.首次使用GPU加速运算。

2. VGGNet

  • 论文:Very Deep Convolutional Networks for Large-Scale Image Recognition 
  • 代码实现:tensorflow 
  • 主要特点:

1.网络结构更深。

2.普遍使用小卷积核。

3. GoogLeNet

  • 论文:Going Deeper with Convolutions 
  • 代码实现:tensorflow 
  • 主要特点:

1.增强卷积模块功能。 主要的创新在于他的Inception,这是一种网中网(Network In Network)的结构,即原来的结点也是一个网络。Inception一直在不断发展,目前已经V2、V3、V4。其中1*1卷积主要用来降维,用了Inception之后整个网络结构的宽度和深度都可扩大,能够带来2-3倍的性能提升。

2.连续小卷积代替大卷积,保证感受野不变的同时,减少了参数数目。

4. ResNet

  • 论文:Deep Residual Learning for Image Recognition 
  • 代码实现:tensorflow 
  • 主要特点:

解决了“退化”问题,即当模型的层次加深时,错误率却提高了。

5. SeNet

  • 论文:Squeeze-and-Excitation Networks 
  • 代码实现:tensorflow 
  • 主要特点:

提出了feature recalibration,通过引入 attention 重新加权,可以得到抑制无效特征,提升有效特征的权重,并很容易地和现有网络结合,提升现有网络性能,而计算量不会增加太多。

CV领域网络结构演进历程:

ILSVRC挑战赛历年冠军:

此后,ILSVRC挑战赛的名次一直是衡量一个研究机构或企业技术水平的重要标尺。 ILSVRC 2017 已是最后一届举办.2018年起,将由WebVision竞赛(Challenge on Visual Understanding by Learning from Web Data)来接棒。因此,即使ILSVRC挑战赛停办了,但其对深度学习的深远影响和巨大贡献,将永载史册。

12.6 网络训练有哪些技巧

12.6.1 合适的数据集

1 没有明显脏数据(可以极大避免Loss输出为NaN)。

2 样本数据分布均匀。

12.6.2 合适的预处理方法

关于数据预处理,在Batch Normalization未出现之前预处理的主要做法是减去均值,然后除去方差。在Batch Normalization出现之后,减均值除方差的做法已经没有必要了。对应的预处理方法主要是数据筛查、数据增强等。

12.6.3 网络的初始化

网络初始化最粗暴的做法是参数赋值为全0,这是绝对不可取的。因为如果所有的参数都是0,那么所有神经元的输出都将是相同的,那在back propagation的时候同一层内所有神经元的行为也是相同的,这可能会直接导致模型失效,无法收敛。吴恩达视频中介绍的方法是将网络权重初始化均值为0、方差为1符合的正态分布的随机数据。

12.6.4 小规模数据训练

在正式开始训练之前,可以先用小规模数据进行试练。原因如下:

  • 1 可以验证自己的训练流程对否。
  • 2 可以观察收敛速度,帮助调整学习速率。
  • 3 查看GPU显存占用情况,最大化batch_size(前提是进行了batch normalization,只要显卡不爆,尽量挑大的)。

12.6.5 设置合理Learning Rate

  • 1 太大。Loss爆炸、输出NaN等。
  • 2 太小。收敛速度过慢,训练时长大大延长。
  • 3 可变的学习速率。比如当输出准确率到达某个阈值后,可以让Learning Rate减半继续训练。

12.6.6 损失函数

损失函数主要分为两大类:分类损失和回归损失:

1. 回归损失:

  • 均方误差(MSE 二次损失 L2损失) 它是我们的目标变量与预测值变量差值平方。
  • 平均绝对误差(MAE L1损失) 它是我们的目标变量与预测值变量差值绝对值。 关于MSE与MAE的比较。MSE更容易解决问题,但是MAE对于异常值更加鲁棒。更多关于MAE和MSE的性能,可以参考L1vs.L2 Loss Function

2.分类损失:

  • 交叉熵损失函数。 是目前神经网络中最常用的分类目标损失函数。
  • 合页损失函数 合页损失函数广泛在支持向量机中使用,有时也会在损失函数中使用。缺点:合页损失函数是对错误越大的样本施以更严重的惩罚,但是这样会导致损失函数对噪声敏感。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1845558.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

console.log日志展示

console.log日志展示 1.特定颜色打印 console.log("%caaa","color:#1e80ff") 解释&#xff1a;重点就是%c和color。

IDEA2023中使用run Dashboard面板?实现批量运行微服务

1、直接点击Add service--->Run Configuration Type---->Spring Boot 2、这样就出现了run Dashboard面板&#xff0c;可同时运行多个工程模块&#xff0c;shift选中所有启动类组命名&#xff08;Group Configurations&#xff09; 3、启动所有的项目

linux分区

挂载只改变数据存储的分区位置&#xff0c;不改变文件系统的目录结构&#xff0c;无论怎么挂载linux系统的分区仍然是/根分区和其子目录/opt、/etc、/home等等 临时挂载 添加新磁盘模拟新设备接入&#xff0c;无论使用什么虚拟机都可以 重启电脑reboot&#xff0c;执行lsblk&a…

RestTemple请求GET接口403

问题描述 使用oss接口获取资源的时候&#xff0c;通过浏览器可以直接下载&#xff0c;在代码中使用RestTemplate的get方式访问的时候&#xff0c;出现403错误 问题排查 因为返回状态码是403&#xff0c;就想着是不是授权问题&#xff0c;因为有的接口是有防抓取规则的&…

《Cloud Native Data Center Networking》(云原生数据中心网络设计)读书笔记 -- 02 Clos拓扑

本章回答以下问题&#xff1a; 什么是 Clos 拓扑&#xff0c;它与“接入 - 汇聚 - 核心”拓扑有何不同?Clos 拓扑的特征是什么?Clos 拓扑对数据中心网络的影响是什么? Clos拓扑 云原生数据中心基础设施的先行者们想要构建一种支持大规模水平扩展网络。 基本的Clos拓扑如图…

C++ #pragma pack(n)

一、#pragma简介 #pragma是预处理指令的一种&#xff0c;它的作用是设定编译器的状态、指定编译器完成特定任务。 &#xff08;预处理阶段&#xff1a;在编译阶段之前进行&#xff09; #pragma相当于是由各个厂商开发扩展的&#xff0c;因此可能因编译器或操作系统不同而有所差…

【论文阅读】-- TSR-TVD:时变数据分析和可视化的时间超分辨率

TSR-TVD: Temporal Super-Resolution for Time-Varying Data Analysis and Visualization 摘要1 引言2 相关工作3 我们的循环生成方法3.1 损失函数3.2 网络架构 4 结果与讨论4.1 数据集和网络训练4.2 结果4.3 讨论 5 结论和未来工作致谢参考文献附录1 训练算法及优化2 网络分析…

基于 Arm 虚拟硬件的心电图(ECG)疾病分类应用开发实战

基于 Arm 虚拟硬件的心电图(ECG)疾病分类应用开发实战 目录 文章目录 [toc] 一、实验背景1. 嵌入式软件开发的基本流程2. Arm 虚拟硬件镜像产品简介 二、实验目标三、实验步骤简介四、实验前准备1. 订阅使用 Arm 虚拟硬件镜像的百度智能云云服务器 BCC 实例1.1 百度智能云账号准…

win11家庭版使用自带的Linux子系统并安装docker【全网整合版】

1. 电脑配置项 开发者选项 设置->系统->开发者选项 启用或关闭windows功能 控制面板->卸载程序->启用或关闭windows功能 勾选适用于Linux的Windows子系统和虚拟机平台并重启电脑(首次勾选选项时电脑提示重启) Hyper-V 关键点&#xff1a;win11家庭版在启动…

如何开发一个海外仓系统?难度在哪,怎么选择高性价解决方案

作为海外仓管理的重要工具&#xff0c;海外仓系统的实际应用价值还是非常高的。为了让大家能更好的理解wms海外仓系统&#xff0c;今天会介绍海外仓系统开发的逻辑架构&#xff0c;以及作为海外仓企业要怎么确定高性价比的数字化管理解决方案。 1、开发海外仓系统要考虑的功能…

IDEA 学习之 打开一个 MAVEN 工程

目录 1. 单体工程2. 多 module 工程3. 多个多 module 工程3.1. 重复 1 步骤3.2. 添加其他多 module 工程 1. 单体工程 2. 多 module 工程 3. 多个多 module 工程 3.1. 重复 1 步骤 3.2. 添加其他多 module 工程

红酒——这片大地孕育的液体宝石,背后藏着怎样的风土与传奇?

红酒&#xff0c;不仅是液体中的宝石&#xff0c;更是承载着无数风土与传奇的诗意之物。每一滴红酒都蕴含着大自然的馈赠&#xff0c;每一瓶都讲述着属于它自己的故事。今天&#xff0c;就让我们一起探寻红酒背后的风土与传奇&#xff0c;感受雷盛红酒文化所承载的文化底蕴。 一…

光储系统怎么选?天合储能工商业储能系统Potentia蓝海2震撼来袭

重塑光储设计&#xff0c;颠覆智造想象&#xff0c;2024年6月12日&#xff0c;天合光能“工商储进化论”新品发布会于上海浦东隆重召开&#xff0c;行业首款AI仿生液冷工商业储能系统Potentia蓝海2重磅登场。秉持产品优化、技术创新、服务精进、场景拓展的四维升级理念&#xf…

WeiXin Live Broadcast 2024.06.21

WeiXin Live Broadcast 2024.06.21 微信直播流程 微信直播&#xff0c;如果需要展示主播以及现场画面&#xff0c;需要摄像头和电脑端的直播推流软件。 基础设备&#xff1a;1&#xff09;手机 2&#xff09;笔记本带摄像头 3&#xff09;手机数据线连接笔记本 4&#xff09…

Ollama深度探索:AI大模型本地部署的全面教程

目录 引言一、Ollama概述1、定义与定位2、核心功能3、技术优势4、应用场景 二、安装与配置1、系统要求2、安装方法3、配置指南4、启动Ollama服务 四、快速开始1、启动Ollama2、部署运行模型3、REEST API 五、自定义模型1、定制化的必要性2、使用Modelfile定制模型3、参数调整4、…

【SHA】-- 花样加密算法

可转链接&#xff1a; 勤奋的小牛–加密算法SHA SHA 算法 安全散列算法&#xff08;英语&#xff1a;Secure Hash Algorithm&#xff0c;缩写为SHA&#xff09;是一个密码散列函数家族&#xff0c;是FIPS所认证的安全散列算法。能计算出一个数字消息所对应到的&#xff0c;长…

【自撰写】【国际象棋入门】第7课 常见战术分析(二)牵制、驱赶和腾挪

第7课 常见战术分析&#xff08;二&#xff09;牵制、驱赶和腾挪 在《第6课&#xff1a;常见战术分析&#xff08;一&#xff09;吃双和抽将》中&#xff0c;我们通过一系列实际棋局的例子&#xff0c;简单介绍了“吃双”和“抽将”这两种十分常见的战术。本次课中&#xff0c…

Aigtek电压放大器的主要作用是什么

电压放大器是一种重要的电子设备&#xff0c;用于放大电压信号。它在许多电子系统和应用中发挥着关键的作用。本文将详细介绍电压放大器的主要作用和工作原理。 电压放大器是一种电子电路&#xff0c;它可以将输入信号的电压放大为更大的输出电压。放大器通过增加输入信号的幅度…

了解CDN:提升网络性能和安全性的利器

在当今的数字时代&#xff0c;网站性能和安全性是每一个网站管理员必须关注的核心问题。内容分发网络&#xff08;CDN&#xff0c;Content Delivery Network&#xff09;作为解决这一问题的重要工具&#xff0c;逐渐成为主流。本文将详细介绍CDN的定义、作用及其工作原理&#…

AIGC时代,重塑人的核心竞争力?

随着人工智能技术的飞速发展&#xff0c;AIGC&#xff08;人工智能生成内容&#xff09;的时代已经悄然而至。在这个时代&#xff0c;AI不再仅仅是一个技术概念&#xff0c;而是深入到我们生活的方方面面&#xff0c;从创作到生产&#xff0c;从娱乐到工作&#xff0c;AI都在以…