卷积神经网络(CNN)中卷积的实现
卷积运算本质上就是在滤波器和输入数据的局部区域间做点积,最直观明了的方法就是用滑窗的方式,c++简单实现如下:
输入:imput[IC][IH][IW] IC = input.channels IH = input.height IW = input.width卷积核: kernel[KC1][KC2][KH][KW] KC1 = OC KC2 = IC KH = kernel.height KW = kernel.width输出:output[OC][OH][OW] OC = output.channels OH = output.height OW = output.width其中,padding = VALID,stride=1, OH = IH - KH + 1 OW = IW - KW + 1for(int ch=0;ch<output.channels;ch++) {for(int oh=0;oh<output.height;oh++){for(int ow=0;ow<output.width;ow++){float sum=0;for(int kc=0;kc<kernel.channels;kc++){for(int kh=0;kh<kernel.height;kh++){for(int kw=0;kw<kernel.width;kw++){sum += input[kc][oh+kh][ow+kw]*kernel[ch][kc][kh][kw];}}}//if(bias) sum +=bias[]output[ch][oh][ow]=sum;}} }
直接用滑窗的方法计算卷积,效率比较低,因此一般把卷积操作转换为矩阵乘法。这样可以高效的利用优化之后的矩阵乘法,具体可以参考Caffe中的im2col的实现。
- 在上图中, input features每一个二维矩阵对应与 RGB 图像的 channel 或者是 feature map 中的channel。
- 目前常见的卷积都是 cross channel 的卷积, 既卷积核矩阵是 3 维的(width, height, depth), depth 的大小和feature map 的depth.(depth 就是有几张 feature map)。
- 3维卷积核的方法与 2 维的类似, 也是与 feature map 中相应的一个 3 维的矩阵对应位置元素相乘积。然后相加,2 维的卷积相当于 depth=1 的 3 维的卷
下图阐述了简单的二维卷积实现,输入图像是3*3的RGB数据,组成12*4的矩阵,2个2*2(*3)卷积核,卷积核组成2*12的矩阵,输出矩阵维度为2*4。
最后,将得到的2*4重新reshape成2*2*2,即可。
内容主要来自与:
https://zhuanlan.zhihu.com/p/30086163
https://blog.csdn.net/gavin__zhou/article/details/72723494
http://courses.cs.tau.ac.il/Caffe_workshop/Bootcamp/pdf_lectures/Lecture%203%20CNN%20-%20backpropagation.pdf
转载于:https://www.cnblogs.com/hejunlin1992/p/8686838.html
卷积神经网络(CNN)中卷积的实现相关推荐
- 详细解释卷积神经网络CNN中卷积层以及BN层的参数
问题的提出 在做关于python的卷积神经网络的项目中,发现了一个卷积层加一个BN层竟然一共有6个参数.百思不得其解. if batch_norm:layers += [nn.Conv2d(in_ch ...
- 花书+吴恩达深度学习(十)卷积神经网络 CNN 之卷积层
目录 0. 前言 1. 2D 图像卷积 2. 3D 图像卷积 3. 过滤器(核函数) 4. 过滤器应用于边缘检测 5. padding 填充 6. stride 步长 7. 使用卷积的动机 8. 1乘 ...
- python 图像卷积_[卷积神经网络(CNN)中的卷积核到底是如何提取图像特征的(python实现图像卷积运算)]...
1.前言 我们知道,卷积核(也叫滤波器矩阵)在卷积神经网络中具有非常重要的作用.说白了,CNN主要作用在于提取图像的各种特征图(feature maps). CNN主要是通过卷积运算来完成特征提取的. ...
- 卷积神经网络(CNN)——图像卷积
一.为什么要对图像做卷积? 神经网络中的多层感知机(MLP)十分适合处理表格数据,其中行对应样本,列对应特征.正如我们之前使用 MLP 对 Fashion-MNIST 数据集进行训练和预测的那样,输入 ...
- 卷积神经网络CNN中1×1卷积作用理解
0.引言 研究 GoogLeNet 和 VGG 神经网络结构的时候,都看见了它们在某些层有采取 1x1 作为卷积核,在最开始看到的AlexNet中都是出现了卷积核是 3x3和5×5的.那么,1x1 的 ...
- 卷积神经网络CNN——图像卷积与反卷积(后卷积,转置卷积)
https://blog.csdn.net/fate_fjh/article/details/52882134
- 卷积神经网络(CNN,ConvNet)
卷积神经网络(CNN,ConvNet) 卷积神经网络(CNN,有时被称为 ConvNet)是很吸引人的.在短时间内,变成了一种颠覆性的技术,打破了从文本.视频到语音等多个领域所有最先进的算法,远远超出 ...
- 花书+吴恩达深度学习(十四)卷积神经网络 CNN 之经典案例(LetNet-5, AlexNet, VGG-16, ResNet, Inception Network)
目录 0. 前言 1. LeNet-5 2. AlexNet 3. VGG-16 4. ResNet 残差网络 5. Inception Network 如果这篇文章对你有一点小小的帮助,请给个关注, ...
- 花书+吴恩达深度学习(十三)卷积神经网络 CNN 之运算过程(前向传播、反向传播)
目录 0. 前言 1. 单层卷积网络 2. 各参数维度 3. CNN 前向传播反向传播 如果这篇文章对你有一点小小的帮助,请给个关注,点个赞喔~我会非常开心的~ 花书+吴恩达深度学习(十)卷积神经网络 ...
- 花书+吴恩达深度学习(十二)卷积神经网络 CNN 之全连接层
目录 0. 前言 1. 全连接层(fully connected layer) 如果这篇文章对你有一点小小的帮助,请给个关注,点个赞喔~我会非常开心的~ 花书+吴恩达深度学习(十)卷积神经网络 CNN ...
最新文章
- 【概率论与数理统计】假设检验
- Linux 内核中的 GCC 特性(zz)
- java 日期注解 xml_Spring xml注解+java注解
- 五分钟精通Oracle Hints
- Hadoop生态hive(二)安装
- linux svn 安装信息,linux 下安装 subversion(svn) 客户端
- SQL Server中的数据库表分区
- C语言中指针定义的字符串和数组定义的字符串的区别
- PyQt5多线程刷新界面防假死
- 关于电量采集芯片(库仑计)DS2781相关操作及配置
- Exce如何行内随机排序确定出场顺序
- 【IAR】 This device has been locked for debugging
- 软件项目管理相关(生存期模型、FP、PERT)
- 命主属性是水什么意思_八字五行属性查询表,有没有五行属性含水的且
- matlab偏最小二乘截距,matlab代写偏最小二乘回归(PLSR)和主成分回归(PCR)
- 关于函数不定积分的方法总结
- 玩转RFID(一) - MFRC522模块上手
- Vue2.5从零开发猫眼④——Home页开发
- mt6765和骁龙665哪个好_联发科MT6750和骁龙450哪个好 高通骁龙450与联发科MT6750区别对比评测...
- 2021年Java面试心得:java短信模板设计