如何使用神经网络进行大量类别的分类?

问题描述

是否有我可以使用大量类对数据进行分类的技术(我使用的是 pytorch)?

我注意到,如果我尝试构建一个多层感知器网络,我会在 GPU 上耗尽内存,因为最后一层肯定有太多神经元,即使我的 GPU 有 24Gb 的内存。我有大约 3000 节课。

有什么方法或技术可以处理这种情况吗?

请注意,我不是在征求关于哪种技术更好的意见。我要求提供可以在这种情况下使用的技术的客观列表。这可以以基于事实的方式回答,并在需要时包括引文等。

解决方法

您可以尝试遵循的一种棘手方法是将模型分成两个子 nn.Module。您将第一个发送到 GPU 并保留最后一层,即 CPU 中的分类器。这样做您会损失一些训练速度和整体性能,但您将能够处理 MLP 中的这一巨大层。

然而,拥有如此多的类并不常见,您是在做一些计算机视觉或 NLP 任务吗?如果是这样,您可以使用一些特定于任务的网络类型,例如 CNN 或 LSTM,它们在处理更有效的参数数量时表现更好(例如,在 CNN 中使用池化层)。如果您必须使用 MLP,请尝试降低倒数第二层的维数。