1. 程式人生 > 其它 >Pytorch實戰學習(二):用Pytorch實現邏輯迴歸

Pytorch實戰學習(二):用Pytorch實現邏輯迴歸

《PyTorch深度學習實踐》完結合集_嗶哩嗶哩_bilibili

用Pytorch實現邏輯迴歸

Logistic Regression

從線性迴歸 →​ 邏輯迴歸

1、分類問題

計算屬於每一類的概率

用 Logistic Function 把實數空間對映到[0,1]的概率範圍空間內

2、模型變化(線性迴歸 →​ 邏輯迴歸)

2.1、模型結構變化

2.2、Loss Function的變化

為了計算兩個概率之間的差異,需要利用到交叉熵的理論。

BCELoss二分類的交叉熵

y_pred and y_data越接近,BCE Loss越小

3、完整程式碼

程式碼框架仍然分為4大部分

import torch
import torch.nn.functional as F

## Prepare Dataset:mini-batch, X、Y是3X1的Tensor
x_data = torch.Tensor([[1.0], [2.0], [3.0]])
y_data = torch.Tensor([[0], [0], [1]])


##Design Model

##構造類,繼承torch.nn.Module類
class LogisticRegressionModel(torch.nn.Module):
    ## 建構函式,初始化物件
    def __init__
(self): ##super呼叫父類 super(LogisticRegressionModel, self).__init__() ##構造物件,Linear Unite,包含兩個Tensor:weight和bias,引數(1, 1)是w的維度 self.linear = torch.nn.Linear(1, 1) ## 建構函式,前饋運算 def forward(self, x): ## sigmoid(w*x+b) y_pred = F.sigmoid(self.linear(x))
return y_pred model = LogisticRegressionModel() ##Construct Loss and Optimizer ##損失函式,改為BCELoss criterion = torch.nn.BCELoss(size_average = False) ##優化器,model.parameters()找出模型所有的引數,Lr--學習率 optimizer = torch.optim.SGD(model.parameters(), lr=0.01) ## Training cycle for epoch in range(100): y_pred = model(x_data) loss = criterion(y_pred, y_data) print(epoch, loss) ##梯度歸零 optimizer.zero_grad() ##反向傳播 loss.backward() ##更新 optimizer.step() ## Outpue weigh and bias print('w = ', model.linear.weight.item()) print('b = ', model.linear.bias.item()) ## Test Model x_test = torch.Tensor([[4.0]]) y_test = model(x_test) print('y_pred = ', y_test.data)