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

Pytorch創(chuàng)建張量的四種方法

 更新時間:2023年05月16日 09:04:02   作者:ting_qifengl  
Pytorch創(chuàng)建張量的4種方法主要有:torch.Tensor()、torch.tensor()、torch.as_tensor()、torch.from_numpy(),本文通過實例代碼介紹Pytorch創(chuàng)建張量的四種方法,需要的朋友可以參考下

一、Pytorch創(chuàng)建張量的4種方法

Pytorch創(chuàng)建張量的4種方法主要有:torch.Tensor()、torch.tensor()、torch.as_tensor()、torch.from_numpy()。具體使用方法如下方代碼。其中torch.Tensor()是類構(gòu)造函數(shù),其余三種為工廠函數(shù)。工廠函數(shù)是指接受參數(shù)輸入并返回特定類型對象的函數(shù),其允許更多的動態(tài)對象創(chuàng)建,有更多的配置參數(shù)。通常情況下更傾向于選擇工廠函數(shù)。

import torch
import numpy as np
t = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
print(torch.Tensor(t))  # 類構(gòu)造函數(shù)
print(torch.tensor(t))  # 工廠函數(shù)
print(torch.as_tensor(t))  # 工廠函數(shù)
print(torch.from_numpy(t))  # 工廠函數(shù)

輸出結(jié)果如下:

tensor([[1., 2., 3.],
        [4., 5., 6.],
        [7., 8., 9.]])
tensor([[1, 2, 3],
        [4, 5, 6],
        [7, 8, 9]], dtype=torch.int32)
tensor([[1, 2, 3],
        [4, 5, 6],
        [7, 8, 9]], dtype=torch.int32)
tensor([[1, 2, 3],
        [4, 5, 6],
        [7, 8, 9]], dtype=torch.int32)

二、4種方法的區(qū)別

1、數(shù)據(jù)類型

import torch
import numpy as np
data = np.array([1,2,3])
t1 = torch.Tensor(data)
print(t1)
print(t1.dtype)
t2 = torch.tensor(data)
print(t2)
print(t2.dtype)
t3 = torch.as_tensor(data)
print(t3)
print(t3.dtype)
t4 = torch.from_numpy(data)
print(t4)
print(t4.dtype)

輸出結(jié)果如下:

tensor([1., 2., 3.])
torch.float32
tensor([1, 2, 3], dtype=torch.int32)
torch.int32
tensor([1, 2, 3], dtype=torch.int32)
torch.int32
tensor([1, 2, 3], dtype=torch.int32)
torch.int32

可以看出,構(gòu)造函數(shù)torch.Tensor()輸出的數(shù)據(jù)類型與其它三種方法不同,其主要原因是:構(gòu)造函數(shù)在構(gòu)造一個張量時使用全局缺省值,而工廠函數(shù)通過輸入數(shù)據(jù)的類型來推斷輸出數(shù)據(jù)的類型。我們可以使用如下代碼查看全局缺省值的數(shù)據(jù)類型。

d = torch.get_default_dtype()
print(d)

輸出結(jié)果為:

torch.float32

所以,構(gòu)造函數(shù)torch.Tensor()輸出的數(shù)據(jù)類型為torch.float32。而工廠函數(shù)可以顯示指定數(shù)據(jù)類型,如下所示。

t = torch.tensor(np.array([1,2,3]), dtype=torch.float64)
print(t)

輸出結(jié)果為:

tensor([1., 2., 3.], dtype=torch.float64)

2、數(shù)據(jù)內(nèi)存分配方式

import torch
import numpy as np
data = np.array([1,2,3])
print(data)
t1 = torch.Tensor(data)
t2 = torch.tensor(data)
t3 = torch.as_tensor(data)
t4 = torch.from_numpy(data)
data[0] = 0
data[1] = 0
data[2] = 0
# t1 和 t2 輸出的都是更改前的數(shù)組
print(t1)
print(t2)
# t3 和 t4 輸出的都是更改后的數(shù)組
print(t3)
print(t4)

輸出結(jié)果為:

[1 2 3]
tensor([1., 2., 3.])
tensor([1, 2, 3], dtype=torch.int32)
tensor([0, 0, 0], dtype=torch.int32)
tensor([0, 0, 0], dtype=torch.int32)

上述差異是由創(chuàng)建時分配內(nèi)存的方式造成的:torch.Tensor()和torch.tensor()的方式是將數(shù)組中的元素值直接拷貝到張量中,改變data中的元素值并不會影響到t1和t2中的值;torch.as_tensor()和torch.from_numpy()的方式是與data數(shù)組共享數(shù)據(jù)。(可將t1和t2的方式看作"值傳遞";t3和t4的方式看作“地址傳遞”)。數(shù)據(jù)共享比數(shù)據(jù)拷貝更高效,更節(jié)省內(nèi)存空間。

共享數(shù)據(jù)拷貝數(shù)據(jù)
torch.as_tensor()torch.tensor()
torch.from_numpy()torch.Tensor()

三、最優(yōu)的數(shù)據(jù)轉(zhuǎn)換方法

1、數(shù)據(jù)拷貝方式的最優(yōu)選擇是 torch.tensor() (因為是工廠函數(shù));

2、內(nèi)存共享方式的最優(yōu)選擇是 torch.as_tensor() (因為torch.as_tensor可以接受任何python數(shù)據(jù)結(jié)構(gòu);而torch.from_numpy只接受numpy數(shù)組);

3、數(shù)據(jù)拷貝的方式更注重實現(xiàn);而內(nèi)存共享的方式更注重代碼性能,日常使用時不注重性能的話選擇torch.tensor()即可。

四、使用內(nèi)存共享函數(shù)的注意事項

1、由于numpy.ndaaray對象分配在CPU上,所以如果使用GPU的話,torch.as_tensor函數(shù)必須把數(shù)據(jù)從CPU上拷到GPU上;

2.、as_tensor()對于python內(nèi)置的數(shù)據(jù)結(jié)構(gòu),如列表,是無效的;

3、as_tensor的調(diào)用要求熟悉共享特征,以免對底層數(shù)據(jù)做不必要的更改,而影響到對象;

4、當as_tensor和numpy.ndarray有大量的相互往返的操作時,對性能的提升會有較大的影響。

到此這篇關(guān)于Pytorch創(chuàng)建張量的四種方法的文章就介紹到這了,更多相關(guān)Pytorch創(chuàng)建張量內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 使用Python requests庫發(fā)送JSON數(shù)據(jù)的POST請求步驟

    使用Python requests庫發(fā)送JSON數(shù)據(jù)的POST請求步驟

    在Python這個強大的編程語言中,requests庫是一個廣泛使用且功能強大的HTTP請求庫,發(fā)送POST請求并附帶JSON數(shù)據(jù)是一個非常常見的需求,本文給大家介紹了如何用Python的requests庫發(fā)送JSON數(shù)據(jù)的POST請求,需要的朋友可以參考下
    2024-06-06
  • Python?正則表達式基礎(chǔ)知識點及實例

    Python?正則表達式基礎(chǔ)知識點及實例

    在本篇文章里小編給大家整理了關(guān)于Python正則表達式的一些基礎(chǔ)知識點以及相關(guān)用法實例內(nèi)容,需要的朋友們可以參考下。
    2021-12-12
  • 詳解Django自定義圖片和文件上傳路徑(upload_to)的2種方式

    詳解Django自定義圖片和文件上傳路徑(upload_to)的2種方式

    這篇文章主要介紹了詳解Django自定義圖片和文件上傳路徑(upload_to)的2種方式,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-12-12
  • python獲取的html中都是\\u003e實現(xiàn)轉(zhuǎn)成正確字符

    python獲取的html中都是\\u003e實現(xiàn)轉(zhuǎn)成正確字符

    這篇文章主要介紹了python獲取的html中都是\\u003e實現(xiàn)轉(zhuǎn)成正確字符方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-07-07
  • Python內(nèi)置函數(shù)dir詳解

    Python內(nèi)置函數(shù)dir詳解

    這篇文章主要介紹了Python內(nèi)置函數(shù)dir詳解,本文講解了命令介紹、使用實例、使用dir查找module下的所有類、如何找到當前模塊下的類等內(nèi)容,需要的朋友可以參考下
    2015-04-04
  • python函數(shù)裝飾器構(gòu)造和參數(shù)傳遞

    python函數(shù)裝飾器構(gòu)造和參數(shù)傳遞

    這篇文章主要介紹了python函數(shù)裝飾器構(gòu)造和參數(shù)傳遞,下面通過一個小案例來簡單的理解什么是裝飾器,需要的小伙伴可以參考一下
    2022-03-03
  • Python3利用print輸出帶顏色的彩色字體示例代碼

    Python3利用print輸出帶顏色的彩色字體示例代碼

    用Python寫命令行程序的時候,單一的輸出顏色太單調(diào)了,所以下面這篇文章主要給大家介紹了關(guān)于Python3利用print輸出帶顏色的彩色字體的相關(guān)資料,需要的朋友可以參考下
    2019-04-04
  • Python中緩存lru_cache的基本介紹和講解

    Python中緩存lru_cache的基本介紹和講解

    緩存是一種將定量數(shù)據(jù)加以保存以備迎合后續(xù)請求的處理方式,旨在加快數(shù)據(jù)的檢索速度,下面這篇文章主要給大家介紹了關(guān)于Python中緩存lru_cache的基本介紹和講解的相關(guān)資料,需要的朋友可以參考下
    2022-01-01
  • Python中的二叉樹查找算法模塊使用指南

    Python中的二叉樹查找算法模塊使用指南

    二叉樹查找算法,在開發(fā)實踐中,會經(jīng)常用到。按照慣例,對于這么一個常用的東西,Python一定會提供輪子的。是的,python就是這樣,一定會讓開發(fā)者省心,降低開發(fā)者的工作壓力。
    2014-07-07
  • python畫圖時linestyle,color和loc參數(shù)的設置方式

    python畫圖時linestyle,color和loc參數(shù)的設置方式

    這篇文章主要介紹了python畫圖時linestyle,color和loc參數(shù)的設置方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-11-11

最新評論

温宿县| 双峰县| 崇州市| 东辽县| 环江| 通渭县| 仙桃市| 景东| 丁青县| 四子王旗| 阳信县| 西乌珠穆沁旗| 永新县| 吴忠市| 乳源| 石城县| 阳高县| SHOW| 恩施市| 芷江| 望江县| 三穗县| 南丰县| 庄浪县| 昌宁县| 马鞍山市| 开远市| 玉龙| 商洛市| 那曲县| 乌恰县| 吉木萨尔县| 河北区| 杂多县| 斗六市| 青铜峡市| 湖北省| 垣曲县| 南召县| 崇明县| 广宗县|