卷积神经网络CNN

发布时间 2023-08-01 13:14:47作者: 同淋雪

卷积神经网络

假设一张图片由28x28个像素块构成,每个像素块有一个值,称为灰度值,取值范围是0-255。而在深度学习中,我们用一个28x28的矩阵来存储图片信息,将0-255的灰度值转换为0-1之间的值。0代表全白,1代表全黑。图片存储的时候以0-255灰度值存储,而我们将图片载入到网络中时,转换成0-1,将灰度值除以255。

正常图片是彩色的,有R、G、B三个通道,于是要用3个矩阵存储RGB信息。

image-20230728120609792

假设有3个隐藏层,每层256个节点,输入是由28x28展平的784个特征,输出10个预测标签。

参数量:784x256 + 256x256x2 + 256x10 = 334336

每一个参数用4字节浮点数表示

占用内存:334336x4 = 13373446 约为1.3MB

image-20230728122155679 image-20230728122254946 image-20230728122347195 image-20230728122526832

一次卷积得到一个特征图,只能获取一个特征。

多个卷积核,从不同的视角,比如提取人脸、边缘、模糊信息。

image-20230728124323435

Input_channels:输入通道数

kernel_channels:卷积核数量

kernel_size:卷积核尺寸 (一般为3x3 5x5 1x1)

stride:步长

padding:填充,补0

image-20230728130040103

layer = nn.Conv2d(1, 3, kernel_size = 3, stride = 1, padding = 0) # 第一个参数表示为输入通道数,第二个是指卷积核数量

out = layer.forward(x) 或 out = layer(x) 更推荐后者