# 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