PyTorch基础(一)-----张量(Tensor)
前言
很多人都會拿PyTorch和Google的Tensorflow進(jìn)行比較,這個肯定是沒有問題的,因為他們是最火的兩個深度學(xué)習(xí)框架了。但是說到PyTorch,其實應(yīng)該先說Torch。
什么是Torch?
Torch是一個與Numpy類似的張量(Tensor)操作庫,與Numpy不同的是Torch對GPU支持的很好。Lua是Torch的上層包裝,雖然Lua速度很快,Lua實在是太小眾了,所以才會有PyTorch的橫空出世。
PyTorch是一個基于Torch的Python開源機器學(xué)習(xí)庫,用于自然語言處理等應(yīng)用程序。 它主要由Facebook的人工智能研究小組開發(fā)。Uber的"Pyro"也是使用的這個庫。
PyTorch是一個Python包,提供兩個高級功能:
- 具有強大的GPU加速的張量計算(如NumPy)
- 包含自動求導(dǎo)系統(tǒng)的的深度神經(jīng)網(wǎng)絡(luò)
最后,關(guān)于Tensorflow和PyTorch的對比網(wǎng)上已經(jīng)有很多了,這里就不詳細(xì)說明了,有興趣的可以看這篇文章https://zhuanlan.zhihu.com/p/28636490。
一、什么是張量(Tensor)
PyTorch是一個處理張量的庫,張量是PyTorch里面基礎(chǔ)運算單位,一個張量是一個數(shù)字、向量、矩陣或者任何n維數(shù)組。張量與Numpy的ndarray相同,都表示的是一個多維的矩陣。與ndarray的最大區(qū)別就是**:PyTorch的Tensor可以在GPU上運行,而numpy的ndarray只能在CPU上運行,在GPU上運行大大加快了運算速度。**
- 導(dǎo)包
- 新建一個簡單的Tensor
- 查看Tensor的大小
- 生成一個多維張量
在同構(gòu)的意義下,第0階張量(r = 0)為標(biāo)量(Scalar),第一階張量(r = 1)為向量(Vector),第二階張量(r = 2)則稱為了矩陣(Matrix),第3階以上的統(tǒng)稱為多維張量。
- 其中,特別主義的是標(biāo)量,我們先來生成一個標(biāo)量(scalar):
二、如何創(chuàng)建一個張量(Tensor)
- 使用[0,1]均勻分布隨機初始化張量
- 使用1填充
- 使用0填充
- 初始化一個單位矩陣,即對角線為1,其它為0
三、常用方法
PyTorch中對張量的操作api和Numpy非常相似,如果熟悉Numpy中的相關(guān)操作,它們兩個是基本一致的
- 首先,我們新建一個張量Tensor
然后我們來進(jìn)行以下的操作:
- 沿著行取最大值
- 沿著列取最大值
- 求每行的和
- 求每列的和
- 求兩個張量的和
- 任何以“-”結(jié)尾的操作都會用結(jié)果替換原變量,例如:“x.copy_(y)”,都會改變x
四、張量(Tensor)和Numpy對象的互相轉(zhuǎn)換
Tensor和numpy對象共享內(nèi)存,所以他們之間的轉(zhuǎn)換很快,而且?guī)缀醪粫氖裁促Y源。但這也意味著,如果其中一個改變了,另外一個也會隨之改變。
- Tensor轉(zhuǎn)為Numpy對象
- Numpy對象轉(zhuǎn)為Tensor
五、參考文獻(xiàn)
https://github.com/zergtant/pytorch-handbook/blob/master/chapter2/2.1.1.pytorch-basics-tensor.ipynb
總結(jié)
以上是生活随笔為你收集整理的PyTorch基础(一)-----张量(Tensor)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 从留存的本质出发,制定留存策略
- 下一篇: 从面试的这些细节就可判断公司的好坏