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)

参考视频

相关推荐
冬奇Lab8 分钟前
OpenClaw 源码精读(3):Agent 执行引擎——AI 如何「思考」并与真实世界交互?
人工智能·aigc
没事勤琢磨2 小时前
如何让 OpenClaw 控制使用浏览器:让 AI 像真人一样操控你的浏览器
人工智能
用户5191495848452 小时前
CrushFTP 认证绕过漏洞利用工具 (CVE-2024-4040)
人工智能·aigc
牛马摆渡人5282 小时前
OpenClaw实战--Day1: 本地化
人工智能
前端小豆2 小时前
玩转 OpenClaw:打造你的私有 AI 助手网关
人工智能
BugShare3 小时前
写一个你自己的Agent Skills
人工智能·程序员
机器之心3 小时前
英伟达护城河被AI攻破,字节清华CUDA Agent,让人人能搓CUDA内核
人工智能·openai
后端小肥肠4 小时前
公众号躺更神器!OpenClaw+Claude Skill 实现自动读对标 + 写文 + 配图 + 存入草稿箱
人工智能·aigc·agent
爱可生开源社区4 小时前
SCALE | 重构 AI 时代数据库能力的全新评估标准
人工智能
Jahzo5 小时前
openclaw本地化部署体验与踩坑记录--飞书机器人配置
人工智能·开源