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

Pytorch中實現CPU和GPU之間的切換的兩種方法

 更新時間:2023年01月28日 10:44:50   作者:三個刺客  
本文主要介紹了Pytorch中實現CPU和GPU之間的切換的兩種方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

如何在pytorch中指定CPU和GPU進行訓練,以及cpu和gpu之間切換

由CPU切換到GPU,要修改的幾個地方:

網絡模型、損失函數、數據(輸入,標注)

# 創(chuàng)建網絡模型
tudui = Tudui()
if torch.cuda.is_available():
   tudui = tudui.cuda()
 
# 損失函數
loss_fn = nn.CrossEntropyLoss()
if torch.cuda.is_available():
    loss_fn = loss_fn.cuda()
 
# 數據輸入   包括訓練和測試的代碼,二者都需要添加此代碼
if torch.cuda.is_available():
   imgs = imgs.cuda()
   targets = targets.cuda()

方法一:.to(device)

1.不知道電腦GPU可不可用時:

device = torch.device('cuda' if torch.cuda.is_available() else 'cpu' )
a.to(device)

第一行代碼的意思是判斷電腦GPU可不可用,如果可用的話device就采用cuda()即調用GPU,不可用的話就采用cpu()即調用CPU。

第二行代碼的意思就是把變量放到對應的device上(當然如果你用的是CPU的話就不用這一步了,因為變量默認是存在CPU上的,調用GPU的話要先把變量放到GPU上跑,跑完之后再調回CPU上)

2.指定GPU時

# 定義訓練的設備
device = torch.device("cuda:0")
 
# 網絡模型創(chuàng)建
tudui = Tudui()
tudui = tudui.to(device)
 
# 損失函數
loss_fn = nn.CrossEntropyLoss()
loss_fn = loss_fn.to(device)
 
# 訓練步驟開始
    tudui.train()
    for data in train_dataloader:
        imgs, targets=data
        imgs = imgs.to(device)
        targets = targets.to(device)
        outputs = tudui(imgs)
        loss = loss_fn(outputs, targets)
 
# 測試步驟開始
    tudui.eval()
    total_test_loss = 0
    total_accuracy = 0
    with torch.no_grad():
        for data in test_dataloader:
            imgs, targets=data
            imgs = imgs.to(device)
            targets = targets.to(device)
            outputs = tudui(imgs)
            loss = loss_fn(outputs, targets)
            total_test_loss = total_test_loss + loss.item()
            accuracy = (outputs.argmax(1)==targets).sum()
            total_accuracy = total_accuracy + accuracy

3.指定cpu時:

device = torch.device('cpu')

方法二:

1、需要修改的

# 三種常見的寫法
device = torch.device('cuda')
device = torch.device('cuda: 0')
device = torch.device('cuda' if torch.cuda.is_available() else 'cpu')

2、代碼

# 創(chuàng)建模型
tudui = Tudui()
if torch.cuda.is_available():
   tudui = tudui.cuda()
 
# 損失函數
loss_fn = nn.CrossEntropyLoss()
if torch.cuda.is_available():
    loss_fn = loss_fn.cuda()
 
# 訓練步驟開始
    tudui.train()
    for data in train_dataloader:
        imgs, targets=data
        if torch.cuda.is_available():
            imgs = imgs.cuda()
            targets = targets.cuda()
        outputs = tudui(imgs)
        loss = loss_fn(outputs, targets)
 
 # 測試步驟開始
    tudui.eval()
    total_test_loss = 0
    total_accuracy = 0
    with torch.no_grad():
        for data in test_dataloader:
            imgs, targets=data
            if torch.cuda.is_available():
                imgs = imgs.cuda()
                targets = targets.cuda()
            outputs = tudui(imgs)
            loss = loss_fn(outputs, targets)
            total_test_loss = total_test_loss + loss.item()
            accuracy = (outputs.argmax(1)==targets).sum()
            total_accuracy = total_accuracy + accuracy

總結:

推薦方法一,如果自己電腦是只有CPU,可以推薦使用云端服務器,比如PaddlePaddle,Google colab,這些服務器由每周免費八個小時的使用時間,可供我們基本的需求。

到此這篇關于Pytorch中實現CPU和GPU之間的切換的兩種方法的文章就介紹到這了,更多相關Pytorch CPU和GPU切換內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Pycharm搭建Django項目詳細教程(看完這一篇就夠了)

    Pycharm搭建Django項目詳細教程(看完這一篇就夠了)

    這篇文章主要給大家介紹了關于Pycharm搭建Django項目的詳細教程,想要學習的小伙伴看完這一篇就夠了,pycharm是一種Python?IDE,帶有一整套可以幫助用戶在使用Python語言開發(fā)時提高其效率的工具,需要的朋友可以參考下
    2023-11-11
  • python GUI庫圖形界面開發(fā)之PyQt5時間控件QTimer詳細使用方法與實例

    python GUI庫圖形界面開發(fā)之PyQt5時間控件QTimer詳細使用方法與實例

    這篇文章主要介紹了python GUI庫圖形界面開發(fā)之PyQt5時間控件QTimer詳細使用方法與實例,需要的朋友可以參考下
    2020-02-02
  • 深入解析Python中的urllib2模塊

    深入解析Python中的urllib2模塊

    這篇文章主要介紹了Python中的urllib2模塊,包括一個利用其抓取網站生成RSS的小例子,需要的朋友可以參考下
    2015-11-11
  • Python3實現計算兩個數組的交集算法示例

    Python3實現計算兩個數組的交集算法示例

    這篇文章主要介紹了Python3實現計算兩個數組的交集算法,結合2個實例形式總結分析了Python3針對數組的遍歷、位運算以及元素的添加、刪除等相關操作技巧,需要的朋友可以參考下
    2019-04-04
  • Python中元組的基礎介紹及常用操作總結

    Python中元組的基礎介紹及常用操作總結

    元組是一種不可變序列。元組變量的賦值要在定義時就進行,這就像C語言中的const變量或是C++的引用,定義時賦值之后就不允許有修改。元組存在的意義是:元組在映射中可以作為鍵使用,因為要保證鍵的不變性。元組作為很多內置函數和方法的返回值存在
    2021-09-09
  • pytorch學習教程之自定義數據集

    pytorch學習教程之自定義數據集

    這篇文章主要給大家介紹了關于pytorch學習教程之自定義數據集的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-11-11
  • Python實現的根據IP地址計算子網掩碼位數功能示例

    Python實現的根據IP地址計算子網掩碼位數功能示例

    這篇文章主要介紹了Python實現的根據IP地址計算子網掩碼位數功能,涉及Python數值運算相關操作技巧,需要的朋友可以參考下
    2018-05-05
  • pycharm終端解釋器與Python解釋器配置

    pycharm終端解釋器與Python解釋器配置

    這篇文章主要介紹了pycharm終端解釋器與Python解釋器配置,文章圍繞主題展開詳細的內容介紹,具有一定的參考價值,需要的小伙伴可以參考一下
    2022-06-06
  • Python的Flask框架中@app.route的用法教程

    Python的Flask框架中@app.route的用法教程

    這篇文章主要介紹了Python的Flask框架中@app.route的用法教程,包括相關的正則表達式講解,是Flask學習過程當中的基礎知識,需要的朋友可以參考下
    2015-03-03
  • 在Heroku云平臺上部署Python的Django框架的教程

    在Heroku云平臺上部署Python的Django框架的教程

    這篇文章主要介紹了在Heroku云平臺上部署Python的Django框架的教程,Heroku云平臺使用了Git版本控制系統(tǒng),所以本教程主要提供了配置所需要的Git腳本,需要的朋友可以參考下
    2015-04-04

最新評論