pytorch torch類

本文介紹一些可能有用的torch類中的方法畜号。

torch.cat(inputs, dimension=0)

對input進(jìn)行拼接切距,參數(shù)表示在那個(gè)維度進(jìn)行拼接帐姻。

x = torch.randn(2, 3)
print(x)
print(torch.cat((x, x, x), 0))

torch.gather(input, dim, index, out=None)

沿給定軸dim酒觅,將輸入索引張量index指定位置的值進(jìn)行賦值忘伞。
賦值公式為如下:

out[i][j][k] = tensor[index[i][j][k]][j][k]  # dim=0
out[i][j][k] = tensor[i][index[i][j][k]][k]  # dim=1
out[i][j][k] = tensor[i][j][index[i][j][k]]  # dim=3

也就是修改輸入的dim維的數(shù)值排列薄翅。
示例:

t = torch.Tensor([[1, 2], [3, 4]])
# gather是對tensor進(jìn)行重新排序
print(torch.gather(t, 1, torch.LongTensor([[0, 0], [0, 1]])))

torch.masked_select(input, mask, out=None)

根據(jù)掩碼張量mask中的二元值,取輸入張量中的指定項(xiàng)( mask為一個(gè) ByteTensor)氓奈,將取值返回到一個(gè)新的1D張量翘魄。
也就是在原本的input中選擇部分?jǐn)?shù)值。

torch.nonzero(input, out=None)

返回一個(gè)包含輸入input中非零元素索引的張量探颈。輸出張量中的每行包含輸入中非零元素的索引熟丸。

t = torch.Tensor([[0, 2], [3, 2]])
print(torch.nonzero(t))
# tensor([[0, 1],
#         [1, 0],
#         [1, 1]])

torch.squeeze(input, dim=None, out=None)

將輸入張量形狀中的1 去除并返回训措。 如果輸入是形如(A×1×B×1×C×1×D)伪节,那么輸出形狀就為: (A×B×C×D)。

  • dim (int, optional) – 如果給定绩鸣,則input只會(huì)在給定維度擠壓

示例:

x = torch.zeros(2,1,2,1,2)
print(x.size())
# torch.Size([2, 1, 2, 1, 2])
y = torch.squeeze(x)
print(y.size())
# torch.Size([2, 2, 2])
y = torch.squeeze(x, 0)
print(y.size())
# torch.Size([2, 1, 2, 1, 2])
y = torch.squeeze(x, 1)
print(y.size())
# torch.Size([2, 2, 1, 2])

torch.stack(sequence, dim=0)

沿著新的維度對輸入張量進(jìn)行排序怀大。最外面的維度是0.

示例:

a = torch.Tensor([[1,2,3],[4,5,6],[7,8,9]])
b = a * 10
c = b * 10
print(a)
print(torch.stack([a,b,c],1))
# tensor([[[  1.,   2.,   3.],
#          [ 10.,  20.,  30.],
#          [100., 200., 300.]],
# 
#         [[  4.,   5.,   6.],
#          [ 40.,  50.,  60.],
#          [400., 500., 600.]],
# 
#         [[  7.,   8.,   9.],
#          [ 70.,  80.,  90.],
#          [700., 800., 900.]]])

torch.t(input, out=None)

對二維向量進(jìn)行轉(zhuǎn)置。

torch.unsqueeze(input, dim, out=None)

返回一個(gè)新的張量呀闻,對輸入的制定位置插入維度 1化借。如果dim為負(fù),則將會(huì)被轉(zhuǎn)化dim+input.dim()+1捡多。

x = torch.Tensor([1, 2, 3, 4])
print(torch.unsqueeze(x, 1))
# tensor([[1.],
#         [2.],
#         [3.],
#         [4.]])

隨機(jī)抽樣

torch.manual_seed(seed)

設(shè)定生成隨機(jī)數(shù)的種子蓖康。

torch.initial_seed()

返回生成隨機(jī)數(shù)的原始種子值。

torch.normal(means, std, out=None)

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

  • means (Tensor) – 均值
  • std (Tensor) – 標(biāo)準(zhǔn)差
  • out (Tensor) – 可選的輸出張量

數(shù)學(xué)操作

torch.abs(input, out=None)

計(jì)算輸入張量的每個(gè)元素絕對值。

torch.acos(input, out=None)

返回一個(gè)新張量科贬,包含輸入張量每個(gè)元素的反余弦泳梆。

torch.add(input, value, out=None)

對輸入張量input逐元素加上標(biāo)量值value,并返回結(jié)果到一個(gè)新的張量out榜掌,即 out=tensor+value优妙。

torch.add(input, value=1, other, out=None)

other 張量的每個(gè)元素乘以一個(gè)標(biāo)量值value,并加到iput 張量上憎账。返回結(jié)果到輸出張量out套硼。即,out=input+(other?value)胞皱。

torch.ceil(input, out=None)

對輸入input張量每個(gè)元素向上取整邪意。

torch.floor(input, out=None)

向下取整看政。

torch.clamp(input, min, max, out=None)

將輸入input張量每個(gè)元素的夾緊到區(qū)間 [min,max],并返回結(jié)果到一個(gè)新張量抄罕。


操作公式

torch.div(input, value, out=None)

將input逐元素除以標(biāo)量值value允蚣,并返回結(jié)果到輸出張量out。

torch.lerp(start, end, weight, out=None)

對兩個(gè)張量以start呆贿,end做線性插值嚷兔, 將結(jié)果返回到輸出張量。


差值公式

torch.log(input, out=None)

計(jì)算input 的自然對數(shù)做入。

torch.mul(input, value, out=None)

用標(biāo)量值value乘以輸入input的每個(gè)元素冒晰,并返回一個(gè)新的結(jié)果張量。

torch.reciprocal(input, out=None)

返回一個(gè)新張量竟块,包含輸入input張量每個(gè)元素的倒數(shù)壶运,即 1.0/x。

torch.remainder(input, divisor, out=None)

返回一個(gè)新張量浪秘,包含輸入input張量每個(gè)元素的除法余數(shù)蒋情。

torch.round(input, out=None)

四舍五入。

torch.rsqrt(input, out=None)

計(jì)算每個(gè)元素的平方根倒數(shù)耸携。

torch.sigmoid(input, out=None)

輸入input張量每個(gè)元素的sigmoid值棵癣。

累計(jì)操作

torch.cumprod(input, dim, out=None)

返回輸入沿指定維度的累積積。例如夺衍,如果輸入是一個(gè)N 元向量狈谊,則結(jié)果也是一個(gè)N 元向量,第i 個(gè)輸出元素值為yi=x1?x2?x3?...?xi沟沙。

torch.cumsum(input, dim, out=None)

返回輸入沿指定維度的累積和河劝。第i 個(gè)輸出元素值為 yi=x1+x2+x3+...+xi。

torch.mean(input)

返回輸入張量所有元素的均值矛紫。

torch.prod(input, dim, out=None)

返回輸入張量給定維度上每行的積赎瞎。
示例:

a = torch.Tensor([[1,2,3],[4,5,6],[7,8,9]])
print(torch.prod(a,0))
# tensor([  6., 120., 504.])

torch.std(input) → float

返回輸入張量input 所有元素的標(biāo)準(zhǔn)差。

torch.sum(input, dim, out=None) → Tensor

返回輸入張量給定維度上每行的和含衔。 輸出形狀與輸入相同煎娇,除了給定維度上為1。

torch.var(input) → float

返回輸入張量所有元素的方差贪染。

比較操作

torch.eq(input, other, out=None) → Tensor

對input張量和第二個(gè)參數(shù)進(jìn)行比較缓呛。如果相同則在對應(yīng)位置返回1.第二個(gè)參數(shù)可以是張量或數(shù)。
示例:

print(torch.eq(torch.Tensor([[1, 2], [3, 4]]), torch.Tensor([[1, 1], [4, 4]])))
# tensor([[1, 0],
#         [0, 1]], dtype=torch.uint8)
print(torch.eq(torch.Tensor([[1, 2], [3, 4]]), 1))
# tensor([[1, 0],
#         [0, 0]], dtype=torch.uint8)

torch.equal(tensor1, tensor2) → bool

如果兩個(gè)張量有相同的形狀和元素值杭隙,則返回True 哟绊,否則 False。
即比較張量形狀也比較元素值痰憎。

torch.ge(input, other, out=None) → Tensor

逐元素比較input和other的大小票髓,即是否 input>=other攀涵。

torch.gt(input, other, out=None) → Tensor

逐元素比較input和other的大小 , 即是否input>other洽沟。

torch.le(input, other, out=None) → Tensor

逐元素比較input和other 以故, 即是否input<=other 。

torch.lt(input, other, out=None) → Tensor

逐元素比較input和other 裆操, 即是否 input<other怒详。

torch.max()

返回輸入張量所有元素的最大值。

torch.max(input, dim, max=None, max_indices=None) -> (Tensor, LongTensor)

返回輸入張量給定維度上每行的最大值踪区,并同時(shí)返回每個(gè)最大值的位置索引昆烁。

torch.min(input) → float

返回輸入張量所有元素的最小值。

torch.min(input, other, out=None) → Tensor

input中逐元素與other相應(yīng)位置的元素對比缎岗,返回最小值到輸出張量静尼。即,outi=min(tensori,otheri)传泊。

torch.sort(input, dim=None, descending=False, out=None) -> (Tensor, LongTensor)

對輸入張量input沿著指定維按升序排序鼠渺。如果不給定dim,則默認(rèn)為輸入的最后一維或渤。如果指定參數(shù)descending為True系冗,則按降序排序奕扣。
返回元組 (sorted_tensor, sorted_indices) 薪鹦, sorted_indices 為原始輸入中的下標(biāo)。

torch.topk(input, k, dim=None, largest=True, sorted=True, out=None) -> (Tensor, LongTensor)

沿給定dim維度返回輸入張量input中 k 個(gè)最大值惯豆。 如果不指定dim池磁,則默認(rèn)為input的最后一維。 如果為largest為 False 楷兽,則返回最小的 k 個(gè)值地熄。
返回一個(gè)元組 (values,indices)若厚,其中indices是原始輸入張量input中測元素下標(biāo)泛源。 如果設(shè)定布爾值sorted 為True硝拧,將會(huì)確保返回的 k 個(gè)值被排序距误。

其他操作

torch.cross(input, other, dim=-1, out=None) → Tensor

返回沿著維度dim上慷荔,兩個(gè)張量input和other的向量積(叉積)币砂。 input和other 必須有相同的形狀芒率,且指定的dim維上size必須為3惶看。

矩陣運(yùn)算

torch.addbmm(beta=1, mat, alpha=1, batch1, batch2, out=None) → Tensor

對兩個(gè)批batch1和batch2內(nèi)存儲(chǔ)的矩陣進(jìn)行批矩陣乘操作筛圆。

torch.addmm(beta=1, mat, alpha=1, mat1, mat2, out=None) → Tensor

對矩陣mat1和mat2進(jìn)行矩陣乘操作裂明。
out=(beta?M)+(alpha?mat1@mat2)

torch.bmm(batch1, batch2, out=None) → Tensor

對存儲(chǔ)在兩個(gè)批batch1和batch2內(nèi)的矩陣進(jìn)行批矩陣乘操作。batch1和 batch2都為包含相同數(shù)量矩陣的3維張量太援。 如果batch1是形為b×n×m的張量闽晦,batch1是形為b×m×p的張量扳碍,則out和mat的形狀都是n×p,即 res=(beta?M)+(alpha?sum(batch1i@batch2i,i=0,b))

torch.dot(tensor1, tensor2) → float

計(jì)算兩個(gè)張量的點(diǎn)乘(內(nèi)乘),兩個(gè)張量都為1-D 向量.

torch.mm(mat1, mat2, out=None) → Tensor

對矩陣mat1和mat2進(jìn)行相乘仙蛉。 如果mat1 是一個(gè)n×m 張量笋敞,mat2 是一個(gè) m×p 張量,將會(huì)輸出一個(gè) n×p 張量out荠瘪。

torch.mv(mat, vec, out=None) → Tensor

對矩陣mat和向量vec進(jìn)行相乘液样。 如果mat 是一個(gè)n×m張量,vec 是一個(gè)m元 1維張量巧还,將會(huì)輸出一個(gè)n 元 1維張量鞭莽。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市麸祷,隨后出現(xiàn)的幾起案子澎怒,更是在濱河造成了極大的恐慌,老刑警劉巖阶牍,帶你破解...
    沈念sama閱讀 210,914評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件喷面,死亡現(xiàn)場離奇詭異,居然都是意外死亡走孽,警方通過查閱死者的電腦和手機(jī)惧辈,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,935評論 2 383
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來磕瓷,“玉大人盒齿,你說我怎么就攤上這事±常” “怎么了边翁?”我有些...
    開封第一講書人閱讀 156,531評論 0 345
  • 文/不壞的土叔 我叫張陵,是天一觀的道長硕盹。 經(jīng)常有香客問我符匾,道長,這世上最難降的妖魔是什么瘩例? 我笑而不...
    開封第一講書人閱讀 56,309評論 1 282
  • 正文 為了忘掉前任啊胶,我火速辦了婚禮,結(jié)果婚禮上垛贤,老公的妹妹穿的比我還像新娘焰坪。我一直安慰自己,他們只是感情好南吮,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,381評論 5 384
  • 文/花漫 我一把揭開白布琳彩。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪露乏。 梳的紋絲不亂的頭發(fā)上碧浊,一...
    開封第一講書人閱讀 49,730評論 1 289
  • 那天,我揣著相機(jī)與錄音瘟仿,去河邊找鬼箱锐。 笑死,一個(gè)胖子當(dāng)著我的面吹牛劳较,可吹牛的內(nèi)容都是我干的驹止。 我是一名探鬼主播,決...
    沈念sama閱讀 38,882評論 3 404
  • 文/蒼蘭香墨 我猛地睜開眼观蜗,長吁一口氣:“原來是場噩夢啊……” “哼臊恋!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起墓捻,我...
    開封第一講書人閱讀 37,643評論 0 266
  • 序言:老撾萬榮一對情侶失蹤抖仅,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后砖第,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體撤卢,經(jīng)...
    沈念sama閱讀 44,095評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,448評論 2 325
  • 正文 我和宋清朗相戀三年梧兼,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了放吩。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,566評論 1 339
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡羽杰,死狀恐怖渡紫,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情忽洛,我是刑警寧澤腻惠,帶...
    沈念sama閱讀 34,253評論 4 328
  • 正文 年R本政府宣布,位于F島的核電站欲虚,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏悔雹。R本人自食惡果不足惜复哆,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,829評論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望腌零。 院中可真熱鬧梯找,春花似錦、人聲如沸益涧。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,715評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至久免,卻和暖如春浅辙,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背阎姥。 一陣腳步聲響...
    開封第一講書人閱讀 31,945評論 1 264
  • 我被黑心中介騙來泰國打工记舆, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人呼巴。 一個(gè)月前我還...
    沈念sama閱讀 46,248評論 2 360
  • 正文 我出身青樓泽腮,卻偏偏與公主長得像,于是被迫代替她去往敵國和親衣赶。 傳聞我的和親對象是個(gè)殘疾皇子诊赊,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,440評論 2 348

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