天天看點

從零學習pytorch 第5課 PyTorch模型搭建三要素

課程目錄(在更新,喜歡加個關注點個贊呗):

從零學習pytorch 第1課 搭建一個超簡單的網絡

從零學習pytorch 第1.5課 訓練集、驗證集和測試集的作用

從零學習pytorch 第2課 Dataset類

從零學習pytorch 第3課 DataLoader類運作過程

從零學習pytorch 第4課 初見transforms

從零學習pytorch 第5課 PyTorch模型搭建三要素

從零學習pytorch 第5.5課 Resnet34為例學習nn.Sequential和模型定義

從零學習PyTorch 第6課 權值初始化

從零學習PyTorch 第7課 模型Finetune與預訓練模型

從零學習PyTorch 第8課 PyTorch優化器基類Optimier

三要素其實很簡單

  1. 必須要繼承nn.Module這個類,要讓PyTorch知道這個類是一個Module
  2. 在__init__(self)中設定好需要的元件,比如conv,pooling,Linear,BatchNorm等等
  3. 最後在forward(self,x)中用定義好的元件進行組裝,就像搭積木,把網絡結構搭建出來,這樣一個模型就定義好了

我們來看一個例子:

先看__init__(self)函數

def __init__(self):
	super(Net,self).__init__()
	self.conv1 = nn.Conv2d(3,6,5)
	self.pool1 = nn.MaxPool2d(2,2)
	self.conv2 = nn.Conv2d(6,16,5)
	self.pool2 = nn.MaxPool2d(2,2)
	self.fc1 = nn.Linear(16*5*5,120)
	self.fc2 = nn.Linear(120,84)
	self.fc3 = nn.Linear(84,10)
           

第一行是初始化,往後定義了一系列元件。這裡不詳細講了,你可以直接上網百度函數,也可以檢視官方文檔。都不難

定義完這些定義forward函數

def forward(self,x):
	x = self.pool1(F.relu(self.conv1(x)))
	x = self.pool2(F.relu(self.conv2(x)))
	x = x.view(-1,16*5*5)
	x = F.relu(self.fc1(x))
	x = F.relu(self.fc2(x))
	x = self.fc3(x)
	return x
           

x為模型的輸入,第一行表示x經過conv1,然後經過激活函數relu,然後經過pool1操作

第三行表示對x進行reshape,為後面的全連接配接層做準備

至此,對一個模型的定義完畢,如何使用呢?

例如:

net = Net()
outputs = net(inputs)
           

下一節課 會舉一個具體的例子(殘差網絡ResNet34)來分析這個模型是如何搭建了

公衆号回複【下載下傳】有精選的免費機器學習學習資料。 公衆号每天會更新一個機器學習、深度學習的小知識,都是面試官會問的知識點哦~

  • 【機器學習的基礎數學(PDF)】
  • 【競賽中的大資料處理流程(PDF)】
  • 【如何做大資料的基礎特征工程(PDF)】
  • 【自然語言處理NLP的應用實踐大合集(PDF)】
  • 【python入門級教材(400頁PDF)】

公衆号每天會更新一個機器學習、深度學習的小知識,都是面試官會問的知識點哦~

從零學習pytorch 第5課 PyTorch模型搭建三要素

繼續閱讀