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

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

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

引言

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

當我們不指定dtype時,PyTorch會根據(jù)輸入的數(shù)值類型自動分配默認張量類型:

import torch  # 導入PyTorch庫,版本建議2.0+

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

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

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

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

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

重點:在深度學習訓練中,我們幾乎都會用dtype=torch.float32創(chuàng)建張量,這是框架默認的訓練精度,兼顧速度和精度??

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

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

4.1 萬能轉(zhuǎn)換法:type()函數(shù)(強推)

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

代碼實操: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)勢:無論是什么原始類型,只需改變type()中的目標參數(shù),就能實現(xiàn)任意轉(zhuǎn)換,無需記憶多個函數(shù),一招鮮吃遍天

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

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

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

專屬函數(shù)與類型對應表

專屬轉(zhuǎn)換函數(shù)轉(zhuǎn)換后的目標類型等價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ù)轉(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(原類型,無變化)
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)換方法的對比??

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

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

五、實操小總結(jié):核心知識點梳理

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

六、寫在最后

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

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

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

相關(guān)文章

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

    Python中字符串列表的相互轉(zhuǎn)換實際應用場景

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

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

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

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

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

    Python實現(xiàn)五子棋聯(lián)機對戰(zhàn)小游戲

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

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

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

    Python處理壓縮文件的詳細指南

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

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

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

    Python 如何創(chuàng)建一個簡單的REST接口

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

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

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

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

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

最新評論

囊谦县| 通道| 台湾省| 三都| 财经| 固阳县| 河北省| 昭觉县| 吉首市| 时尚| 清徐县| 丁青县| 莲花县| 米泉市| 中宁县| 什邡市| 开远市| 泾源县| 双城市| 进贤县| 固镇县| 安溪县| 嘉荫县| 孟连| 彩票| 万全县| 乌拉特中旗| 西城区| 乌拉特中旗| 雷州市| 兰考县| 芮城县| 阳曲县| 内江市| 绍兴市| 玛曲县| 盘锦市| 民和| 时尚| 沙洋县| 新竹市|