Samar-blog

导航

P15.神经网路的基本骨架——nn.Module的使用

打开PyTorch官网

1.找到troch.nn的Containers

imageimage

2.打开pycharm:代码-生成-重写方法-选择第一个要初始化的方法__init__

imageimageimage

image

3.pycharm运行代码如下

点击查看代码
import torch
from torch import nn

#1.定义神经网络的模板
class Dyl(nn.Module):   #定义一个名为Dyl的神经网络类,继承自nn.Module
    #-> None:类型注解,表示该方法不返回值;  super().__init__():调用父类nn.Module的初始化方法
    def __init__(self) -> None:
        super().__init__()
    def forward(self,input):
        output = input + 1
        return output
#2.创建神经网络
dyl = Dyl()   #创建Dyl类的一个实例(对象),dyl现在是一个可用的神经网络
x = torch.tensor(1.0) #x作为输入
output = dyl(x)       #将x放在神经网络里面即dyl(x)作为输出
print(output)

4.输出结果

点击查看代码
D:\anaconda3\envs\pytorch\python.exe D:/DeepLearning/Learn_torch/P15_nnModule.py
tensor(2.)

进程已结束,退出代码0

5.debug一下:在“dyl = Dyl()”处设置断点

(1)【deepseek总结】完整的执行流程总结:
  1. 创建Dyl实例 → 自动调用__init__ → 调用父类初始化
  2. 创建输入张量 x = 1.0
  3. 调用dyl(x) → 触发__call__方法 → 调用forward方法
  4. 在forward中执行计算:1.0 + 1 = 2.0
  5. 返回计算结果
  6. 打印输出结果
(2)第一步:super().init()

原因:当创建 Dyl 类的实例时,Python会自动调用 init 方法
具体内容
super() 获取父类 nn.Module 的引用
.init() 调用父类的构造函数
作用:初始化神经网络的基础设施,包括参数管理、钩子函数、设备设置等
必要性:所有继承 nn.Module 的类都必须调用父类构造函数
image

(3)第二步:x = torch.tensor(1.0)

原因:需要为神经网络创建输入数据
具体内容
torch.tensor(1.0) 创建一个值为1.0的PyTorch张量
数据类型:自动推断为 torch.float32
作用:作为神经网络的输入,模拟实际应用中的数据

image

(4)第三步:output = dyl(x)

原因:调用神经网络进行前向传播计算
具体内容
dyl(x) 实际上调用的是 dyl.call(x)
PyTorch的 nn.Module 重写了 call 方法
内部过程
设置网络为适当模式(训练/评估)
调用钩子函数(如果有)
最终调用 forward 方法

image

image

(5)第四步:output = input + 1(在forward方法内)

原因:执行神经网络的实际计算逻辑
具体内容
input 是从上一步传入的 x(值为1.0的张量)
input + 1 执行张量加法运算
计算过程:1.0 + 1 = 2.0
注意:这里使用的是PyTorch张量运算,不是普通的Python加法

image

(6)第五步:return output

原因:将计算结果返回给调用者
具体内容
返回值为 2.0 的PyTorch张量
这个返回值被赋值给变量 output

(7)第六步:print(output)

原因:显示神经网络的输出结果
具体内容
打印 output 变量,即 tensor(2.)
显示格式:PyTorch为了简洁,将 2.0 显示为 2.

posted on 2025-11-04 20:39  风居住的街道DYL  阅读(0)  评论(0)    收藏  举报