您的位置:首页 > 理论基础 > 计算机网络

theano卷积神经网络实现

2016-07-25 00:00 441 查看
摘要: theano deeplearning Convolutional Neural Networks (LeNet)

参考文献 Convolutional Neural Networks (LeNet)

卷积是什么
定义:在泛函分析中,卷积、旋积或摺积(英语:Convolution)是通过两个函数f 和g 生成第三个函数的一种数学算子,表征函数f 与g经过翻转和平 移的重叠部分的面积。
公式:(简单理解,g对f在时间域上的连续影响之和)

theano实现:theano.tensor.signal.conv2d
(局部感知+权值共享-->减少参数-->计算机实现)

矩阵的卷积运算: o[m,n] = f[m,n]g[m,n] = \sum_{u=-\infty}^{\infty} \sum_{v=-\infty}^{\infty} f[u,v] g[m-u,n-v].
规则:1.图像卷积运算通常使用33矩阵
2.卷积核旋转180度,将卷积核中心对应输入矩阵的[0,0]元素,对重叠部分求和
3.移动卷积核,分别对应输入矩阵的每个元素,进行求和,得到输出矩阵。
from theano.tensor.nnet import conv2d
卷积计算 conv2d(input,W)
卷积输出值
h^k_{ij} = \tanh ( (W^k * x)_{ij} + b_k ).

池化
池化层往往在卷积层后面,通过池化来降低卷积层输出的特征向量,同时改善结果(不易出现过拟合)。
因为图像具有一种“静态性”的属性,这也就意味着在一个图像区域有用的特征极有可能在另一个区域同样适用。因此,为了描述大的图像,一个很自 然的想法就是对不同位置的特征进行聚合统计,例如,人们可以计算图像一个区域上的某个特定特征的平均值 (或最大值)来代表这个区域的特征。
通过池化达到降维德目的
theano实现:
from theano.tensor.signal import pool
池化操作
pool_out=pool.pool_2d(input,maxpool_shape,ignore_border=True)
f=theano.function([input],pool_out)

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: