在 PyTorch 中,nn.Module
?是所有神經網絡模塊的基類,用于構建和組織深度學習模型。它提供了一系列工具和功能,使模型的定義、訓練和部署更加高效和靈活。
nn
?=?Neural Network(神經網絡)
核心作用:
模塊化設計:將復雜的神經網絡拆分為多個可復用的子模塊(如卷積層、全連接層、激活函數等)。
自動管理參數:通過?
nn.Parameter
?自動追蹤模型中的可訓練參數(如權重和偏置)。前向傳播定義:通過重寫?
forward()
?方法定義數據的流動路徑。設備管理:一鍵將整個模型移至 GPU(如?
model.to('cuda')
)。訓練 / 評估模式切換:通過?
model.train()
?和?model.eval()
?切換模型狀態(影響 Dropout、BatchNorm 等層)。
?
Torch.nn 組件庫
torch.nn
?是 PyTorch 中用于構建神經網絡的核心庫,提供了各種預定義的層、損失函數和工具類,幫助你快速搭建和訓練深度學習模型。它的主要特點包括:
模塊化設計:所有組件(如卷積層、全連接層)都繼承自?
nn.Module
,便于組織和復用。自動求導:與 PyTorch 的自動微分系統(
autograd
)無縫集成。GPU 支持:所有組件可輕松遷移至 GPU 運行。
?
torch.nn
?是工具盒,nn.Module
?是組裝工具的框架。自定義模型時,你需要用?nn.Module
?作為基類,并用?torch.nn
?中的組件填充它。?nn.Module
?是?torch.nn
?模塊庫中的一個核心基類,用于定義和組織神經網絡。它是 PyTorch 模型構建的基礎,所有層和模型最終都繼承自它。
?官網示例代碼:
import torch.nn as nn
import torch.nn.functional as Fclass Model(nn.Module):def __init__(self):super(Model, self).__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))
?
?代碼練習:
import torch
from torch import nnclass myModule(nn.Module):def __init__(self):super().__init__()def forward(self,input):output=input+1return outputmodel1=myModule()
x = torch.tensor(1.0)
output=model1(x)
print(output)
?
?