深度学习与PyTorch笔记9

tensor基本运算

add/minus/multiply/divide

加torch.add减torch.sub乘torch.mul除torch.div

import torch
a=torch.rand(3,4)
b=torch.rand(4)
print(a)
print(b)
print(a+b)
print(torch.add(a,b))
print(torch.all(torch.eq(a-b,torch.sub(a,b))))#比较
print(torch.all(torch.eq(a*b,torch.mul(a,b))))
print(torch.all(torch.eq(a/b,torch.div(a,b))))

深度学习与PyTorch笔记9_第1张图片

matmul

矩阵相乘
1、torch.mm只用于2d,不推荐使用。
2、torch.matmul推荐使用。
3、@与torch.matmul相同
深度学习与PyTorch笔记9_第2张图片
神经网络里线性层相加,完成降维的过程。
将x=torch.rand(4,784)降为(4,512),使用w=torch.rand(ch-out,ch-in)这里为w=torch.rand(512,784),然后x乘w的转置。点积适用于2维,高维的使用transpose交换矩阵。
深度学习与PyTorch笔记9_第3张图片
大于2维的矩阵相乘。只取最后的两维进行相乘。前面维的size如果有1会自动使用broadcast机制。a=torch.rand(4,3,28,64)和b=torch.rand(4,64,32)无法相乘,b变成(1,4,64,32)之后,a的第一维为3,b的第一维为4,无法相乘。
深度学习与PyTorch笔记9_第4张图片

pow/sqrt/rsqrt

pow平方,sqrt开平方,rsqrt开平方后再求倒数。

import torch
a=torch.full([2,2],3)
aa=a**2
print(a.pow(2))
print(aa)
print(aa.pow(0.5))
print(aa.sqrt())
print(aa.rsqrt())
print(aa**(0.5))

深度学习与PyTorch笔记9_第5张图片

exp/log

exp自然指数e的幂,log自然对数默认以e为底,以2为底用log2以此类推。
深度学习与PyTorch笔记9_第6张图片

approximation

近似值
.floor()向下取整
.ceil()向上取整
.round()四舍五入
.trunc()取出整数部分
.frac()取出小数部分
深度学习与PyTorch笔记9_第7张图片

clamp

裁剪的功能,用的最多的时梯度裁剪gradient clipping。打印梯度的模w.grad.norm(2),小于10是合适的。
.clamp(min):限定最小值
.clamp(min,max):限定最大最小值
神经网络里对w梯度限幅:for w in [],clamp(w.grad,10)
深度学习与PyTorch笔记9_第8张图片

你可能感兴趣的:(深度学习与PyTorch笔记9)