pytorch 基本運算

2021-10-01 23:14:54 字數 3238 閱讀 9570

有過載運算子 和 函式兩種方法進行張量的運算

import torch

import numpy as np

a = torch.rand(2,

3)b = torch.rand(3)

# 這裡b 使用了 broatcasting 自動進行了維度擴充套件

print

("運算子 + 與 add() 方法運算結果一致:{} "

.format

(torch.

all(torch.eq(torch.add(a,b)

,a+b)))

)print

("運算子 - 與 sub() 方法運算結果一致:{} "

.format

(torch.

all(torch.eq(torch.sub(a,b)

,a-b)))

)print

("運算子 * 與 mul() 方法運算結果一致:{} "

.format

(torch.

all(torch.eq(torch.mul(a,b)

,a*b)))

)print

("運算子 / 與 div() 方法運算結果一致:{} "

.format

(torch.

all(torch.eq(torch.div(a,b)

,a/b)))

)

運算子 + 與 add(

) 方法運算結果一致:true

運算子 - 與 sub(

) 方法運算結果一致:true

運算子 * 與 mul(

) 方法運算結果一致:true

運算子 / 與 div(

) 方法運算結果一致:true

矩陣相乘 torch.matmul(只取最後兩維度進行運算), @(是matmul方法的過載) 兩種方法

import torch

import numpy as np

a = torch.rand(2,

3)b = torch.rand(3,

4)print

("運算子 @ 與 matmul 方法運算結果一致:{} "

.format

(torch.

all(torch.eq(torch.matmul(a,b)

,a@b)))

)print

("運算後張量的 shape: {}"

.format

((a@b)

.shape)

)

運算子 @ 與 matmul 方法運算結果一致:true 

運算後張量的 shape: torch.size([2

,4])

pow / ** 冪運算

import torch

import numpy as np

a = torch.full([2

,2],

2)print

("a 的二次方: {}"

.format

(a.pow(2

)))print

("a 的三次方: {}"

.format

(a**3)

)#平方根

print

("a 的平方根: {}"

.format

(torch.sqrt(a.

pow(2)

)))

a 的二次方: tensor([[

4.,4

.],[

4.,4

.]])

a 的三次方: tensor([[

8.,8

.],[

8.,8

.]])

a 的平方根: tensor([[

2.,2

.],[

2.,2

.]])

exp / log

import torch

import numpy as np

a = torch.exp(torch.ones(2,

2))print

("e 為: {}"

.format

(a))

print

("e 取log : {}"

.format

(torch.log(a)

))

e 為: tensor([[

2.7183

,2.7183],

[2.7183

,2.7183]]

)e 取log : tensor([[

1.,1

.],[

1.,1

.]])

clamp 範圍限幅 (min)將低於min的值裁剪為min , (min,max) 將資料低於min 裁剪為min,高於max裁剪為max

import torch

import numpy as np

a = torch.randn(2,

3)print

("a 為: {}"

.format

(a))

print

("a 裁剪後為 : {}"

.format

(a.clamp(

0.1)))

print

("a 裁剪後為 : {}"

.format

(a.clamp(

0.1,

0.3)

))

a 為: tensor([[

-0.4780,-

0.2077

,0.3702],

[-1.5801,-

0.0170

,0.6737]]

)a 裁剪後為 : tensor([[

0.1000

,0.1000

,0.3702],

[0.1000

,0.1000

,0.6737]]

)a 裁剪後為 : tensor([[

0.1000

,0.1000

,0.3000],

[0.1000

,0.1000

,0.3000]]

)

pytorch近似運算

floor 往下取整數 ceil 網上取整數 round 四捨五入 0.5向上取整,0.5向下取整 trunc 裁剪,只取整數部分 frac 只取小數部分 如何檢視梯度的模 w.grad.norm 2 梯度的二範數,可以用於觀測梯度是否 一般都比較小,10左右,100都算比較大了 梯度裁剪時,會用到...

pytorch基本流程

tensor格式轉換 主要是講numpy格式轉換為tensor格式 x train,y train,x valid,y valid map torch.tensor,x train,y train,x valid,y valid torch.nn.finction模組與torch.nn.module...

pytorch基本操作

coding utf 8 import torch import numpy as np 根據torch.tensor生成張量 print torch.tensor 1 print torch.tensor 2,3 print torch.tensor 2,3 根據torch.tensor生成張量 ...