由于我的内存不足以一次性从头开始训练包含2000个类别的模型,因此我想知道是否可以使用200个神经元的输出层,先用这200个类别训练模型并保存权重,然后加载这些权重,再用另外200个不同的类别继续训练,直到用完所有2000个类别为止。
请注意,这个数据集是用来预训练模型的,以便之后用另一个更小的数据集重新训练模型。因此,我的目标是用这个大型数据集预训练模型,然后更换输出层,并用一个更小的数据集重新训练模型的最后几层。
这种训练方式能否在隐藏层上获得与一次性用2000个类别训练模型相同的权重?
回答:
不会。你的权重会有所不同。这种方法只在训练线性模型时有效,而对神经网络则无效。
我觉得问题出在输出数量从200增加到2000,这导致最终层的内存使用增加了10倍,但这本来就不应该是一个很大的数字。可能是你倒数第二层的隐藏层太大了?即使你前一层也有2000个神经元,这也只会产生一个2000×2000的矩阵,约400万个浮点数,仅占用16兆字节的内存。