赞
踩
本章的主题是卷积神经网络(Convolutional Neural Network,CNN)。 CNN被用于图像识别、语音识别等各种场合,在图像识别的比赛中,基于 深度学习的方法几乎都以CNN为基础。
CNN中新出现了卷积层(Convolution层)和池化层(Pooling层)。
之前介绍的神经网络中,相邻层的所有神经元之间都有连接,这称为全连接fully-connected)。另外,我们用Affine层实现了全连接层。如果使用这个Affine层,Affine层后面跟着激活函数ReLU 层(或者Sigmoid层)。这里堆叠了4层“Affine-ReLU”组合,然后第5层是 Affine层,最后由Softmax层输出最终结果(概率)
之前介绍的全连接的神经网络中使用了全连接层(Affine层)。在全连接 层中,相邻层的神经元全部连接在一起,输出的数量可以任意决定
而卷积层可以保持形状不变。当输入数据是图像时,卷积层会以3维 数据的形式接收输入数据,并同样以3维数据的形式输出至下一层。因此, 在CNN中,可以(有可能)正确理解图像等具有形状的数据。
CNN 中,有时将卷积层的输入输出数据称为特征图(feature map)。其中,卷积层的输入数据称为输入特征图(input feature map),输出 数据称为输出特征图(output feature map)。
卷积层进行的处理就是卷积运算。卷积运算相当于图像处理中的“滤波器运算”。
在进行卷积层的处理之前,有时要向输入数据的周围填入固定的数据(比 如0等),这称为填充(padding),是卷积运算中经常会用到的处理。
综上,增大步幅后,输出大小会变小。而增大填充后,输出大小会变大。 如果将这样的关系写成算式,
在3维数据的卷积运算中,输入数据和滤波器的通道数要设为相同的值
CNN中各层间传递的数据是4维数据。所谓4维数据,比如 数据的形状是(10, 1, 28, 28),则它对应10个高为28、长为28、通道为1的数据。
x = np.random.rand(10, 1, 28, 28) # 随机生成数据
print(x.shape) #(10, 1, 28, 28)
如果要访问第1个数据,只要写x[0]就可以了(注意Python的索 引是从0开始的)。同样地,用x[1]可以访问第2个数据。
>>> x[1].shape # (1, 28, 28) 访问第1个数据
>>> x[1].shape # (1, 28, 28) 访问第2个数据
#如果要访问第1个数据的第1个通道的空间数据
>>> x[0, 0] # 或者x[0][0]
赞
踩
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。