假设我已经训练了一个神经网络,用于使用 MNIST 数据集对数字进行分类。如果我也想能够识别字符“A”,我可以以某种方式利用已经训练好的神经网络吗?新模型最终应该能够区分:“0-1-2-3-4-5-6-7-8-9-A”
我猜我需要更改神经网络,以便它在输出层中容纳额外的可能输出。
我在想也许我可以使用初始模型中获得的权重作为新模型中相应权重的起始值。这有什么用吗?或者我从头开始一个新模型会更好吗?
我知道 Mnist 并不是一个真正大的数据集,重新开始也没什么大不了的,但我认为这个问题仍然很有趣,并且在处理更大的数据集或更复杂的系统时会变得更加相关。
谢谢!
这个过程称为微调 为此,您需要:
fc
,它是与out_size == amount_of_classes
完全连接的层,您需要用您自己的层替换这个fc层(在您的示例中它将是具有11个输出的层)。layer.params.requires_grad = False
一般来说,微调是非常流行的做法,它有助于减少在装配上花费的时间