深度学习03——CNN

说明:本系列是七月算法深度学习课程的学习笔记

文章目录

  • 1神经网络与卷积神经网络
    • 1.1 深度神经网络适合计算机视觉处理吗
    • 1.2CNN的结构
      • 1.2.1 数据输入层
      • 1.2.2 卷积层
      • 1.2.3 激励层
      • 1.2.3 池化层
      • 1.2.4 全连接层
    • 1.3CNN的训练算法
    • 1.4CNN的优缺点
  • 2正则化与Droupout
  • 3典型结构与训练调优

1神经网络与卷积神经网络

1.1 深度神经网络适合计算机视觉处理吗

深度神经网络简称DNN,卷积神经网络简称CNN。
DNN

DNN的每一层与后面一层都是全连接。如果输入层是3维,隐层1有4个神经元。那从输入层到隐层1会有35=15个参数。如果隐层2有4个神经元,从隐层1到隐层2,需要44=16个参数。

在图像视频处理中,输入是非常大的。例如一张图片可能的输入是32x32x3,也就是一张长32,宽32的彩色图片。如果输入层有1万张图片用于训练,那参数就是=307210000维(在图像处理中一般会把 原始的输入矩阵做flatten,变为向量)。这是非常大的一个数。每一个隐层神经元数量实际中不会太少,因为太少就很难捕捉到重要信息,例如4000,参数量变为40003072*10000。这是一个很大的数字。这还只是一层。参数量大,在工程上压力大,计算、加载、存储压力都很大。参数量大,也很容易过拟合。所以DNN不适合。CNN可以。

1.2CNN的结构

CNN为什么适合计算机视觉处理呢?先看下CNN的结构。

一个CNN包含:数据输入层/input layer+卷积计算层/conv layer、激励层activation layer、池化层 pooling layer、全连接层 FC layer、Batch Normalization层(可能有)。

1.2.1 数据输入层

有3种常见的数据处理方式。
1 去均值:把数据的各个维度都中心化到0,相当于没有了截距。

2 归一化:把数据的各个维度都归一化到同样的范围,便于梯度计算,各个维度收敛速度一致。
常见的归一化的方法有:
min-max标准化,将数据归一到[0,1]范围内。x∗=x−minmax−minx^*=\dfrac{x-min}{max-min}x=maxminxmin
z-score标准化:处理后数据变为符合标准正态分布。x∗=x−μσx^*=x-\mu\sigmax=xμσ,其中μ为所有样本数据的均值,σ为所有样本数据的标准差。

3 PCA/白化:PCA 降维 。白化:降维之后的各个维度可能幅度不一致,这里再做一次归一化。

注意:这里需要说明的是如果在训练集上做了什么操作,在测试集或者预测的时候也需要做同样的处理。可以使用样本的归一化的值(均值、方差等),做归一化。

1.2.2 卷积层

卷积层的几个核心概念:局部关联、 窗口滑动。

局部关联是指用输入层的一小块区域与下一层的每个神经元做内积。这块小区域被称为一个窗口。一个窗口计算完,按照一定的步长移动窗口,直至计算完成。滑动过程中遇到最后一次计算,不够窗口宽度,可以填充0,补充完整。

下一层神经元的个数被称为深度。
下一层中每个神经元的连接权重是固定的。如图中下一层有5个神经元,那就是5组参数。每一组参数是会与窗口中的数据做内积,如果窗口是一个3x3x3的大小,那一个神经元的参数个数就是3x3x3。这一层参数总个数是3x3x3x5。这样参数的数量与DNN(32x32x3x5)相比就少了很多。

一组固定的权重与不同的窗口内数据做内积,这个过程称为卷积。

1.2.3 激励层

激励层:把卷积层的输出做非线性变换。否则无论加多少个隐层,这个符合函数还是线性的。是不能形成弯曲的曲线,在某些数据上是没法分割的。
常用的激励函数有:sigmoid、tanh(双曲正切)、Relu、Leaky Relu、ELU、Maxout
只要神经网络正常,选择哪个激励函数不影响最后的结果。
慎用sigmoid函数,优先选择Relu,可以继续尝试Leaky Relu、Maxout。

1.2.3 池化层

池化层:夹在连续的卷积层中间。主要起到压缩数据和参数的作用,可以防止过拟合。

可以做池化的原因是发现将一个224x224的特征可视化之后发现降低到112x112,特征不会丢失很多。

可以采取的池化方法是max pooling和average pooling。

相当于给一个图像做了模糊化。减少了数据量,对下一层就意味着减少了输入的参数量。同时因为模糊化了,降低过拟合的风险。

1.2.4 全连接层

全连接:两层之间所有神经元都有权重链接。通常全连接层放在CNN的尾部。

一个典型的CNN结构=INPUT +[[CONV->RELU]*N->POOLING?]*M+[FC->RELU]*K+FC

1.3CNN的训练算法

先定义loass function:衡量和实际结构之间的差距
找到最小化损失函数的W和b,CNN中使用的是SGD
利用BP 链式法则求导,求出dw和db(将错误信息回传到每一层)
利用SGD/随机梯度下降,迭代更新W和b(学习到新一轮知识)

1.4CNN的优缺点

优点:共享卷积核,优化计算量;
   无需手动选择特征,训练好权重即得特征;
   深层次的网络抽取图像信息丰富,表达效果好。
缺點:需要调参、计算量大
   物理含义不明确

2正则化与Droupout

原因:神经网络学习能力过强,可能会过拟合
传统方式可以使用L1、L2正则化,在NN中是使用dropout。
Dropout正则化:别一次开启所有学习单元。给每个神经元安了一个开关,这个开关会以一定的概率关闭。

在训练阶段:

p=0.5def train_step(X):H1 = np.maximum(0, np.dot(W1,X)+b1)U1 = np.random.rand(H1.shape) <p//<p则保留H1 = H1*U1...

在预测阶段:

def predict(X):H1 = np.maximum(0, np.dot(W1,X)+b1)*p....

在预测阶段会乘以概率p,实际工程中,会在训练阶段除以p。

p=0.5def train_step(X):H1 = np.maximum(0, np.dot(W1,X)+b1)U1 = (np.random.rand(H1.shape) <p)/pH1 = H1*U1...def predict(X):H1 = np.maximum(0, np.dot(W1,X)+b1)....

对dropout的理解方式一:不要记住太多的东西,学习过程中保持泛华能力。
对dropout的理解方式二:每次都关掉一部分感知器,得到一个新模型,最后做融合。不至于听一家之言。

3典型结构与训练调优

典型CNN网络有:Lenet、AlexNet、ZFNet、VGG、GoogleNet、ResNet。
调优:可以在这些典型的网络模型基础上训练自己的图片分类模型。可以做的是:不要修改层的名称,使用原有参数,降低学习率;修改层的名称,修改分类数为自己的分类数量,提高学习率;新增自己的层,提高学习率。

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

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

相关文章

第六十八期:做中台找死,不做中台等死?

今年参加了云栖大会&#xff0c;作为中台的践行者&#xff0c;我也更关注中台架构实施的行业状况&#xff0c;学习了其他公司中台的思想和经验。 作者&#xff1a;谭明智 今年参加了云栖大会&#xff0c;作为中台的践行者&#xff0c;我也更关注中台架构实施的行业状况&#…

自定义select样式

select {/*Chrome和Firefox里面的边框是不一样的&#xff0c;所以复写了一下*/border: solid 1px #000;/*很关键&#xff1a;将默认的select选择框样式清除*/appearance: none;-moz-appearance: none;-webkit-appearance: none;/*在选择框的最右侧中间显示小箭头图片*/backgrou…

[密码学基础][每个信息安全博士生应该知道的52件事][Bristol52]46.Sigma协议正确性、公正性和零知识性

这是一系列博客文章中最新的一篇&#xff0c;该文章列举了“每个博士生在做密码学时应该知道的52件事”:一系列问题的汇编是为了让博士生们在第一年结束时知道些什么。 在Sigma协议中&#xff0c;正确性&#xff0c;公正性和零知识性意味着什么? Sigma协议 一个更一般的理解 …

[dp]leetcode 746. Min Cost Climbing Stairs

输入&#xff1a;一个数组cost&#xff0c;cost[i]表示越过第i个台阶的代价&#xff08;可能是热量&#xff0c;也可能是过路费&#xff09; 输出&#xff1a;走过这n个台阶&#xff0c;需要的最小代价 规则&#xff1a;一旦你为第i个台阶付出代价cost[i]&#xff0c;那么你可以…

第六十七期:全球500强公司的2100万登录信息惊现于暗网上!

暗网上多处出现了从《财富》500强公司窃取的2100余万条登录信息&#xff0c;其中许多登录信息已被破解&#xff0c;以明文形式提供。 作者&#xff1a;布加迪编译 暗网上多处出现了从《财富》500强公司窃取的2100余万条登录信息&#xff0c;其中许多登录信息已被破解&#xff…

[密码学基础][每个信息安全博士生应该知道的52件事][Bristol52]47.什么是Fiat-Shamir变换?

这是一系列博客文章中最新的一篇&#xff0c;该文章列举了“每个博士生在做密码学时应该知道的52件事”:一系列问题的汇编是为了让博士生们在第一年结束时知道些什么。 只要Alice和Bob同时在线&#xff0c;Sigma协议能快速的完成Alice向Bob证明的任务。Alice向Bob发送承诺&…

第六十九期: 漫画说算法之什么是一致性哈希?

当缓存集群的节点有所增加的时候&#xff0c;整个环形空间的映射仍然会保持一致性哈希的顺时针规则&#xff0c;所以有一小部分key的归属会受到影响。 作者&#xff1a;IT知识课堂来源 一年之前—— 未来两年内&#xff0c;系统预估的总订单数量可达一亿条左右。 按Mysql单表…

[密码学基础][每个信息安全博士生应该知道的52件事][Bristol52]48.TPM的目的和使用方法

这是一系列博客文章中最新的一篇&#xff0c;该文章列举了“每个博士生在做密码学时应该知道的52件事”:一系列问题的汇编是为了让博士生们在第一年结束时知道些什么。 TPM&#xff08;Trusted Platform Module&#xff0c;可信平台模块&#xff09; 在检查TPM目的之前&#x…

[dp]leetcode 1025. Divisor Game

输入&#xff1a;一个正整数N 输出&#xff1a;Alice赢&#xff0c;返回true&#xff0c;否则false 规则&#xff1a;黑板上给出一个数字N&#xff0c;ALice先选择。Bob后选择。他们可以选择一个数字 X&#xff0c;0<X<N并且N%X0。一个人选择X以后&#xff0c;黑板上的数…

spring学习(25):通过构造函数依赖注入

目录结构 pox.xml <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.apache.org/P…

计算机原理

计算机组成原理 简单易学、开源免费、可移植、可拓展、可嵌入、面向对象&#xff0c;比java、c#等更彻底 谷歌、CIA、nasa、YouTube、Dropbox、Instagram、Facebook、redhat、豆瓣、知乎、春雨医生、搜狐、金山、腾讯、盛大、网易、百度、阿里、淘宝、土豆、新浪、果壳等都在使…

[密码学基础][每个信息安全博士生应该知道的52件事][Bristol52]49.描述在IPsec和TLS后的基本想法

这是一系列博客文章中最新的一篇&#xff0c;该文章列举了“每个博士生在做密码学时应该知道的52件事”:一系列问题的汇编是为了让博士生们在第一年结束时知道些什么。 网络安全协议&#xff08;Internet Protocol Security&#xff0c;IPsec&#xff09;和安全传输层协议&…

spring学习(26):更优雅的依赖注入 在@bean注入参数

目录结构 pox.xml <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.apache.org/P…

[dp] LeetCode 62. Unique Paths

输入&#xff1a;两个int m和n 输出&#xff1a;一个int,表示不同路径的个数。 规则&#xff1a;有一个m行n列的矩阵&#xff0c;一个机器人从左上角走到右下角&#xff0c;每次向下或者向右走一格。 分析&#xff1a;目的是要找到从(0,0)到(m-1,n-1)有多少种不同 的走法。如果…

springboot 控制台程序读取配置文件(原创)

首先新建一个springboot项目&#xff0c;此处省略。 1.新建一个application.properties person.namekevin person.age6 person.sexmale 2.新建一个类&#xff0c;自动读取对应字段的值 有两种方式&#xff0c; 第一种 package cn.wq;import org.springframework.beans.factory.…

spring学习(27):通过setter依赖注入

目录结构 pox.xml <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.apache.org/P…

[密码学基础][每个信息安全博士生应该知道的52件事][Bristol52]50.什么是BLS基于对的签名方案?

这是一系列博客文章中最新的一篇&#xff0c;该文章列举了“每个博士生在做密码学时应该知道的52件事”:一系列问题的汇编是为了让博士生们在第一年结束时知道些什么。 转载链接&#xff1a;https://www.cnblogs.com/zhuowangy2k/p/12248721.html

EF(Entity FrameWork)实体框架

一、 1、简称&#xff1a;实体框架 2、ADO.NET Entity FrameWork 是微软以ADO.NET为基础发展出来的对象关系对应&#xff08;O/R Mapping&#xff09;解决方案&#xff1b; 3、ORM框&#xff1a;对象关系映射&#xff08;Object-Relational Mapping&#xff09;&#xff0c;是一…

深度学习04-RNN

文章目录1 为什么需要RNN1.1RNN的应用场景1.2 DNN和CNN不能解决的问题2 RNN的网络结构2.1 RNN基础结构2.2 不同类型的RNN3 RNN的优化算法BPTT4 LSTM5 GRU1 为什么需要RNN 1.1RNN的应用场景 1 模仿论文&#xff08;生成序列&#xff09;。输入是一堆的论文文章&#xff0c;输出…

spring学习(28):处理自动装配的歧义性

pox.xml <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.apache.org/POM/4.0.0 …