- PyTorch 教程
- PyTorch - 主頁
- PyTorch - 簡介
- PyTorch - 安裝
- 神經網路的數學基礎
- PyTorch - 神經網路基礎
- 機器學習的通用工作流程
- 機器學習與深度學習
- 實現第一個神經網路
- 神經網路到功能塊
- PyTorch - 術語
- PyTorch - 載入資料
- PyTorch - 線性迴歸
- PyTorch - 卷積神經網路
- PyTorch - 遞迴神經網路
- PyTorch - 資料集
- PyTorch - 對卷積的簡介
- 從頭開始訓練卷積網路
- PyTorch - 卷積中的特徵提取
- PyTorch - 卷積的視覺化
- 使用卷積進行序列處理
- PyTorch - 詞嵌入
- PyTorch - 遞迴神經網路
- PyTorch 有用資源
- PyTorch - 快速指南
- PyTorch - 有用資源
- PyTorch - 討論
PyTorch - 對卷積的簡介
卷積網路是關於從頭開始構建 CNN 模型的。網路架構將包含以下步驟的組合 -
- Conv2d
- MaxPool2d
- 修正線性單元
- View
- 線性層
訓練模型
訓練模型的過程與影像分類問題相同。以下程式碼片段完成了在提供的訓練資料集上進行訓練模型的過程 -
def fit(epoch,model,data_loader,phase
= 'training',volatile = False):
if phase == 'training':
model.train()
if phase == 'training':
model.train()
if phase == 'validation':
model.eval()
volatile=True
running_loss = 0.0
running_correct = 0
for batch_idx , (data,target) in enumerate(data_loader):
if is_cuda:
data,target = data.cuda(),target.cuda()
data , target = Variable(data,volatile),Variable(target)
if phase == 'training':
optimizer.zero_grad()
output = model(data)
loss = F.nll_loss(output,target)
running_loss + =
F.nll_loss(output,target,size_average =
False).data[0]
preds = output.data.max(dim = 1,keepdim = True)[1]
running_correct + =
preds.eq(target.data.view_as(preds)).cpu().sum()
if phase == 'training':
loss.backward()
optimizer.step()
loss = running_loss/len(data_loader.dataset)
accuracy = 100. * running_correct/len(data_loader.dataset)
print(f'{phase} loss is {loss:{5}.{2}} and {phase} accuracy is {running_correct}/{len(data_loader.dataset)}{accuracy:{return loss,accuracy}})
該方法包括用於訓練和驗證的不同邏輯。使用不同模式主要有兩個原因 -
在訓練模式下,Dropout 去掉一定比例的值,而這在驗證或測試階段不應該發生。
對於訓練模式,我們計算梯度並改變模型的引數值,但在測試或驗證過程中不需要反向傳播。
廣告