pytorch学习01
文章目录
1.pytorch便捷之处
1.快速。
2.自动求导。
3.常用网络层。
2.基本数据类型
和arange不同,它包含末尾值。
3.索引与切片
4.维度变换
5.Broadcast自动扩展
6.合并和分割
7.数学运算
7.1 add/sub/mul/div加减乘除
7.2 matmul矩阵相乘
这里: 上面的相乘是针对2D的tensor,那么对于3D和4D的tensor如何mat呢? 神经网络中的图片一般都是2D的,NLP中的文本一般都是3D和4D的。如何定义这些矩阵相乘呢?下面的例子展示。
7.3 pow矩阵的次方以及sqrt/rsqrt/exp/log
这里: pow(tensor, 次方)第一个参数为Tensor,第二个参数表示次方,比如2次方,三次方,四次方等等。
7.5 round矩阵近似运算
7.6 clamp(裁剪)用的多
这里: 主要用在梯度裁剪里面,梯度离散(不需要从网络层面解决,因为梯度非常小,接近0)和梯度爆炸(梯度非常大,100已经算是大的了)。因此在网络训练不稳定的时候,可以打印一下梯度的模看看,w.grad.norm(2)表示梯度的二范数(一般100,1000已经算是大的了,一般10以内算是合适的)。
a.clamp(min):表示tensor a中小于10的都赋值为10,表示最小值为10;
8.统计属性
8.1 norm范数,prod张量元素累乘(阶乘)
8.2 mean/sum/max/min/argmin/argmax
这里: 从结果中我们可以发现,min/max/argmin/argmax这些函数首先把Tensor打平成一维的Tensor,因此上面的argmin/argmax才会得到那样的结果。
8.3 kthvalue()和topk()
这里: topk(3, dim=1)(最大的3个)返回结果如下图所示,如果把largest设置为False就是默认最小的几个。
这里: kthvalue(k,dim=1)表示第k小的(默认表示小的)。下面图中的一共10中可能,第8小就是表示第3大。
8.4 比较运算符号>,>=,<,<=,!=,==