跳至主要內容
meshgrid 生成坐标网格

meshgrid 生成坐标网格

无论是 np.meshgrid 还是 torch.meshgrid 都是一样的,这里就用 torch.meshgrid 举例。

torch.meshgrid(*tensors, indexing='ij')

PyTorchPyTorch
reshape 与 view 的区别

reshape 与 view 的区别

要搞清楚 reshape 和 view 的区别首先需要了解 tensor 在 PyTorch 中是怎么存储的。

1 Tensor 的存储方式

Tensor 是头信息区(Tensor)和数据区(storage)分开存储的,Tensor 的形状 size、步长 stride、数据的索引等信息都存储在头信息区,而数据是存放在数据区。可能多个 Tensor 是共用一个 storage 的,类似于多个头节点指向同一片数据区。


PyTorchPyTorch
广播机制

广播机制

当两个 shape 不同的矩阵进行运算,当满足广播机制的条件时,就会把小的矩阵扩张成相同 shape 的矩阵,然后对两个矩阵相同的位置进行运算

广播机制的条件

  • 两个张量都至少有一个维度,且不是 0 维
  • 按从右往左看每一个张量的维度,两个维度需要满足以下任一条件:
    1. 这两个维度的大小相等
    2. 某个维度,一个张量有,一个张量没有
    3. 某个维度,两个张量都有,但有一个是 1
x = torch.empty(5, 3, 4, 1)
y = torch.empty(   3, 1, 1)

# 对于 x 和 y 从右往左看
# 第 4 维满足 a
# 第 3 维满足 c
# 第 2 维满足 a
# 第 1 维满足 b

PyTorchPyTorch
维度

维度

这里就简单讨论一下二维和三维,对于更高维的情况,比较难以想象


PyTorchPyTorch