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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

pytorch基础函数学习

發(fā)布時間:2025/3/20 编程问答 16 豆豆
生活随笔 收集整理的這篇文章主要介紹了 pytorch基础函数学习 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

? ? ? 深度學(xué)習(xí)框架,似乎永遠離不開哪個最熱哪個最實用的話題,自己接觸甚淺,尚不敢對齊進行大加評論,這里也只是初步接觸。目前常見的有TensorFlow,pytorch,Keras等,至于目前哪個做好用,就像TIOBE編程語言的統(tǒng)計一樣,每一個都有自己的擁躉。目前Tensorflow和pytorch競爭相當火爆,pytorch上升速度極快,至于是否真正超過了TesorFlow了,可以通過這篇博文進行了解。

? ? 安裝自不必細說,參考安裝教程,同時官網(wǎng)了提供相應(yīng)的內(nèi)容。

使用Tensorflow配和使用Numpy,Numpy提供了強大的數(shù)組和矩陣的功能,二者的區(qū)別引用一位他人的總結(jié)就是:“一個好的框架應(yīng)該要具備三點:對大的計算圖能方便的實現(xiàn);能自動求變量的導(dǎo)數(shù);能簡單的運行在GPU上;pytorch都做到了,但是現(xiàn)在很多公司用的都是TensorFlow,而pytorch由于比較靈活,在學(xué)術(shù)科研上用得比較多一點。鄙人認為可能,Google可能下手早一些,而Facebook作后來者,雖然靈活,但是很多公司已經(jīng)入了TensorFlow的坑了,要全部遷移出來還是很費功夫;而且,TensorFlow在GPU的分布式計算上更為出色,在數(shù)據(jù)量巨大時效率比pytorch要高一些,這個也是一個重要的原因吧。”,因此pytorch一些函數(shù)方法和numpy中的函數(shù)方法說幾乎等同也不為過。下面先看一下Numpy中的幾個方法

import numpy as np a = np.array([[1, 2], [3, 4]]) #創(chuàng)建空矩陣.數(shù)組 numpy.empty(shape, dtype = float, order = 'C') #創(chuàng)建全0矩陣 numpy.zeros(shape, dtype = float, order = 'C') #創(chuàng)建指定范圍的數(shù)組 numpy.arange(start, stop, step, dtype)

1.張量Tesnors

? ? ? 我們知道深度學(xué)習(xí)中,Tensorflow和pytorch等都是基于對數(shù)組矩陣進行大量的擬合,變換,微分等運算,因此張量是線性代數(shù)中用到的一種數(shù)據(jù)結(jié)構(gòu),類似向量和矩陣,可以在張量上進行算術(shù)運算。張量可以說是Tensorflow和pytorch的基石。

Tensors 類似于 NumPy 的 ndarrays ,同時 Tensors 可以使用 GPU 進行計算。使用tensor之前先導(dǎo)入torch

torch.is_tensor(obj)如果 obj 是一個 pytorch tensor, 則返回True.
torch.is_storage(obj)如果 obj 是一個 pytorch storage object, 則返回True
import torch x = torch.randn(5,3)print(torch.is_tensor(x)) print(torch.is_storage(x)) print(torch.numel(x))
torch.numel(input) → int返回 input Tensor 中的元素總數(shù)

2.創(chuàng)建函數(shù)

創(chuàng)建函數(shù)和Numpy中的幾乎完全一樣,包括常見的ones,zeros,eye,arrange等

torch.zeros(*sizes, out=None) → Tensor返回填充了標量值為 0 的 Tensor, 其形狀由可變參量 sizes 定義

返回一個全0 的張量,其形狀有sizes定義

x = torch.zeros(5,dtype=torch.long) print(x) x = torch.zeros((5,3),dtype=torch.long) print(x) x = torch.zeros([5,3],dtype=torch.long) print(x)
torch.zeros_like(input, out=None) → Tensor返回一個用標量值 0 填充的 Tensor, 其大小與 input 相同.

還有一個常用函數(shù)同zeros,就是zeros_like,見名知著,顧名思義就是像什么一樣的一個功能函數(shù)

x = torch.zeros((5,3),dtype=torch.long) print(x) y = torch.zeros_like(x) print(y)
torch.from_numpy(ndarray) → Tensor從 numpy.ndarray 類 創(chuàng)建一個 Tensor 類
import torch import numpy as npx = np.array([5,3]) y = torch.from_numpy(x) print(y)

注意:將numpy.ndarray轉(zhuǎn)換為Tensor,返回的張量tensor和numpy的ndarray共享同一內(nèi)存空間,修改一個會導(dǎo)致另一個也被修改,返回的張量不能改變大小

torch.eye(n, m=None, out=None)返回對角線位置全為1, 其它位置全為0的二維 tensor

返回一個2維張量,對角線為1,其它位置為0,注意:eye(N)是單位矩陣,非全1矩陣

  • n (int) -行數(shù)
  • m (int, optional)列數(shù),如果為None,則默認為n
  • out (Tensor, optional)
torch.empty()?
torch.empty_like()

這里的創(chuàng)建規(guī)則同ones和ones_like一樣

x = torch.empty(5,3) y = torch.empty_like(x) print(y)
torch.full(size, fill_value, …)返回大小為sizes,單位值為fill_value的矩陣
torch.full_like(input, fill_value, …)返回與input相同size,單位值為fill_value的矩陣
x=torch.full([5,3], 1) print(x) x=torch.full([], 1) # 生成一個標量 print(x) x=torch.full([1], 1) # 生成一個標量 print(x)

輸出結(jié)果為如下:

tensor([[1., 1., 1.],[1., 1., 1.],[1., 1., 1.],[1., 1., 1.],[1., 1., 1.]]) tensor(1.) tensor([1.])

還有一些其他函數(shù)比如等比,等差數(shù)列比較好理解

torch.linspace(start, end, steps=100, out=None) → Tensor返回 start 和 end 之間等間隔 steps 點的一維 Tensor.輸出 是尺寸 steps 為一維 tensor
torch.logspace(start, end, steps=100, out=None) → Tensor返回一個在 10^start和 10^end之間的對數(shù)間隔 steps 點的一維 Tensor,輸出是長度為 steps 的一維 tensor

生成一維Tensor有arrage和range兩個函數(shù)

torch.arange(start=0, end, step=1, out=None) → Tensor從 start 用步長為 step 開始, 間隔在 [start, end) 中的值返回大小層次為 floor((end?start)/step)floor((end?start)/step) 的一維 Tensor.
torch.range(start, end, step=1, out=None) → Tensor返回一個在 start 到 end 并且步長為 step 的區(qū)間內(nèi), 大小為 floor((end?start)/step)+1floor((end?start)/step)+1 為一維 Tensor.

推薦使用torch.arrange()

3. 索引,切片,連接,換位(Index, Slicing, Joining, Mutating)

torch.cat(seq, dim=0, out=None) → Tensor在給定維度上對輸入的張量序列 seq 進行連接操作. 所有張量必須具有相同的形狀(在 cat 維度中除外) 或為空.
torch.chunk(tensor, chunks, dim=0)在給定維度(軸)上將輸入張量進行分塊處理.
torch.gather(input, dim, index, out=None) → Tensor沿給定軸 dim ,將輸入索引張量 index 指定位置的值進行聚合.

?

關(guān)于基礎(chǔ)函數(shù)的介紹,推薦自己看過的兩篇文章,一個是羅列了所有可用的函數(shù),另一個是介紹了基本功能,示例

總結(jié)

以上是生活随笔為你收集整理的pytorch基础函数学习的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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