【问题标题】:Mapping a list of label with one hot encoding使用一种热编码映射标签列表
【发布时间】:2020-07-02 21:00:10
【问题描述】:

当“标签”是一个列表时,我该如何做同样的事情? 例如:标签 = [2,4,6,1,7...,9]

label = 3
NumClass = 10
NumRows  = 100

mask    =  torch.zeros(100, 64)
ones     =  torch.ones(1, 64)
ElementsPerClass = NumRows//NumClass
mask [ ElementsPerClass*label : ElementsPerClass*(label+1) ] = ones

【问题讨论】:

  • 当标签为list时,您的预期输出是什么?
  • @DishinHGoyani 预期的输出与上面的矩阵相同,但上面适用于 batch_size = 1。我希望它适用于 batch_size = 16,32,.. 在这种情况下,会有上述矩阵的行向量。这里发生的是,100 是内存维度。并且有 10 个类,因此每个类将在内存中获得 10 个插槽。在我上面的代码中,如果你有一个标签值,它会为相应的标签保留这 10 个插槽。我想为一批输入做这个。

标签: python list deep-learning pytorch one-hot-encoding


【解决方案1】:

您正在寻找scatter:

NumRows = len(label)
mask = torch.zeros((NumRoes, NumClass)).scatter_(dim=1, index=torch.tensor(label, dtype=torch.long)[:, None], src=torch.ones(NumRows, 1))

【讨论】:

  • 它不会产生我想要的结果!预期的输出与上面的矩阵相同,但上面适用于 batch_size = 1。我希望它用于批量输入 (16,32,..) 在这种情况下,将有上述矩阵的行向量。这里发生的是,100 是内存维度。并且有 10 个类,因此每个类将在内存中获得 10 个插槽。在我上面的代码中,如果你有一个标签值,它会为相应的标签保留这 10 个插槽。我想为一批输入做这个。
猜你喜欢
  • 1970-01-01
  • 2021-12-17
  • 2018-12-25
  • 2016-10-15
  • 2020-09-25
  • 2018-11-04
  • 2022-06-21
相关资源
最近更新 更多