NumPy与PyTorch对照备忘单:快速查找和比较指南

需积分: 10 0 下载量 52 浏览量 更新于2024-11-25 收藏 2KB ZIP 举报
资源摘要信息: "NumPy到PyTorch备忘单" NumPy与PyTorch是两种在科学计算和深度学习领域广泛使用的库。尽管NumPy是用于通用科学计算的,而PyTorch主要用于深度学习应用,但两者都提供了强大的数组操作功能。这份备忘单将会介绍NumPy与PyTorch在数组创建、数学运算等基础功能上的相似之处和差异。 数组创建: 1. 创建空数组: - NumPy: `np.empty((2, 2))` 创建一个2x2的空数组。 - PyTorch: `torch.empty(5, 3)` 创建一个5x3的空数组。 2. 创建随机数组: - NumPy: `np.random.rand(3,2)` 创建一个3x2的具有随机值的数组。 - PyTorch: `torch.rand(5, 3)` 创建一个5x3的具有随机值的数组。 3. 创建零数组: - NumPy: `np.zeros((5,3))` 创建一个5x3的零数组。 - PyTorch: `torch.zeros(5, 3)` 同样创建一个5x3的零数组。 4. 从列表创建数组: - NumPy: `np.array([5.3, 3])` 创建一个包含列表元素的数组。 - PyTorch: `torch.tensor([5.3, 3])` 创建一个包含列表元素的张量。 5. 创建与给定数组形状相同的随机数组: - NumPy: `np.random.randn(*a.shape)` 创建一个与数组a形状相同的具有随机值的数组。 - PyTorch: `torch.randn_like(a)` 创建一个与张量a形状相同的具有随机值的张量。 6. 创建一个序列数组: - NumPy: `np.arange(16)` 创建一个从0开始至15(含)的序列数组。 - PyTorch: `torch.range(0,15)` 在旧版PyTorch中创建了一个从0开始至15(含)的序列张量,但在PyTorch 1.10版本后,`torch.range`已经被弃用,推荐使用`torch.arange`替代。 数学运算: 1. 矩阵加法、减法和标量运算在NumPy和PyTorch中语法类似。 - 例如,两个数组或张量相加的语法在两者中都是 `a + b`。 2. 矩阵乘法在NumPy中使用 `np.dot` 或者简单的 `a * b`(对于元素间乘法),而在PyTorch中使用 `torch.matmul(a, b)` 或者 `a @ b`。 3. 矩阵除法或元素倒数,在NumPy中使用 `np.divide(a, b)` 或者 `1/a`,在PyTorch中使用 `torch.div(a, b)` 或者 `1/a`。 4. 指数和对数运算,NumPy和PyTorch都提供了 `np.exp(a)` 和 `torch.exp(a)` 以及 `np.log(a)` 和 `torch.log(a)`。 5. 激活函数,NumPy本身不提供激活函数,但在深度学习框架中,如PyTorch,提供了丰富的激活函数,如 `torch.relu`, `torch.sigmoid`, `torch.tanh` 等。 6. 张量操作,PyTorch支持更多高级操作,如广播机制、自动梯度计算等,这使得它非常适合深度学习中的向量和矩阵运算。 需要注意的是,NumPy和PyTorch在性能方面存在差异,PyTorch作为深度学习框架,针对GPU加速和神经网络计算进行了优化。而NumPy虽然是科学计算的主力,但它本身不提供自动的GPU支持。此外,NumPy在大多数情况下用于机器学习的数据预处理和转换,而PyTorch则用于构建和训练模型。 总结来说,NumPy和PyTorch都是强大的工具,但它们服务于不同的计算需求和深度学习模型构建。尽管两者在一些操作上很相似,但PyTorch提供的面向对象的张量操作和自动梯度计算等特性,使得它在深度学习领域成为了不可或缺的工具。而对于通用的科学计算任务,NumPy仍然是首选。在迁移从NumPy到PyTorch的过程中,开发者需要熟悉PyTorch的特定API和习惯其面向对象的编程模式。