2

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

trainY = to_categorical(trainY, nb_classes=n_classes)

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

感谢您的任何建议!

4

1 回答 1

2

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

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

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

于 2017-04-09T11:07:02.310 回答