从一维张量中提取前k个值的索引。
2021-3-12 11:16:34
收藏:0
阅读:80
评论:3
在 Torch ( torch.Tensor ) 中给定一个包含可比较值 (例如浮点数) 的 1-D 张量,我们如何提取该张量中前 k 个值的索引?
除了暴力方法外,我正在寻找一些 Torch/lua 提供的 API 调用,可以高效地执行此任务。
点赞
用户1688185
截至 pull request #496,现在 Torch 包括了一个内置 API,名为 torch.topk。例如:
> t = torch.Tensor{9, 1, 8, 2, 7, 3, 6, 4, 5}
-- 获取 3 个最小的元素
> res = t:topk(3)
> print(res)
1
2
3
[torch.DoubleTensor of size 3]
-- 除此之外,你还可以同时获取索引
> res, ind = t:topk(3)
> print(ind)
2
4
6
[torch.LongTensor of size 3]
-- 或者你也可以获取 k 个最大的元素,方法如下
-- (具体详情请看 API 文档)
> res = t:topk(3, true)
> print(res)
9
8
7
[torch.DoubleTensor of size 3]
目前的 CPU 实现采用了一个排序和筛选的方法(未来计划进行改进)。 话虽如此,目前也正在 审核 一个专门针对 cutorch 优化的 GPU 实现。
2016-01-13 08:57:29
用户3650983
你可以使用topk函数。
例如:
import torch
t = torch.tensor([5.7, 1.4, 9.5, 1.6, 6.1, 4.3])
values,indices = t.topk(2)
print(values)
print(indices)
结果如下:
tensor([9.5000, 6.1000])
tensor([2, 4])
2019-04-22 23:38:32
评论区的留言会收到邮件通知哦~
推荐文章
- 如何将两个不同的lua文件合成一个 东西有点长 大佬请耐心看完 我是小白研究几天了都没搞定
- 如何在roblox studio中1:1导入真实世界的地形?
- 求解,lua_resume的第二次调用继续执行协程问题。
- 【上海普陀区】内向猫网络招募【Skynet游戏框架Lua后端程序员】
- SF爱好求教:如何用lua实现游戏内调用数据库函数实现账号密码注册?
- Lua实现网站后台开发
- LUA错误显式返回,社区常见的规约是怎么样的
- lua5.3下载库失败
- 请问如何实现文本框内容和某个网页搜索框内容连接,并把网页输出来的结果反馈到另外一个文本框上
- lua lanes多线程使用
- 一个kv数据库
- openresty 有没有比较轻量的 docker 镜像
- 想问一下,有大佬用过luacurl吗
- 在Lua执行过程中使用Load函数出现问题
- 为什么 neovim 里没有显示一些特殊字符?
- Lua比较两个表的值(不考虑键的顺序)
- 有个lua简单的项目,外包,有意者加微信 liuheng600456详谈,最好在成都
- 如何在 Visual Studio 2022 中运行 Lua 代码?
- addEventListener 返回 nil Lua
- Lua中获取用户配置主目录的跨平台方法
只需遍历张量并运行比较即可:
require 'torch' data = torch.Tensor({1,2,3,4,505,6,7,8,9,10,11,12}) idx = 1 max = data[1] for i=1,data:size()[1] do if data[i]>max then max=data[i] idx=i end end print(idx,max)--EDIT-- 回复您的编辑:使用torch.max操作,该操作在此处有文档记录:https://github.com/torch/torch7/blob/master/doc/maths.md#torchmaxresval-resind-x-dim ...
y,i = torch.max(x,1)返回x中每列(跨行)的最大元素以及相应的索引张量i