卷积神经网络CNN(Convolutional Neural Network)
本文参考视频链接
重点知识
- CNN可以保留图像的空间结构特征。对于一个CxWxH的图像,如果使用全连接神经网络,直接将里面的节点弄成了一长串(比如上下相邻的两个点变成了一排长串),丧失了空间信息。
- 一个过滤器提取出一个特征向量(Feature map),一个过滤器包含多个卷积核。一个过滤器包含的卷积核的数量等于输入的图像的通道数,过滤器的数量等于输出图像的通道数。
- 卷积核的大小是四维向量M* N * Wk * Hk,卷积核的数量M等于输出通道的数量,卷积核的大小N等于输入通道的数量,Wk和Hk是自己定义的,卷积核的内容是随机的,后面会通过学习自动调整。
- 一般情况下,输出图像的大小要减去卷积核的大小,比如33的卷积核,输出的宽度和高度大小就要小(卷积核大小/2=3/2=1)圈,即宽和高个各减2,如果卷积核大小是44或者5*5,则输出的图像宽和高各减4。如果想要不变,那就要用padding进行0填充。需要padding的大小=卷积核大小/2。
- 卷积层的设计和图像的输入通道、输出通道和卷积核的大小有关,与图像的大小无关。
- 下采样(池化层)常用Max Pooling Layer,作用是图像降维。当设置MaxPool2d(Kernel_size=2)时,默认 stride=2,表示卷积核一次走两步,可以降低图像的宽度和高度。
- In:128(通道数)、Out:64(通道数)。其中使用5x5的卷积核,需要进行5x5x128x64次运算。
输入图像通道数为128 -> 经过64个过滤器(每个有128个5x5的卷积核)-> 输出图像通道数为64。
CNN原理:首先特征提取器直接对图像进行卷积运算,得到图像的一个特征向量,然后再利用一个全连接的网络对其分类。
一个简单的CNN实例:batch表示一次要处理的图像个数
The shape of kernel tensor is (𝑛, 3, 3)
Convolution – N Input Channels and M Output Channels:
Convolutional Layer:
卷积神经网络的过程:
How to use GPU?
cuda:0表示第一块显卡
训练集的改变
测试集的改变
运行结果: