我正在尝试调整 Convolutional Neural Net example of tflearn使用约 12000 个不同的类标签和超过 100 万个训练示例进行分类。在对标签进行一次性编码时,标签的数量显然是内存消耗的一个问题。我首先将字符串标签映射到连续整数,然后将它们作为列表传递给 to_categorical()
函数。以下代码会导致 MemoryError:
trainY = to_categorical(trainY, nb_classes=n_classes)
我是否必须像这样对标签进行编码,或者我应该使用与交叉熵不同的损失函数?我可以使用 tflearn 进行批量训练 - 我可以将生成器传递给 DNN.fit()
函数吗?
感谢您的建议!
最佳答案
在回归层link ,您可以指定输入的标签应在运行时进行 one-hot 编码
tflearn.layers.regression(incoming_net,
loss = 'categorical_crossentropy',
batch_size = 64,
to_one_hot = True,
n_classes = 12000)
这样你就不应该出现内存错误,因为标签在训练时会分批编码。
关于python - 具有大量类别的 tflearn 标签编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43279331/