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

解決Numpy與Pytorch彼此轉(zhuǎn)換時(shí)的坑

 更新時(shí)間:2021年05月13日 09:20:14   作者:工程曉猿  
這篇文章主要介紹了解決Numpy與Pytorch彼此轉(zhuǎn)換時(shí)的坑,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

前言 ​  

最近使用 Numpy包與Pytorch寫(xiě)神經(jīng)網(wǎng)絡(luò)時(shí),經(jīng)常需要兩者彼此轉(zhuǎn)換,故用此筆記記錄碼代碼時(shí)踩(菜)過(guò)的坑,網(wǎng)上有人說(shuō):

Pytorch 又被稱為 GPU 版的 Numpy,二者的許多功能都有良好的一一對(duì)應(yīng)。

​但在使用時(shí)還是得多多注意,一個(gè)不留神就陷入到了 一根煙一杯酒,一個(gè)Bug找一宿 的地步。

1.1、numpy ——> torch ​  

使用 torch.from_numpy() 轉(zhuǎn)換,需要注意,兩者共享內(nèi)存。例子如下:

import torch
import numpy as np

a = np.array([1,2,3])
b = torch.from_numpy(a)
np.add(a, 1, out=a)
print('轉(zhuǎn)換后a', a)
print('轉(zhuǎn)換后b', b)

# 顯示

轉(zhuǎn)換后a [2 3 4]
轉(zhuǎn)換后b tensor([2, 3, 4], dtype=torch.int32)

1.2、torch——> numpy ​  

使用 .numpy() 轉(zhuǎn)換,同樣,兩者共享內(nèi)存。例子如下:

import torch
import numpy as np

a = torch.zeros((2, 3), dtype=torch.float)
c = a.numpy()
np.add(c, 1, out=c)
print('a:', a)
print('c:', c)

# 結(jié)果

a: tensor([[1., 1., 1.],
           [1., 1., 1.]])
c: [[1. 1. 1.]
  [1. 1. 1.]]

需要注意的是,如果將程序中的 np.add(c, 1, out=c) 改成 c = c + 1 會(huì)發(fā)現(xiàn)兩者貌似不共享內(nèi)存了,其實(shí)不然,原因是后者相當(dāng)于改變了 c 的存儲(chǔ)地址??梢允褂?id(c) 發(fā)現(xiàn)c的內(nèi)存位置變了。

補(bǔ)充:pytorch中tensor數(shù)據(jù)和numpy數(shù)據(jù)轉(zhuǎn)換中注意的一個(gè)問(wèn)題

在pytorch中,把numpy.array數(shù)據(jù)轉(zhuǎn)換到張量tensor數(shù)據(jù)的常用函數(shù)是torch.from_numpy(array)或者torch.Tensor(array),第一種函數(shù)更常用。

下面通過(guò)代碼看一下區(qū)別:

import numpy as np
import torch

a=np.arange(6,dtype=int).reshape(2,3)
b=torch.from_numpy(a)
c=torch.Tensor(a)

a[0][0]=10
print(a,'\n',b,'\n',c)
[[10  1  2]
 [ 3  4  5]] 
 tensor([[10,  1,  2],
        [ 3,  4,  5]], dtype=torch.int32) 
 tensor([[0., 1., 2.],
        [3., 4., 5.]])

c[0][0]=10
print(a,'\n',b,'\n',c)
[[10  1  2]
 [ 3  4  5]] 
 tensor([[10,  1,  2],
        [ 3,  4,  5]], dtype=torch.int32) 
 tensor([[10.,  1.,  2.],
        [ 3.,  4.,  5.]])

print(b.type())
torch.IntTensor
print(c.type())
torch.FloatTensor

可以看出修改數(shù)組a的元素值,張量b的元素值也改變了,但是張量c卻不變。修改張量c的元素值,數(shù)組a和張量b的元素值都不變。

這說(shuō)明torch.from_numpy(array)是做數(shù)組的淺拷貝,torch.Tensor(array)是做數(shù)組的深拷貝。

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • python實(shí)現(xiàn)人臉簽到系統(tǒng)

    python實(shí)現(xiàn)人臉簽到系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)人臉簽到系統(tǒng),帶數(shù)據(jù)庫(kù)存儲(chǔ),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-04-04
  • Python使用PyMuPDF操作PDF的代碼示例

    Python使用PyMuPDF操作PDF的代碼示例

    PyMuPDF,也被稱為fitz(這是其導(dǎo)入時(shí)的常用別名),是一個(gè)功能強(qiáng)大的Python庫(kù),用于處理PDF和其他文檔格式,與 PyPDF2相比,PyMuPDF提供了更多的功能和更好的性能,特別是在處理復(fù)雜的PDF文件時(shí),本文給大家介紹了Python使用PyMuPDF操作PDF,需要的朋友可以參考下
    2025-02-02
  • python Pexpect 實(shí)現(xiàn)輸密碼 scp 拷貝的方法

    python Pexpect 實(shí)現(xiàn)輸密碼 scp 拷貝的方法

    今天小編就為大家分享一篇python Pexpect 實(shí)現(xiàn)輸密碼 scp 拷貝的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-01-01
  • python 使用cx-freeze打包程序的實(shí)現(xiàn)

    python 使用cx-freeze打包程序的實(shí)現(xiàn)

    這篇文章主要介紹了python 使用cx-freeze打包程序的實(shí)現(xiàn),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-03-03
  • Python中用post、get方式提交數(shù)據(jù)的方法示例

    Python中用post、get方式提交數(shù)據(jù)的方法示例

    最近在學(xué)習(xí)使用Python,發(fā)現(xiàn)網(wǎng)上很少提到如何使用post,所以下面這篇文章主要給大家介紹了關(guān)于Python中用post、get方式提交數(shù)據(jù)的方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起看看吧。
    2017-09-09
  • python 實(shí)現(xiàn)堆排序算法代碼

    python 實(shí)現(xiàn)堆排序算法代碼

    python 實(shí)現(xiàn)堆排序算法代碼,需要的朋友可以參考下
    2012-06-06
  • Python?NumPy教程之?dāng)?shù)據(jù)類(lèi)型對(duì)象詳解

    Python?NumPy教程之?dāng)?shù)據(jù)類(lèi)型對(duì)象詳解

    每個(gè)?ndarray?都有一個(gè)關(guān)聯(lián)的數(shù)據(jù)類(lèi)型?(dtype)?對(duì)象。這個(gè)數(shù)據(jù)類(lèi)型對(duì)象(dtype)告訴我們數(shù)組的布局。本文將通過(guò)示例詳細(xì)講講NumPy的數(shù)據(jù)類(lèi)型對(duì)象,需要的可以參考一下
    2022-08-08
  • Python中日期和時(shí)間的互相轉(zhuǎn)換操作方法

    Python中日期和時(shí)間的互相轉(zhuǎn)換操作方法

    Python的datetime模塊提供了一套強(qiáng)大而靈活的工具,使我們能夠輕松地在不同的時(shí)間表示形式間相互轉(zhuǎn)換,并進(jìn)行復(fù)雜的時(shí)間計(jì)算,本文通過(guò)一個(gè)實(shí)用的例子向大家展示如何在Python中高效地進(jìn)行這些操作,感興趣的朋友一起看看吧
    2024-05-05
  • python3判斷url鏈接是否為404的方法

    python3判斷url鏈接是否為404的方法

    這篇文章主要介紹了python3判斷url鏈接是否為404的方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-08-08
  • numpy.where() 用法詳解

    numpy.where() 用法詳解

    這篇文章主要介紹了numpy.where() 用法詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-05-05

最新評(píng)論

两当县| 泸水县| 神木县| 将乐县| 封开县| 郎溪县| 和林格尔县| 车险| 隆昌县| 海原县| 铜陵市| 呼伦贝尔市| 抚远县| 大丰市| 武鸣县| 香港 | 平阳县| 牙克石市| 隆子县| 宁波市| 静海县| 开鲁县| 抚顺县| 九龙城区| 裕民县| 三门峡市| 赫章县| 重庆市| 水城县| 泸定县| 珲春市| 从江县| 湘乡市| 七台河市| 比如县| 桂平市| 黎川县| 敦化市| 志丹县| 含山县| 道孚县|