Pytorch学习--神经网络基本骨架--nn.Module的使用

一、头文件

torch.nn.Module

二、简单示例

python 复制代码
import torch.nn as nn
import torch.nn.functional as F

class Model(nn.Module):
    def __init__(self) -> None:
        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))
  • 类定义与构造函数:
    • class Model(nn.Module): 声明一个名为Model的类,继承自torch.nn.Module。
    • init(self) -> None: 定义了构造函数__init__,用于初始化网络结构。
    • super().init() 调用父类的构造函数,确保nn.Module中的初始化逻辑被正确执行。
    • self.conv1 = nn.Conv2d(1, 20, 5) 创建了第一个卷积层。
    • self.conv2 = nn.Conv2d(20, 20, 5) 创建第二个卷积层
  • 前向传播 forward:
    • def forward(self, x): 定义了前向传播函数,用于定义输入数据如何经过模型的每一层得到最终输出。
    • x = F.relu(self.conv1(x)) 将输入x通过第一个卷积层conv1,然后将结果通过ReLU激活函数。ReLU激活函数用于引入非线性,以增强模型的表达能力。
    • return F.relu(self.conv2(x)) 继续将数据传递给第二个卷积层conv2,并再次应用ReLU激活函数。

三、自己写代码尝试一下

python 复制代码
import torch
from torch import  nn
class Mary(nn.Module):
    def __init__(self):
        super().__init__()
    def forward(self,input):
        output=input+1
        return output
tensor_Yorelee=torch.tensor(10)
Yorelee=Mary()
Yorelee_output=Yorelee(tensor_Yorelee)
print(Yorelee_output)

输出:

python 复制代码
tensor(11)

提示:善于运用debug,可以显示出每一步到了哪里,且变量值是什么

四、__call__和forward的比较

学到这里,我会想之前学到的__call__和forward函数有什么区别呢?

  • model(x) 等价于调用 call 方法,而 call 会调用 forward 并处理一些额外逻辑。
  • 如果只调用 forward,会省略 call 中的附加功能,因此一般建议使用 model(x) 语法,以便自动调用 call 和 forward。
python 复制代码
model = Model()  # 创建模型实例

# 直接调用 `__call__`,实际上是调用了 `forward` 并包含了额外的处理
output = model(x)

# 直接调用 `forward`,不会包含 `__call__` 中的额外处理
output = model.forward(x)

参考视频

相关推荐
whale fall2 分钟前
【雅思-口语】与豆包聊天:出国旅游日常聊天英文 + 中文对照合集
笔记·学习·旅游
七夜zippoe4 分钟前
Python网络编程实战:从TCP/IP到WebSocket的协议演进与核心技术解析
网络·python·websocket·tcp/ip·socket·心跳机制
jj008u4 分钟前
Garmin 中国区活动同步到国际区的一个简单实现方案
python·ai编程
互联网Ai好者9 分钟前
米柚AI搜索(MiYo.AI):实时智能搜索聚合平台开源推荐
人工智能·开源
煤炭里de黑猫11 分钟前
使用PyTorch创建一个标准的Transformer架构
人工智能·pytorch·transformer
驱动探索者12 分钟前
Intel Xeon 服务器 CPU 学习
运维·服务器·学习·xeon
QiZhang | UESTC12 分钟前
学习日记day68
学习
暖阳之下13 分钟前
学习周报三十二
人工智能·学习
W.KN14 分钟前
深度学习【二】神经网络的学习过程
深度学习·神经网络
byzh_rc15 分钟前
[机器学习从入门到入土] 自回归滑动平均ARMA
人工智能·机器学习·回归