婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > 解決Numpy與Pytorch彼此轉換時的坑

解決Numpy與Pytorch彼此轉換時的坑

熱門標簽:白銀外呼系統 騰訊外呼線路 激戰2地圖標注 公司電話機器人 哈爾濱ai外呼系統定制 唐山智能外呼系統一般多少錢 海南400電話如何申請 陜西金融外呼系統 廣告地圖標注app

前言 ​  

最近使用 Numpy包與Pytorch寫神經網絡時,經常需要兩者彼此轉換,故用此筆記記錄碼代碼時踩(菜)過的坑,網上有人說:

Pytorch 又被稱為 GPU 版的 Numpy,二者的許多功能都有良好的一一對應。

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

1.1、numpy ——> torch ​  

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

import torch
import numpy as np

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

# 顯示

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

1.2、torch——> numpy ​  

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

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)

# 結果

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

需要注意的是,如果將程序中的 np.add(c, 1, out=c) 改成 c = c + 1 會發現兩者貌似不共享內存了,其實不然,原因是后者相當于改變了 c 的存儲地址。可以使用 id(c) 發現c的內存位置變了。

補充:pytorch中tensor數據和numpy數據轉換中注意的一個問題

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

下面通過代碼看一下區別:

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

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

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

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

您可能感興趣的文章:
  • Pytorch之Tensor和Numpy之間的轉換的實現方法
  • python、PyTorch圖像讀取與numpy轉換實例
  • pytorch 實現tensor與numpy數組轉換
  • pytorch numpy list類型之間的相互轉換實例
  • 淺談pytorch和Numpy的區別以及相互轉換方法

標簽:惠州 常德 上海 黔西 鷹潭 黑龍江 四川 益陽

巨人網絡通訊聲明:本文標題《解決Numpy與Pytorch彼此轉換時的坑》,本文關鍵詞  解決,Numpy,與,Pytorch,彼此,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《解決Numpy與Pytorch彼此轉換時的坑》相關的同類信息!
  • 本頁收集關于解決Numpy與Pytorch彼此轉換時的坑的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 白城市| 嘉祥县| 阿瓦提县| 威海市| 晴隆县| 阳泉市| 体育| 乌恰县| 宿迁市| 封丘县| 搜索| 崇仁县| 卓资县| 承德县| 临安市| 香格里拉县| 锡林郭勒盟| 宾阳县| 鄂尔多斯市| 凉城县| 龙里县| 图们市| 尼玛县| 毕节市| 蓬安县| 西充县| 建始县| 盐源县| 尼玛县| 永胜县| 临泽县| 德令哈市| 台东县| 墨江| 吐鲁番市| 和硕县| 新宾| 淄博市| 松滋市| 屯门区| 清苑县|