PyTorch进阶

  • 五、进阶操作
  • 5.1 合并与分割
  • `cat`-合并
  • `stack`-创建新维度
  • `split`-by len
  • `chunk`-by num
  • 5.2 数学运算
  • `basic`- + - * /
  • `matmul`-矩阵相乘
  • `power`-幂次运算
  • `log exp`
  • `approximation`-求近似
  • `clamp`-裁剪
  • 5.3 属性统计
  • `norm`-范数
  • `min;max;mean;prod`-最小;最大;均值;累乘
  • `dim;keepdim`
  • `topk`-前k个
  • `kthvalue`-第k小的值
  • `compare`
  • 5.4 高阶操作
  • `where`
  • `gather`
  • 六、随机梯度下降
  • 6.1 梯度
  • 6.2 常见函数的梯度
  • 6.3 激活函数及其梯度
  • sigmoid
  • tanh
  • ReLU
  • 6.4 loss及其梯度
  • mean squared error:均方差
  • 梯度:
  • loss.backward
  • softmax
  • 6.5 感知机
  • 6.6 反向传播算法
  • 6.7 2D函数优化实例


五、进阶操作

5.1 合并与分割

cat-合并

pytorch一小时精通_矩阵相乘

stack-创建新维度

pytorch一小时精通_代码实现_02


注:原shape必须一样

split-by len

参数是长度

pytorch一小时精通_pytorch一小时精通_03

chunk-by num

参数是数量

pytorch一小时精通_感知机_04

5.2 数学运算

basic- + - * /

pytorch一小时精通_代码实现_05

matmul-矩阵相乘

torch.mm:只适用2d矩阵,不推荐适用

pytorch一小时精通_pytorch一小时精通_06


2维以上的矩阵相乘时

pytorch一小时精通_代码实现_07

power-幂次运算

pytorch一小时精通_感知机_08

log exp

pytorch一小时精通_矩阵相乘_09

approximation-求近似

pytorch一小时精通_pytorch一小时精通_10

clamp-裁剪

pytorch一小时精通_矩阵相乘_11

5.3 属性统计

norm-范数

pytorch一小时精通_代码实现_12

min;max;mean;prod-最小;最大;均值;累乘

pytorch一小时精通_矩阵相乘_13


pytorch一小时精通_pytorch一小时精通_14


注:参数表示返回某一维度上的最大或最小值

dim;keepdim

pytorch一小时精通_pytorch一小时精通_15

topk-前k个

pytorch一小时精通_代码实现_16

kthvalue-第k小的值

pytorch一小时精通_pytorch一小时精通_17

compare

pytorch一小时精通_代码实现_18

5.4 高阶操作

where

pytorch一小时精通_pytorch一小时精通_19

gather

torch.gather(input, dim, index, out=None)->Tensor

pytorch一小时精通_感知机_20

六、随机梯度下降

6.1 梯度

导数derivate:标量
偏微分partial derivate:多元;标量
梯度gradient:偏微分的向量
梯度下降法可参考机器学习-吴恩达(第一周) 鞍点:在某一点取得一个维度的局部极大值而在另一维度取得局部极小值

影响优化器的因素:
1.局部极小值
2.鞍点
3.初始状态
4.学习率
5.动量-逃离局部最小值

6.2 常见函数的梯度

导数表:

pytorch一小时精通_pytorch一小时精通_21

6.3 激活函数及其梯度

激活函数可参考李飞飞计算机视觉-自用笔记(第二周)

sigmoid

pytorch一小时精通_代码实现_22

tanh

tanh(x) = 2sigmoid(2x) - 1

pytorch一小时精通_矩阵相乘_23

ReLU

pytorch一小时精通_pytorch一小时精通_24

6.4 loss及其梯度

mean squared error:均方差

pytorch一小时精通_pytorch一小时精通_25

梯度:

pytorch一小时精通_pytorch一小时精通_26


求梯度:

pytorch一小时精通_感知机_27

loss.backward

pytorch一小时精通_感知机_28

softmax

pytorch一小时精通_pytorch一小时精通_29


注:除了可以得到概率结果这个属性外,还起到空间放缩的作用

导数:

pytorch一小时精通_矩阵相乘_30


代码实现:

pytorch一小时精通_pytorch一小时精通_31

6.5 感知机

对于xli:l表示层编号,i表示节点编号

对于wlij:l表示层编号,i表示上一层节点编号,j表示本层节点编号

求导:

pytorch一小时精通_感知机_32


单层感知机梯度推导代码实现:

pytorch一小时精通_代码实现_33


多层感知机

pytorch一小时精通_矩阵相乘_34


代码实现:

pytorch一小时精通_感知机_35

6.6 反向传播算法

可参考机器学习-吴恩达(第三周)李飞飞计算机视觉-自用笔记(第二周)

6.7 2D函数优化实例

f(x, y) = (x2 + y -11)2 + (x + y2 - 7)2

此函数的图像及极小值点:

pytorch一小时精通_pytorch一小时精通_36


pytorch一小时精通_pytorch一小时精通_37


pytorch一小时精通_pytorch一小时精通_38