【问题标题】:tflearn label encoding with large number of classes具有大量类的 tflearn 标签编码
【发布时间】:2017-04-09 19:07:02
【问题描述】:

我正在尝试调整 Convolutional Neural Net example of tflearn 以使用约 12000 个不同的类标签和超过 100 万个训练示例进行分类。在 one-hot 编码时,标签的数量显然是一个内存消耗问题。我首先将字符串标签映射到连续整数,然后将它们作为列表传递给to_categorical() 函数。以下代码导致 MemoryError:

trainY = to_categorical(trainY, nb_classes=n_classes)

我是否必须像这样对标签进行编码,还是应该使用与交叉熵不同的损失函数?我可以使用 tflearn 进行批量训练 - 我可以将生成器传递给 DNN.fit() 函数吗?

感谢您的建议!

【问题讨论】:

  • 您是否要一次处理所有标签?无需太多更改即可调整该方法,但您将需要批量处理这些图像。一次加载到内存中实在是太多了。

标签: python tflearn


【解决方案1】:

在回归层link,您可以指定输入的标签在运行时应该是 one-hot 编码

tflearn.layers.regression(incoming_net,
                          loss = 'categorical_crossentropy',
                          batch_size = 64,
                          to_one_hot = True,
                          n_classes = 12000)

这样你应该不会有记忆错误,因为标签会在训练时分批编码。

【讨论】:

  • 谢谢,正是我需要的! :-)
猜你喜欢
  • 1970-01-01
  • 2019-12-13
  • 2018-07-14
  • 2016-10-15
  • 2011-03-08
  • 2020-10-30
  • 1970-01-01
  • 2019-09-07
  • 2013-07-13
相关资源
最近更新 更多