如何向神经网络添加更多输出?

问题描述 投票:0回答:1

当然,没有人制作用于图像识别和分类的神经网络可以为所有可能的图像输出做好准备。所以,如果我创建一个神经网络,它接受数组输入并将输出作为鸟而不是鸟。在完成第一个网络学习后,我可以为更多图像添加更多输出,否则会使学习消失。

所以我添加了固定的输入数字和1个输出然后我再添加1个,还有1个适用或不适用?

machine-learning neural-network computer-vision artificial-intelligence conv-neural-network
1个回答
2
投票

Retrain

如果你可以花费资源,重新训练(或者更具体地说:从头开始训练)你的网络将是一件好事。但是,当您可能获得更好的(或者至少成本更低)时,请阅读以下方法。

Transfer-learning

但是,如果你正在使用一个非常受欢迎的NN,它需要花费数周的时间来训练(非常昂贵的)硬件,那么可能会有一种方式触及转移学习的想法。

那么至少有两种不同的方法:

Using the pretrained NN as feature-extractor

在这里,您将删除最终的密集层,并使用经过训练的NN从图像中提取一些特征。然后,您可以在新数据集上构建一些任意新的分类器,该分类器映射OLD-NN-OUTPUT = FEATURES-INPUT - >类(新的softmax-NN或SVM / Kernel-SVM或其他任何东西)。如果我们假设您的预训练NN质量很高而且您的新班级与学过的班级没有太大差别,那么这听起来非常强大。

通常,如果您的新类+数据集很小并且与原始类相似,则此方法可能会有利。

如果新数据不相似,可以在某些早期层使用某些功能(更通用)。

Continuing training

在这里,您将继续训练原始NN的权重,可能保留第一层(甚至可能是最后的密集层)。如上所述,一般的想法是我们假设一个好的NN在第一层非常通用(=提取特征),在最后一层更具体。

如果您为新班级获得了大量数据,这种方法应该是有利的。根据相似性,您可以继续重新训练所有权重,或者如果非常相似,则修复一些图层权重(第一个)。

这里可能存在技术问题如何实现这种方法(如不同的图像大小输入和其他东西)。因此,如果原始NN的某些约束被破坏,则需要一些工作。调整学习的超参数也很重要(也许学习率应该更低!)。

© www.soinside.com 2019 - 2024. All rights reserved.