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

PyTorch張量類型創(chuàng)建與轉(zhuǎn)換的詳細(xì)指南

 更新時(shí)間:2026年03月25日 10:11:52   作者:軟件科學(xué)-郝學(xué)勝  
在PyTorch的深度學(xué)習(xí)開發(fā)中,張量(Tensor)作為核心數(shù)據(jù)結(jié)構(gòu),其類型的靈活創(chuàng)建與轉(zhuǎn)換是基礎(chǔ)且關(guān)鍵的操作,今天就帶大家系統(tǒng)掌握PyTorch中張量指定類型的創(chuàng)建方法,以及多種類型轉(zhuǎn)換技巧,需要的朋友可以參考下

引言

在PyTorch的深度學(xué)習(xí)開發(fā)中,張量(Tensor)作為核心數(shù)據(jù)結(jié)構(gòu),其類型的靈活創(chuàng)建與轉(zhuǎn)換是基礎(chǔ)且關(guān)鍵的操作。不同的業(yè)務(wù)場(chǎng)景、硬件環(huán)境對(duì)張量數(shù)據(jù)類型有著不同的要求,比如輕量化訓(xùn)練常用float16,常規(guī)訓(xùn)練多用float32,高精度計(jì)算會(huì)用到float64。今天就帶大家系統(tǒng)掌握PyTorch中張量指定類型的創(chuàng)建方法,以及多種類型轉(zhuǎn)換技巧,從基礎(chǔ)概念到實(shí)操代碼,一站式吃透

一、前置基礎(chǔ):比特位與數(shù)據(jù)類型的小知識(shí)

在學(xué)習(xí)張量類型之前,我們先理清一個(gè)基礎(chǔ)概念:比特位(bit)與字節(jié)(Byte)的關(guān)系,這是理解不同數(shù)值類型的核心。

1個(gè)字節(jié) = 8個(gè)比特位,而PyTorch中的數(shù)值類型正是通過(guò)比特位數(shù)量定義的,比如float16代表16個(gè)比特位,換算下來(lái)就是2個(gè)字節(jié),這也決定了該類型的存儲(chǔ)大小和精度:比特位越少,占用內(nèi)存越小,精度相對(duì)越低;比特位越多,占用內(nèi)存越大,精度也越高。

給大家整理了PyTorch中常用張量數(shù)據(jù)類型的對(duì)應(yīng)關(guān)系,一張表就能看明白

類型函數(shù)對(duì)應(yīng)PyTorch類型比特位數(shù)字節(jié)數(shù)適用場(chǎng)景
half()torch.float16162輕量化訓(xùn)練、低顯存硬件
float()torch.float32324常規(guī)深度學(xué)習(xí)訓(xùn)練/推理
double()torch.float64648高精度科學(xué)計(jì)算
short()torch.int16162低精度整數(shù)運(yùn)算
int()torch.int32324常規(guī)整數(shù)運(yùn)算
long()torch.int64648索引、大整數(shù)運(yùn)算
小提示:PyTorch中創(chuàng)建整數(shù)張量時(shí),默認(rèn)類型是torch.int64;創(chuàng)建浮點(diǎn)張量時(shí),默認(rèn)類型是torch.float32,這也是深度學(xué)習(xí)中最常用的浮點(diǎn)類型,大家一定要記牢

二、小技巧:PyTorch文件重命名的快捷操作

在實(shí)際開發(fā)中,我們常會(huì)遇到文件命名錯(cuò)誤的情況,比如把“張量類型轉(zhuǎn)換”的文件命名成了“張亮元素類型轉(zhuǎn)換”,這里分享兩個(gè)PyTorch項(xiàng)目(PyCharm編輯器)中高效的文件重命名方法,告別手動(dòng)刪除重建的繁瑣:

方法1:基礎(chǔ)法——右鍵刪除重建

操作簡(jiǎn)單,適合新手:右鍵錯(cuò)誤命名的文件→刪除→新建同名(正確名稱)的.py文件,缺點(diǎn)是需要重新寫文件頭和導(dǎo)入代碼,效率較低。

方法2:快捷法——重構(gòu)重命名(推薦)

這是開發(fā)中最常用的方法,快捷鍵Shift+F6,步驟如下:

  1. 選中需要重命名的文件;
  2. 按下Shift+F6,或右鍵選擇Refactor(重構(gòu))→Rename(重命名);
  3. 輸入正確的文件名,回車確認(rèn),整個(gè)項(xiàng)目中對(duì)該文件的引用會(huì)自動(dòng)更新,無(wú)需手動(dòng)修改!

三、核心操作1:創(chuàng)建指定類型的張量

創(chuàng)建張量時(shí)直接指定類型,是最常用、最高效的方式,避免后續(xù)二次轉(zhuǎn)換的麻煩。在使用torch.tensor()創(chuàng)建張量時(shí),通過(guò)dtype參數(shù)即可指定張量的元素類型,這里先理清兩個(gè)極易混淆的概念,避免踩坑:

  • tensor.dtype:查看張量?jī)?nèi)元素的類型(如torch.float32、torch.int64),這是我們最常關(guān)注的屬性;
  • tensor.type():查看張量本身的類型,結(jié)果一般為torch.Tensor,代表這是一個(gè)張量對(duì)象。

3.1 基礎(chǔ)創(chuàng)建:默認(rèn)類型張量

當(dāng)我們不指定dtype時(shí),PyTorch會(huì)根據(jù)輸入的數(shù)值類型自動(dòng)分配默認(rèn)張量類型:

import torch  # 導(dǎo)入PyTorch庫(kù),版本建議2.0+

# 創(chuàng)建整數(shù)張量,默認(rèn)dtype=torch.int64
t1 = torch.tensor([1,2,3,4,5])
print(f"張量元素類型:{t1.dtype}")  # 輸出:torch.int64
print(f"張量本身類型:{t1.type()}") # 輸出:torch.LongTensor(對(duì)應(yīng)int64)

# 創(chuàng)建浮點(diǎn)張量,默認(rèn)dtype=torch.float32
t2 = torch.tensor([1.0,2.0,3.0])
print(f"張量元素類型:{t2.dtype}")  # 輸出:torch.float32
print(f"張量本身類型:{t2.type()}") # 輸出:torch.FloatTensor(對(duì)應(yīng)float32)

3.2 精準(zhǔn)創(chuàng)建:指定dtype的張量

通過(guò)dtype=torch.xxx即可自定義張量元素類型,滿足不同場(chǎng)景需求,代碼示例如下:

import torch

# 創(chuàng)建float16類型張量
t_float16 = torch.tensor([1,2,3], dtype=torch.float16)
# 創(chuàng)建float64類型張量
t_float64 = torch.tensor([1,2,3], dtype=torch.float64)
# 創(chuàng)建int16類型張量
t_int16 = torch.tensor([1,2,3], dtype=torch.int16)
# 創(chuàng)建int32類型張量
t_int32 = torch.tensor([1,2,3], dtype=torch.int32)

print(f"float16張量:{t_float16.dtype}")  # torch.float16
print(f"float64張量:{t_float64.dtype}")  # torch.float64
print(f"int16張量:{t_int16.dtype}")      # torch.int16
print(f"int32張量:{t_int32.dtype}")      # torch.int32

重點(diǎn):在深度學(xué)習(xí)訓(xùn)練中,我們幾乎都會(huì)用dtype=torch.float32創(chuàng)建張量,這是框架默認(rèn)的訓(xùn)練精度,兼顧速度和精度??

四、核心操作2:張量的類型轉(zhuǎn)換

實(shí)際開發(fā)中,我們常會(huì)遇到已創(chuàng)建的張量類型不符合需求的情況,比如把默認(rèn)的int64轉(zhuǎn)成float32,把float32轉(zhuǎn)成float16做輕量化。PyTorch提供了兩種類型轉(zhuǎn)換方法,一種通用萬(wàn)能(推薦掌握),一種針對(duì)性便捷(適合有Java基礎(chǔ)的同學(xué)),下面詳細(xì)講解。

4.1 萬(wàn)能轉(zhuǎn)換法:type()函數(shù)(強(qiáng)推)

type()函數(shù)是PyTorch中張量類型轉(zhuǎn)換的通用方法,支持任意類型之間的轉(zhuǎn)換,只需在函數(shù)中傳入目標(biāo)類型torch.xxx即可,語(yǔ)法簡(jiǎn)單、記憶成本低,是新手必掌握的方法。

代碼實(shí)操:type()函數(shù)轉(zhuǎn)換示例

import torch

# 第一步:創(chuàng)建基礎(chǔ)張量(float32類型)
t = torch.tensor([1,2,3,4,5], dtype=torch.float32)
print(f"原始類型:{t.dtype}")  # 輸出:torch.float32

# 轉(zhuǎn)換為int16類型
t_int16 = t.type(torch.int16)
print(f"轉(zhuǎn)換為int16:{t_int16.dtype}")  # 輸出:torch.int16

# 轉(zhuǎn)換為float16類型
t_float16 = t.type(torch.float16)
print(f"轉(zhuǎn)換為float16:{t_float16.dtype}")  # 輸出:torch.float16

# 轉(zhuǎn)換為float64類型
t_float64 = t.type(torch.float64)
print(f"轉(zhuǎn)換為float64:{t_float64.dtype}")  # 輸出:torch.float64

# 轉(zhuǎn)換為int64類型
t_int64 = t.type(torch.int64)
print(f"轉(zhuǎn)換為int64:{t_int64.dtype}")  # 輸出:torch.int64

核心優(yōu)勢(shì):無(wú)論是什么原始類型,只需改變type()中的目標(biāo)參數(shù),就能實(shí)現(xiàn)任意轉(zhuǎn)換,無(wú)需記憶多個(gè)函數(shù),一招鮮吃遍天

4.2 便捷轉(zhuǎn)換法:專屬類型函數(shù)

PyTorch為每種常用類型都提供了專屬的轉(zhuǎn)換函數(shù),比如half()、float()double()、short()等,這些函數(shù)的命名和Java中的基本類型轉(zhuǎn)換高度相似,有Java基礎(chǔ)的同學(xué)會(huì)很容易上手。

需要注意的是,這類函數(shù)無(wú)需傳入?yún)?shù),調(diào)用后直接將張量轉(zhuǎn)換為對(duì)應(yīng)類型,下面是具體的函數(shù)與類型對(duì)應(yīng)關(guān)系,再配合代碼實(shí)操理解

專屬函數(shù)與類型對(duì)應(yīng)表

專屬轉(zhuǎn)換函數(shù)轉(zhuǎn)換后的目標(biāo)類型等價(jià)type()寫法
tensor.half()torch.float16tensor.type(torch.float16)
tensor.float()torch.float32tensor.type(torch.float32)
tensor.double()torch.float64tensor.type(torch.float64)
tensor.short()torch.int16tensor.type(torch.int16)
tensor.int()torch.int32tensor.type(torch.int32)
tensor.long()torch.int64tensor.type(torch.int64)

代碼實(shí)操:專屬函數(shù)轉(zhuǎn)換示例

import torch

# 創(chuàng)建基礎(chǔ)張量(int16類型)
t = torch.tensor([1,2,3,4,5], dtype=torch.int16)
print(f"原始類型:{t.dtype}")  # 輸出:torch.int16

# half() → float16
t_half = t.half()
print(f"half()轉(zhuǎn)換:{t_half.dtype}")  # torch.float16

# float() → float32
t_float = t.float()
print(f"float()轉(zhuǎn)換:{t_float.dtype}")  # torch.float32

# double() → float64
t_double = t.double()
print(f"double()轉(zhuǎn)換:{t_double.dtype}")  # torch.float64

# short() → int16(原類型,無(wú)變化)
t_short = t.short()
print(f"short()轉(zhuǎn)換:{t_short.dtype}")  # torch.int16

# int() → int32
t_int = t.int()
print(f"int()轉(zhuǎn)換:{t_int.dtype}")  # torch.int32

# long() → int64
t_long = t.long()
print(f"long()轉(zhuǎn)換:{t_long.dtype}")  # torch.int64

4.3 兩種轉(zhuǎn)換方法的對(duì)比??

為了讓大家更清晰區(qū)分兩種轉(zhuǎn)換方法的優(yōu)劣、精準(zhǔn)匹配自身使用場(chǎng)景,我用Mermaid流程圖做了直觀可視化對(duì)比,核心優(yōu)缺點(diǎn)與適配人群一目了然,新手也能快速選對(duì)方法

圖表核心解讀:左側(cè)通用type()函數(shù)主打一個(gè)“全能適配”,不需要額外記憶多個(gè)函數(shù),完全貼合深度學(xué)習(xí)新手的學(xué)習(xí)路徑,哪怕后續(xù)遇到特殊類型轉(zhuǎn)換也能輕松應(yīng)對(duì);右側(cè)專屬函數(shù)寫法更簡(jiǎn)潔,適合有Java基礎(chǔ)的同學(xué)快速簡(jiǎn)寫,但場(chǎng)景局限性更強(qiáng)。日常做PyTorch項(xiàng)目開發(fā),優(yōu)先吃透type()函數(shù),足以搞定99%的張量類型轉(zhuǎn)換需求,穩(wěn)妥又高效

五、實(shí)操小總結(jié):核心知識(shí)點(diǎn)梳理

  1. 基礎(chǔ)概念:1字節(jié)=8比特位,PyTorch數(shù)值類型由比特位定義,默認(rèn)整數(shù)int64、浮點(diǎn)float32;
  2. 文件重命名:PyCharm中Shift+F6一鍵重構(gòu),高效且自動(dòng)更新引用;
  3. 兩個(gè)關(guān)鍵屬性dtype看元素類型,type()看張量對(duì)象類型,切勿混淆;
  4. 指定類型創(chuàng)建torch.tensor(數(shù)據(jù), dtype=torch.xxx),深度學(xué)習(xí)常用torch.float32;
  5. 類型轉(zhuǎn)換:新手強(qiáng)推type(torch.xxx)通用法,有Java基礎(chǔ)可使用half()/float()等專屬法;
  6. 類型對(duì)應(yīng):half=float16、float=float32、double=float64、short=int16,記牢這組對(duì)應(yīng)關(guān)系。

六、寫在最后

張量的類型創(chuàng)建與轉(zhuǎn)換是PyTorch的入門基礎(chǔ),看似簡(jiǎn)單,但卻是后續(xù)模型訓(xùn)練、推理優(yōu)化的關(guān)鍵。比如在顯存不足的顯卡上訓(xùn)練大模型,將張量從float32轉(zhuǎn)成float16能直接節(jié)省一半顯存;在高精度計(jì)算場(chǎng)景中,用float64能提升計(jì)算準(zhǔn)確性。

希望這篇文章能幫大家徹底吃透張量類型的相關(guān)操作,把基礎(chǔ)打牢,后續(xù)才能更順暢地學(xué)習(xí)PyTorch的進(jìn)階知識(shí)。0基礎(chǔ)學(xué)AI開發(fā)并不可怕,只要一步一個(gè)腳印,吃透每個(gè)基礎(chǔ)知識(shí)點(diǎn),終能實(shí)現(xiàn)技術(shù)的提升。

以上就是PyTorch張量類型創(chuàng)建與轉(zhuǎn)換的詳細(xì)指南的詳細(xì)內(nèi)容,更多關(guān)于PyTorch張量類型創(chuàng)建與轉(zhuǎn)換的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Python中字符串列表的相互轉(zhuǎn)換實(shí)際應(yīng)用場(chǎng)景

    Python中字符串列表的相互轉(zhuǎn)換實(shí)際應(yīng)用場(chǎng)景

    在Python編程中,經(jīng)常會(huì)遇到需要將字符串列表相互轉(zhuǎn)換的情況,這涉及到將逗號(hào)分隔的字符串轉(zhuǎn)換為列表,或者將列表中的元素連接成一個(gè)字符串,本文將深入討論這些情景,并提供豐富的示例代碼,幫助讀者更全面地理解字符串列表的轉(zhuǎn)換操作
    2023-12-12
  • Python 實(shí)現(xiàn)數(shù)組相減示例

    Python 實(shí)現(xiàn)數(shù)組相減示例

    今天小編就為大家分享一篇Python 實(shí)現(xiàn)數(shù)組相減示例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-12-12
  • python刪除xml中的w:ascii屬性的步驟

    python刪除xml中的w:ascii屬性的步驟

    使用xml.etree.ElementTree刪除Word?XML中w:ascii屬性,需注冊(cè)命名空間并定位rFonts元素,通過(guò)del操作刪除屬性,建議配合python-docx庫(kù),注意備份及文檔保護(hù)設(shè)置,確保修改目標(biāo)樣式,本文給大家介紹python刪除xml中的w:ascii屬性的步驟,感興趣的朋友一起看看吧
    2025-06-06
  • Python實(shí)現(xiàn)五子棋聯(lián)機(jī)對(duì)戰(zhàn)小游戲

    Python實(shí)現(xiàn)五子棋聯(lián)機(jī)對(duì)戰(zhàn)小游戲

    本文主要介紹了通過(guò)Python實(shí)現(xiàn)簡(jiǎn)單的支持聯(lián)機(jī)對(duì)戰(zhàn)的游戲——支持局域網(wǎng)聯(lián)機(jī)對(duì)戰(zhàn)的五子棋小游戲。廢話不多說(shuō),快來(lái)跟隨小編一起學(xué)習(xí)吧
    2021-12-12
  • Python實(shí)現(xiàn)多功能音樂播放器詳解

    Python實(shí)現(xiàn)多功能音樂播放器詳解

    這篇文章主要介紹了如何通過(guò)Python制作一個(gè)簡(jiǎn)易的音樂播放器,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)或工作有一定價(jià)值,需要的可以參考一下
    2022-02-02
  • Python處理壓縮文件的詳細(xì)指南

    Python處理壓縮文件的詳細(xì)指南

    在日常數(shù)據(jù)處理和文件管理中,壓縮文件是一種常見的文件格式,使用Python可以方便地自動(dòng)化處理壓縮文件,下面就跟隨小編一起深入了解下Python是如何處理這些壓縮文件的吧
    2024-12-12
  • Python使用高德地圖API批量獲取地址所屬街道并寫回Excel

    Python使用高德地圖API批量獲取地址所屬街道并寫回Excel

    借助 Python + 高德地圖API,我們可以輕松實(shí)現(xiàn)自動(dòng)化批量查詢并將結(jié)果寫入 Excel 文件中,下面就跟隨小編一起來(lái)看看具體實(shí)現(xiàn)方法與思路吧
    2025-11-11
  • Python 如何創(chuàng)建一個(gè)簡(jiǎn)單的REST接口

    Python 如何創(chuàng)建一個(gè)簡(jiǎn)單的REST接口

    這篇文章主要介紹了Python 如何創(chuàng)建一個(gè)簡(jiǎn)單的REST接口,文中講解非常細(xì)致,代碼幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下
    2020-07-07
  • python抓取網(wǎng)頁(yè)中的圖片示例

    python抓取網(wǎng)頁(yè)中的圖片示例

    這篇文章主要介紹了python抓取網(wǎng)頁(yè)中圖片的示例,需要的朋友可以參考下
    2014-02-02
  • macOS M1(Apple Silicon)安裝配置Conda環(huán)境的具體實(shí)現(xiàn)

    macOS M1(Apple Silicon)安裝配置Conda環(huán)境的具體實(shí)現(xiàn)

    由于常用的Anaconda和Miniconda現(xiàn)在都沒有提供M1處理器支持的conda環(huán)境,以下是conda-forge提供的miniforge,感興趣的可以了解一下
    2021-08-08

最新評(píng)論

长白| 克东县| 福安市| 什邡市| 保亭| 南和县| 河东区| 固原市| 临西县| 崇信县| 运城市| 称多县| 游戏| 仁怀市| 大理市| 浏阳市| 伊川县| 鄂托克前旗| 牡丹江市| 南皮县| 乌恰县| 沅江市| 元氏县| 凯里市| 阿拉善右旗| 乌拉特后旗| 康马县| 锡林郭勒盟| 邛崃市| 新巴尔虎左旗| 台南县| 台安县| 年辖:市辖区| 娄底市| 平利县| 玉山县| 临桂县| 苗栗市| 嘉善县| 汝阳县| 长宁县|