如何在PyTorch中定義一個簡單的卷積神經網路?
要定義一個簡單的卷積神經網路(ANN),我們可以使用以下步驟:
步驟
首先,我們匯入重要的庫和包。我們嘗試在PyTorch中實現一個簡單的ANN。在以下所有示例中,所需的Python庫是**torch**。確保您已安裝它。
import torch import torch.nn as nn
我們的下一步是構建一個簡單的ANN模型。在這裡,我們使用nn包來實現我們的模型。為此,我們定義一個類**MyNetwork**並將**nn.Module**作為引數傳遞。
class MyNetwork(nn.Module):
我們需要在類中建立兩個函式來準備我們的模型。第一個是init(),第二個是**forward()**。在**init()**函式中,我們呼叫**super()**函式並定義不同的層。
我們需要例項化該類才能用於資料集上的訓練。當我們例項化該類時,將執行**forward()**函式。
model = MyNetwork()
列印**model**以檢視不同的層。
print(model)
示例1
在下面的示例中,我們建立了一個簡單的具有四層的人工神經網路,沒有前向函式。
# Import the required libraries import torch from torch import nn # define a simple sequential model model = nn.Sequential( nn.Linear(32, 128), nn.ReLU(), nn.Linear(128, 10), nn.Sigmoid() ) # print the model print(model)
輸出
Sequential( (0): Linear(in_features=32, out_features=128, bias=True) (1): ReLU() (2): Linear(in_features=128, out_features=10, bias=True) (3): Sigmoid() )
示例2
下面的Python程式展示了構建簡單神經網路的不同方法。
import torch import torch.nn as nn import torch.nn.functional as F class MyNet(nn.Module): def __init__(self): super(MyNet, self).__init__() self.fc1 = nn.Linear(4, 8) self.fc2 = nn.Linear(8, 16) self.fc3 = nn.Linear(16, 4) self.fc4 = nn.Linear(4,1) def forward(self, x): x = F.relu(self.fc1(x)) x = F.relu(self.fc2(x)) x = F.relu(self.fc3(x)) return torch.sigmoid(self.fc4(x)) model = MyNet() print(model)
輸出
MyNet( (fc1): Linear(in_features=4, out_features=8, bias=True) (fc2): Linear(in_features=8, out_features=16, bias=True) (fc3): Linear(in_features=16, out_features=4, bias=True) (fc4): Linear(in_features=4, out_features=1, bias=True) )
廣告