pyTorch 數(shù)據(jù)運(yùn)算

1.張量的簡(jiǎn)介

張量也可以稱為多維矩陣卫枝。例如,標(biāo)量: 為0維張量???????? 向量:為1維張量?????????? 矩陣:為2維張量 .......

張量除了有維度、大小和元素個(gè)數(shù)之外矗烛,還有元素的類型,例如: torch.float16, torch.float32, torch.int16, torch.int32......

:在pyTorch中箩溃,函數(shù)名都是小寫瞭吃,類名的首字母大寫碌嘀。

torch.arange()和torch.range()的區(qū)別:

torch.arange(start, end, step)?? 返回一個(gè)以start為首項(xiàng), 以end為尾項(xiàng)虱而,以step為公差的等差數(shù)列筏餐。"不包含end"

torch.range(start, end, step)? 返回一個(gè)以start為首項(xiàng), 以end為尾項(xiàng)牡拇,以step為公差的等差數(shù)列魁瞪。"但是包含end"

另外,torch.linspace(start, end, steps)?? 也可以返回一個(gè)等差數(shù)列惠呼,但是該數(shù)列以start 為起點(diǎn)导俘,以end為終點(diǎn),等間距地取steps個(gè)數(shù)剔蹋。(包含start和end)

(1)張量的重排

tensor.reshape(r, c, k)??? 將張量tensor各個(gè)維度的大小改變?yōu)椋╮, c, k)

tensor.squeeze()??? 表示將張量tensor中大小為1的維度去掉

tensor.unsqueeze(dim)??? 表示在張量tensor指定的維度dim上增加一個(gè)大小為1的維度

tensor.permute(2, 0, 1,3) ?? 表示對(duì)張量tensor的維度進(jìn)行重新排列

tensor.transpose(0, 2) ? ? 表示將張量tensor指定的兩個(gè)維度0 和 2 進(jìn)行互換

(2)張量中部分?jǐn)?shù)據(jù)的選擇

tensor.index_select(1, [1, 4, 5]) ?? 表示將張量tensor第二個(gè)維度旅薄,索引為1,4,5的數(shù)據(jù)挑選出來,其余數(shù)據(jù)丟掉

tensor.masked_select(mask)? ?? 其中mask是一個(gè)與tensor大小相同的張量泣崩,且其所有元素為1或者0少梁,該函數(shù)的作用是將mask張量中值為1的位置的數(shù)據(jù)挑選出來,將其余數(shù)據(jù)丟掉矫付,返回值由挑選出來的元素組成的1維張量凯沪。?

(3)張量的擴(kuò)張與拼接

tensor.repeat(x, y, z)? ?表示將張量tensor在三個(gè)維度上分別重復(fù)x, y, z次, 重復(fù)之后只是各個(gè)維度元素的數(shù)量增加了买优,張量的維度并沒有改變

torch.cat([t1, t2], k)????? 表示將張量他t1和t2在維度k上進(jìn)行拼接妨马,注意:拼接完后張量的維度并沒有變化。

torch.stack([t1, t2], k)????? 表示將張量t1和t2在維度k上進(jìn)行拼接杀赢,拼接之后維度會(huì)增加1烘跺。 這種方式要求被拼接的張量t1, t2必須大小形狀相同,增加的維度的大小等于拼接的張量的個(gè)數(shù)脂崔。

tensor.expand(x, y, z ...)? ?表示將張量tensor進(jìn)行擴(kuò)張滤淳,例如:

>>> x = torch.Tensor([[1], [2], [3]])

>>> x.size()

torch.Size([3, 1])

>>> x.expand(3, 4)

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

[ 2., 2., 2., 2.],

[ 3., 3., 3., 3.]])

(4)scatter 函數(shù)

torch.Tensor scatter_(dim,?index,?src)?→ Tensor分散操作

將張量src中的各個(gè)元素,按照index張量中指定的索引位置脱篙,寫入到張量Tensor中娇钱。此函數(shù)中index張量的大小一般大于或等于src張量。例如绊困,該函數(shù)可以用來進(jìn)行one-hot編碼:

y_vec_ = torch.zeros((self.batch_size, self.class_num)).scatter_(1, y_.type(torch.LongTensor).unsqueeze(1), 1)? ??

其中文搂,class_num=10, y_= [ 5, 2, 6, 2, 9, 3, 0, 8, 2, ...... ] 的數(shù)字向量, y_vec便是對(duì)y_進(jìn)行one-hot編碼的結(jié)果秤朗。?

2.張量的運(yùn)算

(1)張量的初等運(yùn)算

加法 +? 煤蹭, 減法 - , 乘法 *?? , 除法 / 硝皂, 乘方 **k?? 常挚, 開方? **\frac{1}{k} ? 。 這些運(yùn)算要求參與運(yùn)算的張量必須大小形狀相同稽物,張量的這些運(yùn)算都是逐個(gè)元素進(jìn)行運(yùn)算奄毡,運(yùn)算的結(jié)果為大小和形狀都相同的張量。


3. pyTorch中使用GPU

(1)使用GPU進(jìn)行運(yùn)算

首先贝或,可以根據(jù)語(yǔ)句 torch.cuda.is_available() 的返回值來判斷GPU是否可用吼过;通過torch.cuda.device_count()可以獲得能夠使用的GPU數(shù)量。然后調(diào)用GPU進(jìn)行運(yùn)算的方法為:

1)通過cuda() 方法將Tensor遷移到現(xiàn)存中去咪奖,具體操作為: Tensor.cuda()

2)使用.cuda() 將Variable遷移到顯存中去盗忱,具體操作為:Variable.cuda()

3)對(duì)于模型來說,也是同樣的方式羊赵,使用.cuda() 方法可以將網(wǎng)絡(luò)模型放到顯存上去趟佃, 具體操作為: model.cuda()

(2)使用指定的GPU運(yùn)算

1)通過以下語(yǔ)句設(shè)置使用的GPU的id

import? os

os.environ["CUDA_VISIBLE_DEVICES"] ="id"

2)使用函數(shù)set_device

import? torch?

torch.cuda.set_device(id)

(3)同時(shí)使用多GPU進(jìn)行訓(xùn)練

Pytorch 的多 GPU 處理接口是torch.nn.DataParallel(module, device_ids),其中module參數(shù)是所要執(zhí)行的模型昧捷,而device_ids則是指定并行的 GPU id 列表闲昭。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市靡挥,隨后出現(xiàn)的幾起案子汤纸,更是在濱河造成了極大的恐慌,老刑警劉巖芹血,帶你破解...
    沈念sama閱讀 216,591評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異楞慈,居然都是意外死亡幔烛,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,448評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門囊蓝,熙熙樓的掌柜王于貴愁眉苦臉地迎上來饿悬,“玉大人,你說我怎么就攤上這事聚霜〗铺瘢” “怎么了?”我有些...
    開封第一講書人閱讀 162,823評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵蝎宇,是天一觀的道長(zhǎng)弟劲。 經(jīng)常有香客問我,道長(zhǎng)姥芥,這世上最難降的妖魔是什么兔乞? 我笑而不...
    開封第一講書人閱讀 58,204評(píng)論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上庸追,老公的妹妹穿的比我還像新娘霍骄。我一直安慰自己,他們只是感情好淡溯,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,228評(píng)論 6 388
  • 文/花漫 我一把揭開白布读整。 她就那樣靜靜地躺著,像睡著了一般咱娶。 火紅的嫁衣襯著肌膚如雪米间。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,190評(píng)論 1 299
  • 那天豺总,我揣著相機(jī)與錄音车伞,去河邊找鬼。 笑死喻喳,一個(gè)胖子當(dāng)著我的面吹牛另玖,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播表伦,決...
    沈念sama閱讀 40,078評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼谦去,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了蹦哼?” 一聲冷哼從身側(cè)響起鳄哭,我...
    開封第一講書人閱讀 38,923評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎纲熏,沒想到半個(gè)月后妆丘,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,334評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡局劲,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,550評(píng)論 2 333
  • 正文 我和宋清朗相戀三年勺拣,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片鱼填。...
    茶點(diǎn)故事閱讀 39,727評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡药有,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出苹丸,到底是詐尸還是另有隱情愤惰,我是刑警寧澤,帶...
    沈念sama閱讀 35,428評(píng)論 5 343
  • 正文 年R本政府宣布赘理,位于F島的核電站宦言,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏感憾。R本人自食惡果不足惜蜡励,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,022評(píng)論 3 326
  • 文/蒙蒙 一令花、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧凉倚,春花似錦兼都、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,672評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至杏糙,卻和暖如春慎王,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背宏侍。 一陣腳步聲響...
    開封第一講書人閱讀 32,826評(píng)論 1 269
  • 我被黑心中介騙來泰國(guó)打工赖淤, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人谅河。 一個(gè)月前我還...
    沈念sama閱讀 47,734評(píng)論 2 368
  • 正文 我出身青樓咱旱,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親绷耍。 傳聞我的和親對(duì)象是個(gè)殘疾皇子吐限,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,619評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容