欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

PyTorch-GPU加速實例

 更新時間:2020年06月23日 09:37:11   作者:samylee  
這篇文章主要介紹了PyTorch-GPU加速實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

硬件:NVIDIA-GTX1080

軟件:Windows7、python3.6.5、pytorch-gpu-0.4.1

一、基礎(chǔ)知識

將數(shù)據(jù)和網(wǎng)絡(luò)都推到GPU,接上.cuda()

二、代碼展示

import torch
import torch.nn as nn
import torch.utils.data as Data
import torchvision
# torch.manual_seed(1)
 
EPOCH = 1
BATCH_SIZE = 50
LR = 0.001
DOWNLOAD_MNIST = False
 
train_data = torchvision.datasets.MNIST(root='./mnist/', train=True, transform=torchvision.transforms.ToTensor(), download=DOWNLOAD_MNIST,)
train_loader = Data.DataLoader(dataset=train_data, batch_size=BATCH_SIZE, shuffle=True)
 
test_data = torchvision.datasets.MNIST(root='./mnist/', train=False)
 
# !!!!!!!! Change in here !!!!!!!!! #
test_x = torch.unsqueeze(test_data.test_data, dim=1).type(torch.FloatTensor)[:2000].cuda()/255. # Tensor on GPU
test_y = test_data.test_labels[:2000].cuda()
 
class CNN(nn.Module):
 def __init__(self):
  super(CNN, self).__init__()
  self.conv1 = nn.Sequential(nn.Conv2d(in_channels=1, out_channels=16, kernel_size=5, stride=1, padding=2,),
         nn.ReLU(), nn.MaxPool2d(kernel_size=2),)
  self.conv2 = nn.Sequential(nn.Conv2d(16, 32, 5, 1, 2), nn.ReLU(), nn.MaxPool2d(2),)
  self.out = nn.Linear(32 * 7 * 7, 10)
 
 def forward(self, x):
  x = self.conv1(x)
  x = self.conv2(x)
  x = x.view(x.size(0), -1)
  output = self.out(x)
  return output
 
cnn = CNN()
 
# !!!!!!!! Change in here !!!!!!!!! #
cnn.cuda()  # Moves all model parameters and buffers to the GPU.
 
optimizer = torch.optim.Adam(cnn.parameters(), lr=LR)
loss_func = nn.CrossEntropyLoss()
 
for epoch in range(EPOCH):
 for step, (x, y) in enumerate(train_loader):
 
  # !!!!!!!! Change in here !!!!!!!!! #
  b_x = x.cuda() # Tensor on GPU
  b_y = y.cuda() # Tensor on GPU
 
  output = cnn(b_x)
  loss = loss_func(output, b_y)
  optimizer.zero_grad()
  loss.backward()
  optimizer.step()
 
  if step % 50 == 0:
   test_output = cnn(test_x)
 
   # !!!!!!!! Change in here !!!!!!!!! #
   pred_y = torch.max(test_output, 1)[1].cuda().data # move the computation in GPU
 
   accuracy = torch.sum(pred_y == test_y).type(torch.FloatTensor) / test_y.size(0)
   print('Epoch: ', epoch, '| train loss: %.4f' % loss, '| test accuracy: %.2f' % accuracy)
 
test_output = cnn(test_x[:10])
 
# !!!!!!!! Change in here !!!!!!!!! #
pred_y = torch.max(test_output, 1)[1].cuda().data # move the computation in GPU
 
print(pred_y, 'prediction number')
print(test_y[:10], 'real number')

三、結(jié)果展示

補充知識:pytorch使用gpu對網(wǎng)絡(luò)計算進行加速

1.基本要求

你的電腦里面有合適的GPU顯卡(NVIDA),并且需要支持CUDA模塊

你必須安裝GPU版的Torch,(詳細安裝方法請移步pytorch官網(wǎng))

2.使用GPU訓(xùn)練CNN

利用pytorch使用GPU進行加速方法主要就是將數(shù)據(jù)的形式變成GPU能讀的形式,然后將CNN也變成GPU能讀的形式,具體辦法就是在后面加上.cuda()。

例如:

#如何檢查自己電腦是否支持cuda
print torch.cuda.is_available()
# 返回True代表支持,F(xiàn)alse代表不支持
'''
注意在進行某種運算的時候使用.cuda()
'''
test_data=test_data.test_labels[:2000].cuda()
'''
對于CNN與損失函數(shù)利用cuda加速
'''
class CNN(nn.Module):
 ...
cnn=CNN()
cnn.cuda()
loss_f = t.nn.CrossEntropyLoss()
loss_f = loss_f.cuda()

而在train時,對于train_data訓(xùn)練過程進行GPU加速。也同樣+.cuda()。

for epoch ..:
 for step, ...:
 1
'''
若你的train_data在訓(xùn)練時需要進行操作
若沒有其他操作僅僅只利用cnn()則無需另加.cuda()
'''
#eg
 train_data = torch.max(teain_data, 1)[1].cuda() 

補充:取出數(shù)據(jù)需要從GPU切換到CPU上進行操作

eg:

loss = loss.cpu()
acc = acc.cpu()

理解并不全,如有紕漏或者錯誤還望各位大佬指點迷津

以上這篇PyTorch-GPU加速實例就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Python解包中*和**的最全用法

    Python解包中*和**的最全用法

    本文主要介紹了Python解包中*和**的最全用法,它們具有多種用途,包括解包參數(shù)、擴展序列、字典和集合操作等,具有一定的參考價值,感興趣的可以了解一下
    2023-11-11
  • Python信息處理庫Talon自動抽取簽名信息

    Python信息處理庫Talon自動抽取簽名信息

    這篇文章主要為大家介紹了Python信息處理庫Talon自動抽取簽名信息實例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2024-01-01
  • Python虛擬環(huán)境virtualenv安裝的詳細教程保姆級(Windows和linux)

    Python虛擬環(huán)境virtualenv安裝的詳細教程保姆級(Windows和linux)

    本文詳細介紹了如何在Linux和Windows系統(tǒng)上安裝和配置virtualenv虛擬環(huán)境,包括依賴包安裝、系統(tǒng)環(huán)境變量設(shè)置、激活和退出環(huán)境,以及在PyCharm中的應(yīng)用和導(dǎo)出依賴文件,需要的朋友可以參考下
    2024-09-09
  • python數(shù)據(jù)處理 根據(jù)顏色對圖片進行分類的方法

    python數(shù)據(jù)處理 根據(jù)顏色對圖片進行分類的方法

    今天小編就為大家分享一篇python數(shù)據(jù)處理 根據(jù)顏色對圖片進行分類的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-12-12
  • 跟老齊學(xué)Python之集合(set)

    跟老齊學(xué)Python之集合(set)

    本文主要內(nèi)容是要向各位介紹一種新的數(shù)據(jù)類型:集合(set).徹底暈倒了,到底python有多少個數(shù)據(jù)類型呢?又多出來了一個.
    2014-09-09
  • OpenCV 邊緣檢測

    OpenCV 邊緣檢測

    OpenCV提供了許多邊緣檢測濾波函數(shù),這些濾波函數(shù)都會將非邊緣區(qū)域轉(zhuǎn)為黑色,將邊緣區(qū)域轉(zhuǎn)為白色或其他飽和的顏色。這篇文章主要介紹了OpenCV 邊緣檢測,需要的朋友可以參考下
    2019-07-07
  • 淺談對Python變量的一些認識理解

    淺談對Python變量的一些認識理解

    變量(variable)是編程的基礎(chǔ)概念,Python 的變量看似簡單,深入了解卻不易.文中有非常詳細的介紹及代碼示例,對正在學(xué)習(xí)python的小伙伴們很有幫助,需要的朋友可以參考下
    2021-05-05
  • Python如何在ubuntu中更改Python和pip指向

    Python如何在ubuntu中更改Python和pip指向

    這篇文章主要介紹了Python如何在ubuntu中更改Python和pip指向問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-08-08
  • Python自動化測試利器selenium詳解

    Python自動化測試利器selenium詳解

    Selenium是一種常用的Web自動化測試工具,支持多種編程語言和多種瀏覽器,可以模擬用戶的交互行為,自動化地執(zhí)行測試用例和生成測試報告。Selenium基于瀏覽器驅(qū)動實現(xiàn),結(jié)合多種定位元素的方法,可以實現(xiàn)各種復(fù)雜的Web應(yīng)用程序的測試
    2023-04-04
  • Python 保持登錄狀態(tài)進行接口測試的方法示例

    Python 保持登錄狀態(tài)進行接口測試的方法示例

    這篇文章主要介紹了Python 保持登錄狀態(tài)進行接口測試的方法示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-08-08

最新評論