torch / lua: 从张量中检索 n-best 子集
2017-7-30 9:44:38
收藏:0
阅读:134
评论:1
现在有以下代码,它存储了 pred 中每个问题最高分数的索引,并将其转换为字符串。
我想为每个问题的 n-best 索引执行相同的操作,而不仅仅是单个具有最高分数的索引,并将它们转换为字符串。我还想显示每个索引(或每个转换后的字符串)的分数。
所以必须对 scores 进行排序,将 pred 更改为多行/列,而不是 1 x nqs。并且必须能够检索出 pred 中每个条目的相应 score 值。
我对 lua/torch 语法毫无头绪,非常感谢任何帮助。
nqs=dataset['question']:size(1);
scores=torch.Tensor(nqs,noutput);
qids=torch.LongTensor(nqs);
for i=1,nqs,batch_size do
xlua.progress(i, nqs)
r=math.min(i+batch_size-1,nqs);
scores[{{i,r},{}}],qids[{{i,r}}]=forward(i,r);
end
tmp,pred=torch.max(scores,2);
answer=json_file['ix_to_ans'][tostring(pred[{i,1}])]
print(answer)
点赞
评论区的留言会收到邮件通知哦~
推荐文章
- Lua 虚拟机加密load(string.dump(function)) 后执行失败问题如何解决
- 我想创建一个 Nginx 规则,禁止访问
- 如何将两个不同的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 代码?

以下是我的尝试,在一个简单的随机
scores张量中演示它的行为:> scores=torch.floor(torch.rand(4,10)*100) > =scores 9 1 90 12 62 1 62 86 46 27 7 4 7 4 71 99 33 48 98 63 82 5 73 84 61 92 81 99 65 9 33 93 64 77 36 68 89 44 19 25 [torch.DoubleTensor of size 4x10]现在,因为您想要每个问题(行)的“N”个最佳索引,让我们对张量的每一行进行排序:
> values,indexes=scores:sort(2)现在,让我们看看返回的张量包含什么内容:
> =values 1 1 9 12 27 46 62 62 86 90 4 4 7 7 33 48 63 71 98 99 5 9 61 65 73 81 82 84 92 99 19 25 33 36 44 64 68 77 89 93 [torch.DoubleTensor of size 4x10] > =indexes 2 6 1 4 10 9 5 7 8 3 2 4 1 3 7 8 10 5 9 6 2 10 5 9 3 7 1 4 6 8 9 10 1 5 8 3 6 4 7 2 [torch.LongTensor of size 4x10]正如您所看到的,values的第i行是scores的第i行的排序版本(按递增顺序排列),indexes中的每一行都会给您相应的索引。
你可以得到每个问题(即行)的N个最佳值/索引
> N_best_indexes=indexes[{{},{indexes:size(2)-N+1,indexes:size(2)}}] > N_best_values=values[{{},{values:size(2)-N+1,values:size(2)}}]让我们看看对于给定的示例,N=3时它们的值:
> return N_best_indexes 7 8 3 5 9 6 4 6 8 4 7 2 [torch.LongTensor of size 4x3] > return N_best_values 62 86 90 71 98 99 84 92 99 77 89 93 [torch.DoubleTensor of size 4x3]因此,第j个问题的第k个最佳值为
N_best_values[{{j},{values:size(2)-k+1}}],并且它在scores矩阵中的相应索引由此行,列值给出:例如,第二个问题的第一个最佳值(
k=1)为99,它在scores的第2行和第6列。您可以看到,values[{{2},values:size(2)}}]是99,而indexes[{{2},{indexes:size(2)}}]会给出相应的列索引6。希望我解释了我的解决方案。