当前位置:   article > 正文

Pytorch实现卷积神经网络(回归问题)_卷积回归模型结构

卷积回归模型结构


前言

深度学习当前的热度虽然没有前两年那么火热,尤其是在学界领域,但是在一些特殊问题中仍有一定的利用价值。一般而言,pytorch在学界使用的较多,tensorflow在业界使用的较多。

一、Pytorch

pytorch的使用基于tensor(张量)来进行最基本的运算。对于一般的神经网络而言,四维张量是最常见的

import torch
torch.Tensor(5,2,50,50)
  • 1
  • 2

上边的代码表示生成了一个4维tensor,四个维度分别表示(batch_size, channel_num, width, height)。batch_size表示一组中有多少条数据,channel_num表示一条数据的通道数,如彩色照片的通道数为3,而黑白照片的通道数为1;width, height则表示一个二维数据的两个维度。

Pytorch中

二、卷积神经网络

1.CNN结构

CNN的结构通常由卷积层、池化层、全连接层构成。卷积、池化的数目多少可以自行设计,下面是torch中封装好可以在CNN中直接使用的子类。

from torch import nn
nn.Conv2d(in_channels=1, out_channels=10, kernel_size=3, stride=1)
nn.MaxPool2d(kernel_size=2, stride=1)
nn.Linear(3240, 200)
nn.Flatten()
  • 1
  • 2
  • 3
  • 4
  • 5

需要注意的是,在卷积、池化层组与全连接层之间会有一步“展平”操作,其含义即为将高维数据转换为一维数据。例如,shape为(4,3,28,28)的数据在 nn.Flatten() 操作后会变成 (4,3 * 28 * 28)的数据。

2.实现一个卷积神经网络类——代码

代码如下(示例):

class Cnn(nn.Module):
    def __init__(self, out_node):
        super(Cnn, self).__init__()
        self.conv = nn.Sequential(
            nn.Conv2d(in_channels=1, out_channels=10, kernel_size=3, stride=1), #卷积层
            # nn.ReLU(True),
            nn.MaxPool2d(kernel_size=2, stride=1),#最大池化层
            nn.Conv2d(in_channels=10, out_channels=10, kernel_size=3, stride=1),
            # nn.ReLU(True),
            nn.MaxPool2d(kernel_size=2, stride=1),
            nn.Flatten() # 展平操作,为了与全连接层匹配
        )
        self.fc = nn.Sequential(
            nn.Linear(3240, 200), #线性层
            nn.ReLU(inplace=True), # relu激活函数
            # nn.Dropout(),
            nn.Linear(200, out_node),
            nn.ReLU(inplace=True),
        )

    def forward(self, x):  #
        out = self.conv(x)
        print(out.shape)
        # out = out.view(out.size(0), 10 * 25 * 25)
        # print(out.shape)
        out = self.fc(out)
        # print(out.shape)
        return out
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28

总结

本篇简单的对CNN的pytorch实现进行了说明,主要是卷积网络类的实现,要完整实现训练、验证、测试、调参还需要很多步骤,将会在之后陆续分享。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/IT小白/article/detail/103803
推荐阅读
相关标签
  

闽ICP备14008679号