Way2AI · PyTorch
TL;DR
Way2AI系列,确保出发去"改变世界"之前,我们已经打下了一个坚实的基础。
本文简单介绍了PyTorch这个机器学习框架的必备知识。
Set up
首先,我们将导入NumPy和PyTorch库,并设置随机种子以实现可重复性。
请注意,PyTorch 也需要一个种子,因为我们将生成随机张量。
1 | import numpy as np |
Basic
下面一些 PyTorch 的基础知识,例如如何创建张量以及将常见的数据结构(列表、数组等)转换为张量。
1 | # Creating a random tensor |
Operations
下面探索一些张量的基本操作。
1 | # Addition |
Indexing
可以使用索引从张量中提取指定的值。
1 | x = torch.randn(3, 4) |
Slicing
1 | # Select with dimensional indices |
Joining
我们还可以使用concatenate和stack来合并张量。
1 | x = torch.randn(2, 3) |
Gradients 梯度
我们可以使用梯度追踪(gradient bookkeeping) 来计算张量相对于其组成部分的梯度(变化率)。
梯度是机器学习和深度学习中最重要的概念,没有之一。后续会进一步介绍,这里先简单示例PyTorch如何计算某个函数在某点处的梯度:
$$
y = 3x + 2
$$
$$
z = \sum(y/N)
$$
$$
\frac{\partial(z)}{\partial(x)} = \frac{\partial(z)}{\partial(y)} \cdot \frac{\partial(y)}{\partial(x)} = \frac{1}{N} \cdot 3 = \frac{1}{3 \cdot 4} \cdot 3 = 0.25
$$
1 | # Tensors with gradient bookkeeping |
CUDA
我们可以使用CUDA(Nvidia的并行计算平台和API)将张量加载到GPU上进行并行计算。
1 | import torch |
Citation
1 | @article{madewithml, |
Ending
到这里,便拥有了Way2AI路上需要的PyTorch的必备知识。我们可以发现,PyTorch的基础操作,与NumPy其实没什么太大的差别。
事实上NumPy和PyTorch可以相互转换,PyTorch提供了与NumPy兼容的接口,可以方便地将数据从NumPy数组转换为PyTorch张量,并在它们之间进行转换。这使得在使用PyTorch进行深度学习时,可以利用NumPy的强大功能进行数据预处理和后处理。
一般地,当我们需要进行常规的数值计算、数组操作和数学函数应用时,可以使用NumPy。当我们需要构建、训练和部署神经网络模型时,可以使用PyTorch。
PyTorch官网 上有关于PyTorch的全部知识。
- Blog Link: https://neo1989.net/Way2AI/Way2AI-PyTorch/
- Copyright Declaration: 转载请声明出处。