iT邦幫忙

2022 iThome 鐵人賽

DAY 5
0

Reference

Machine-Learn-Collection basics


在處理Torch 的時候會需要很多數學的計算,例如加減乘除等計算元,因此整理一下記錄在下面

值得注意的在的時候要特別注意是 矩陣相乘 還是 value相乘 ,另外還有一個重點就是在相乘時候的 dtype 是否一樣


__x__ = torch.tensor([1, 2, 3])
__y__ = torch.tensor([9, 8, 7])

# -- 加 --
result = __x__ + __y__
result = torch.add(x, __y__)

# -- 減 --
result = __x__ - __y__


# -- 乘 --
print(__x__ * __y__) # value 相乘,不是Matrix相乘


# -- 除 --
result = torch.true_divide(__x__ , __y__)  # 這要同樣的shape , [ 1/9 , 2/8 , 3/7]
print(result)

# -- 直接改變tensor變數 --
result = torch.zeros(3)
print(result)
result.add_(__x__)  # t = t + __x__
print(result)
result += __x__  # 同上
print(result)



# -- 次方 --
result = __x__.pow(2)  # __x__的二次方, [1,4,9]
result = __x__ ** 2  # 同上
print(result)

# -- 比大小 --
result = __x__ > 1  # [False, True, True]


# -- 矩陣相乘 --
__z__ = torch.rand((3, 1))
result = __z__.mm(__x__.reshape(1,3).float()) 
# 輸出的大小為(2,5)*(5,3) = (2,3)
# 注意 dtype 跟 shape, 
# 跟 torch.mm(__x__, __z__)一樣結果
print(result)

# -- 矩陣次方 --
print(result.matrix_power(3))  # 等同於matrix_exp(mm)

# -- Dot product --
result = torch.dot(__x__ , __y__)  # Dot product, result = 1*9 + 2*8 + 3*7
print(result)



另外還有另外一些 torch 的函數式可以使用,例如:
x.max(dim=0)x.min(dim=0) 在做資料探索的時候也常常被使用

另外可以稍微記一下的就是 torch.clamp ,因為過濾 離群值 Outlier 其實也是很好用的東西


__x__ = torch.rand((5, 5))
print(__x__)

values, indices = torch.max( __x__ , dim=0) 
# values, indices = 等同 __x__.max(dim=0)
# torch.argmax(__x__, dim=0) 也一樣找 indices
print(f"Max : values = {values} , indices ={indices} ", ) 
values, indices = torch.min(__x__, dim=0)
# values, indices = 等同 __x__.min(dim=0)
# torch.argmin(__x__, dim=0) 也一樣找 indices
print(f"Min : values = {values} , indices ={indices} ", ) 

print("Sum of dim-0 : " ,torch.sum( __x__, dim=0 ))

print("Abs :"  ,torch.abs(__x__))

print("means : ", torch.mean(__x__.float(), dim=0))  # __x__需要為float型態

result, indices = torch.sort(__x__, dim=0, descending=False)
print(result)

print("="* 5)

print(torch.clamp(result, min=0.3, max=0.6))
# 如果<min then min else 不改變
# 如果>max then max else 不改變
# torch.clamp(result, min=0) -> ReLu Function

__x___bool = torch.tensor([1, 0, 1], dtype=torch.bool)
print("bool tensor any : ", torch.any(__x___bool))
print("bool tensor all : ", torch.all(__x___bool))

今天就補充到這邊,這部分都是從 Reference 上面整理出來的資料,然後一樣要丟在 Dash 上面,如果要直接執行的話也是可以,但還是希望自己能夠建立自己的 Docset


Reference

Machine-Learn-Collection basics


上一篇
【Day4】Pytorch基本用法-1
下一篇
【Day6】Pytorch基本用法-3
系列文
小AI大麻煩30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言