日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【Pytorch神经网络理论篇】 01 Pytorch快速上手(一)概述+张量

發(fā)布時(shí)間:2024/7/5 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【Pytorch神经网络理论篇】 01 Pytorch快速上手(一)概述+张量 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

1 概述

Pytorch是基于Torch之上的python包,在底層主要通過張量的形式進(jìn)行計(jì)算,Pytorch中的張量表示為同一數(shù)據(jù)類型的多位橘子。

1.1 基礎(chǔ)數(shù)據(jù)類型的概述

1、標(biāo)量:即具體的數(shù)字

2、向量:多個(gè)標(biāo)量組成

3、矩陣:多個(gè)向量組成

4、張量:多個(gè)矩陣組成的量

2 張量

2.1 張量在編程語言上的定義方法

2.1.1 torch.tensor()

import torch # 引入torch庫 import numpy as np # 引入Numpy """torch.tensor():僅有一個(gè)參數(shù),其功能是將轉(zhuǎn)入的對(duì)象轉(zhuǎn)化為張量 """ a = torch.tensor(5) #定義一個(gè)張量 5 print(a) #輸出 tensor(5)anp = np.asarray([4]) #定義一個(gè)Numpy數(shù)組 a = torch.tensor(anp) #將Numpy數(shù)組轉(zhuǎn)化成張量 print(a)# 輸出 tensor([4], dtype=torch.int32)

結(jié)果:

2.1.2 torch.Tensor()

import torch # 引入torch庫 import numpy as np # 引入Numpy """torch.Tensor():1.當(dāng)傳入數(shù)字時(shí),創(chuàng)建一個(gè)指定形狀的張量,生成的張量是未初始化的。2.傳入一個(gè)列表時(shí),生成與該列表內(nèi)容相同的張量 """ a = torch.Tensor(2) #定義指定形狀未初始化的張量 print(a) #輸出 tensor([-1.5370e+18, 1.0872e-18])b = torch.Tensor(1,2) #定義指定形狀的未初始化的張量 print(b) #輸出 tensor([[-1.5312e+18, 2.7181e-19]])e = torch.rand(2,1) #定義指定形狀的已初始化的張量 print(e) #隨機(jī)生成0至1區(qū)間內(nèi)的張量c = torch.Tensor([2]) #定義指定內(nèi)容的張量 print(c) #輸出 tensor([2.])d = torch.Tensor([1,2]) #定義一個(gè)指定內(nèi)容的張量 print(d) #輸出 tensor([1., 2.])

結(jié)果:

2.1.3 張量的類型判斷與元素個(gè)數(shù)計(jì)算

import torch # 引入torch庫a = torch.Tensor(2) # 定義一個(gè)指定形狀的張量 print(torch.is_tensor(a)) # 判斷a是否為張量 print(torch.numel(a)) # 獲得a中的元素個(gè)數(shù)

結(jié)果:

2.1.4 張量的默認(rèn)類型

在torch中CPU和GPU張量分別有8種數(shù)據(jù)類型

在torch中默認(rèn)的數(shù)據(jù)類型是32位浮點(diǎn)型(torch.FloatTensor),可以通過torch.set_default_tensor_type()函數(shù)設(shè)置默認(rèn)的數(shù)據(jù)類型,但是該函數(shù)只支持設(shè)置浮點(diǎn)型數(shù)據(jù)類型,代碼如下:

import torchtorch.tensor([1.2,3.4]).dtype #獲取張量的數(shù)據(jù)類型,其中torch.tensor()函數(shù)生成一個(gè)張量 #默認(rèn)為 torch.float32torch.set_default_tensor_type(torch.DoubleTensor) #設(shè)置張量的默認(rèn)數(shù)據(jù)類型 torch.tensor([1.2,3.4]).dtype #此時(shí)變成 torch.float64

2.1.5 張量的type()方法==》將張量轉(zhuǎn)化為基礎(chǔ)數(shù)據(jù)類型

在torch中還有其他類型的數(shù)據(jù),將浮點(diǎn)型轉(zhuǎn)化為其他數(shù)據(jù)類型的方法如下:

a = torch.tensor([1.2,3.4]) print("a.dtype:",a.dtype) print("a.long()方法",a.long().dtype) print("a.int()方法",a.int().dtype) print("a.float()方法",a.float().dtype) # #a.dtype:torch.float64 #a.long()方法:torch.int64 #a.int()方法:torch.int32 #a.float()方法:torch.float32

2.1.6?dtype和type()的區(qū)別

torch_tensor.dtype #返回類似: torch.float64,是torch定義的數(shù)據(jù)類型。 torch_tensor.type() #返回類似:torch.cuda.DoubleTensor ,是字符串,且可以看到是CPU張量還是GPU張量。torch.float64 對(duì)應(yīng) torch.DoubleTensor torch.float32 對(duì)應(yīng) torch.FloatTensor

2.1.7?默認(rèn)類型在其他函數(shù)中的應(yīng)用

torch.ones():生成指定形狀、元素值為1的張量數(shù)組

torch.zeros():生成指定形狀、元素值為0的張量數(shù)組

torch.ones_like():生成與目標(biāo)張量形狀相同、元素值為1的張量數(shù)組

torch.zeros_like():生成與目標(biāo)張量形狀相同、元素值為1的張量數(shù)組

torch.randn():生成指定形狀的隨機(jī)數(shù)張量數(shù)組

torch.eye():生成對(duì)角矩陣的張量

torch.full():生成元素值均為1的矩陣的張量

2.2 張量與Numpy的關(guān)系

在pytorch中張量可以是一個(gè)標(biāo)量,一個(gè)向量,一個(gè)矩陣,甚至是更高維度的數(shù)組,所以pytorch中的rtensor和numpy中的數(shù)組(ndarray)非常相似。

在使用中也經(jīng)常將pytorch中的張量和numpy庫中的數(shù)組相互轉(zhuǎn)化,在深度網(wǎng)絡(luò)中,基于pytorch的相關(guān)計(jì)算都是在tensor的基礎(chǔ)上完成的。

2.2.1 類型轉(zhuǎn)換

import torch import numpy as npa = torch.FloatTensor([4]) # 定義一個(gè)張量 print(a.numpy()) # 轉(zhuǎn)化成numpy,并輸出anp = np.asarray([4]) # 定義一個(gè)numpy類型對(duì)象 print(torch.from_numpy(anp)) # 法1 轉(zhuǎn)化為tensor,并輸出 print(torch.tensor(anp))# 法2 轉(zhuǎn)化為tensor,并輸出

結(jié)果:

?

?2.2.2 張量與numpy類型變量的形狀

import torch import numpy as npx = torch.rand(2,1) print(x.shape,x.size())anp = np.asarray([4,2]) print(anp.shape,anp.size)

結(jié)果:

2.2.3 切片操作

import torch import numpy as npx = torch.rand(2,1) print(x[:])anp = np.asarray([4,2]) print(anp[:])

?結(jié)果:

?2.2.3 陷阱

Numpy轉(zhuǎn)化為tensor張量時(shí),若改變tensor的數(shù)值,不會(huì)影響到原numpy的數(shù)值,因?yàn)閠ensor會(huì)重新開辟區(qū)域。若改變numpy的數(shù)值,會(huì)影響到tensor的數(shù)值,因?yàn)閚umpy不會(huì)重新開辟區(qū)域。

總結(jié)

以上是生活随笔為你收集整理的【Pytorch神经网络理论篇】 01 Pytorch快速上手(一)概述+张量的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。