卷积神经网络的参数设置,三维卷积神经网络模型

1、卷积神经网络用全连接层的参数是怎么确定的?

卷积神经网络用全连接层的参数确定:卷积神经网络与传统的人脸检测方法不同,它是通过直接作用于输入样本,用样本来训练网络并最终实现检测任务的。

它是非参数型的人脸检测方法,可以省去传统方法中建模、参数估计以及参数检验、重建模型等的一系列复杂过程。本文针对图像中任意大小、位置、姿势、方向、肤色、面部表情和光照条件的人脸。

输入层

卷积神经网络的输入层可以处理多维数据,常见地,一维卷积神经网络的输入层接收一维或二维数组,其中一维数组通常为时间或频谱采样;二维数组可能包含多个通道;二维卷积神经网络的输入层接收二维或三维数组;三维卷积神经网络的输入层接收四维数组。

由于卷积神经网络在计算机视觉领域应用较广,因此许多研究在介绍其结构时预先假设了三维输入数据,即平面上的二维像素点和RGB通道。

谷歌人工智能写作项目:小发猫

2、卷积神经网络算法是什么?

一维构筑、二维构筑、全卷积构筑三维卷积神经网络参数计算

卷积神经网络(Convolutional Neural Networks, CNN)是一类包含卷积计算且具有深度结构的前馈神经网络(Feedforward Neural Networks),是深度学习(deep learning)的代表算法之一。

卷积神经网络具有表征学习(representation learning)能力,能够按其阶层结构对输入信息进行平移不变分类(shift-invariant classification),因此也被称为“平移不变人工神经网络(Shift-Invariant Artificial Neural Networks, SIANN)”。

卷积神经网络的连接性:

卷积神经网络中卷积层间的连接被称为稀疏连接(sparse connection),即相比于前馈神经网络中的全连接,卷积层中的神经元仅与其相邻层的部分,而非全部神经元相连。具体地,卷积神经网络第l层特征图中的任意一个像素(神经元)都仅是l-1层中卷积核所定义的感受野内的像素的线性组合。

卷积神经网络的稀疏连接具有正则化的效果,提高了网络结构的稳定性和泛化能力,避免过度拟合,同时,稀疏连接减少了权重参数的总量,有利于神经网络的快速学习,和在计算时减少内存开销。

卷积神经网络中特征图同一通道内的所有像素共享一组卷积核权重系数,该性质被称为权重共享(weight sharing)。权重共享将卷积神经网络和其它包含局部连接结构的神经网络相区分,后者虽然使用了稀疏连接,但不同连接的权重是不同的。权重共享和稀疏连接一样,减少了卷积神经网络的参数总量,并具有正则化的效果。

在全连接网络视角下,卷积神经网络的稀疏连接和权重共享可以被视为两个无限强的先验(pirior),即一个隐含层神经元在其感受野之外的所有权重系数恒为0(但感受野可以在空间移动);且在一个通道内,所有神经元的权重系数相同。

3、如何计算卷积神经网络中接受野尺寸

感受野计算时有下面的几个情况需要说明:
(1)第一层卷积层的输出特征图像素的感受野的大小等于滤波器的大小
(2)深层卷积层的感受野大小和它之前所有层的滤波器大小和步长有关系
(3)计算感受野大小时,忽略了图像边缘的影响,即不考虑padding的大小,关于这个疑惑大家可以阅读一下参考文章2的解答进行理解
这里的每一个卷积层还有一个strides的概念,这个strides是之前所有层stride的乘积。
即strides(i) = stride(1) * stride(2) * ...* stride(i-1)
关于感受野大小的计算采用top to down的方式, 即先计算最深层在前一层上的感受野,然后逐渐传递到第一层,使用的公式可以表示如下: 
RF = 1 #待计算的feature map上的感受野大小
for layer in (top layer To down layer):
RF = ((RF -1)* stride) + fsize
stride 表示卷积的步长; fsize表示卷积层滤波器的大小
用python实现了计算Alexnet zf-5和VGG16网络每层输出feature map的感受野大小,实现代码:
#!/usr/bin/env pythonnet_struct = {'alexnet': {'net':[[11,4,0],[3,2,0],[5,1,2],[3,2,0],[3,1,1],[3,1,1],[3,1,1],[3,2,0]], 'name':['conv1','pool1','conv2','pool2','conv3','conv4','conv5','pool5']}, 'vgg16': {'net':[[3,1,1],[3,1,1],[2,2,0],[3,1,1],[3,1,1],[2,2,0],[3,1,1],[3,1,1],[3,1,1],
[2,2,0],[3,1,1],[3,1,1],[3,1,1],[2,2,0],[3,1,1],[3,1,1],[3,1,1],[2,2,0]], 'name':['conv1_1','conv1_2','pool1','conv2_1','conv2_2','pool2','conv3_1','conv3_2', 'conv3_3', 'pool3','conv4_1','conv4_2','conv4_3','pool4','conv5_1','conv5_2','conv5_3','pool5']}, 'zf-5':{'net': [[7,2,3],[3,2,1],[5,2,2],[3,2,1],[3,1,1],[3,1,1],[3,1,1]], 'name': ['conv1','pool1','conv2','pool2','conv3','conv4','conv5']}}
imsize = 224def outFromIn(isz, net, layernum):
totstride = 1
insize = isz for layer in range(layernum):
fsize, stride, pad = net[layer]
outsize = (insize - fsize + 2*pad) / stride + 1
insize = outsize
totstride = totstride * stride return outsize, totstridedef inFromOut(net, layernum):
RF = 1 for layer in reversed(range(layernum)):
fsize, stride, pad = net[layer]
RF = ((RF -1)* stride) + fsize return RFif __name__ == '__main__': print "layer output sizes given image = %dx%d" % (imsize, imsize)
for net in net_struct.keys(): print '************net structrue name is %s**************'% net for i in range(len(net_struct[net]['net'])):
p = outFromIn(imsize,net_struct[net]['net'], i+1)
rf = inFromOut(net_struct[net]['net'], i+1) print "Layer Name = %s, Output size = %3d, Stride = % 3d, RF size = %3d" % (net_struct[net]['name'][i], p[0], p[1], rf)

4、卷积神经网络能用于参数预测吗

卷积神经网络有以下几种应用可供研究:
1、基于卷积网络的形状识别
物体的形状是人的视觉系统分析和识别物体的基础,几何形状是物体的本质特征的表现,并具有平移、缩放和旋转不变等特点,所以在模式识别领域,对于形状的分析和识别具有十分重要的意义,而二维图像作为三维图像的特例以及组成部分,因此二维图像的识别是三维图像识别的基础。
2、基于卷积网络的人脸检测
卷积神经网络与传统的人脸检测方法不同,它是通过直接作用于输入样本,用样本来训练网络并最终实现检测任务的。它是非参数型的人脸检测方法,可以省去传统方法中建模、参数估计以及参数检验、重建模型等的一系列复杂过程。本文针对图像中任意大小、位置、姿势、方向、肤色、面部表情和光照条件的人脸。
3、文字识别系统
在经典的模式识别中,一般是事先提取特征。提取诸多特征后,要对这些特征进行相关性分析,找到最能代表字符的特征,去掉对分类无关和自相关的特征。然而,这些特征的提取太过依赖人的经验和主观意识,提取到的特征的不同对分类性能影响很大,甚至提取的特征的顺序也会影响最后的分类性能。同时,图像预处理的好坏也会影响到提取的特征。

5、卷积神经网络 用笔框住的那些参数什么意思 下面的(7×7 con,64,/2)

7×7 conv指的是卷积层,卷积核的大小为7×7;64 指的是卷积核的个数;pool,/2指的是降采样到一半大小,例如224×224到112×112

6、卷积神经网络训练的参数是什么

嗯,卷积神经网络是一个通过他的训练的话,那他是知道她有一个参数,通过它的参数,你才能知道他的个训练的一个参数的一个对比值。

7、python三维卷积可以用什么函数? matlab只要用convn

写了一个输入和卷积核dim=2是一样的(都是3)的卷积函数,可以试试多加一个for循环变成三维卷积


def conv3D(image, filter):
'''
三维卷积
:param image: 输入,shape为 [h,w,c], c=3
:param filter:  卷积核,shape为 [x,y,z], z=3
:return:
'''
h, w, c = image.shape
x, y, z = filter.shape
height_new = h - x + 1  # 输出 h
width_new = w - y + 1  # 输出 w
image_new = np.zeros((height_new, width_new), dtype=np.float)
for i in range(height_new):
for j in range(width_new):
r = np.sum(image[i:i+x, j:j+x, 0] * filter[:,:,0])
g = np.sum(image[i:i+y, j:j+y, 1] * filter[:,:,1])
b = np.sum(image[i:i+z, j:j+z, 2] * filter[:,:,2])
image_new[i, j] = np.sum([r,g,b])
image_new = image_new.clip(0, 255)
image_new = np.rint(image_new).astype('uint8')
return image_new

猜你喜欢

转载自blog.csdn.net/mynote/article/details/127204655