DeepLearning:使用Pytorch搭建神经网络

本文介绍了如何使用PyTorch构建神经网络,包括nn.Module的使用,卷积层、最大池化层、非线性激活函数如ReLU、Sigmoid和Tanh的原理及实现,线性层、BatchNorm层、Dropout层的作用,以及Sequential容器的使用。此外,还探讨了损失函数如L1Loss、MSELoss和CrossEntropyLoss,并讲解了反向传播和优化器在模型训练中的应用。
摘要由CSDN通过智能技术生成

使用Pytorch搭建神经网络

nn.Moudle

nn.Moudle含义

​ nn.Moudle是所有神经网络模型的父类,我们自己定义的模型应当是nn.Moudle的子类,在我们编写自己的模型时,务必要记得继承该类。同时,我们必须重写init方法与forward前向传播方法,以完成我们自己的网络。

代码实战

import torch.nn as nn
import torch.nn.functional as F

class Model(nn.Module):
    def __init__(self):
        super(Model, self).__init__()
        self.conv1 = nn.Conv2d(1, 20, 5)
        self.conv2 = nn.Conv2d(20, 20, 5)

    def forward(self, x):
        x = F.relu(self.conv1(x))
        return F.relu(self.conv2(x))

​ 上述代码定义了一个Model类,继承了nn.Moudle。

卷积层

卷积层含义

​ 卷积层对于计算机视觉研究者十分重要,其核心理论在CS231N笔记中,目前我们只讨论编程细节。因为输入的特征图为图像,所以目前暂时只讨论CONV2D方法。

​ 官网文档解释如下:

image-20211109151047644

​ 根据上图的公式,我们可以得知在torch.nn.Conv2d函数中有一些重要的参数如下,参数较为常见:

image-20211109151056692

卷积层重要公式

​ 假设我们的特征输入图各参数表示如下:
i n p u t : ( N , C i n , H i n , W i n ) input:\left( N,C_{in},H_{in},W_{in} \right) input:(N,Cin,Hin,Win)
​ 其中N为BatchSize的数量,C为通道数,H,W为特征图长、宽。

​ 假设我们的特征输出图各参数表示如下:
o u t p u t : ( N , C o u t , H o u t , W o u t ) output:\left( N,C_{out},H_{out},W_{out} \right) output:(N,Cout,Hout,Wout)
​ 由卷积核的各个参数,我们可以得到输出图像的大小为:
H o u t = H i n + 2 × P − K S + 1 H_{out}=\frac{H_{in}+2×P-K}{S}+1 Hout=SHin+2×PK+1

不同卷积操作对比

Blue maps are inputs, and cyan maps are outputs.

在这里插入图片描述
动态演示详见:https://github.com/vdumoulin/conv_arithmetic/blob/master/README.md

代码实战

import torch
import torchvision
from torch.utils.data import DataLoader
from torch import nn

dataset = torchvision.datasets.CIFAR10("../../data",train=False,transform=torchvision.transforms.ToTensor(),download=False)
dataloader = DataLoader(dataset,batch_size = 64)

class mrp(nn.Module):
    def __init__(self):
        super(mrp, self).__init__()<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值