Yanwei Liu

本文把文章標題取名成PyTorch深度學習工具箱的用意是在於:

日常在進行PyTorch模型訓練的時候,如果想知道模型的好壞,我們會用不少方式去評估。例如:train/val loss、train/val accuracy、Confusion Matrix、per class accuracy、F1 Score、t-SNE視覺化、GradCAM、觀 …

--

--

在使用matplotlib將視覺化效果進行存檔的時候,我們除了可以存成png格式的圖片之外,還能保存成PDF格式。

保存成PDF格式的好處是,PDF中的圖片不會因為縮放而產生失真(也可以說,圖片不會因為縮放變模糊)。

如果我們想進一步的對這些PDF中的圖片進行修改,我們可以怎麼做?

在遍尋了網路上的各種有關PDF編輯的軟體後,我發現大多都:

(1)需要付費
(2 …

--

--

在特定條件下,我們希望能修改List和Dict資料型態的順序,具體上該怎麼做呢?

以下2則簡單的程式碼範例,介紹如何對List和Dict去更改順序:

範例1:假設name_list = [0, 1, 2, 3, 8],我們該如何將name_list改成[0, 1, 2, 3, 4]?

範例2:假設idx_to_class = {0: ‘good’, 2: ‘b …

--

--

Transfer learning有分成兩種:

Finetuning the convnet:
一種是Fine-tuning,並不會固定神經網路的權重參數。重新訓練分類器層時,會進行反向傳播,更新權重
ConvNet as fixed feature extractor:
將pre-trained model的權重固定住,當作特徵提取器,單純針對分類器進行訓練。

實作方法:

本範例僅提供Finetuning的方式,ConvNet as fixed feature extractor可參考官方教學

1.使用PyTorch官方在ImageNet上的預訓練模型
# Finetuning the convnet
import torch
from torch import nn
from torchvision import models
model_ft = models.resnet18(pretrained=True)
num_ftrs = model_ft.fc.in_features
# 透過修改model_ft.fc,使輸出的channel符合自己Task的需求,例如out_ch。
model_ft.fc = nn.Linear(num_ftrs, out_ch)
2.使用自己或他人在訓練好的模型 - 以MobileNetV3 Large為例
rom mobilenetv3 import mobilenetv3_large
model = mobilenetv3_large()
model.load_state_dict(torch.load('mobilenetv3-large-1cd25616.pth'))
# 透過修改model.classifier,使輸出的channel符合自己Task的需求,例如out_ch。
model.classifier = nn.Sequential(
nn.Linear(960, 1280),
h_swish(),
nn.Dropout(0.2),
nn.Linear(1280, out_ch),
)

參考資料

--

--