赞
踩
卷积运算是一种特征提取方式,卷积运算结果即为提取的特征,卷积核像一个筛子,将图像中符合条件(激活值越大越符合条件)的特征筛选出来。
卷积神经网络由卷积核而得名。
卷积核的作用就是把前一层输入的数据特征提取出来,
通过一个线性计算映射和一个激励函数(可选),最后在最后一层成为一个数值形式的激励值。
如图输入一个55的图形,图形中的每个像素都是一个具体的数字,每个像素值为RGB具体表现。为了表示方便,用0代表黑色,用1代表白色,表示一个黑白图。用一个33的卷积核对其y=wx+b进行卷积,其中w=[1,0,1,0,1,0,1,0,1],就是11+01+11+01+11+01+10+00+1*1+0=4
这个4会被投射到后方的Feature Map中,就是卷积特征中左上角的点。
这不是矩阵乘法,是两个向量做点积
在这个例子,w=[1,0,1,0,1,0,1,0,1],b=0
在一次扫描后,卷积核会从左到右,从上到下扫描整幅图片,并将每次计算的结果放到convolved feature
如果一个Feature map要与前面的图片的尺寸保持一致,通常需要在边缘补0,这种操作叫做padding,
扫描过程是跳跃的,可以一次移动一个像素进行扫描。striding =1 如图,如果padding =2,得到的feature map与输入图片的尺寸是相同的。
在代码中,Kernel Size是卷积核的尺寸,卷积核的数目叫做channel,就是使用多少个这样的卷积核对图片进行扫描。在训练的时候使用梯度下降找出各个卷积核的w取什么值的时候模型有更好的表现,一般来说,卷积网络需要的数量比全连接网络更少,训练速度更快,泛化能力更强。
import torch import torch.nn as nn import torchvision import torchvision.transforms as transforms # Device configuration device = torch.device('cuda:0' if torch.cuda.is_available() else 'cpu') # Hyper parameters num_epochs = 5 num_classes = 10 batch_size = 100 learning_rate = 0.001 # MNIST dataset # 读取训练集 train_dataset = torchvision.datasets.MNIST(root='../../data/', train=True,
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。