- Broadcasting
自动扩展维度
▪Feature maps: [4, 32, 14, 14]
▪ Bias: [32, 1, 1] => [1, 32, 1, 1] => [4, 32, 14, 14]
▪ [4, 32, 14, 14]
▪ [1, 32, 1, 1] => [4, 32, 14, 14]
- 拼接与拆分
a.shape=[5,32,8]
b.shape=[5,32,8]
torch.cat([a,b],dim=0).shape=[10,32,8]
torch.stack([a,b],dim=0).shape=[2,5,32,8]#创建新维度
Split: by len
c.shape=[2,32,8]
aa,bb=c.split([1,1],dim)/c.splie(1,dim=0)#根据长度来拆分,长度不同用列表,长度相同用标量
Chunk: by num
aa,bb=c.chunk (2,dim=0),#拆分成两个
- 基本运算
矩阵相乘:matmul=@
a.pow(2)=a**2
a.sqrt()=a**0.5
torch.exp(a)#e^a
torch.log(a)#以e为低loge(a)
Approximation函数:
▪ .floor() .ceil()#向上取整,向下取整
▪ .round()#四舍五入
▪ .trunc() .frac()#取整数,取小数
- 梯度剪裁
Grad.clamp(10)#梯度<10,都写成10
Grad.clump(0,10)#梯度>10,都写成10
- 求范数,特殊函数
Norm(1,dim=0)#在那个维度求范数,那个维度就会消失
argmin, argmax:#注意没有维度时默认打平维度,若有维度,在该维度上返回最小、最大值索引,该维度消失。
Max()里加上维度***第一返回这个维度上的最大值同时返回最大值的索引,
kthvalue(),#在第一维度上第八小的数,原始数据维度(4,10)
where(cond,x,y)#如果条件成立在该位置上输出x,否则输出Y
gather(input,dim,index)#根据索引在input中查找,获得相关标签,在某些情况下,input的标签比相关index标签更有说服力