卷积神经网络内部参数详解

一、引言

什么是卷积神经网络?

卷积神经网络(Convolutional Neural Network,CNN)是一类主要用于处理具有网格结构数据的神经网络模型。它在计算机视觉和图像处理领域具有重要的应用,广泛用于图像分类、目标检测、图像生成等任务。

二、python代码展示

from torch import nn
#此行从 PyTorch 库中导入(神经网络)模块,该模块提供了用于构建神经网络的各种类和函数。
class CNN(nn.Module):
    def __init__(self):
        super(CNN,self).__init__()#此代码定义一个名为从该类继承的类。该方法是类的构造函数,用于初始化对象。
        self.conv1 = nn.Sequential(
            nn.Conv2d(
                in_channels=1,#输入通道
                out_channels=16,输出特征图
                kernel_size=5,#卷积核大小
                stride=1,#步长
                padding=2,#填充
            ),#一个 2D 卷积层,它接受具有 1 个通道的输入,产生 16 个输出通道,使用内核大小为 5x5、步幅为 1 和填充为 2。
            nn.ReLU(),#应用逐元素整流线性单元 (ReLU) 激活的激活函数。
            nn.MaxPool2d(kernel_size=2),#最大池化层,以 2 的步幅执行 2x2 池化操作。
        )#此代码定义了第一个卷积层。它是用于按顺序堆叠多个图层创建的。
        self.conv2 = nn.Sequential(
            nn.Conv2d(16,32,5,1,2),
            nn.ReLU(),
            nn.Conv2d(32,32,5,1,2),
            nn.ReLU(),
            nn.MaxPool2d(2),
        )#此代码定义了第二个卷积层。它遵循与输入和输出通道大小相似的结构,但具有不同的输入和输出通道大小。

        # self.conv3 = nn.Sequential(
        #     nn.Conv2d(32, 64, 5, 1, 2),
        #     nn.ReLU(),
        # )
        self.out=nn.Linear(32*7*7,10)
        #这一行定义了输出层,它是一个全连接(线性)层。它接受前面卷积层的平坦化输入(32 * 7 * 7)并生成一个大小为10的输出,与分类任务中的类别数匹配。

上面代码是输入通道为1,图片大小为(28,28)

如果改变为输入通道为3,图片大小为(256,256)那么可以参考下图:

从图中可以看出变化:

全连接层linear函数中的参数变化了

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值