Try   HackMD

ML模組 (Pytorch)

根據Pytorch框架可以大略分成以下六大模塊
Pytorch已經處理不同模塊I/O的對接,讓使用輕鬆不少
依照任務不同需要個別調整

1.Pre-processing

2.Define Dataset

from torch.utils.data import Dataset 
class MyDataset(Dataset)
    def __init__(self, x, y=None)
    def __getitem__(self, index)
    def __len__(self)

3.Define Model

方法一: 用nn.Sequential打包,forward()比較簡潔

import torch.nn as nn
class MyNet(nn.Module):
    def __init__(self, input_dim, output_dim):
        super(MyNet, self).__init__()
        self.model = nn.Sequential(...)
    def forward(self,x):
        x = self.model(x)
        return x
        

方法二: 分開定義,比較冗長但是彈性很多(推薦)

class MyNet(nn.Module):
    def __init__(self, input_dim, output_dim):
        self.fc1 = nn.Linear(input_dim, 128)
        self.relu1 = nn.ReLu()
        self.fc2 = nn.Linear(128, output_dim)
    def forward(self, input)
        fc1_t = self.fc1(input)
        act_t = self.relu1(fc1_t)
        out_t = self.fc2(act_t)
        return out_t

3.Trainer

def trainer
    for epoch in range(num_epoch):
        ...
        for batch in train_loader:
            取出features & labels
            將features和labels搬到GPU上
            optimizer歸零
            參數正向傳遞
            計算loss
            參數反向傳遞
            更新權重
            計算loss & acc
        for batch in val_loader:
            取出features & labels
            將features和labels搬到GPU上
            optimizer歸零
            參數正向傳遞
            計算loss
            計算loss & acc        

4.Configuration & DataLoader

5.Main

開始訓練

6.Testing

測試Unseen data