3.2 卷积

一维卷积

Convolution

卷积也是很常用的一种计算模式。卷积计算方法如下:对输出数据中的每一个元素,它的值是输入数据中相同位置上的元素与该元素周边元素的值的加权和。卷积中有一个被称为卷积核(Kernel)或卷积码(Mask)的数据段,指定了周边元素的权值。为了避免混淆,以后都称为卷积码。计算如下图所示:

图中的M向量为卷积码,N向量为输入,P向量为输出。其中P[2] = N[0] * M[0] + ... + N[4] * M[4]。卷积计算需要考虑边界问题,如图,码长度为5,在计算前2个元素和后2个元素时需要的输入数据位置会越过边界。

这时我们需要手动地添加被称为Ghost Cell的元素,该元素的值视情况而定,这里为了简便,取0值即可。在由的应用里面也会把这个值设定为P[0].

一维卷积kernel 代码:

__global__ void convolution_1D_basic_kernel(float* N, float* M, float* P, int Mask_Width, int Width){

  int i = blockIdx.x*blockDim.x + threadIdx.x;
  float Pvalue = 0;
  int N_start_point = i - (Mask_Width/2);
  for(int j = 0; j < Mask_Width; j++) {
    if(N_start_point + j >= 0 && N_start_point + j < Width){
       Pvalue+= N[N_start_point+j] * M[j];
    }
  }
  P[i] = Pvalue;
}

二维卷积

二维的卷积计算是一维卷积的推广,如下所示:

注意由此产生的Ghost Cell也是二维的。

时间: 2024-08-13 14:22:55

3.2 卷积的相关文章

TensorFlow conv2d实现卷积

tf.nn.conv2d是TensorFlow里面实现卷积的函数,参考文档对它的介绍并不是很详细,实际上这是搭建卷积神经网络比较核心的一个方法,非常重要 tf.nn.conv2d(input, filter, strides, padding, use_cudnn_on_gpu=None, name=None) 除去name参数用以指定该操作的name,与方法有关的一共五个参数: 第一个参数input:指需要做卷积的输入图像,它要求是一个Tensor,具有[batch, in_height, i

深度学习方法(十):卷积神经网络结构变化——Maxout Networks,Network In Network,Global Average Pooling

技术交流QQ群:433250724,欢迎对算法.技术感兴趣的同学加入. 最近接下来几篇博文会回到神经网络结构的讨论上来,前面我在"深度学习方法(五):卷积神经网络CNN经典模型整理Lenet,Alexnet,Googlenet,VGG,Deep Residual Learning"一文中介绍了经典的CNN网络结构模型,这些可以说已经是家喻户晓的网络结构,在那一文结尾,我提到"是时候动一动卷积计算的形式了",原因是很多工作证明了,在基本的CNN卷积计算模式之外,很多简

Spark MLlib Deep Learning Convolution Neural Network (深度学习-卷积神经网络)3.1

3.Spark MLlib Deep Learning Convolution Neural Network (深度学习-卷积神经网络)3.1 http://blog.csdn.net/sunbow0 Spark MLlib Deep Learning工具箱,是根据现有深度学习教程<UFLDL教程>中的算法,在SparkMLlib中的实现.具体Spark MLlib Deep Learning(深度学习)目录结构: 第一章Neural Net(NN) 1.源码 2.源码解析 3.实例 第二章D

Spark MLlib Deep Learning Convolution Neural Network (深度学习-卷积神经网络)3.2

3.Spark MLlib Deep Learning Convolution Neural Network(深度学习-卷积神经网络)3.2 http://blog.csdn.net/sunbow0 第三章Convolution Neural Network (卷积神经网络) 2基础及源码解析 2.1 Convolution Neural Network卷积神经网络基础知识 1)基础知识: 自行google,百度,基础方面的非常多,随便看看就可以,只是很多没有把细节说得清楚和明白: 能把细节说清

Spark MLlib Deep Learning Convolution Neural Network (深度学习-卷积神经网络)3.3

3.Spark MLlib Deep Learning Convolution Neural Network(深度学习-卷积神经网络)3.3 http://blog.csdn.net/sunbow0 第三章Convolution Neural Network (卷积神经网络) 3实例 3.1 测试数据 按照上例数据,或者新建图片识别数据. 3.2 CNN实例 //2 测试数据 Logger.getRootLogger.setLevel(Level.WARN) valdata_path="/use

CNN卷积神经网络新想法

最近一直在看卷积神经网络,想改进改进弄出点新东西来,看了好多论文,写了一篇综述,对深度学习中卷积神经网络有了一些新认识,和大家分享下. 其实卷积神经网络并不是一项新兴的算法,早在上世纪八十年代就已经被提出来,但当时硬件运算能力有限,所以当时只用来识别支票上的手写体数字,并且应用于实际.2006年深度学习的泰斗在<科学>上发表一篇文章,论证了深度结构在特征提取问题上的潜在实力,从而掀起了深度结构研究的浪潮,卷积神经网络作为一种已经存在的.有一定应用经验的深度结构,重新回到人们视线,此时硬件的运算

卷积神经网络(CNN)学习算法之----基于LeNet网络的中文验证码识别

由于公司需要进行了中文验证码的图片识别开发,最近一段时间刚忙完上线,好不容易闲下来就继上篇<基于Windows10 x64+visual Studio2013+Python2.7.12环境下的Caffe配置学习 >文章,记录下利用caffe进行中文验证码图片识别的开发过程.由于这里主要介绍开发和实现过程,CNN理论性的东西这里作为介绍的重点,遇到相关的概念和术语请自行研究.目前从我们训练出来的模型来看,单字识别率接近96%,所以一个四字验证码的准确率大概80%,效果还不错,完全能满足使用,如果

TensorFlow框架(4)之CNN卷积神经网络详解

1. 卷积神经网络 1.1 多层前馈神经网络 多层前馈神经网络是指在多层的神经网络中,每层神经元与下一层神经元完全互连,神经元之间不存在同层连接,也不存在跨层连接的情况,如图 11所示. 图 11 对于上图中隐藏层的第j个神经元的输出可以表示为: 其中,f是激活函数,bj为每个神经元的偏置. 1.2 卷积神经网络 1.2.1 网络结构 卷积神经网络与多层前馈神经网络的结构不一样,其每层神经元与下一层神经元不是全互连,而是部分连接,即每层神经层中只有部分的神经元与下一层神经元有连接,但是神经元之间

卷积神经网络CNN

本文学习笔记的部分内容參考zouxy09的博客,谢谢!http://blog.csdn.net/zouxy09/article/details/8775360 什么是卷积 卷积假设改名为"加权平均积",就会非常好理解了.卷积的离散形式就是经常使用的加权平均.而连续形式则可理解为对连续函数的加权平均.假如我们观測或计算出一组数据.但数据因为受噪音的污染并不光滑.我们希望对其进行人工处理. 那么.最简单的方法就是加权平均.实际上加权平均是两个序列在做离散卷积,当中一个序列是权重,还有一个序

深度学习之卷积神经网络CNN及tensorflow代码实现示例

一.CNN的引入 在人工的全连接神经网络中,每相邻两层之间的每个神经元之间都是有边相连的.当输入层的特征维度变得很高时,这时全连接网络需要训练的参数就会增大很多,计算速度就会变得很慢,例如一张黑白的 28×28 的手写数字图片,输入层的神经元就有784个,如下图所示: 若在中间只使用一层隐藏层,参数 w 就有 784×15=11760 多个:若输入的是28×28 带有颜色的RGB格式的手写数字图片,输入神经元就有28×28×3=2352 个-- .这很容易看出使用全连接神经网络处理图像中的需要训