numpy(ndarray)和tensor(GPU上的numpy)速查
类型(Types)
| Numpy | PyTorch |
|---|---|
| np.ndarray | torch.Tensor |
| np.float32 | torch.float32; torch.float |
| np.float64 | torch.float64; torch.double |
| np.float | torch.float16; torch.half |
| np.int8 | torch.int8 |
| np.uint8 | torch.uint8 |
| np.int16 | torch.int16; torch.short |
| np.int32 | torch.int32; torch.int |
| np.int64 | torch.int64; torch.long |
构造器(Constructor)
零和一(Ones and zeros)
| Numpy | PyTorch |
|---|---|
| np.empty((2, 3)) | torch.empty(2, 3) |
| np.empty_like(x) | torch.empty_like(x) |
| np.eye | torch.eye |
| np.identity | torch.eye |
| np.ones | torch.ones |
| np.ones_like | torch.ones_like |
| np.zeros | torch.zeros |
| np.zeros_like | torch.zeros_like |
从已知数据构造
| Numpy | PyTorch |
|---|---|
| np.array([[1, 2], [3, 4]]) | torch.tensor([[1, 2], [3, 4]]) |
| np.array([3.2, 4.3], dtype=np.float16)np.float16([3.2, 4.3]) | torch.tensor([3.2, 4.3], dtype=torch.float16) |
| x.copy() | x.clone() |
| np.fromfile(file) | torch.tensor(torch.Storage(file)) |
| np.frombuffer | |
| np.fromfunction | |
| np.fromiter | |
| np.fromstring | |
| np.load | torch.load |
| np.loadtxt | |
| np.concatenate | torch.cat |
数值范围
| Numpy | PyTorch |
|---|---|
| np.arange(10) | torch.arange(10) |
| np.arange(2, 3, 0.1) | torch.arange(2, 3, 0.1) |
| np.linspace | torch.linspace |
| np.logspace | torch.logspace |
构造矩阵
| Numpy | PyTorch |
|---|---|
| np.diag | torch.diag |
| np.tril | torch.tril |
| np.triu | torch.triu |
参数
| Numpy | PyTorch |
|---|---|
| x.shape | x.shape |
| x.strides | x.stride() |
| x.ndim | x.dim() |
| x.data | x.data |
| x.size | x.nelement() |
| x.dtype | x.dtype |
索引
| Numpy | PyTorch |
|---|---|
| x[0] | x[0] |
| x[:, 0] | x[:, 0] |
| x[indices] | x[indices] |
| np.take(x, indices) | torch.take(x, torch.LongTensor(indices)) |
| x[x != 0] | x[x != 0] |
形状(Shape)变换
| Numpy | PyTorch |
|---|---|
| x.reshape | x.reshape; x.view |
| x.resize() | x.resize_ |
| null | x.resize_as_ |
| x.transpose | x.transpose or x.permute |
| x.flatten | x.view(-1) |
| x.squeeze() | x.squeeze() |
| x[:, np.newaxis]; np.expand_dims(x, 1) | x.unsqueeze(1) |
数据选择
| Numpy | PyTorch |
|---|---|
| np.put | |
| x.put | x.put_ |
| x = np.array([1, 2, 3])x.repeat(2) # [1, 1, 2, 2, 3, 3] | x = torch.tensor([1, 2, 3])x.repeat(2) # [1, 2, 3, 1, 2, 3]x.repeat(2).reshape(2, -1).transpose(1, 0).reshape(-1) # [1, 1, 2, 2, 3, 3] |
| np.tile(x, (3, 2)) | x.repeat(3, 2) |
| np.choose | |
| np.sort | sorted, indices = torch.sort(x, [dim]) |
| np.argsort | sorted, indices = torch.sort(x, [dim]) |
| np.nonzero | torch.nonzero |
| np.where | torch.where |
| x[::-1] |
数值计算
| Numpy | PyTorch |
|---|---|
| x.min | x.min |
| x.argmin | x.argmin |
| x.max | x.max |
| x.argmax | x.argmax |
| x.clip | x.clamp |
| x.round | x.round |
| np.floor(x) | torch.floor(x); x.floor() |
| np.ceil(x) | torch.ceil(x); x.ceil() |
| x.trace | x.trace |
| x.sum | x.sum |
| x.cumsum | x.cumsum |
| x.mean | x.mean |
| x.std | x.std |
| x.prod | x.prod |
| x.cumprod | x.cumprod |
| x.all | (x == 1).sum() == x.nelement() |
| x.any | (x == 1).sum() > 0 |
数值比较
| Numpy | PyTorch |
|---|---|
| np.less | x.lt |
| np.less_equal | x.le |
| np.greater | x.gt |
| np.greater_equal | x.ge |
| np.equal | x.eq |
| np.not_equal | x.ne |
pytorch与tensorflow API速查表
| 方法名称 | pytroch | tensorflow | numpy |
|---|---|---|---|
| 裁剪 | torch.clamp(x, min, max) | tf.clip_by_value(x, min, max) | np.clip(x, min, max) |
| 取最小值 | torch.min(x, dim)[0] | tf.min(x, axis) | np.min(x , axis) |
| 取两个tensor的最大值 | torch.max(x, y) | tf.maximum(x, y) | np.maximum(x, y) |
| 取两个tensor的最小值 | torch.min(x, y) | torch.minimum(x, y) | np.minmum(x, y) |
| 取最大值索引 | torch.max(x, dim)[1] | tf.argmax(x, axis) | np.argmax(x, axis) |
| 取最小值索引 | torch.min(x, dim)[1] | tf.argmin(x, axis) | np.argmin(x, axis) |
| 比较(x > y) | torch.gt(x, y) | tf.greater(x, y) | np.greater(x, y) |
| 比较(x < y) | torch.le(x, y) | tf.less(x, y) | np.less(x, y) |
| 比较(x==y) | torch.eq(x, y) | tf.equal(x, y) | np.equal(x, y) |
| 比较(x!=y) | torch.ne(x, y) | tf.not_equal(x, y) | np.not_queal(x , y) |
| 取符合条件值的索引 | torch.nonzero(cond) | tf.where(cond) | np.where(cond) |
| 多个tensor聚合 | torch.cat([x, y], dim) | tf.concat([x,y], axis) | np.concatenate([x,y], axis) |
| 堆叠成一个tensor | torch.stack([x1, x2], dim) | tf.stack([x1, x2], axis) | np.stack([x, y], axis) |
| tensor切成多个tensor | torch.split(x1, split_size_or_sections, dim) | tf.split(x1, num_or_size_splits, axis) | np.split(x1, indices_or_sections, axis) |
| ` | torch.unbind(x1, dim) | tf.unstack(x1,axis) | NULL |
| 随机扰乱 | torch.randperm(n) 1 | tf.random_shuffle(x) | np.random.shuffle(x) 2 np.random.permutation(x ) 3 |
| 前k个值 | torch.topk(x, n, sorted, dim) | tf.nn.top_k(x, n, sorted) | NULL |
- 该方法只能对0~n-1自然数随机扰乱,所以先对索引随机扰乱,然后再根据扰乱后的索引取相应的数据得到扰乱后的数据
- 该方法会修改原值,没有返回值
- 该方法不会修改原值,返回扰乱后的值
numpy(ndarray)和tensor(GPU上的numpy)速查的更多相关文章
- torch.Tensor和numpy.ndarray
1. torch.Tensor和numpy.ndarray相互转换 import torch import numpy as np # <class 'numpy.ndarray'> np ...
- Python中 list, numpy.array, torch.Tensor 格式相互转化
1.1 list 转 numpy ndarray = np.array(list) 1.2 numpy 转 list list = ndarray.tolist() 2.1 list 转 torch. ...
- 解决Tensorflow ValueError: Failed to convert a NumPy array to a Tensor (Unsupported object type numpy.ndarray)
问题描述 在将一个数组送入tensorflow训练时,报错如下: ValueError: Failed to convert a NumPy array to a Tensor (Unsupporte ...
- has invalid type <class 'numpy.ndarray'>, must be a string or Tensor
转自: https://blog.csdn.net/jacke121/article/details/78833922 has invalid type <class 'numpy.ndarra ...
- 关于类型为numpy,TensorFlow.tensor,torch.tensor的shape变化以及相互转化
https://blog.csdn.net/zz2230633069/article/details/82669546 2018年09月12日 22:56:50 一只tobey 阅读数:727 1 ...
- tensorflow2.0 numpy.ndarray 与tenor直接互转
1.代码参考 import numpy as npimport tensorflow as tf a = np.random.random((5,3)) b = np.random.randint(0 ...
- Numpy - 多维数组(上)
一.实验说明 numpy 包为 Python 提供了高性能的向量,矩阵以及高阶数据结构.由于它们是由 C 和 Fortran 实现的,所以在操作向量与矩阵时性能非常优越. 1. 环境登录 无需密码自动 ...
- python中numpy.ndarray.shape的用法
今天用到了shape,就顺便学习一下,这个shape的作用就是要把矩阵进行行列转换,请看下面的几个例子就明白了: >>> import numpy as np >>> ...
- NumPy Ndarray 对象
NumPy Ndarray 对象 NumPy 最重要的一个特点是其 N 维数组对象 ndarray,它是一系列同类型数据的集合,以 0 下标为开始进行集合中元素的索引. ndarray 对象是用于存放 ...
随机推荐
- Java NIO全面详解(看这篇就够了)
很多技术框架都使用NIO技术,学习和掌握Java NIO技术对于高性能.高并发网络的应用是非常关键的@mikechen NIO简介 NIO 中的 N 可以理解为 Non-blocking,不单纯是 N ...
- 275. H 指数 II--Leetcode_暴力
来源:力扣(LeetCode) 链接:https://leetcode.cn/problems/h-index-ii 著作权归领扣网络所有.商业转载请联系官方授权,非商业转载请注明出处. 题目的大意是 ...
- Dart 异步编程(三):详细认识
基本概念 普通任务按照顺序执行:异步任务将在未来的某个时间执行. 实际演示 void main() { // waitFuture 函数是一个异步函数,阻塞会发生在函数内部 waitFuture(); ...
- String vs StringBuffer vs StringBuilder
String vs StringBuffer vs StringBuilder 本文翻译自:https://www.digitalocean.com/community/tutorials/strin ...
- [NOI P模拟赛] 传统艺能(子序列自动机、矩阵乘法,线段树)
(2:00)OID:"完了,蓝屏了!"(代码全消失) 众人欢呼 OID:开机,"原题测试--" (30min later)OID 开始传统艺能: " ...
- Filter(过滤器)、ThreadLocal(本地线程)、Listener(监听器)
Filter(过滤器) Filter过滤器它的作用是:拦截请求,过滤响应. 过滤器链 1)执行的顺序依次是: A B C Demo03 C2 B2 A2 2)如果采取的是注解的方式进行配置,那么过滤器 ...
- 【金九银十必问面试题】站在架构师角度分析问题,如何解决TCC中的悬挂问题
"如何解决TCC中的悬挂问题"! 一个工作了4年的Java程序员,去京东面试,被问到这个问题. 大家好,我是Mic,一个工作了14年的Java程序员 这个问题面试官想考察什么方面的 ...
- LIMIT和OFFSET分页性能差!今天来介绍如何高性能分页
GreatSQL社区原创内容未经授权不得随意使用,转载请联系小编并注明来源. GreatSQL是MySQL的国产分支版本,使用上与MySQL一致. 前言 之前的大多数人分页采用的都是这样: SELEC ...
- EntityFrameworkCore 模型自动更新(上)
话题 嗯,距离上一次写博文已经过去近整整十个月,还是有一些思考,但还是变得懒惰了,心思也不再那么专注,有点耗费时间,学习也有点停滞不前,那就顺其自然,随心所欲吧,等哪天心血来潮,想写了就写写 模型自动 ...
- linux中cd后自动 ls的设置
根据不同的shell设置不太一样.常见的有bash csh两种.可以用echo $SHELL来查询当前是哪一种. bash设置是在用户的home下打开.bashrc在里面加上如下: cd() { bu ...