在 Torch 中,如何从整数标签列表中创建 1-hot 张量?
Posted
技术标签:
【中文标题】在 Torch 中,如何从整数标签列表中创建 1-hot 张量?【英文标题】:In Torch how do I create a 1-hot tensor from a list of integer labels? 【发布时间】:2015-11-07 22:30:36 【问题描述】:我有一个整数类标签的字节张量,例如来自 MNIST 数据集。
1
7
5
[torch.ByteTensor of size 3]
如何使用它来创建 1-hot 向量的张量?
1 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 1 0 0 0
0 0 0 0 1 0 0 0 0 0
[torch.DoubleTensor of size 3x10]
我知道我可以通过循环来做到这一点,但我想知道是否有任何聪明的 Torch 索引可以在一行中为我提供它。
【问题讨论】:
【参考方案1】:indices = torch.LongTensor1,7,5:view(-1,1)
one_hot = torch.zeros(3, 10)
one_hot:scatter(2, indices, 1)
您可以在 torch/torch7 github readme(在 master 分支中)找到 scatter
的文档。
【讨论】:
这是什么语言?我从未见过这种语法【参考方案2】:另一种方法是从单位矩阵中打乱行:
indicies = torch.LongTensor1,7,5
one_hot = torch.eye(10):index(1, indicies)
这不是我的主意,我在 karpathy/char-rnn 找到的。
【讨论】:
以上是关于在 Torch 中,如何从整数标签列表中创建 1-hot 张量?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 nodejs 在 mailchimp 订阅者列表中创建标签?
如何在 python 中创建一个函数,它将整数列表作为输入并输出只有两个值的较小列表?