NumPy与PyTorch对照备忘单:快速查找和比较指南
需积分: 10 78 浏览量
更新于2024-11-25
收藏 2KB ZIP 举报
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和习惯其面向对象的编程模式。
112 浏览量
2024-08-21 上传
2024-08-21 上传
140 浏览量
229 浏览量
269 浏览量
224 浏览量
263 浏览量
947 浏览量

Craig林
- 粉丝: 37
最新资源
- 利用FLASH和XML技术实现图片播放功能
- 树位图算法实现IPv4/IPv6快速查找表解析
- eNSP企业网络拓扑配置与OSPF/VLAN等协议实践课程设计
- 透明flash光线效果的制作技巧与实例解析
- S7-1500与ET 200SP配合使用USS协议和HMI控制V20转速
- VB编程技巧:不使用窗体文件实现窗体功能
- Java中HTML Parser包使用指南与jar文件解析
- 企业网络方案课程设计:eNSP网络拓扑与配置
- 掌握org-mime: Emacs中发送HTML邮件的高阶技巧
- VB实现的语音报时圆形指针时钟教程
- Sublime Text 2.0.2 安装包使用指南
- J2EE框架个人博客系统毕业设计与实现
- Java 8 JDK 8u131版发布:革新Java编程平台
- Srec_cat.exe:自动化合并Hex文件工具介绍
- Sundown-syntax:Atom编辑器中Twilight语法主题的变体
- MPEG-7 CE2图像处理数据库:稀缺资源解析