10 神经网络的基本骨架-nn.Module的使用。

打开Pytorch官网,关于神经网络的包都在torch.nn中

在这里插入图片描述

其中NN是Neural Network(神经网络)的缩写。

Containers是神经网络的骨架,它下面的都是需要往骨架中填充的东西,比如Convolution Layers(卷积层)、Pooling layers(池化层)、 Padding Layers(填充层)、Non-linear Activations(非线性激活)、 Normalization Layers(正则化层)。

在这里插入图片描述

Containers中有6个模块,最常用的是Module模块,Modele模块是所有神经网络的一个基本骨架(类)。

在这里插入图片描述

所有的神经网络均继承自MODULE类,MODULE类是神经网络的模版。就像买玩具赛车,MODULE是从商店买回来的原版赛车,而自己写神经网络相当于在这辆赛车上进行改装。

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

class Model(nn.Module):
    def __init__(self):
        super().__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是继承自Module的神经网络,重写了init和forward函数,在init方法中,我们必须用super去继承父类的init,然后后面两句是自己额外加的,forward函数即前向传播函数,数据输入神经网络后要经过forward步骤后输出(还有反向传播函数)。

在这里插入图片描述

forward参数中的x即我们要输入的东西,我们对x进行了卷积(conv)、非线性处理(relu),然后在进行一次卷积、非线性处理后返回。

我们看一下forward的官方定义

forward(*input)

Defines the computation performed at every call.

Should be overridden by all subclasses.

forward定义一个计算,应该在所有子类中进行一个重写。

我们可以尝试写一下神经网络

import torch  
from torch import nn  
  
class Tudui(nn.Module):  
    def __init__(self) -> None:  
        super().__init__()  
  
    def forward(self, input):  
        output = input + 1  
        return output  
  
tudui = Tudui()  
  
x = torch.tensor(1.0)  
output = tudui(x)  
  
print(output)

在生成类中函数时,我们可以用pycharm自带的Code->generate来生成

在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值