0

我有一个关于更改网络输出层的问题(AlexNet/GoogleNet/ImageNet)。所以标准输出是一个 1x1000 的向量,所以每个类都有一个值。

我知道我可以将输出更改为例如 5,所以如果我只有 5 个类,我会得到 1x5 向量。

但是如果我没有课怎么办?是否可以将输出更改为 18x18 之类的矩阵。因为我的网络应该输出密度图而不是“类”。是否建议使用预先训练的网络来完成我的任务,还是应该从头开始训练?

谢谢您的帮助 :-)

4

1 回答 1

6

但是如果我没有课怎么办?

“类”的概念与架构并没有真正的联系,而是与损失函数本身有关。换句话说,如果你有 1000 个输出,无论你是想在 1000 个不相交的类中分类、分配 1000 个标签,还是回归 1000 维的实际输出——架构仍然非常有意义。

是否可以将输出更改为像 18x18 这样的矩阵

“天真的”方法是输出 18*18 = 324 个值并将其视为 2-dim 矩阵。但是,2-dim 结构表明可以在架构方面利用一些特征,一个典型特征是平移不变性,它在卷积网络中被利用,如果您的输出也是如此,您可能会考虑反卷积(任何排序,因为有很多)为您的模型。

是否建议为我的任务使用预训练网络?还是我应该从头开始学习?

这不取决于架构,而是任务。如果您的任务与训练给定网络的任务足够相似,则可以使用预训练的任务作为起点,然后对新任务进行“微调”。一般来说,使用预训练网络作为起点是安全的(应该不会比从头开始训练差)。记住要训练整个网络,而不仅仅是添加部分(除非你没有足够的数据来训练整个结构)。

于 2016-12-22T15:40:07.750 回答