Containers中Module的基本使用

Containers 中有6个模块,最常用的就是第一个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))

详细注解:

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

class Modul(nn.Module):  

 #定义了一个神经网络,名字叫Module。然后它继承了nn.Module这个类。

相当于Module给我们所有的神经网络提供了一个模板,然后我们继承它,就是拿这个模板过来用,如果我们对其中一些部分可以进行修改,像这里应用的两个函数。

    def __init__(self):          #__init__函数,我们首先进行初始化。


        super().__init__()       #这一步是必须要的,等于 super(Module, self).__init__()  [这是pyrhon2版本的写法,()里的Module ,self,不能省略,但是pyrhon3可以省略了]
可以理解为super().__init__(),就是继承父类的init方法,调用它的初始化函数。


        self.conv1 = nn.Conv2d(1, 20, 5)
        self.conv2 = nn.Conv2d(20, 20, 5)
后面部分是我们自己写的,需要的步骤。

    def forward(self, x):       #self是指这个类本身,x是输入的数据。
        x = F.relu(self.conv1(x))       #输入是x,先经过一次卷积conv1,再进行非线性处理relu
        return F.relu(self.conv2(x))  

#再经过一次卷积conv1,再进行非线性处理relu , 最后进行一个返回。

输入input->神经网络(结果forward处理)->output输出    

(这个叫神经网络中的forward前向传播,除此之外,还有backward反向传播)

二、实例练习

1 代码及结果

这里我们可以自己写段简单的代码练习一下Module。

import torch
from torch import nn

#定义一个名字叫Test的神经网络的模板
class Test(nn.Module):
    def __init__(self):
        super(Test, self).__init__()

    def forward(self, input):
        output = input + 1
        return output

#应用Test这个神经网络模板
test = Test()    #使用Test这个模板来创建神经网络test,初始化

x = torch.tensor(1.2)
y = torch.Tensor(1,2)
output1 = test(x)
output2 = test(y)
print(output1)
print(output2)

运行结果:

tensor(2.2000)
tensor([[1., 1.]])

2.torch.tensor()和torch.Tensor()的区别

torch.tensor()中,tensor是一个函数,它的使用是这样的

torch.tensor(data, dtype=None, device=None, requires_grad=False)

data可以是各种类型的数据

而在torch.Tensor()中,Tensor是一个,它是torch.FloatTensor()的别名,括号里要输入序列。如文中的实例,输入1.2,它会报错:TypeError: new(): data must be a sequence (got float),所以输入了(1,2)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

晓亮.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值