有過載運算子 和 函式兩種方法進行張量的運算
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生成張量 ...