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库中若干方法的修正

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/593868.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【busybox记录】【shell指令】md5sum

目录 内容来源: 【GUN】【md5sum】指令介绍 【busybox】【md5sum】指令介绍 【linux】【md5sum】指令介绍 使用示例: 128位MD5 - 默认输出 128位MD5 - 将每个文件当做二进制处理 128位MD5 - 从文件中读取MD5值并做检查 128位MD5 - 创建一个BSD风…

浅谈OpenCV 粗略计算工件轮廓面积和外接圆直径(Emgu.CV)

前言 最近领导在做库房工具管理这块的功能,希望能集成OpenCV 粗略的计算出工具的长度,以方便用户再归还工具的时候,提示用户该放在那种尺寸的盒子里面,这便是这篇文章的由来。 我们的系统是基于.net开发的,所以采用的是…

项目管理-项目采购管理1/2

项目管理:每天进步一点点~ 活到老,学到老 ヾ(◍∇◍)ノ゙ 何时学习都不晚,加油 1.项目采购管理-主要内容 项目采购管理过程--重点: ①ITTO 输入,输出工具和技术。 ②问题和解决方案。 ③论文…

【白话机器学习系列】白话特征向量

白话特征向量 一个方阵 A A A 与列向量 v v v 的乘积会生成一个新的列向量。这个新向量通常与原向量有着不同的方向,矩阵在这里代表一个线性变换。然而,某些向量会保持其原始方向。我们称这种向量为矩阵 A A A 的特征向量(eigenvector&…

python数据分析——业务指标分析

业务指标分析 前言一、业务指标分析的定义二、业务问题构建问题构建的要求 三、业务问题的识别在识别问题的阶段对于企业内部收益者的补充: 四、竞争者分析标题竞争者分析的内容:标题竞争者分析目的:案例: 黑莓公司为什么会消亡&a…

dynamic_cast 静态转换

dynamic_cast 静态转换 const_cast 常量转换 重新解释转换(reinterpret_cast) 最不安全

RocketMq详解:一、RocketMQ 介绍及基本概念

文章目录 前言1.RocketMQ简介2.RocketMQ 特点3.核心特性4.应用场景5.RocketMQ 优势6.RocketMQ 四大核心组件6.1 NameServer1.NameServer作用2.NameServer被设计为无状态的原因3.和NameServer和Zookeeper的区别4.NameServer的高可用保障 6.2 Broker1.Broker部署方式2.高可用与负…

ssm105基于JAVAEE技术校园车辆管理系统+jsp

校园车辆管理系统设计与实现 摘 要 现代经济快节奏发展以及不断完善升级的信息化技术,让传统数据信息的管理升级为软件存储,归纳,集中处理数据信息的管理方式。本校园车辆管理系统就是在这样的大环境下诞生,其可以帮助管理者在短…

泰克示波器电流探头如何抓浪涌电流波形?

泰克示波器是一种常见的电子测量仪器,广泛应用于电子工程、通信工程、医疗设备等领域。它的主要功能是实时显示电信号的波形,从而帮助工程师和技术人员分析和调试电路。而在一些特定的应用场景中,例如电源、电机、电器设备等,我们…

模型全参数训练和LoRA微调所需显存的分析

大家好,我是herosunly。985院校硕士毕业,现担任算法研究员一职,热衷于机器学习算法研究与应用。曾获得阿里云天池比赛第一名,CCF比赛第二名,科大讯飞比赛第三名。拥有多项发明专利。对机器学习和深度学习拥有自己独到的见解。曾经辅导过若干个非计算机专业的学生进入到算法…

TypeScript 基础学习笔记:泛型 <T> vs 断言 as

TypeScript 基础学习笔记&#xff1a;泛型 <T> vs 断言 as &#x1f525; 引言 &#x1f44b; TypeScript (TS) 以其静态类型的魔力&#xff0c;让我们的代码更加健壮、易读且易于维护。今天&#xff0c;我们将深入探讨两个核心概念——泛型&#xff08;Generics&#x…

【华为】AC三层旁挂直接转发

【华为】AC三层旁挂直接转发 实验需求实验拓扑配置AC和AP二层通信ACLSW1LSW2AP2获取到的管理地址AP3获取到的管理地址 AP上线配置WLAN业务ACLSW1&#xff08;作DHCP地址池&#xff09;业务成功下发 访问公网&#xff08;NAT&#xff09;LSW1AR1 配置文档ACLSW1LSW2AR1ISP 实验需…

杭电acm1013 Digital Roots 数字根 Java解法 高精度

Problem - 1013 (hdu.edu.cn) 高精度算术模拟 开long没过想到开bI 开bl一次过 import java.math.BigInteger; import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner sc new Scanner(System.in);BigInteger i;while (!(i sc.nextB…

Docker新建容器 修改运行容器端口

目录 一、修改容器的映射端口 二、解决方案 三、方案 一、修改容器的映射端口 项目需求修改容器的映射端口 二、解决方案 停止需要修改的容器 修改hostconfig.json文件 重启docker 服务 启动修改容器 三、方案 目前正在运行的容器 宿主机的3000 端口 映射 容器…

【Python项目】基于时间序列的【大气污染预测系统】

技术简介&#xff1a;使用Python技术、B/S架构、MYSQL数据库等实现。 系统简介&#xff1a;本系统的主要使用角色为普通用户和管理员用户&#xff0c;两者的功能几乎是一致的&#xff0c;但管理员用户比普通用户多了用户管理的功能&#xff0c;可以对系统内的用户进行管理。普通…

Java IO编程必备:FilterInputStream类的原理与实现

哈喽&#xff0c;各位小伙伴们&#xff0c;你们好呀&#xff0c;我是喵手。运营社区&#xff1a;C站/掘金/腾讯云&#xff1b;欢迎大家常来逛逛 今天我要给大家分享一些自己日常学习到的一些知识点&#xff0c;并以文字的形式跟大家一起交流&#xff0c;互相学习&#xff0c;一…

如何构建进攻性的网络安全防护策略

进攻性安全&#xff08;Offensive security&#xff09;是指一系列主动安全策略&#xff0c;这些策略与恶意行为者在现实世界的攻击中使用的策略相同&#xff0c;区别在于其目的是加强而非损害网络安全。常见的进攻性安全方法包括红队、渗透测试和漏洞评估。 进攻性安全行动通…

C++入门 ——类和对象(二)

this指针 this指针的引出 我们先来定义一个日期类 Date class Date { public:void Init(int year, int month, int day){_year year;_month month;_day day;}void Print(){cout <<_year<< "-" <<_month << "-"<< _da…

基于springboot+vue+Mysql的自习室预订系统

开发语言&#xff1a;Java框架&#xff1a;springbootJDK版本&#xff1a;JDK1.8服务器&#xff1a;tomcat7数据库&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09;数据库工具&#xff1a;Navicat11开发软件&#xff1a;eclipse/myeclipse/ideaMaven包&#xff1a;…

Springboot工程创建

目录 一、步骤 二、遇到的问题及解决方案 一、步骤 打开idea,点击文件 ->新建 ->新模块 选择Spring Initializr&#xff0c;并设置相关信息。其中组为域名&#xff0c;如果没有公司&#xff0c;可以默认com.example。点击下一步 蓝色方框部分需要去掉&#xff0c;软件包…