美文网首页大数据人工智能
人工智能00040 深度学习与图像识别书摘40 卷积神经网络 池

人工智能00040 深度学习与图像识别书摘40 卷积神经网络 池

作者: 良友知音 | 来源:发表于2024-03-03 08:23 被阅读0次

    池化(pooling)是对图片进行压缩(降采样)的一种方法,池化的方法有很多,如max pooling、average pooling等。

    池化层也有操作参数,我们假设输入图像为W1*H1*D1(字母分别表示图像的宽、高、channel),池化层的参数中,池化kernel的大小为F*F,步长为S,那么经过池化后输出的图像的宽、高、channel分别为:

    通常情况下F=2,S=2。一个4*4的特征层经过池化filter=2*2,stride=2的最大池化操作后可以得到一个2*2的特征层。

    池化层对原始特征层的信息进行压缩,是卷积神经网络中很重要的一步。

    我们将会看到在绝大多数情况下,卷积层、池化层、激活层三者几乎像一个整体一样常常共同出现。

    下面给出PyTorch定义卷积神经网络的代码(这里只是初步介绍,更详细的代码将在后面中给出):

    import torch.nn as nn

    import torch.nn.functional as F

    class Net(nn.Module):

        def __init__(self):                            #在这里定义卷积神经网络需要的元素

            super(Net, self).__init__()

            self.conv1 = nn.Conv2d(3, 6, 5)            #定义第一个卷积层

            self.pool = nn.MaxPool2d(2, 2)              #池化层

            self.conv2 = nn.Conv2d(6, 16, 5)            #定义第二个卷积层

            self.fc1 = nn.Linear(16 * 5 * 5, 120)      #全连接层

            self.fc2 = nn.Linear(120, 84)              #全连接层

            self.fc3 = nn.Linear(84, 10)                #最后一个全连接层用作10分类

        def forward(self, x):                          #使用__init__中的定义,构建卷积神经网络结构

            x = self.pool(F.relu(self.conv1(x)))        #第一个卷积层首先要经过ReLU做激活,然后使用前面定义好的nn.Max Pool2d(2, 2)方法做池化

            x = self.pool(F.relu(self.conv2(x)))        #第二个卷积层也要经过ReLU做激活,然后使用前面定义好的nn.MaxPool2d(2, 2)方法做池化

            x = x.view(-1, 16 * 5 * 5)                  #对特征层Tensor维度进行变换

            x = F.relu(self.fc1(x))                    #卷积神经网络的特征层经过第一次全连接层操作,然后再通过ReLU层激活

            x = F.relu(self.fc2(x))                    #卷积神经网络的特征层经过第二次全连接层操作,然后再通过ReLU层激活

            x = self.fc3(x)                            #卷积神经网络的特征层经过最后一次全连接层操作,得到最终要分类的结果(10分类标签)

            return x

            net = Net()

    相关文章

      网友评论

        本文标题:人工智能00040 深度学习与图像识别书摘40 卷积神经网络 池

        本文链接:https://www.haomeiwen.com/subject/atekzdtx.html