nn.Module模块的使用

# nn.Module是对所有神经网络提供一个基本的类。
# 我们的神经网络是继承nn.Module这个类,即nn.Module为父类,nn.Module为所有神经网络提供一个模板,对其中一些我们不满意的部分进行修改。
import torch
from torch import nn


class MyModule(nn.Module):
    def __init__(self):
        super(MyModule, self).__init__()  # 继承父类的初始化

    def forward(self, x):  # 前向传播
        y = x + 1
        return y


model = MyModule() #实例化对象
x = torch.tensor(1.0)  # 创建一个值为 1.0 的tensor
output = model(x)
print(output)

#2.super(Myclass,self).__init__() # 继承父类的初始化
#简单理解就是子类把父类的__init__()放到自己的__init__()当中,这样子类就有了父类的_init_()的那些东西。
#Myclass类继承nn.Module,super(Myclass, self).__init__()就是对继承自父类nn.Module的属性进行初始化。而且是用nn.Module的初始化方法来初始化继承的属性。
#super().__init()__()来通过初始化父类属性以初始化自身继承了父类的那部分属性;这样一来,作为nn.Module的子类就无需再初始化那一部分属性了,只需初始化新加的元素。
#子类继承了父类的所有属性和方法,父类属性自然会用父类方法来进行初始化。

#3.forward函数
#使用pytorch的时候,不需要手动调用forward函数,只要在实例化一个对象中传入对应的参数就可以自动调用 forward 函数。
#因为 PyTorch 中的大部分方法都继承自 torch.nn.Module,而 torch.nn.Module 的__call__(self)函数中会返回 forward()函数 的结果,因此PyTroch中的 forward()函数等于是被嵌套在了call(self)函数中;因此forward()函数可以直接通过类名被调用,而不用实例化对象。

class A():
    def __call__(self, param):
        print("i can called like a function")
        print("传入参数的类型是:{},值为:{}".format(type(param), param))
        result=self.forward(param)
        return result

    def forward(self, x):
        print("forward函数被调用了")
        print("in forward,传入参数类型是:{},值为:{}".format(type(x),x))
        return x
a=A() #实例化对象
input_param=a("i")
print("对象a传入的参数是:",input_param)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

YLTommi

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

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

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

打赏作者

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

抵扣说明:

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

余额充值