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)

参考视频

相关推荐
威联通网络存储4 小时前
某高端显示面板制造企业:基于威联通 TS-h2490FU 的 AOI 检测数据治理实践
python·制造
冬夜戏雪6 小时前
实习面经摘录(九)
学习
arvin_xiaoting6 小时前
OpenClaw学习总结_I_核心架构_8:SessionPruning详解
前端·chrome·学习·系统架构·ai agent·openclaw·sessionpruning
小程故事多_807 小时前
OpenClaw工具引擎架构全解析,AI Agent的“双手”如何落地实操
人工智能·架构·aigc·ai编程·openclaw
qq_452396237 小时前
【AI 架构师】第十篇:Agent 工业化部署 —— 从 FastAPI 到云端全链路监控
网络·人工智能·ai·fastapi
前端摸鱼匠8 小时前
【AI大模型春招面试题11】什么是模型的“涌现能力”(Emergent Ability)?出现条件是什么?
人工智能·算法·ai·自然语言处理·面试·职场和发展
新缸中之脑8 小时前
如何合法地逆向SynthID
人工智能
FreakStudio8 小时前
不用装软件!这款MicroPython浏览器 IDE :让你在手机上也能调试树莓派 Pico
python·单片机·嵌入式·电子diy·tinyml
剑穗挂着新流苏3128 小时前
115_PyTorch 实战:从零搭建 CIFAR-10 完整训练与测试流水线
人工智能·pytorch·深度学习·神经网络
Veggie268 小时前
【Java深度学习】PyTorch On Java 系列课程 第八章 17 :模型评估【AI Infra 3.0】[PyTorch Java 硕士研一课程]
java·人工智能·深度学习