PyTorch
张量
默认数据类型是torch.float32
维度
- 0:标量
- 1:向量
- 2:矩阵
- …
标量&向量&矩阵&张量
- 标量:0维空间中一个点
- 向量:1维空间中一条线
- 矩阵:2维空间中一个面
- 三维张量:三维空间中一个体
- 向量由标量组成,矩阵由向量组成,三维张量由矩阵组成
常用API
- 返回张量中元素的个数 - torch.numel
 
- 对角线为1的张量 - torch.eye
 
- 张量为一个数才能使用 - a.item()
 
- 张量转换为int(float、short、long)类型 - a.int()
- a.to(dtype=torch.int32)
 
- 交换张量两个维度 - torch.transpose(a, 0, 1)
 
- 矩阵乘法 - 二维矩阵乘法 torch.mm
- 多维矩阵乘法 torch.matmul
 
- 逐元素乘法 - t1 * t2 == torch.mul == torch.multiply
 
- 点积 - torch.dot
- 两个向量对应元素相乘后的和
- 只能用于一维,且元素个数一样
 
- 拼接 - torch.cat
- 可指定维度,默认维度dim=0
 
- 压缩 - torch.squeeze
 
- 最大元素值索引 - torch.argmax
 
- 判等 - torch.eq
 
- 求平均值 - torch.mean
 
计算图
- 张量复杂计算过程抽象为一张图 - 张量–>张量运算–>张量–>…
- 节点–>函数关系–>节点–>…
- 节点 - 叶子节点 - is_leaf
 
- 输出节点 - 最后计算得出的张量
 
- 中间节点 - 除了叶子节点和输出节点外的节点
- 连接和转换信息
 
 
- 叶子节点 
 
- 创建可微分张量,整个过程关系会默认被记录 - grad_fn
 
- 阻断跟踪(记录) - with torch.no_grad(): … - 语句块代码不进行计算图记录
 
- detach() - 创建张量和原始张量共享数据
 
 
- with torch.no_grad(): … 
自动微分计算
- 单标量
- 多标量
- 向量
- loss.backward()
- 梯度清零 - 梯度累加存储数据问题