最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Pytorch實現(xiàn)邏輯回歸分類

 更新時間:2022年07月30日 11:10:06   作者:遠方與你  
這篇文章主要為大家詳細介紹了Pytorch實現(xiàn)邏輯回歸分類,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下

本文實例為大家分享了Pytorch實現(xiàn)邏輯回歸分類的具體代碼,供大家參考,具體內容如下

1、代碼實現(xiàn)

步驟:

1.獲得數(shù)據(jù)
2.建立邏輯回歸模型
3.定義損失函數(shù)
4.計算損失函數(shù)
5.求解梯度
6.梯度更新
7.預測測試集

import torch
import torch.nn as nn
import numpy as np
import matplotlib.pyplot as plt
from torch.autograd import Variable
import torchvision.datasets as dataset
import torchvision.transforms as transforms
from torch.utils.data import DataLoader

input_size = 784 ?# 輸入到邏輯回歸模型中的輸入大小
num_classes = 10 ?# 分類的類別個數(shù)
num_epochs = 10 ?# 迭代次數(shù)
batch_size = 50 ?# 批量訓練個數(shù)
learning_rate = 0.01 ?# 學習率


# 下載訓練數(shù)據(jù)和測試數(shù)據(jù)
train_dataset = dataset.MNIST(root='./data', train=True, transform=transforms.ToTensor(), download=True)
test_dataset = dataset.MNIST(root='./data',train=False, transform=transforms.ToTensor)

# 使用DataLoader形成批處理文件
train_loader = DataLoader(dataset=train_dataset, batch_size=batch_size, shuffle=True)
test_loader = DataLoader(dataset=test_dataset, batch_size=batch_size, shuffle=False)

# 創(chuàng)建邏輯回歸類模型 ?(sigmoid(wx+b))
class LogisticRegression(nn.Module):
? ? def __init__(self,input_size,num_classes):
? ? ? ? super(LogisticRegression,self).__init__()
? ? ? ? self.linear = nn.Linear(input_size,num_classes)
? ? ? ? self.sigmoid = nn.Sigmoid()

? ? def forward(self, x):
? ? ? ? out = self.linear(x)
? ? ? ? out = self.sigmoid(out)
? ? ? ? return out

# 設定模型參數(shù)
model = LogisticRegression(input_size, num_classes)
# 定義損失函數(shù),分類任務,使用交叉熵
criterion = nn.CrossEntropyLoss()
# 優(yōu)化算法,隨機梯度下降,lr為學習率,獲得模型需要更新的參數(shù)值
optimizer = torch.optim.SGD(model.parameters(), lr=learning_rate)


# 使用訓練數(shù)據(jù)訓練模型
for epoch in range(num_epochs):
?? ?# 批量數(shù)據(jù)進行模型訓練
? ? for i, (images, labels) in enumerate(train_loader):
? ? ?? ?# 需要將數(shù)據(jù)轉換為張量Variable
? ? ? ? images = Variable(images.view(-1, 28*28))
? ? ? ? labels = Variable(labels)
?? ??? ?
?? ??? ?# 梯度更新前需要進行梯度清零
? ? ? ? optimizer.zero_grad()

?? ??? ?# 獲得模型的訓練數(shù)據(jù)結果
? ? ? ? outputs = model(images)
?? ??? ?
?? ??? ?# 計算損失函數(shù)用于計算梯度
? ? ? ? loss = criterion(outputs, labels)

?? ??? ?# 計算梯度
? ? ? ? loss.backward()
?? ?
?? ??? ?# 進行梯度更新
? ? ? ? optimizer.step()

?? ??? ?# 每隔一段時間輸出一個訓練結果
? ? ? ? if (i+1) % 100 == 0:
? ? ? ? ? ? print('Epoch:[%d %d], Step:[%d/%d], Loss: %.4f' % (epoch+1,num_epochs,i+1,len(train_dataset)//batch_size,loss.item()))

# 訓練好的模型預測測試數(shù)據(jù)集
correct = 0
total = 0
for images, labels in test_loader:
? ? images = Variable(images.view(-1, 28*28)) ?# 形式為(batch_size,28*28)
? ? outputs = model(images)
? ? _,predicts = torch.max(outputs.data,1) ?# _輸出的是最大概率的值,predicts輸出的是最大概率值所在位置,max()函數(shù)中的1表示維度,意思是計算某一行的最大值
? ? total += labels.size(0)
? ? correct += (predicts==labels).sum()

print('Accuracy of the model on the 10000 test images: %d %%' % (100 * correct / total))

2、踩過的坑

1.在代碼中下載訓練數(shù)據(jù)和測試數(shù)據(jù)的時候,兩段代碼是有區(qū)別的:

train_dataset = dataset.MNIST(root='./data', train=True, transform=transforms.ToTensor(), download=True)
test_dataset = dataset.MNIST(root='./data',train=False, transform=transforms.ToTensor)

第一段代碼中多了一個download=True,這個的作用是,如果為True,則從Internet下載數(shù)據(jù)集并將其存放在根目錄中。如果數(shù)據(jù)已經(jīng)下載,則不會再次下載。

在第二段代碼中沒有加download=True,加了的話在使用測試數(shù)據(jù)進行預測的時候會報錯。

代碼中transform=transforms.ToTensor()的作用是將PIL圖像轉換為Tensor,同時已經(jīng)進行歸一化處理。

2.代碼中設置損失函數(shù):

criterion = nn.CrossEntropyLoss()
loss = criterion(outputs, labels)

一開始的時候直接使用:

loss = nn.CrossEntropyLoss()
loss = loss(outputs, labels)

這樣也會報錯,因此需要將loss改為criterion。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • python中的plt.cm.Paired用法說明

    python中的plt.cm.Paired用法說明

    這篇文章主要介紹了python中plt.cm.Paired的用法說明,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-05-05
  • python使用梯度下降和牛頓法尋找Rosenbrock函數(shù)最小值實例

    python使用梯度下降和牛頓法尋找Rosenbrock函數(shù)最小值實例

    這篇文章主要介紹了python使用梯度下降和牛頓法尋找Rosenbrock函數(shù)最小值實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-04-04
  • python驗證碼識別的示例代碼

    python驗證碼識別的示例代碼

    本篇文章主要介紹了python驗證碼識別的示例代碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-09-09
  • Python list運算操作代碼實例解析

    Python list運算操作代碼實例解析

    這篇文章主要介紹了Python list運算操作代碼實例解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-01-01
  • python 刪除空值且合并excel的操作

    python 刪除空值且合并excel的操作

    這篇文章主要介紹了python 刪除空值且合并excel的操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-03-03
  • OpenCV+python實現(xiàn)實時目標檢測功能

    OpenCV+python實現(xiàn)實時目標檢測功能

    這篇文章主要介紹了OpenCV+python實現(xiàn)實時目標檢測功能,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-06-06
  • 全網(wǎng)非常詳細的pytest配置文件

    全網(wǎng)非常詳細的pytest配置文件

    本文主要介紹了全網(wǎng)非常詳細的pytest配置文件,pytest的主配置文件,可以改變pytest的默認行為,有很多可配置的選項,感興趣的可以了解一下
    2022-07-07
  • opencv+圖像處理(Image Processing in OpenCV) 4-0改變顏色空間的過程

    opencv+圖像處理(Image Processing in OpenCV) 

    這篇文章主要介紹了opencv+圖像處理(Image Processing in OpenCV) 4-0改變顏色空間,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-04-04
  • python3 使用Opencv打開USB攝像頭,配置1080P分辨率的操作

    python3 使用Opencv打開USB攝像頭,配置1080P分辨率的操作

    今天小編就為大家分享一篇python3 使用Opencv打開USB攝像頭,配置1080P分辨率的操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-12-12
  • keras分類模型中的輸入數(shù)據(jù)與標簽的維度實例

    keras分類模型中的輸入數(shù)據(jù)與標簽的維度實例

    這篇文章主要介紹了keras分類模型中的輸入數(shù)據(jù)與標簽的維度實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-07-07

最新評論

高淳县| 天门市| 博客| 巴彦县| 凤冈县| 鹤山市| 山丹县| 安图县| 松溪县| 英德市| 长子县| 太仆寺旗| 桃园市| 武宣县| 阳西县| 固阳县| 定州市| 上栗县| 珠海市| 志丹县| 理塘县| 景德镇市| 呼玛县| 岑溪市| 潼南县| 石泉县| 遂昌县| 中西区| 云阳县| 通辽市| 沂水县| 湖州市| 天气| 汉川市| 上高县| 彰武县| 金平| 黑水县| 霍林郭勒市| 高平市| 尼勒克县|