P15.神經(jīng)網(wǎng)路的基本骨架——nn.Module的使用
打開PyTorch官網(wǎng)
1.找到troch.nn的Containers


2.打開pycharm:代碼-生成-重寫方法-選擇第一個要初始化的方法__init__




3.pycharm運行代碼如下
點擊查看代碼
import torch
from torch import nn
#1.定義神經(jīng)網(wǎng)絡(luò)的模板
class Dyl(nn.Module): #定義一個名為Dyl的神經(jīng)網(wǎng)絡(luò)類,繼承自nn.Module
#-> None:類型注解,表示該方法不返回值; super().__init__():調(diào)用父類nn.Module的初始化方法
def __init__(self) -> None:
super().__init__()
def forward(self,input):
output = input + 1
return output
#2.創(chuàng)建神經(jīng)網(wǎng)絡(luò)
dyl = Dyl() #創(chuàng)建Dyl類的一個實例(對象),dyl現(xiàn)在是一個可用的神經(jīng)網(wǎng)絡(luò)
x = torch.tensor(1.0) #x作為輸入
output = dyl(x) #將x放在神經(jīng)網(wǎng)絡(luò)里面即dyl(x)作為輸出
print(output)
4.輸出結(jié)果
點擊查看代碼
D:\anaconda3\envs\pytorch\python.exe D:/DeepLearning/Learn_torch/P15_nnModule.py
tensor(2.)
進程已結(jié)束,退出代碼0
5.debug一下:在“dyl = Dyl()”處設(shè)置斷點
(1)【deepseek總結(jié)】完整的執(zhí)行流程總結(jié):
- 創(chuàng)建Dyl實例 → 自動調(diào)用__init__ → 調(diào)用父類初始化
- 創(chuàng)建輸入張量 x = 1.0
- 調(diào)用dyl(x) → 觸發(fā)__call__方法 → 調(diào)用forward方法
- 在forward中執(zhí)行計算:1.0 + 1 = 2.0
- 返回計算結(jié)果
- 打印輸出結(jié)果
(2)第一步:super().init()
原因:當(dāng)創(chuàng)建 Dyl 類的實例時,Python會自動調(diào)用 init 方法
具體內(nèi)容:
super() 獲取父類 nn.Module 的引用
.init() 調(diào)用父類的構(gòu)造函數(shù)
作用:初始化神經(jīng)網(wǎng)絡(luò)的基礎(chǔ)設(shè)施,包括參數(shù)管理、鉤子函數(shù)、設(shè)備設(shè)置等
必要性:所有繼承 nn.Module 的類都必須調(diào)用父類構(gòu)造函數(shù)

(3)第二步:x = torch.tensor(1.0)
原因:需要為神經(jīng)網(wǎng)絡(luò)創(chuàng)建輸入數(shù)據(jù)
具體內(nèi)容:
torch.tensor(1.0) 創(chuàng)建一個值為1.0的PyTorch張量
數(shù)據(jù)類型:自動推斷為 torch.float32
作用:作為神經(jīng)網(wǎng)絡(luò)的輸入,模擬實際應(yīng)用中的數(shù)據(jù)

(4)第三步:output = dyl(x)
原因:調(diào)用神經(jīng)網(wǎng)絡(luò)進行前向傳播計算
具體內(nèi)容:
dyl(x) 實際上調(diào)用的是 dyl.call(x)
PyTorch的 nn.Module 重寫了 call 方法
內(nèi)部過程:
設(shè)置網(wǎng)絡(luò)為適當(dāng)模式(訓(xùn)練/評估)
調(diào)用鉤子函數(shù)(如果有)
最終調(diào)用 forward 方法


(5)第四步:output = input + 1(在forward方法內(nèi))
原因:執(zhí)行神經(jīng)網(wǎng)絡(luò)的實際計算邏輯
具體內(nèi)容:
input 是從上一步傳入的 x(值為1.0的張量)
input + 1 執(zhí)行張量加法運算
計算過程:1.0 + 1 = 2.0
注意:這里使用的是PyTorch張量運算,不是普通的Python加法

(6)第五步:return output
原因:將計算結(jié)果返回給調(diào)用者
具體內(nèi)容:
返回值為 2.0 的PyTorch張量
這個返回值被賦值給變量 output
(7)第六步:print(output)
原因:顯示神經(jīng)網(wǎng)絡(luò)的輸出結(jié)果
具體內(nèi)容:
打印 output 變量,即 tensor(2.)
顯示格式:PyTorch為了簡潔,將 2.0 顯示為 2.
posted on 2025-11-04 20:39 風(fēng)居住的街道DYL 閱讀(4) 評論(0) 收藏 舉報
浙公網(wǎng)安備 33010602011771號