【小贪】深度学习常用Pytorch, Numpy对比及常用语法

近期致力于总结科研或者工作中用到的主要技术栈,从技术原理到常用语法,这次查缺补漏当作我的小百科。主要技术包括:

  • ✅数据库常用:MySQL, Hive SQL, Spark SQL
  • ✅大数据处理常用:Pyspark, Pandas
  • ⚪ 图像处理常用:OpenCV, Matplotlib
  • ⚪ 机器学习常用:SciPy, Sklearn
  • ✅ 深度学习常用:Pytorch, Numpy
  • ⚪ 常用数据结构语法糖:itertools, collections
  • ✅ 常用命令: Shell, Git, Vim

以下整理错误或者缺少的部分欢迎指正!!!

1. 简介

Torch的tensor可以在GPU上加速运算,Numpy的ndarray只能在CPU上加速运算。

  • torch2.4 API
  • numpy API

导包与相互转化

import numpy as np
import torch
import torch.nn.functional as fnp_data = np.arange(9).reshape(3,3)
torch_data = torch.from_numpy(np_data).cuda()
tensor2array = torch_data.cpu().detach().numpy()

2. 相同语法

功能函数
查看矩阵行数len(x)
取出矩阵x的k对角元素np/torch.diag(x, k)
取出矩阵x的下三k角矩阵np/torch.tril(x, k)
取出矩阵x的上三k角矩阵np/torch.triu(x, k)
指定范围,指定步长,生成等差数列np/torch.arange(start, end, step)
指定范围,指定生成个数,生成等差数列np/torch.linspace(strat, end, num)
指定范围,指定生成个数,对数均分np/torch.logspace(strat, end, num)
``
矩阵加法np/torch.add(x1, x2)
矩阵减法np/torch.substact(x1, x2)
矩阵除法np/torch.divide(x1, x2)
取指数/对数np/torch.exp/log(x)
取平方np/torch.sqrt(x)
转置x.T
矩阵伪逆np/torch.linalg.pinv(x)
``
求累加和np/torch.cumsum(x)
求最值及其索引np/torch.max/min/argmax/argmin/abs(x, axis/dim)
统计函数np/torch.mean/median/sum(x, axis/dim)
沿着某一维度计算相邻元素的差np/torch.diff(x, axis/dim)
判断是否为inf/有穷np/torch.isinf/isfinite(x)
指定维度上布尔值有/全真np/torch.any(x, axis/dim)
条件函数np/torch.where(condition, true_value, false_value)
返回满足条件的索引np/torch.where(condition)[0]
x1是否在x2中np/torch.isin(x1, x2)
元素去重np/torch.unique(x, axis/dim) 获得去重后的一维矩阵
``
*修改维度(增大补0,变小删除)np/torch.resize(x, size/shape)
*修改维度(前后元素数相同,不改变原数组及元素顺序)np/torch.reshape(x, size/shape)
*去除某一为1的维度np/torch.squeeze(x, axis/dim)
*指定增加某一维度np.unsqueeze(x, axis/dim)
移动维度np/torch.moveaxis(x, source, destination)
指定维度直接拼接np.concatenate((x1, x2, ...), axis/dim) torch可以写为cat
指定维度新建一维拼接np/torch.stack((x1, x2, ...), axis/dim)
指定维度拼接np/torch.hstack/vstack/dstack((x1, x2, ...))
矩阵分割np/torch.split(x, indices_or_sections/split_size_or_sections)
指定维度分割np/torch.hsplit/vsplit/dsplit(x)

以上标*的也可以使用ndarray/tensor.resize()等。

3. 专属语法

功能函数
原地打乱顺序np.random.shuffle(x)
非原地打乱顺序np.random.permutation(x)
对x保留d位小数,后面的四舍五入np.round(x, d)
求协方差矩阵np.corrcoef(x)
布尔操作np.logical_and/or(x1, x2)
删除指定位置/布尔索引的元素np.delete(x, index/bool_index)
指定增加某一维度np.expand_dims(x, axis=None)
指定维度逐元素重复x.repeat(axis, repeats)
``
求平方根倒数torch.rsqrt()
获得最大的k个元素x.topk(k, dim)
某一维度上最小的第k个x.kthvalue(k, dim)
组合计算f.log_softmax(x) 先sf再log
组合计算torch.logsumexp(x) 先e再sum再log
对x在维度0上逆序torch.flip(x, dims=[0])
维度变换x.view(shape) 类似reshape,与原tensor共享内存
维度扩大x.expand(shape) 维度变为shape的维度
张量切割torch.chunk(x, chunks, dim) 切割为指定chunks数量的张量块
获取maskx.ge(0.5) ge>,le<,gt>=,lt<=,eq=
根据mask筛选torch.masked_select(x, x.le(20))

4. 不同语法对比

矩阵创建

numpytorch
基础变量np.array(data, dtype=None)torch.tenosr(data, dtype=None, device=None, requires_grad=False)
全0/1矩阵np.zeros/ones((3, 4))torch.zeros/ones(3, 4)
全值矩阵np.full(size, value)torch.full(shape, value)
未初始化矩阵np.empty(size)torch.empty(shape)
N维单位矩阵np.identity/eye(N)torch.eye(N)
随机整数np.random.randint(low, high, size)torch.empty(shape).random_(low, high)
[0, 1)均匀分布np.random.rand(3, 4)torch.rand(3, 4)
任意均匀分布np.random.uniform(low, high, size)torch.empty(shape).uniform_(low, high)
标准正态分布np.random.randn(3, 4)torch.randn(3, 4)
指定期望和方差的标准正态分布np.random.normal(loc, scale, size)torch.normal(mean, std, size)

numpy和torch均可使用zeros_like, ones_like, full_like, empty_like(tensor/array)创建矩阵。

数学运算

numpytorch
对应位置相乘x1 * x2np.multiply(x1, x2) x1 * x2torch.mul(x1, x2)
向量乘法x1.dot(x2)np.dot(x1, x2) 2d时同矩阵乘法x1.dot(x2)torch.dot(x1, x2)最多1d
矩阵乘向量``torch.mv(x, w0)
矩阵乘法x1 @ x2np.matmul(x1, x2)x1 @ x2torch.mm(x1, x2) 最多2d,bmm最多3d
近似值np.floor/ceil/round(x)x.floor/ceil/round()
取整数部分np.trunc(x)x.trunc(), x.frac()取小数部分
数值截断np.clip(a, a_min, a_max, out=None)torch.clamp(input, min, max, out=None)
求幂np.power(x1, x2) x2数字矩阵均可torch.pow(input: Tensor, exponent: Number)
求逆np.linalg.inv(x)torch.inverse(x)
求伪逆torch.linalg.pinvnp.linalg.inv(a)
求范数np.linalg.norm(x)x.norm(p, dim)torch.norm(x)

维度变换

numpytorch
查看维度x.shape x.size为元素数量x.shape=x.size()
展平为一维,返回视图x.ravel()torch.ravel(x)
展平为一维,返回拷贝x.flatten()x.flatten()=x.flatten(start_dim=0, end_dim=-1)=torch.flatten(x, start_dim=0, end_dim=-1)
*交换维度np.swapaxes(x, axis1, axis2)torch.transpose(x, dim0, dim1)
*维度重排np.transpose(x, new_axis) 默认为转置torch.permute(x, new_dim)
对应维度按数组重复size/shape倍np.tile(x, size)x.repeat(shape)

以上标*的也可以使用ndarray/tensor.resize()等。

其他操作

numpytorch
修改数据类型x.astype(np.int32)x.type(torch.int32)
返回为真的索引np.argwhere(x==k)torch.nonzero(x==k)
复制矩阵x2 = x1.copy()x2 = x1.clone()
指定维度滚动shift步,补齐到前边np.roll(x, shift, axis=None)torch.roll(x, shift, dims=None)
在指定维度反转数据np.flip(x, axis)torch.flip(x, dims)

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

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

相关文章

Maven的基本使用

引入依赖 1.引入Maven仓库存在的依赖&#xff0c;直接引入&#xff0c;刷新Maven <dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc</artifactId><version>5.2.12.RELEASE</version> </dependency…

Redis代替Session实现共享

集群的session共享问题 session共享问题&#xff1a;多台tomcat并不共享session存储空间&#xff0c;当请求切换到不同的tomcat服务时导致数据丢失的问题。 session的替代方案&#xff1a; 数据共享内存存储key、value结构 将redis替换session可以解决session共享问题

为什么root密码正确在登录系统时仍然报错permission denied

guanzwanguanzwan-mac ~ % ssh rootoci8 rootoci8’s password: Permission denied, please try again. rootoci8’s password: Permission denied, please try again. 使用正确的密码一直无法登录. 最后发现是sshd 服务禁止root用户用密码登录 在/etc/ssh/sshd_config配置文…

从天空到地面:无人机航拍推流直播技术在洞庭湖决口封堵中的全方位支援

据新闻报道&#xff0c;受持续强降雨影响&#xff0c;湖南省华容县团洲垸洞庭湖一线堤防发生管涌险情&#xff0c;随后出现决口。截至7月8日20时左右&#xff0c;226米长的洞庭湖一线堤防决口已累计进占208米&#xff0c;目前剩余18米&#xff0c;有望在今晚或9日凌晨实现合龙。…

7.9实验室总结 SceneBuilder的使用方法+使用javafx等

由于下错了东西&#xff0c;所以一直运行不出来&#xff0c;今天一直在配置环境&#xff0c;配置好了才学&#xff0c;所以没学多少&#xff0c;看了网课学习了SceneBuilder的使用方法还有了解了javafx是怎么写项目的&#xff0c;&#xff0c; 学习了怎么跳转页面&#xff1a;…

溶解氧(DO)理论指南(2)

转载自梅特勒官网资料&#xff0c;仅用于学习交流&#xff0c;侵权则删&#xff01; 溶解氧理论指南 2 DO电极类型2.1 氧化还原化学简介2.2 原电池法溶解氧电极2.3 极谱法溶解氧电极2.3 光学法溶解氧电极 2 DO电极类型 O2是一种高活性分子&#xff0c;因为它是通过光合作用连…

静态搜索iOS动态链接函数的调用位置

静态搜索iOS动态链接函数的调用位置 可执行文件格式mach-O,是在苹果的操作系统 macOS 和 iOS 上使用的一种二进制文件格式。 在一些iOS安全扫描中&#xff0c;可能存在需要获取函数具体调用位置的需求&#xff0c;能指导用户更精确的定位漏洞。 现在以NSLog函数为例&#xff…

Ensp配置防火墙的web界面

Ensp配置防火墙的web界面 准备工作新建网卡配置网卡 启动防火墙配置防火墙注意事项和错误如果云里面没有网卡选项防火墙启动不了没有web界面启动不了没有web界面 准备工作 新建网卡 我用的是win10系统&#xff0c;新建网卡 先右键管理 再点击设备管理器 --- 再网络适配器 接…

PostgreSQL 中如何处理数据的并发更新冲突解决?

文章目录 一、并发更新冲突的场景二、PostgreSQL 中的并发控制机制&#xff08;一&#xff09; 封锁机制&#xff08;二&#xff09; 事务隔离级别 三、并发更新冲突的解决方法&#xff08;一&#xff09; 重试机制&#xff08;二&#xff09; 使用乐观并发控制&#xff08;三&…

密封方法知识点

密封方法的基本概念 用密封关键字sealed 修饰的重写函数 作用&#xff1a;让虚方法或者抽象方法之后不能再被重写 特点&#xff1a;和override一起出现 实例 abstract class Animal {public string name;public abstract void Eat();public virtual void Speak(){Console.…

【目标跟踪】CoTracker 环境配置

配置 CoTracker 环境 首先下载 conda&#xff0c;然后安装虚拟环境。 1.创建环境&#xff1a;如果环境不存在&#xff0c;你需要创建一个新的 conda 环境。可以使用以下命令创建名为 cotracker 的环境&#xff1a; conda create -n cotracker python3.x 其中 3.x 是你想要安…

【区块链+跨境服务】湾区金融科技人才链 | FISCO BCOS应用案例

湾区金融科技人才链于 2020 年 8 月正式发布&#xff0c;是全国首创的金融科技人才创新举措&#xff0c;对推动金融科技人才机制和认证标准建立&#xff0c;促进金融科技人才要素自由流通&#xff0c;推进产业 链、技术链、人才链深度融合具有重大意义。以深港澳金 融科技师专才…

鸟类领域超大规模检测实践,基于YOLOv8轻量级检测模型开发构建超大规模生活场景下500种鸟类检测识别分析系统

关于鸟类的检测、识别相关的开发实践在前面的系列博文中也有不少的实践记录&#xff0c;感兴趣的话可以自行移步阅读即可&#xff1a; 【检测类】 《AI识鸟&#xff0c;基于YOLOv5【n/s/m/l/x】全系列参数模型开发构建工业野外场景下鸟类检测识别分析系统》 《基于轻量级YOL…

STM32G474使用HRTIM触发多路ADC采样,通过DMA传输,通过串口打印显示,实现PWM中间时刻采样,避免开关噪声

本工程使用CUBEIDE进行配置以及编译调试&#xff0c;使用的硬件为STM32G474官方开发板NUCLEO-G474RE CUBEIDE配置 HRTIM配置 本章工程使用HRTIM定时器进行ADC的触发&#xff0c;打开主定时器&#xff0c;子定时器A,B,C。&#xff08;本工程未使用到A与C定时器&#xff0c;配置…

高性能Python网络框架实现网络应用详解

概要 Python作为一种广泛使用的编程语言,其简洁易读的语法和强大的生态系统,使得它在Web开发领域占据重要位置。高性能的网络框架是构建高效网络应用的关键因素之一。本文将介绍几个高性能的Python网络框架,详细描述它们的特点、使用场景及具体示例代码,帮助高效实现网络应…

leetcode--验证二叉搜索树

leetcode地址&#xff1a;验证二叉搜索树 给你一个二叉树的根节点 root &#xff0c;判断其是否是一个有效的二叉搜索树。 有效 二叉搜索树定义如下&#xff1a; 节点的左 子树 只包含 小于 当前节点的数。 节点的右子树只包含 大于 当前节点的数。 所有左子树和右子树自身必…

StarRocks分布式元数据源码解析

1. 支持元数据表 https://github.com/StarRocks/starrocks/pull/44276/files 核心类&#xff1a;LogicalIcebergMetadataTable&#xff0c;Iceberg元数据表&#xff0c;将元数据的各个字段做成表的列&#xff0c;后期可以通过sql操作从元数据获取字段&#xff0c;这个表的组成…

数据结构——顺序表【C】

顺序表 1. 顺序表的概念以及结构1.1概念1.2静态顺序表和动态顺序表 2. 顺序表接口模拟实现接口总览2.1 初始化数据和销毁容器 2.2 顺序表的尾插和尾删2.3 头插和头删2.4 任意位置插入和删除数据2.5 查找数据 3. 顺序表的问题 &#xff1a; 1. 顺序表的概念以及结构 1.1概念 顺…

贴脸细看Mixtral 8x7B- 稀疏混合专家模型(MoE)的创新与推动

贴脸细看Mixtral 8x7B- 稀疏混合专家模型&#xff08;MoE&#xff09;的创新与推动 原创 一路到底孟子敬 上堵吟 2024年01月15日 20:05 美国 I. 引言 A. Mixtral 8x7B的背景和目的 • 背景&#xff1a;随着大型语言模型在自然语言处理&#xff08;NLP&#xff09;领域的广泛…

社交论坛圈子系统APP开发社交圈子小程序系统源码开源,带语音派对聊天室/圈子社交论坛及时聊天

功能// 首页左右滑动切换分类 使用资讯类app常见的滑动切换分类&#xff0c;让用户使用更方便。 2信息卡片流展示 每条信息都是一个卡片&#xff0c;头像展示会员标签&#xff0c;单图自动宽度&#xff0c;多图九宫格展示&#xff0c;底部展示信息发布地址&#xff0c;阅读量、…