NumPy库与PyTorch库的异同点

ops/2024/9/18 12:34:59/ 标签: numpy, pytorch, 人工智能

目录

1.单位的创建和操作

1.创建

2.形状变换

2.数学和统计操作

1.矩阵乘法

2.广播

3.统计计算

3.GPU支持

4.在深度学习中的作用

5.应用范围


NumPy库为数组服务,PyTorch库为张量服务,这是最本质的区别。

1.单位的创建和操作

1.创建

NumPy:使用 np.array([1, 2, 3]) 来创建数组。

PyTorch:使用 torch.tensor([1, 2, 3]) 来创建张量。这里的张量在 PyTorch 中与 NumPy 的数组相似。

2.形状变换

NumPy:arr.reshape(2, 3) 用于改变数组形状。

PyTorch:tensor.view(2, 3)tensor.reshape(2, 3) 用于改变张量形状。

2.数学和统计操作

1.矩阵乘法

NumPy:np.dot(a, b)a @ b

PyTorch:torch.matmul(a, b)a @ b

2.广播

广播机制是一种在不同形状的数组(或张量)之间进行数学运算时使用的技术,它能自动扩展数组的维度,使其符合运算要求,从而避免了明确复制数据的需要。这种机制可以显著减少内存使用,并提高计算效率。

NumPyPyTorch 都支持广播机制,允许形状不完全相同的数组进行数学操作。具体可以参考我的NumPy库介绍这篇文章。

3.统计计算

NumPy:arr.mean(), arr.sum(), np.median(arr) 等。

PyTorch:tensor.mean(), tensor.sum(), torch.median(tensor) 等。

3.GPU支持

NumPy:主要在 CPU 上运行,没有内建的 GPU 支持。

PyTorch:可以直接在 GPU 上运行计算,通过 .to('cuda') 方法将张量移动到 GPU。

在这里简单介绍下GPU

GPU(图形处理单元)是一种专门设计用来处理图形和视频渲染的计算设备。不过,由于其高度并行的结构,现在GPU也广泛用于各种高性能计算任务,特别是在数据科学、机器学习和深度学习领域。

如何查看自己的GPU呢?

打开任务管理器,调到性能这一栏

如果想要查看Gpu是否在工作,在命令行用nvidia-smi命令打开,前提是要安装CUDA和nvidia驱动。具体可查看这篇文章Windows10下cmd中nvidia-smi命令输入无效的解决办法_nvidia-smi' 不是内部或外部命令,也不是可运行的程序 或批处理文件。-CSDN博客

 正常跑深度学习模型时,Gpu可达到百分之九十多。

4.在深度学习中的作用

NumPy:不支持自动梯度计算和反向传播,通常需要手动实现或使用其他库。

PyTorch:通过 Autograd 系统自动管理梯度计算和反向传播,使用 tensor.backward() 自动计算梯度。

5.应用范围

NumPy:广泛应用于科学计算领域,如物理模拟、统计分析、图像处理等。

PyTorch:专为深度学习设计,广泛用于构建和训练各种类型的神经网络。

然两者在基本操作上非常相似,但 PyTorch 通过支持动态计算图和 GPU 加速,以及集成深度学习特有的功能(如自动梯度计算),为深度学习提供了更加专业和高效的工具。而 NumPy 则作为一个更通用的科学计算库,在广泛的科学研究领域中都有应用。

以下是在PyTorch库对NumPy库中若干方法的修正


http://www.ppmy.cn/ops/34250.html

相关文章

linux文本三剑客之awk

目录 1、特点与应用场景 2、awk命令执行流程 3、awk行与列 1)awk取行 2)awk取列 3)awk行与列综合使用 4、awk模式匹配-正则匹配 5、awk模式匹配-范围模式 6、awk模式匹配-特殊模式 7、awk数组* 1) 用途 2)格式对比 8、awk循环与判断 1、特点与应用场景…

04-22 周日 阿里云-瑶光上部署FastBuild过程(配置TLS、自定义辅助命令)

04-22 周日 阿里云-瑶光上部署FastBuild过程 时间版本修改人描述2024年4月22日14:18:59V0.1宋全恒新建文档2024年4月23日20:41:26V1.0宋全恒完成了基本流程的添加 简介 前提 准备两台服务,一台部署Docker,一台部署FastBuild的镜像容器服务所述的Docke…

解决网络ping不通问题

网络ping不通可能有多种原因,以下是一些常见的解决方法: 1. 检查IP地址和域名:确保你使用的是正确的IP地址或者域名来ping目标设备。如果IP地址或者域名错误,ping请求将无法到达目标设备。 2. 检查网络连接:首先确保…

如何省下5000培训费学会月薪8000的嵌入式Linux?

嵌入式底层开发无疑是一项极为关键的技术,它在众多嵌入式系统中都有着广泛而重要的应用。在当今科技飞速发展的时代,嵌入式系统已经深入到我们生活的每一个角落,成为了我们日常生活中不可或缺的一部分,这也更加凸显了嵌入式开发的…

代码随想录leetcode200题之链表

目录 1 介绍2 训练3 参考 1 介绍 本博客用来记录代码随想录leetcode200题中链表部分的题目。 2 训练 题目1:203移除链表元素 C代码如下, /*** Definition for singly-linked list.* struct ListNode {* int val;* ListNode *next;* Lis…

[力扣题解]150. 逆波兰表达式求值

题目:150. 逆波兰表达式求值 思路 建一个栈,遍历算式,遇到数字塞进去,遇到算符,去除栈顶2个元素进行运算; 假设算式是9 3 -,栈里的顺序是9 3,(栈顶在右)&am…

图神经网络实战(9)——GraphSAGE详解与实现

图神经网络实战(9)——GraphSAGE详解与实现 0. 前言1. GraphSAGE 原理1.1 邻居采样1.2 聚合 2. 构建 GraphSAGE 模型执行节点分类2.1 数据集分析2.2 构建 GraphSAGE 模型 3. PinSAGE小结系列链接 0. 前言 GraphSAGE 是专为处理大规模图而设计的图神经网…

【前端开发---Vue2】史上最详细的Vue入门教程(五) --- 细讲‘生命周期’

什么时候可以发送初始化渲染请求?(越早越好)什么时候可以开始操作dom?(至少dom得渲染出来),本篇将详细讲解vue中的核心 --- 生命周期,并提供具体案例来让小伙伴们加深理解、彻底掌握…

目标检测——水下垃圾数据集DeepTrash

引言 亲爱的读者们,您是否在寻找某个特定的数据集,用于研究或项目实践?欢迎您在评论区留言,或者通过公众号私信告诉我,您想要的数据集的类型主题。小编会竭尽全力为您寻找,并在找到后第一时间与您分享。 …

Github2024-05-02开源项目日报 Top10

根据Github Trendings的统计,今日(2024-05-02统计)共有10个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量TypeScript项目4Rust项目2Vue项目1GDScript项目1SystemVerilog项目1Python项目1非开发语言项目1精心策划的编码面试准备材料 创建周期:2764 天…

悟空派全志H3开发板基础外设功能测试

1、测试环境 硬件:wukongpi H3 系统:ubantu 镜像:Orangepizerolts_2.0.8_ubuntu_bionic_server_linux5.4.27.img 2、外设功能测试 引脚图: 1、spi //1、系统默认关闭了SPI,打开该文件: vi /boot/orangepiEnv.…

前端项目学习记录4:1,2,3总结

1.需要安装的依赖 pnpm i element-plus/icons-vue element-plus axios sass vue-router pnpm i -D types/node fast-glob mock.js vite-plugin-mock2.9.6 vite-plugin-svg-icons 2.删除不必要的文件 3.整体文件夹 .vscode --> 不用管 mock --> …

[AIGC] 事务的四大特性是怎么实现的

文章目录 原子性是通过 undo log实现的。一致性是通过 redo log实现的。隔离性的实现 (分事务的隔离级别讨论)持久性是利用 redo log 实现的 写入过程 原子性是通过 undo log实现的。 事务的所有 修改操作 (增、删、改)的相反操作都会写入undo log, 比如…

Acrobat Pro DC全系列安装教程、Acrobat Mac版

Adobe Acrobat Pro DC2023 是一款专业的 PDF 文档编辑和管理软件,由 Adobe 公司开发。它是 Acrobat 产品系列中最全面、最强大的版本之一,提供了许多功能和工具,可以帮助用户轻松地创建、编辑、签署和共享 PDF 文件 百度网盘 内附安装步骤 一…

一、ESP32基础知识

1、乐鑫产品线 系列特点ESP8266无ESP32无ESP32-S2无ESP32-C3无ESP32-S3无ESP32-C2/ESP8684无ESP32-C6无ESP32-H2无 2、开发方式 2.1、ESP-IDF (1)面向专业开发者。乐鑫官方开发框架,专门为ESP32系列芯片设计。支持C/C语言,并提供一套完整的API&#…

面试中算法(使用栈实现队列)

使用栈来模拟一个队列,要求实现队列的两个基本操作:入队、出队。 栈的特点:先入后出,出入元素都是在同一端(栈顶)。 队列的特点:先入先出,出入元素是在两端(队头和队尾)。 分析&…

JavaScript js写九九乘法表(两种方法)

方法一: 观察规律: 第一个数每行都是自增1。 我们发下第二个数都是从1开始,依次递增1,永远不大于前面的数。 前面数字每自增一次,后面数字自增一轮。 我们可以用双重for循环,外层初始值设为i&#xff0…

多线程使用说明

一、如何创建多线程 1、继承Thread类 如果调用run方法,相当于还是只有一条main线程,会把run的线程当成一条普通对象,如下,t会执行完再往下执行,这样t就不是一个线程类,而是一个普通的对象,所以必…

【介绍下OneFlow概念清单】

🌈个人主页: 程序员不想敲代码啊 🏆CSDN优质创作者,CSDN实力新星,CSDN博客专家 👍点赞⭐评论⭐收藏 🤝希望本文对您有所裨益,如有不足之处,欢迎在评论区提出指正,让我们共…

【c/c++】深入探秘:C++内存管理的机制

🔥个人主页:Quitecoder 🔥专栏:c笔记仓 朋友们大家好,本篇文章我们详细讲解c中的动态内存管理 目录 1.C/C内存分布2.C语言中动态内存管理方式:malloc/calloc/realloc/free3.c内存管理方式3.1new/delete对内…