这是我参与2022首次更文挑战的第4天,活动详情查看:2022首次更文挑战
这是一个关于 PyTorch 的分享,希望带来一个不同视角来看 PyTroch 来看深度学习。今天我们看重效率,希望付出努力快速看到成效,不然就难以坚持。不要想要沿着某一个方向,对于自己有所突破,就需要我们不断克服学习没有及时反馈的无奈,经常鼓励自己保持良好习惯,不放弃,持之以恒学习,日久相信一定会有所突破。
tensor
Tensor 可以一种语言,或者表达方式,我们将事物根据不同任务抽象为 tensor 来表达传递给计算机。tensor 是深度学习,神经网络的基础。所以在学习如何使用 PyTorch 来实现一些网络结构前,一定要熟练掌握 tensor,只有把基础打好才能更近一层。
rank
首先说一说 tensor 的 Rank,其实可以这样简单理解 Rank,Rank 大小表示我们需要几个索引来在 tensor 确定到一个数值。
a = [1,2,3,4,5]
a[2]#3
对于一个向量我们只需要一个索引便可以从数组获取想要的元素, rank 是 1。
b = torch.arange(9).reshape(3,3)
b
对于二维 tensor 我们需要 2 个索引才能够定位到我们想要的元素所以 rank 就是 2
tensor([[0, 1, 2], [3, 4, 5], [6, 7, 8]])
b[0][2]#tensor(2)
axis
如果我们的 tensor 是 2 维 tensor 也就是有 2 个轴,tensor 是可以看成一些带有一定结构的数据,axis 将数据排序分为几个维度,也就是我们先然后某一个 axis 排序数据后,再去按另一个 axis 来排序。每一个 axis 都有一个长度,例如 b 就是 axis=0 维度上是 3 而且在 axis=1 维度上长度也是 3。axis 长度也就是表示其在维度上能够容纳元素的个数。
shape 就可以了解到每一个 tesnor 的 axis 的长度(length)情况,有了 shape 我们就知道有几个 axis 每一个 axis 的长度又是多少。
rint(b[0])
print(b[1])
print(b[2])
在 axis=0 通过索引可获取到一个数组。
tensor([0, 1, 2])
tensor([3, 4, 5])
tensor([6, 7, 8])
继续在 axis=1 通过索引就可以定位到一个数值。
print(b[0][0])
print(b[1][1])
tensor(0)
tensor(4)
shape
通过 shape 可以看出每一个 axis 维度长度,可以直接调用 tensor 的 shape 来获取 tensor 的各个维度长度。
b.shape#torch.Size([3, 3])
我们调用 b 的 shape 属性返回 torch.Size([3,3]) 这是因为在 pytorch 中 shape 和 size 是一回事。通常 rank 等于 len(b.shape) 也就是我们数据需要几个维度索引才能表示。
len(b.shape) #2