Pytorch與Numpy

import numpy as np
import torch

1.轉(zhuǎn)換

data = np.array([[1,2,3],[4,5,6],[7,8,9]])
array2tensor = torch.from_numpy(data)
tensor2array = array2tensor.numpy()
"""
tensor([[1, 2, 3],
        [4, 5, 6],
        [7, 8, 9]], dtype=torch.int32)

array([[1, 2, 3],
       [4, 5, 6],
       [7, 8, 9]])
"""

2.隨機(jī)數(shù)

Numpy

種子np.random.seed(seed)

· numpy.random.rand(d0, d1, ..., dn)

產(chǎn)生均勻分布在[0,1)間的隨機(jī)數(shù)蓝翰,括號里指定size漂坏,默認(rèn)float

a = np.random.rand(3, 3)
"""
array([[0.15334759, 0.92629601, 0.66620659],
       [0.96422599, 0.71548214, 0.66290283],
       [0.2524382 , 0.24994874, 0.56431885]])
"""
· numpy.random.randn(d0, d1, ..., dn)

產(chǎn)生標(biāo)準(zhǔn)正態(tài)分布(均值為1驯绎,方差為0)隨機(jī)數(shù)册着,默認(rèn)float

a = np.random.randn(3, 3)
"""
array([[ 1.11674106, -0.29341747,  1.3589762 ],
       [ 0.53113603,  0.27664724,  1.00542435],
       [ 0.7966614 , -0.87245422, -0.63765919]])
"""
· numpy.random.randint(low, high, size, dtype)

產(chǎn)生隨機(jī)整數(shù)

a = np.random.randint(1 , 10 , (3 , 3))
"""
array([[1, 5, 7],
       [3, 1, 3],
       [5, 7, 9]])
"""
· numpy.random.random(size)

產(chǎn)生[0, 1)之間的浮點(diǎn)數(shù)

a = np.random.random((3,3))
"""
array([[0.06250577, 0.34364639, 0.38829973],
       [0.84117707, 0.36396527, 0.27810945],
       [0.40451704, 0.79816697, 0.53218176]])
"""
· numpy.random.uniform(low, high, size)

產(chǎn)生浮點(diǎn)數(shù)兄纺,浮點(diǎn)數(shù)在高低閾值內(nèi)均勻分布

a = np.random.uniform(1 , 10 , (3 , 3))
"""
array([[3.78630803, 4.0347892 , 8.59961933],
       [1.39894366, 4.79155566, 8.80261069],
       [2.93894629, 7.76194383, 1.66707995]])
"""

Pytorch

種子torch.manual_seed (int or long)

· torch.normal(mean, std, out=None) → Tensor
· torch.normal(mean=0.0, std, out=None) → Tensor
· torch.normal(mean, std=1.0, out=None) → Tensor

返回一個張量,包含從給定參數(shù)means,std的離散正態(tài)分布中抽取隨機(jī)數(shù)

torch.normal(mean=torch.arange(1., 11.), std=torch.arange(1, 0, -0.1))
#均值和標(biāo)準(zhǔn)差的形狀不需要匹配,但是每個張量中元素的總數(shù)需要相同
torch.normal(mean=0.5, std=torch.arange(1., 6.)) #共享均值裸弦,默認(rèn)為0
torch.normal(mean=torch.arange(1., 6.)) #共享標(biāo)準(zhǔn)差泞坦,默認(rèn)為1
"""
tensor([0.0453, 2.2179, 3.6245, 4.8631, 5.3302, 6.0755, 6.7167, 7.8588, 9.1602,
        9.6817])
tensor([ 0.5778,  2.7397,  0.1901, -4.2744,  2.4538])
tensor([1.2878, 1.3632, 2.1901, 3.8385, 6.1036])
"""
· torch.randn(size) → Tensor

返回一個標(biāo)準(zhǔn)正態(tài)分布(均值為0授嘀、方差為1)隨機(jī)數(shù)組成的張量

torch.randn(3, 3)
"""
tensor([[-0.4921, -0.9048,  1.0979],
        [-0.4808,  0.7250, -0.0609],
        [-1.7212, -0.7908, -0.2270]])
"""
· torch.randint(low=0, high, size) → Tensor

返回一個在高低閾值間均勻分布的隨機(jī)整數(shù)張量

torch.randint(1,10,(3,3))
"""
tensor([[9, 1, 8],
        [1, 2, 4],
        [8, 4, 7]])
"""
· torch.rand(size) → Tensor

產(chǎn)生均勻分布在[0,1)間的隨機(jī)張量

torch.rand((3,3))
"""
tensor([[0.7242, 0.2358, 0.8065],
        [0.4882, 0.1418, 0.6659],
        [0.0871, 0.8819, 0.5817]])
"""

3.方法

numpy和pytorch中許多函數(shù)使用方法一致巷折,且很多方法可以直接通過實例的下標(biāo)調(diào)用上鞠,代碼中使用庫函數(shù)調(diào)用方式

tensor = torch.FloatTensor([[-1,-2],[1,2]])
array = np.array([[-1.,-2.],[1.,2.]])

torch.sin(tensor)
np.sin(array)

torch.abs(tensor)
np.abs(array)

torch.max(tensor)
np.max(array)
...
"""
tensor([[-0.8415, -0.9093],
        [ 0.8415,  0.9093]])
array([[-0.84147098, -0.90929743],
       [ 0.84147098,  0.90929743]])

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

tensor(2.)
2.0
"""

4.計算

#矩陣乘
torch.mm(tensor,tensor) 
np.matmul(array,array)
torch.dot(torch.tensor([2, 3]), torch.tensor([2, 1]))  #Expected 1-D argument self
#數(shù)組乘
torch.mul(tensor,tensor)
np.multiply(array,array)
"""
tensor([[-1., -2.],
        [ 1.,  2.]])
array([[-1., -2.],
       [ 1.,  2.]])
tensor(7)

tensor([[1., 4.],
        [1., 4.]])
array([[1., 4.],
       [1., 4.]])
"""

5.GPU

pytorch張量具有GPU支持岭佳,通過.cuda()方法移至GPU加速運(yùn)算,傳統(tǒng)的numpy庫不支持GPU加速,因此在使用CUDA加速時,無法使用numpy轉(zhuǎn)化以及numpy庫的相關(guān)方法仅财,但可以通過.cpu()將目標(biāo)張量移至CPU宁改,再進(jìn)行numpy轉(zhuǎn)換潭兽。我在搭建網(wǎng)絡(luò)時就曾遇到TypeError:can't convert CUDA tensor to numpy.

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末铸本,一起剝皮案震驚了整個濱河市汪茧,隨后出現(xiàn)的幾起案子媚赖,更是在濱河造成了極大的恐慌缤底,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,941評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件灭翔,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)粥脚,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,397評論 3 395
  • 文/潘曉璐 我一進(jìn)店門泊窘,熙熙樓的掌柜王于貴愁眉苦臉地迎上來吴叶,“玉大人咸灿,你說我怎么就攤上這事。” “怎么了悟狱?”我有些...
    開封第一講書人閱讀 165,345評論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我胚委,道長覆享,這世上最難降的妖魔是什么吩屹? 我笑而不...
    開封第一講書人閱讀 58,851評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮蓬衡,結(jié)果婚禮上瓷们,老公的妹妹穿的比我還像新娘。我一直安慰自己文兢,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,868評論 6 392
  • 文/花漫 我一把揭開白布乎赴。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪全蝶。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,688評論 1 305
  • 那天,我揣著相機(jī)與錄音堂氯,去河邊找鬼排抬。 笑死模燥,一個胖子當(dāng)著我的面吹牛浩嫌,可吹牛的內(nèi)容都是我干的束铭。 我是一名探鬼主播,決...
    沈念sama閱讀 40,414評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼牙甫,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了至朗?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,319評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后峻仇,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體恶迈,經(jīng)...
    沈念sama閱讀 45,775評論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡中跌,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,945評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片蔚约。...
    茶點(diǎn)故事閱讀 40,096評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出曲初,到底是詐尸還是另有隱情,我是刑警寧澤樟蠕,帶...
    沈念sama閱讀 35,789評論 5 346
  • 正文 年R本政府宣布蕾各,位于F島的核電站钧排,受9級特大地震影響躺盛,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜敬扛,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,437評論 3 331
  • 文/蒙蒙 一打掘、第九天 我趴在偏房一處隱蔽的房頂上張望叶撒。 院中可真熱鬧落君,春花似錦、人聲如沸靠瞎。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,993評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至勉耀,卻和暖如春宅广,著一層夾襖步出監(jiān)牢的瞬間关翎,已是汗流浹背爽茴。 一陣腳步聲響...
    開封第一講書人閱讀 33,107評論 1 271
  • 我被黑心中介騙來泰國打工酱畅, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留餐蔬,地道東北人。 一個月前我還...
    沈念sama閱讀 48,308評論 3 372
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親书蚪。 傳聞我的和親對象是個殘疾皇子喇澡,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,037評論 2 355