好湿?好紧?好多水好爽自慰,久久久噜久噜久久综合,成人做爰A片免费看黄冈,机机对机机30分钟无遮挡

主頁 > 知識庫 > 解決numpy和torch數據類型轉化的問題

解決numpy和torch數據類型轉化的問題

熱門標簽:富錦商家地圖標注 池州外呼調研線路 沈陽外呼系統呼叫系統 沈陽人工外呼系統價格 沈陽防封電銷卡品牌 外呼系統哪些好辦 江西省地圖標注 武漢外呼系統平臺 如何申請400電話費用

在實際計算過程中,float類型使用最多,因此這里重點介紹numpy和torch數據float類型轉化遇到的問題,其他類型同理。

numpy數據類型轉化

numpy使用astype轉化數據類型,float默認轉化為64位,可以使用np.float32指定為32位

#numpy轉化float類型
a= np.array([1,2,3])
a = a.astype(np.float)
print(a)
print(a.dtype)

[1. 2. 3.]

float64

不要使用a.dtype指定數據類型,會使數據丟失

#numpy轉化float類型
b= np.array([1,2,3])
b.dtype= np.float32
print(b)
print(b.dtype)

[1.e-45 3.e-45 4.e-45]

float32

不要用float代替np.float,否則可能出現意想不到的錯誤

不能從np.float64位轉化np.float32,會報錯

np.float64與np.float32相乘,結果為np.float64

在實際使用過程中,可以指定為np.float,也可以指定具體的位數,如np.float,不過直接指定np.float更方便。

torch數據類型轉化

torch使用torch.float()轉化數據類型,float默認轉化為32位,torch中沒有torch.float64()這個方法

# torch轉化float類型
b = torch.tensor([4,5,6])
b = b.float()
b.dtype
torch.float32

np.float64使用torch.from_numpy轉化為torch后也是64位的

print(a.dtype)
c = torch.from_numpy(a)
c.dtype

float64

torch.float64

不要用float代替torch.float,否則可能出現意想不到的錯誤

torch.float32與torch.float64數據類型相乘會出錯,因此相乘的時候注意指定或轉化數據float具體類型

np和torch數據類型轉化大體原理一樣,只有相乘的時候,torch.float不一致不可相乘,np.float不一致可以相乘,并且轉化為np.float64

numpy和tensor互轉

tensor轉化為numpy

import torch
b = torch.tensor([4.0,6])
# b = b.float()
print(b.dtype)
c = b.numpy()
print(c.dtype)

torch.int64

int64

numpy轉化為tensor

import torch
import numpy as np
b= np.array([1,2,3])
# b = b.astype(np.float)
print(b.dtype)
c = torch.from_numpy(b)
print(c.dtype)

int32

torch.int32

可以看到,torch默認int型是64位的,numpy默認int型是32位的

補充:torch.from_numpy VS torch.Tensor

最近在造dataset的時候,突然發現,在輸入圖像轉tensor的時候,我可以用torch.Tensor直接強制轉型將numpy類轉成tensor類,也可以用torch.from_numpy這個方法將numpy類轉換成tensor類,那么,torch.Tensor和torch.from_numpy這兩個到底有什么區別呢?既然torch.Tensor能搞定,那torch.from_numpy留著不就是冗余嗎?

答案

有區別,使用torch.from_numpy更加安全,使用tensor.Tensor在非float類型下會與預期不符。

解釋

實際上,兩者的區別是大大的。打個不完全正確的比方說,torch.Tensor就如同c的int,torch.from_numpy就如同c++的static_cast,我們都知道,如果將int64強制轉int32,只要是高位轉低位,一定會出現高位被抹去的隱患的,不僅僅可能會丟失精度,甚至會正負對調。

這里的torch.Tensor與torch.from_numpy也會存在同樣的問題。

看看torch.Tensor的文檔,里面清楚地說明了,

torch.Tensor is an alias for the default tensor type (torch.FloatTensor).

而torch.from_numpy的文檔則是說明,

The returned tensor and ndarray share the same memory. Modifications to the tensor will be reflected in the ndarray and vice versa. The returned tensor is not resizable.

也即是說,

1、當轉換的源是float類型,torch.Tensor與torch.from_numpy會共享一塊內存!且轉換后的結果的類型是torch.float32

2、當轉換的源不是float類型,torch.Tensor得到的是torch.float32,而torch.from_numpy則是與源類型一致!

是不是很神奇,下面是一個簡單的例子:

import torch
import numpy as nps1 = np.arange(10, dtype=np.float32)
s2 = np.arange(10) # 默認的dtype是int64# 例一
o11 = torch.Tensor(s1)
o12 = torch.from_numpy(s1)
o11.dtype # torch.float32
o12.dtype # torch.float32
# 修改值
o11[0] = 12
o12[0] # tensor(12.)# 例二
o21 = torch.Tensor(s2)
o22 = torch.from_numpy(s2)
o21.dtype # torch.float32
o22.dtype # torch.int64
# 修改值
o21[0] = 12
o22[0] # tensor(0)

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

您可能感興趣的文章:
  • 解決Numpy與Pytorch彼此轉換時的坑
  • 從Pytorch模型pth文件中讀取參數成numpy矩陣的操作
  • Pytorch之Tensor和Numpy之間的轉換的實現方法
  • Pytorch使用PIL和Numpy將單張圖片轉為Pytorch張量方式
  • python、PyTorch圖像讀取與numpy轉換實例
  • Pyorch之numpy與torch之間相互轉換方式

標簽:銅川 潛江 黑龍江 株洲 常德 通遼 呂梁 阿里

巨人網絡通訊聲明:本文標題《解決numpy和torch數據類型轉化的問題》,本文關鍵詞  解決,numpy,和,torch,數據,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《解決numpy和torch數據類型轉化的問題》相關的同類信息!
  • 本頁收集關于解決numpy和torch數據類型轉化的問題的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 翁吃熄奶| 吻胸摸屁股娇喘在线观看网站| 天降女子未删减版无修免费观看| 我被同桌摸到娇喘| 天天影视插插| 精品毛片免费看| 国产精在线| 欧美VA日韩国产VA视频| 色就色欧美综合偷拍区a| 妇女被深耕过后身体有哪些表现呢| 日本人hdxxxxvideo| 日本丝袜av一区二区三区人妻 | 污污视频网站在线观看| 黑人巨大ⅩXXXXXXX| 久久久91人妻无码精品蜜桃| 欧美精品视频在线观看| 性生活动图| 一本大道香蕉久在线播放| 小说h视频| 免费很黄很色裸乳在线观看| 国产一级suv大全妇女型| a级毛片蜜桃成熟时2在线播放| 美女的隐私图片无遮挡| 寂寞护士被c高潮喷白浆小说| 成人福利在线视频| 啊~用力cao我cao死我| 人妻熟女一区二区AⅤ苍井| 宝宝好久没c你了????黄| 刺激(h)小说| 亚洲熟女精品久久7777777| 公侵犯的若妻HD中文字幕| 黄瓜视频ios下载无限看| 亚洲成人网在线| 91天堂素人约啪| 久久精品国产99国产精2020上线时间| 两性色视频| 欧美日韩一区二区视频免费看| 国产精品午夜寂寞视频| cartoon动漫美女XXX| ?嫩草影院在线观看?成人版 | 疯狂试爱1韩国三级|