在 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 中创建一个函数,它将整数列表作为输入并输出只有两个值的较小列表?

如何在 obiee 中创建词/标签云

从具有大量标签的 Pandas 数据框中创建 TensorFlow 数据集?

在 Python 中创建具有重复值的整数列表