【学习笔记】Numpy和Tensor的区别

1. NumPy 和 PyTorch Tensor 的格式对比

NumPy 使用的是 numpy.ndarray,而 PyTorch 使用的是 torch.Tensor,两者的格式在数据存储和计算方式上有所不同。

NumPy (numpy.ndarray)
import numpy as np
array = np.array([[1.0, 2.0, 3.0], [4.0, 5.0, 6.0]])
print(array.shape)  # 输出: (2, 3)
print(type(array))  # <class 'numpy.ndarray'>
  • 存储格式:数据存储在 CPU 内存中,默认是 float64
  • 索引方式:与 Python list 类似,可以用 array[i, j] 访问元素。
  • 操作方式:可以用 np.min(array, axis=0) 计算最小值,支持广播计算。
PyTorch (torch.Tensor)
import torch
tensor = torch.tensor([[1.0, 2.0, 3.0], [4.0, 5.0, 6.0]])
print(tensor.shape)  # 输出: torch.Size([2, 3])
print(type(tensor))  # <class 'torch.Tensor'>
  • 存储格式:可以在 CPU 或 GPU(通过 .cuda())上存储,默认是 float32
  • 索引方式:与 NumPy 相同,例如 tensor[i, j] 访问元素。
  • 操作方式:支持 torch.min(tensor, dim=0),但也支持梯度计算。

2. NumPy 和 Tensor 主要区别

特性NumPy (numpy.ndarray)PyTorch (torch.Tensor)
存储位置仅支持 CPU支持 CPU 和 GPU(tensor.cuda()
数据类型默认 float64默认 float32(更快)
自动求导不支持支持(requires_grad=True
计算库只依赖 NumPy可用 GPU 加速(CUDA)
转换方式.astype(np.float32).to(torch.float32)

3. NumPy 和 Tensor 互相转换

Tensor 转 NumPy
tensor = torch.tensor([[1.0, 2.0, 3.0], [4.0, 5.0, 6.0]])
array = tensor.numpy()  # 转换为 NumPy
print(type(array))  # <class 'numpy.ndarray'>

注意:转换后的 NumPy 数组和原始 Tensor 共享内存,修改其中一个会影响另一个。

NumPy 转 Tensor
array = np.array([[1.0, 2.0, 3.0], [4.0, 5.0, 6.0]])
tensor = torch.from_numpy(array)  # 转换为 Tensor
print(type(tensor))  # <class 'torch.Tensor'>

注意:转换后的 Tensor 仍然在 CPU,如果要在 GPU 计算,需要 .to(device)

如果 NumPy 数组在 GPU 上使用:

tensor = torch.from_numpy(array).to('cuda')

总结

  1. NumPy (numpy.ndarray) 只在 CPU 上计算,数据格式是 float64,不支持自动求导。
  2. PyTorch Tensor (torch.Tensor) 支持 GPU 加速,默认 float32,可以自动求导。
  3. 互相转换
    • tensor.numpy() 转 NumPy(共享内存)。
    • torch.from_numpy(array) 转 Tensor(仍然在 CPU)。
    • tensor.to('cuda') 让 Tensor 运行在 GPU 上。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

每天一道算法题【蓝桥杯】【在排序数组中查找元素的第一个位置和最后一个位置】

思路 本题为查找左边界和右边界的标准模型 查找左边界 int left 0, right nums.size() - 1, mid 0; //查找左边界 while (left < right) { mid left (right - left) / 2; if (nums[mid] < target) left mid 1; else right mid; } 查找右边界 int left 0, r…

Python数据分析之机器学习基础

Python 数据分析重点知识点 本系列不同其他的知识点讲解&#xff0c;力求通过例子让新同学学习用法&#xff0c;帮助老同学快速回忆知识点 可视化系列&#xff1a; Python基础数据分析工具数据处理与分析数据可视化机器学习基础 五、机器学习基础 了解机器学习概念、分类及…

我与DeepSeek读《大型网站技术架构》(10)- 维基百科的高性能架构设计分析

目录 网站整体架构核心组件请求处理流程图关键环节说明 性能优化策略前端优化&#xff1a;拦截 80% 以上请求服务端优化&#xff1a;高性能 PHP 集群后端优化&#xff1a;存储与缓存极致设计Memcached 持久化连接 性能优化策略对比表 网站整体架构 核心组件 Wikipedia 的架构…

Excel多级联动下拉菜单设置

1.问题描述 现有数据表如下图所示&#xff1a; 该表中包括省、市、县三级目录。 现要将其整理成数据表模板&#xff0c;如下图所示&#xff1a; 要求制作成下拉菜单的形式&#xff0c;且每一级目录的下拉菜单列表要根据上一级目录的内容来确定。 如上图所示&#xff0c;只有…

智驾技术全链条解析

智驾技术全链条解析&#xff08;2025年最新版&#xff09; 智驾技术涵盖从环境感知到车辆控制的完整闭环&#xff0c;涉及硬件、算法、数据与系统集成等多个领域。以下结合行业最新进展&#xff08;截至2025年3月&#xff09;进行深度拆解&#xff1a; 一、感知技术&#xff1…

SpringMVC执行的流程

SpringMVC 基于 MVC 架构模式&#xff0c;核心流程时前端控制室 DispathcherServlet 统一调度&#xff0c;通过组件协作完成 http 的请求与响应。 对于 dispatchServlet 作为前端请求的控制器&#xff0c;全局的访问点&#xff0c;首先将根据 URL 调用 HandlerMapping 获取 Han…

Linux学习(十五)(故障排除(ICMP,Ping,Traceroute,网络统计,数据包分析))

故障排除是任何 Linux 用户或管理员的基本技能。这涉及识别和解决 Linux 系统中的问题。这些问题的范围包括常见的系统错误、硬件或软件问题、网络连接问题以及系统资源的管理。Linux 中的故障排除过程通常涉及使用命令行工具、检查系统和应用程序日志文件、了解系统进程&#…

存储过程和自定义函数在银行信贷业务中的应用(oracle)

数据校验和清洗 例如&#xff0c;检查客户的年龄是否在合理范围内&#xff0c;贷款金额是否符合规定的上下限等。 对于不符合规则的数据&#xff0c;可以进行清洗和修正。比如&#xff0c;将空值替换为默认值&#xff0c;或者对错误的数据进行纠正。 CREATE OR REPLACE PROC…

指令微调 (Instruction Tuning) 与 Prompt 工程

引言 预训练语言模型 (PLMs) 在通用语言能力方面展现出强大的潜力。然而&#xff0c;如何有效地引导 PLMs 遵循人类指令&#xff0c; 并输出符合人类意图的响应&#xff0c; 成为释放 PLMs 价值的关键挑战。 指令微调 (Instruction Tuning) 和 Prompt 工程 (Prompt Engineerin…

【c++】反转字符串

说明 将string类型的字符串本身反转 用到库&#xff1a;algorithm 示例代码 #include <iostream> #include <string> #include <algorithm> using namespace std;int main() {string str "123";reverse(str.begin(), str.end());cout <<…

正则表达式(复习)

文章目录 一、[]: 一个字符集合二、{}: 重复次数三、特殊符号四、(): 分组五、python代码示例六、注意 正则表达式(regular expression)描述了一种字符串匹配的模式&#xff08;pattern&#xff09;&#xff0c;可以用来检查一个串是否含有某种子串、将匹配的子串替换或者从某个…

ARMV8的64位指令

一、介绍 ARMv8 体系结构最大的改变是增加了一个新的 64 位的指令集&#xff0c;这是早前 ARM 指令集 的有益补充和增强。它可以处理 64 位宽的寄存器和数据并且使用 64 位的指针来访问内存。这 个新的指令集称为 A64 指令集&#xff0c;运行在 AArch64 状态。 ARMv8 兼容旧的…

线性代数之矩阵特征值与特征向量的数值求解方法

文章目录 前言1. 幂迭代法&#xff08;Power Iteration&#xff09;幂法与反幂法求解矩阵特征值幂法求最大特征值编程实现补充说明 2. 逆幂迭代法&#xff08;Inverse Iteration&#xff09;移位反幂法 3. QR 算法&#xff08;QR Algorithm&#xff09;——稠密矩阵理论推导编程…

VScode:运行程序停止后,频繁出现终端进程被终止

VScode里面powershell被迫关闭 bug场景排查原因解决办法 bug场景 系统&#xff1a;Windows IDE&#xff1a;Visual Studio Code 停止运行程序后&#xff0c;按向上箭头想要执行上一步命令&#xff0c;忽然终端页面强行关闭&#xff0c;并报错如下&#xff1a; 终端进程 &quo…

[MERN] 使用 socket.io 实现即时通信功能

[MERN] 使用 socket.io 实现即时通信功能 效果实现如下&#xff1a; MERN-socket.io 实现即时聊天 Github 项目地址:https://github.com/GoldenaArcher/messenger-mern 项目使用了 MERN(MongoDB, Express, React, Node.js) socket.io 实现即时通信功能&#xff0c;并且使用了…

【菜鸟飞】Conda安装部署与vscode的结合使用

介绍 Conda 是一个跨平台的开源工具&#xff0c;用于管理软件包和环境。最初由 Anaconda 公司开发&#xff0c;它的设计目标是支持数据科学和机器学习领域&#xff0c;但其功能不仅局限于此。 以下是 Conda 的核心特点&#xff1a; 包管理&#xff1a;安装、更新、卸载各种库…

《Android应用性能优化全解析:常见问题与解决方案》

目录 一、UI卡顿/掉帧 二、内存泄漏&#xff08;Memory Leak&#xff09; 三、ANR&#xff08;Application Not Responding&#xff09; 四、列表滑动卡顿&#xff08;RecyclerView/ListView&#xff09; 五、冷启动耗时过长 六、内存抖动&#xff08;Memory Churn&#x…

【MySQL是怎么运行的】0、名词解释

聚簇索引&#xff1a;聚簇索引和数据在一起&#xff0c;又名主键索引&#xff0c;是主键id构建的一颗B树&#xff0c;非叶节点是主键id&#xff0c;叶子节点是真实数据。其他索引统称二级索引&#xff0c;也称为非聚簇索引。覆盖索引&#xff1a;查找的数据就在索引树上&#x…

深入解析 TCP 协议【真题】

传输控制协议&#xff08;TCP&#xff09;解析与题目解析 题目解析 关于传输控制协议&#xff08;TCP&#xff09;表述不正确的是&#xff1f; A. 主机寻址 B. 进程寻址 C. 流量控制 D. 差错控制 TCP&#xff08;Transmission Control Protocol&#xff09;是面向连接、可靠传…

单例模式的五种实现方式

1、饿汉式 ①实现&#xff1a;在类加载的时候就初始化实例 ②优点&#xff1a;线程安全 ③缺点&#xff1a;实例在类加载的时候创建&#xff0c;可能会浪费资源 //饿汉式 public class EagerSingleton{private EagerSingleton(){} //私有构造方法private static EagerSingle…