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)

参考视频

相关推荐
GIS之路8 分钟前
GDAL 实现矢量裁剪
前端·python·信息可视化
学历真的很重要14 分钟前
LangChain V1.0 Context Engineering(上下文工程)详细指南
人工智能·后端·学习·语言模型·面试·职场和发展·langchain
IT=>小脑虎14 分钟前
Python零基础衔接进阶知识点【详解版】
开发语言·人工智能·python
智航GIS16 分钟前
10.6 Scrapy:Python 网页爬取框架
python·scrapy·信息可视化
UnderTurrets22 分钟前
A_Survey_on_3D_object_Affordance
pytorch·深度学习·计算机视觉·3d
koo36424 分钟前
pytorch深度学习笔记13
pytorch·笔记·深度学习
黄焖鸡能干四碗25 分钟前
智能制造工业大数据应用及探索方案(PPT文件)
大数据·运维·人工智能·制造·需求分析
高洁0127 分钟前
CLIP 的双编码器架构是如何优化图文关联的?(3)
深度学习·算法·机器学习·transformer·知识图谱
世岩清上31 分钟前
乡村振兴主题展厅本土化材料运用与地域文化施工表达
大数据·人工智能·乡村振兴·展厅
清水白石0081 小时前
解构异步编程的两种哲学:从 asyncio 到 Trio,理解 Nursery 的魔力
运维·服务器·数据库·python