深度学习算法实践11---卷积神经网络(CNN)之卷积操作

原创 2016年08月29日 18:20:48

卷积神经网络(CNN)主要特性有:稀疏连接和权值共享、卷积操作、池化。在前一篇博文中我们已经讨论了稀疏连接和权值共享,在本篇博文中,我们将介绍卷积操作和池化。正是由于对图像进行卷积操作,卷积神经网络才得以其名,可见卷积操作是其核心。在这篇博文中,我们将讨论卷积操作的实现其及物理含义。

首先,我们来了解一下卷积概念。对于一维信号,卷积定义为:

式1

而我们要处理的图像信号,是二维信号,卷积定义为:

式2

我们假设输入层以3*3为接收域,则其上层特征图也应该是3*3。

如下图所示,我们想要求出上一层第k个特征图(3*3),对其中每个节点i,j的值可以用如下公式求出:


 式3

在上图中,我们需要求出上一层第0个特征图(0,0)点处神经元的输出值,则可知上式的k=0, i=0, j=0,具体列出式子为:

 式4

由上图可知,这里的卷积就是将权值矩阵与图像进行卷积操作,将结果加上上一层对应位置神经元的Bias后再进行一个非线性变换,这里用的是双曲正切函数,即可求出上一层特征图对应位置的神经元输出。

下面来求下一层中第0个特征图中(0,1)位置的神经元输出,如下图所示:


代入式3的公式,可以得出如下的

 式5

有了上述的理论基础,让我们看一下,我们对一个原始图像做卷积操作会出现什么结果,在下面的程序中,我们定义图像输入层有3个特征图,上一层有2个特征图,特征图的尺寸为9*9,我们将做完卷积操作后的图像和之前的图像一并显示出来:

import theano
from theano import tensor as T
from theano.tensor.nnet import conv2d
import numpy
from matplotlib import pylab
from PIL import Image

def conv_wky():
    rng = numpy.random.RandomState(23455)
    input = T.tensor4(name='input')
    w_shp = (2, 3, 9, 9)
    w_bound = numpy.sqrt(3 * 9 * 9)
    W = theano.shared( numpy.asarray(
                rng.uniform(
                    low=-1.0 / w_bound,
                    high=1.0 / w_bound,
                    size=w_shp),
                dtype=input.dtype), name ='W')
    b_shp = (2,)
    b = theano.shared(numpy.asarray(
                rng.uniform(low=-.5, high=.5, size=b_shp),
                dtype=input.dtype), name ='b')
    conv_out = conv2d(input, W)
    output = T.nnet.sigmoid(conv_out + b.dimshuffle('x', 0, 'x', 'x'))
    return theano.function([input], output)

def do_conv():
    f = conv_wky()
    img = Image.open(open('3wolfmoon.jpg', 'rb'))
    img = numpy.asarray(img, dtype='float64') / 256.
    img_ = img.transpose(2, 0, 1).reshape(1, 3, 639, 516)
    filtered_img = f(img_)
    pylab.subplot(1, 3, 1); pylab.axis('off'); pylab.imshow(img)
    pylab.gray()
    pylab.subplot(1, 3, 2); pylab.axis('off'); pylab.imshow(filtered_img[0, 0, :, :])
    pylab.subplot(1, 3, 3); pylab.axis('off'); pylab.imshow(filtered_img[0, 1, :, :])
    pylab.show()

if __name__ == '__main__':
    do_conv()
结果如下所示:


如图所示,可以看出,对于图像进行一次卷积操作,相当于识别出了图像的边缘,我们知道,识别边缘是图像处理的基础操作,因此可以看出卷积操作是有其物理含义的。

我们知道怎么定义卷积操作之后,我们就可以开始实现卷积神经网络(CNN)了。在下一篇博文,我们将讨论怎样使用卷积神经网络(CNN)将MNIST手写数字识别的错误率降低到1%以内,这甚至超过了人类的识别率,足以看到卷积神经网络的巨大威力。


深度学习介绍(四)卷积操作

接下来介绍一下,CNNs是如何利用空间结构减少需要学习的参数数目的 如果我们有一张1000x1000像素的图像,有1百万个隐层神经元,那么他们全连接的话(每个隐层神经元都与图像的每一个像素点相连),...
  • yingyujianmo
  • yingyujianmo
  • 2015年04月08日 19:36
  • 5865

CNN详解(卷积层及下采样层)

CNN详解(卷基层及下采样层) 卷积神经网络包含卷基层、批量归一化层、下采样层、全连接层等。首先来介绍卷基层和下采样层。 1、卷基层(Convolution)...
  • baidu_14831657
  • baidu_14831657
  • 2017年03月06日 09:50
  • 14392

详解卷积神经网络(CNN)

卷积神经网络(Convolutional Neural Network, CNN)是一种前馈神经网络,它的人工神经元可以响应一部分覆盖范围内的周围单元,对于大型图像处理有出色表现。...
  • qq_25762497
  • qq_25762497
  • 2016年04月04日 00:02
  • 18579

CNN笔记:通俗理解卷积神经网络

通俗理解卷积神经网络(cs231n与5月dl班课程笔记)1 前言    2012年我在北京组织过8期machine learning读书会,那时“机器学习”非常火,很多人都对其抱有巨大的热情。当我20...
  • v_JULY_v
  • v_JULY_v
  • 2016年07月02日 22:14
  • 117466

CNN入门之cnn架构和cnn卷积、采样

一. CNN简介   CNN(卷积神经网络)是传统神经网络的变种,CNN在传统神经网络的基础上,引入了卷积和pooling。与传统的神经网络相比,CNN更适合用于图像中,卷积和图像的局部特征相对应,...
  • wonengguwozai
  • wonengguwozai
  • 2016年04月27日 09:12
  • 5242

卷积神经网络CNN(1)——图像卷积与反卷积(后卷积,转置卷积)

1.前言    传统的CNN网络只能给出图像的LABLE,但是在很多情况下需要对识别的物体进行分割实现end to end,然后FCN出现了,给物体分割提供了一个非常重要的解决思路,其核心就是卷积与反...
  • Fate_fjh
  • Fate_fjh
  • 2016年10月21日 12:16
  • 16988

卷积神经网络CNN究竟是怎样一步一步工作的?

转自:http://www.jianshu.com/p/fe428f0b32c1视频地址:https://www.youtube.com/embed/FmpDIaiMIeA文档参阅:pdf [2MB]...
  • cwcww1314
  • cwcww1314
  • 2017年06月18日 11:26
  • 983

深度学习之CNN一 卷积与池化

1 卷积连续: 一维卷积:s(t)=(x∗w)(t)=∫x(a)w(t−a)dts(t)=(x*w)(t)=\int x(a)w(t-a)dt 二维卷积:S(t)=(K∗I)(i,...
  • poorfriend
  • poorfriend
  • 2016年06月05日 10:34
  • 6639

再看CNN中的卷积

这两天在看CS231n的课程笔记,结合着原版英文和知乎上中文版翻译在看,确实Andrej Karpathy写的很棒,很多都是些实践经验不仅仅是理论知识. 我结合着自己的理解和Karpathy的介绍,重...
  • Gavin__Zhou
  • Gavin__Zhou
  • 2017年05月25日 11:03
  • 3209

深度学习(DL)与卷积神经网络(CNN)学习笔记随笔-02-基于Python的卷积运算

深度学习(DL)与卷积神经网络(CNN)学习笔记随笔-02-基于Python的卷积运算 -- 在python中对图片进行卷积操作运算的一个示例程序, 源代码分析:(注意,如果直接保存以下代码,一定要另...
  • niuwei22007
  • niuwei22007
  • 2015年08月27日 12:41
  • 9485
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习算法实践11---卷积神经网络(CNN)之卷积操作
举报原因:
原因补充:

(最多只允许输入30个字)