CNN-卷积神经网络_燕~_~的博客-程序员宅基地

技术标签: 计算机视觉  

在这里插入图片描述

卷积运算

卷积运算可划分为三种:Same卷积、Valid卷积、Full卷积(反卷积)。

  1. 为什么要padding
    因为在卷积/池化过程中过滤器可能不能将某个方向上的数据刚好处理完

Same卷积

通过Padding填充0运算保证卷积前后特征图大小不变
在这里插入图片描述

Valid卷积

不补零,忽略边界,特征图会变小

Full卷积

实现反卷积运算的核心步骤是在特征图中padding 0,然后进行卷积运算使得特征图变大。
在这里插入图片描述

FCN反卷积

首先对特征图各神经元之间进行0填充,即上池化;然后再进行卷积运算
在这里插入图片描述

卷积层

作用:提取特征
使用:输入数据与卷积核卷积生成卷积层矩阵
卷积层矩阵shape计算:
padding = SAME

	out_h = ceil(in_h/strides[1])
	out_w =  ceil(in_w/strides[2])

padding = VALID

	out_h = ceil((in_h-f_h+1)/strides[1])
	out_w = ceil((in_w-f_w+1)/strides[2]

pytorch计算公式:https://blog.csdn.net/a132582/article/details/78658155
在这里插入图片描述

特性:参数共享
其他

  1. 卷积时,通常会使用多个卷积核对图片进行卷积,每个卷积核的通道数和输入图片的通道数保持一致,卷积核的个数决定了feature map层的通道数。
  2. 感受野:感受野是卷积神经网络每一层输出的特征图(Feature Map)上的像素点在原始图像上映射的区域大小。
  3. 卷积层需要指定的超参数:filter个数(K)、filter大小(F)、步长(S)、边界填充(P)
  4. 关于卷积核的个数,理论上是初始化套数越多越好,初始化多套卷积核,提取的特征就会多样化,机器学到的东西就更多,有利于提高准确率

激活函数

将卷积层的输出做一次非线性映射,大部分卷积神经网络中,基本都是采用的relu函数
作用

  1. 用来加入非线性因素(实际问题中,样本不一定是线性可分的)
  2. 构建稀疏矩阵:可以去除数据中的冗余,最大可能保留数据的特征

常用激活函数

实际模型中最常用的还是RELU,注意学习率的设置以及死亡节点所占的比例即可
激 活 函 数 应 该 具 有 的 特 性 \color{#6495ED}{激活函数应该具有的特性}

  1. 非线性。
  2. 连续可微。梯度下降法的要求
  3. 范围最好不饱和。当有饱和的区间段时,若系统优化进入到该阶段,梯度近似为0,网络的学习就会停止
  4. 单调性。当激活函数是单调时,单层神经网络的误差是凸的,好优化。
  5. 在原点近似线性。这样当权值初始化为接近0的随机值时,网络可以学习的快,不用调节网络的初始值。

常 用 的 激 活 函 数 \color{#6495ED}{常用的激活函数}
1 、 s i g m o i d 函 数 \color{#8FBC8F}{1、sigmoid函数} 1sigmoid
在这里插入图片描述
缺点:饱和时梯度值非常小。BP算法方向更新时是以连乘的方式传递到前层,当层数较多时就会使得梯度消失
2 、 T a n h 函 数 \color{#8FBC8F}{2、Tanh函数} 2Tanh
在这里插入图片描述
3 、 R E L U 函 数 \color{#8FBC8F}{3、RELU函数} 3RELU
在这里插入图片描述

该函数的提出很大程度上解决了BP算法在优化深层神经网络是的梯度消失问题
优点:x>0时,梯度恒为1,无梯度消失问题,收敛快
增大了网络的稀疏性。x<0时输出为0,稀疏性也大,提取出的特征就越具有代表性,泛化能力越强
缺点:如果后层的某个梯度特别大,导致W更新以后变得特别大,导致该层输出0,成为死亡节点
当学习率比较大时可能会有40%的神经元都会在训练开始就死亡
4 、 L e a k y R e l u 函 数 \color{#8FBC8F}{4、Leaky Relu函数 } 4LeakyRelu
在这里插入图片描述
5 、 M a x o u t 函 数 \color{#8FBC8F}{5、Maxout函数} 5Maxout
在这里插入图片描述

池化层

对输入的特征图进行压缩,一方面使特征图变小,简化网络设计复杂度;另一方面进行特征压缩,提取主要特征
池化操作一般有两种:1、avy pooling ,2、max pooling
作用:池化层往往出现在卷积层的后面,通过池化来降低卷积层输出的特征向量,同时改善结果(不易出现过拟合),那么池化层的作用就是压缩图像
主要功能:通过逐步减小表征的空间尺寸来减小参数量和网络中的计算;池化层在每个特征图上独立操作。使用池化层可以压缩数据和参数的量,减小过拟合
具 体 作 用 \color{#6495ED}{具体作用}

  1. 特征不变性:去掉无关紧要的信息,留下最能表达图像的特征(平移不变性,选择不变性,尺度不变性)
  2. 特征降维:去除冗余信息,提取重要的特征
  3. 在一定程度上防止过拟合,更方便优化
  4. 可以扩大感知野(如何扩大感知野:通过下采样的方法,使得原来的一小块代表更大的区域)

全连接层

连接所有的特征,将输出值送给分类器(比如softmax分类器)

CNN之优缺点

优点:

  1. 共享卷积核,对高维数据处理无压力
  2. 无需手动选取特征,训练好权重,即得特征分类效果最好
  3. 深层次的网络抽取图像信息比较丰富,表达效果好
    缺点:
  4. 需要调参,需要大量样本集,训练最好用gpu
  5. 物理含义不明确(不知道每个卷积层提取的特征是什么)

卷积神经网络之fine-tuning

fine-tuning:就是使用已用于其他目标、预训练好模型的权重或部分权重,作为初始值开始计算
不用随机选取几个数作为初始权重的原因:

  1. 自己从头训练卷积神经网络容易出现问题
  2. fine-tuning能很快收敛到一个较理想的状态,省时又省心
    fine-tuning的具体做法:
  3. 复用相同层的权重,新定义层取随机权重初始值
  4. 调大新定义层的学习率,调小复用层的学习率
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_42558201/article/details/107818881

智能推荐

MTK6225电话管理--ShowScreens_IOT物联网小镇的博客-程序员宅基地

本文简单的描述MO,MT的手机界面的显示过程。 1.呼出电话的screen       呼出电话之后,进入:PsCBackSetCallFeatures()。        进入状态机:CM_PS_SHOW_OUTGOING_CALL_SCREEN                     ProcessShowOutgoingCallScreen()              E

mysql 字段交集_Mysql 正则获取字段的交集_王玮滢的博客-程序员宅基地

例子类似钉钉打卡考勤:SELECT * FROM fa_checkingroup WHERE ( (concat(',',cdepartment_id,',') regexp concat(',(',replace('2,12',',','|'),'),') OR (concat(',',cuser_id,',') regexp concat(',(',replace('40',',','|'),...

王道机试指南NO.10素数判定_IT圈的01羊的博客-程序员宅基地

时间限制:1s 内存限制:32MB题目描述给定一个数n,要求判断其是否为素数(0,1,负数都是非素数)。输入测试数据有多组,每组输入一个数n。输出对于每组输入,若是素数就输出yes,否则输出no。样例输入13样例输出yes题目分析1、若n存在相异于1与其本身的因数且该因数大于sqrt(n),则必存在小于或等于sqrt(n)的因数,所以我们只需测试到sqrt(n)为止。2、...

sqoop的在hadoop上的安装和使用_宝罗的博客-程序员宅基地_sqoop安装到hadoop集群

1.sqopp 是一款用于连接hbase mysql oracle的多数据库连接工具2.下面我们开始来安装sqoop操作3.首先下载sqoop安装包 我这里已经下载好了4.解压安装包tar -zxfsqoop-1.4.6-cdh5.14.2.tar.gzmv sqoop-1.4.6-cdh5.14.2 soft/sqoop1465.进入conf目录cd soft/sqoop146/conf/6.cp 文件然后修改cp sqoop-env-template.sh s...

android 设置空动画,Android WebView呈现空白/白色,视图在CSS更改或HTML更改时未更新,动画不连贯..._数码反欺诈联盟的博客-程序员宅基地

注意:从Android 4.4开始,有更好的解决方案。 这是一种称为CrossWalk的嵌入式WebView替代产品。 它使用了最新的Chromium套件,非常棒。 您可以在这里阅读有关内容:crosswalk-project.org同样,从Android 4.4开始,似乎不再需要WebView解决方案,您可以使用其他一些更安全的答案。 我只会使用这种270929693482051212769方法...

Maven实战之旅第五篇——使用eclipse创建maven项目_普通网友的博客-程序员宅基地

Maven实战之旅第五篇——使用eclipse创建maven项目 前面我们已经讲解了使用maven的archetype插件来手动创建maven项目,通过动手操作我们可以直观的感受到这种方式效率

随便推点

Android基础知识回顾——适配器及适配器控件_画心傻乎乎的博客-程序员宅基地

适配器及适配器控件适配器 什么是适配器:把数据转换为适配器控件所能使用的SimpleAdapter(可以显示多个控件) 第一个参数填上下文对象 第二个为数据源(而且数据源必须是map对象组成的集合 (listSimpleAdapter adapter =new SimpleAdapter(content,data,resource,from,to);ArrayAda...

git commit : running pre-commit hook: lint-staged Stashing changes_灵佑666的博客-程序员宅基地

1. git 提交代码时保持这个问题是因为当你在终端输入git commit -m “XXX”,提交代码的时候,pre-commit(客户端)钩子,它会在Git键入提交信息前运行做代码风格检查。如果代码不符合相应规则,则报错,而它的检测规则就是根据.git/hooks/pre-commit文件里面的相关定义解决git commit -m “提交页面备注” --no-verify 忽略代码风格检查2. idea...

html 坐标轴内画线,JavaScript使用canvas绘制坐标和线_陈莽昆的博客-程序员宅基地

本文实例为大家分享了JavaScript使用canvas绘制坐标和线的具体代码,供大家参考,具体内容如下具体代码如下:在指定位置画多个点canvas{border: 1px dashed gray;}js代码:var cvs = document.getElementById('cvs');var ctx = cvs.getContext('2d');// 坐标轴距离画布上右下左的边距var pa...

大钟的ios开发之旅(★firecat入门推荐,iOS开发者账号申请★)_libaineu2004的博客-程序员宅基地

大钟的ios开发之旅(1)————ios开发的准备工作,申请开发者账号和证书http://blog.csdn.net/conowen/article/details/40740435大钟的ios开发之旅(2)————简单说说ios中ARC与非ARC模式下的property的变量修饰词http://blog.csdn.net/conowen/article/details

Android支持全面屏设置_weixin_30648963的博客-程序员宅基地

在AndroidManifest的application里面设置resizeableActivity的属性为true &lt;application android:name=".CompleteCarSellApplication" android:allowBackup="true" android:icon="@mipmap/ic...

python房地产数据分析统计服_Python数据分析之路(一)查询和统计_Melo的健身课堂的博客-程序员宅基地

0. 如何入门数据分析关注沙漠之鹰的同窗必定看过沙漠君写得不少篇数据分析文章,好比分析房价,车价,预测机动车摇号这些话题。其实文章中全部的分析都使用了Python和它很是强大的数据分析库Pandas。一些机器学习和预测的功能则用到了sklearn库。掌握了这些工具,就能应对绝大多数的分析需求。html纸上得来终觉浅,即便你看了不少书和代码,也未必比得上多接触例子多敲一些代码,三四个中等规模(约一两...

推荐文章

热门文章

相关标签