Pytorch線性規劃模型 學習筆記(一)
阿新 • • 發佈:2021-06-15
Pytorch線性規劃模型 學習筆記(一)
Pytorch視訊學習資料參考:《PyTorch深度學習實踐》完結合集
Pytorch搭建神經網路的四大部分
-
1. 準備資料 Prepare dataset
準備資料包括資料的讀取載入並轉換為torch框架下識別的tensor格式,注意資料的dtype為float32格式
-
2. 設計模型 Design model using class
網路的基本框架部分,包括自定義的網路layer結構,注意維度的變換要一致,另外,該類中還應包括forward部分
-
3. 構建損失和優化器 Construct loss and optimizer
根據處理的問題和模型設定合適的損失,或自己構建損失函式。優化器為梯度下降的解決方案,可選擇合適的優化器進行梯度下降
-
4. 重複訓練 Training cycle
重複訓練部分可以後續設定batchsize的大小,按batch進行隨機梯度下降(此程式碼中暫無設定),注意優化器的清零迭代操作
資料部分
X.csv,y.csv連結: https://pan.baidu.com/s/1dJD8zBewCS86fRgv0nL7kQ 密碼: 0us0
下載後與程式放置在同一資料夾下
程式碼部分
# import import torch import numpy as np ## 1. prepare dataset x_data = 'X.csv' y_data = 'y.csv' x = np.loadtxt(x_data, delimiter=' ', dtype=np.float32) y = np.loadtxt(y_data, delimiter=' ', dtype=np.float32).reshape(-1, 1) x = torch.from_numpy(x[:, :]) y = torch.from_numpy(y[:, :]) print(y.shape) print(x.shape) ## 2. design model using class class LinearModel(torch.nn.Module): def __init__(self): super(LinearModel, self).__init__() self.linear1 = torch.nn.Linear(10, 6) self.linear2 = torch.nn.Linear(6, 6) self.linear3 = torch.nn.Linear(6, 1) self.sigmoid = torch.nn.Sigmoid() def forward(self, x): x = self.linear1(x) x = self.linear2(x) x = self.linear3(x) x = self.sigmoid(x) return x model = LinearModel() ## 3. construct loss and optimizer criterion = torch.nn.MSELoss() optimizer = torch.optim.SGD(model.parameters(), lr = 0.01) ## 4. training cycle for epoch in range(500): y_hat = model(x) loss = criterion(y_hat, y) print('epoch', epoch, loss.item()) optimizer.zero_grad() loss.backward() optimizer.step()