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

pytorch中.numpy()、.item()、.cpu()、.detach()以及.data的使用方法

 更新時間:2022年08月19日 09:25:22   作者:Unstoppable~~~  
這篇文章主要給大家介紹了關(guān)于pytorch中.numpy()、.item()、.cpu()、.detach()以及.data的使用方法,文中通過實(shí)例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下

.numpy()

Tensor.numpy()將Tensor轉(zhuǎn)化為ndarray,這里的Tensor可以是標(biāo)量或者向量(與item()不同)轉(zhuǎn)換前后的dtype不會改變

a = torch.tensor([[1.,2.]])
a_numpy = a.numpy() #[[1., 2.]]

.item()

將一個Tensor變量轉(zhuǎn)換為python標(biāo)量(int float等)常用于用于深度學(xué)習(xí)訓(xùn)練時,將loss值轉(zhuǎn)換為標(biāo)量并加,以及進(jìn)行分類任務(wù),計算準(zhǔn)確值值時需要

        optimizer.zero_grad()
        outputs = model(data)
        loss = F.cross_entropy(outputs, label)
        #計算這一個batch的準(zhǔn)確率
        acc = (outputs.argmax(dim=1) == label).sum().cpu().item() / len(labels) #這里也用到了.item()
        loss.backward()
        optimizer.step()
        train_loss += loss.item()   #這里用到了.item()
        train_acc += acc

.cpu()

將數(shù)據(jù)的處理設(shè)備從其他設(shè)備(如.cuda()拿到cpu上),不會改變變量類型,轉(zhuǎn)換后仍然是Tensor變量。

.detach()和.data(重點(diǎn))

.detach()就是返回一個新的tensor,并且這個tensor是從當(dāng)前的計算圖中分離出來的。但是返回的tensor和原來的tensor是共享內(nèi)存空間的。

舉個例子來說明一下detach有什么用。 如果A網(wǎng)絡(luò)的輸出被喂給B網(wǎng)絡(luò)作為輸入, 如果我們希望在梯度反傳的時候只更新B中參數(shù)的值,而不更新A中的參數(shù)值,這時候就可以使用detach()

a = A(input)
a = a.deatch() # 或者a.detach_()進(jìn)行in_place操作
out = B(a)
loss = criterion(out, labels)
loss.backward()

Tensor.data和Tensor.detach()一樣, 都會返回一個新的Tensor, 這個Tensor和原來的Tensor共享內(nèi)存空間,一個改變,另一個也會隨著改變,且都會設(shè)置新的Tensor的requires_grad屬性為False。這兩個方法只取出原來Tensor的tensor數(shù)據(jù), 丟棄了grad、grad_fn等額外的信息。

tensor.data是不安全的, 因?yàn)?x.data 不能被 autograd 追蹤求微分

這是為什么呢?我們對.data進(jìn)行進(jìn)一步探究

import torch

a = torch.tensor([4., 5., 6.], requires_grad=True)
print("a", a)
out = a.sigmoid()
print("out", out)
print(out.requires_grad)   #在進(jìn)行.data前仍為true
result = out.data  #共享變量,同時將requires_grad設(shè)置為false
result.zero_()  # 改變c的值,原來的out也會改變
print("result", result)
print("out", out)
out.sum().backward()  # 對原來的out求導(dǎo),
print(a.grad)  # 不會報錯,但是結(jié)果卻并不正確
'''運(yùn)行結(jié)果為:
a tensor([4., 5., 6.], requires_grad=True)
out tensor([0.9820, 0.9933, 0.9975], grad_fn=<SigmoidBackward0>)
True
result tensor([0., 0., 0.])
out tensor([0., 0., 0.], grad_fn=<SigmoidBackward0>)
tensor([0., 0., 0.])
'''

由于更改分離之后的變量值result,導(dǎo)致原來的張量out的值也跟著改變了,但是這種改變對于autograd是沒有察覺的,它依然按照求導(dǎo)規(guī)則來求導(dǎo),導(dǎo)致得出完全錯誤的導(dǎo)數(shù)值卻渾然不知。

那么我們繼續(xù)看看.detach()

可以看到將.data改為.detach()后程序立馬報錯,阻止了非法的修改,安全性很高

我們需要記住的就是:

  • .data 是一個屬性,二.detach()是一個方法;
  • .data 是不安全的,.detach()是安全的。

補(bǔ)充:關(guān)于.data和.cpu().data的各種操作

先上圖

仔細(xì)分析:

1.首先a是一個放在GPU上的Variable,a.data是把Variable里的tensor取出來,

  可以看出與a的差別是:缺少了第一行(Variable containing)

2.a.cpu()和a.data.cpu()是分別把a(bǔ)和a.data放在cpu上,其他的沒區(qū)別,另外:a.data.cpu()和a.cpu().data一樣

3.a.data[0] |  a.cpu().data[0]  | a.data.cpu()[0]是一樣的,都是把第一個值取出來,類型均為float

4.a.data.cpu().numpy()把tensor轉(zhuǎn)換成numpy的格式

總結(jié)

到此這篇關(guān)于pytorch中.numpy()、.item()、.cpu()、.detach()以及.data使用的文章就介紹到這了,更多相關(guān)pytorch .numpy()、.item()、.cpu()、.detach()及.data內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python爬取微信讀書實(shí)現(xiàn)讀書免費(fèi)自由

    Python爬取微信讀書實(shí)現(xiàn)讀書免費(fèi)自由

    主要跟大家介紹一下,我是如何用Python爬取小說,再導(dǎo)入微信讀書的。成功實(shí)現(xiàn)在微信讀書中各種“白票”付費(fèi)小說,有需要的朋友可以借鑒參考下
    2021-09-09
  • Python簡單的制作圖片驗(yàn)證碼實(shí)例

    Python簡單的制作圖片驗(yàn)證碼實(shí)例

    本篇文章主要介紹了Python簡單的制作圖片驗(yàn)證碼實(shí)例,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-05-05
  • Python圖像處理之圖像融合與ROI區(qū)域繪制詳解

    Python圖像處理之圖像融合與ROI區(qū)域繪制詳解

    這篇文章將詳細(xì)講解圖像融合處理和ROI區(qū)域繪制,同時補(bǔ)充圖像屬性、通道和類型轉(zhuǎn)換。文中的示例代碼講解詳細(xì),需要的可以參考一下
    2022-01-01
  • Python使用BeautifulSoup爬取網(wǎng)頁數(shù)據(jù)的操作步驟

    Python使用BeautifulSoup爬取網(wǎng)頁數(shù)據(jù)的操作步驟

    在網(wǎng)絡(luò)時代,數(shù)據(jù)是最寶貴的資源之一,而爬蟲技術(shù)就是一種獲取數(shù)據(jù)的重要手段,Python 作為一門高效、易學(xué)、易用的編程語言,自然成為了爬蟲技術(shù)的首選語言之一,本文將介紹如何使用 BeautifulSoup 爬取網(wǎng)頁數(shù)據(jù),并提供詳細(xì)的代碼和注釋,幫助讀者快速上手
    2023-11-11
  • python程序變成軟件的實(shí)操方法

    python程序變成軟件的實(shí)操方法

    在本篇文章里小編給大家整理的是關(guān)于python程序變成軟件的相關(guān)方法和具體操作流程,有需要的朋友們可以參考下。
    2019-06-06
  • python實(shí)現(xiàn)炫酷屏幕保護(hù)的示例代碼

    python實(shí)現(xiàn)炫酷屏幕保護(hù)的示例代碼

    這篇文章主要為大家詳細(xì)介紹了如何利用python實(shí)現(xiàn)炫酷屏幕保護(hù)效果,文中的示例代碼講解詳細(xì),具有一定的學(xué)習(xí)價值,感興趣的小伙伴可以跟隨小編一起了解一下
    2023-12-12
  • 使用Python集合顯著優(yōu)化算法性能的實(shí)戰(zhàn)案例

    使用Python集合顯著優(yōu)化算法性能的實(shí)戰(zhàn)案例

    掌握?Python?中的?set?數(shù)據(jù)結(jié)構(gòu),是算法和數(shù)據(jù)結(jié)構(gòu)的基本功,今天我們從一個實(shí)戰(zhàn)案例出發(fā),探討如何利用Python集合顯著優(yōu)化算法性能,感興趣的同學(xué)跟著小編一起來探討吧
    2023-06-06
  • 使用Python中wordcloud庫繪制詞云圖的詳細(xì)教程

    使用Python中wordcloud庫繪制詞云圖的詳細(xì)教程

    這篇文章主要介紹了如何使用Python的wordcloud庫從Excel數(shù)據(jù)生成詞云圖,包括環(huán)境準(zhǔn)備、詞云圖的基本原理、生成詞云圖的步驟、保存詞云圖以及高級自定義(形狀與顏色),文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-12-12
  • Python字符串和文件操作常用函數(shù)分析

    Python字符串和文件操作常用函數(shù)分析

    這篇文章主要介紹了Python字符串和文件操作常用函數(shù),實(shí)例分析了Python中字符串及文件操作的常用技巧,非常具有實(shí)用價值,需要的朋友可以參考下
    2015-04-04
  • python?windows安裝cuda+cudnn+pytorch教程

    python?windows安裝cuda+cudnn+pytorch教程

    這篇文章主要介紹了python?windows安裝cuda+cudnn+pytorch教程,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-05-05

最新評論

正蓝旗| 即墨市| 营山县| 大城县| 苗栗市| 鸡西市| 桐梓县| 南皮县| 万载县| 江北区| 富顺县| 专栏| 乌兰浩特市| 泸溪县| 屯昌县| 遂溪县| 正阳县| 上虞市| 宜兴市| 博客| 巴彦县| 焦作市| 菏泽市| 册亨县| 文成县| 滁州市| 沁阳市| 克山县| 治多县| 河源市| 东平县| 五大连池市| 岑溪市| 瓦房店市| 建阳市| 景德镇市| 景东| 田阳县| 抚顺县| 仁化县| 呼图壁县|