更改AlexNet / GoogleNet / ImageNet的输出层?

时间:2016-12-22 14:12:46

标签: machine-learning computer-vision deep-learning caffe imagenet

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

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

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

感谢您的帮助: - )

1 个答案:

答案 0 :(得分:6)

  

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

" class"的概念并没有真正与架构相关联,而是与损失函数本身相关联。换句话说,如果你有1000个输出,你想要在1000个不相交的类中分类,分配1000个标签,还是在1000维实际输出上回归都没关系 - 架构仍然很有意义。

  

是否可以将输出更改为18x18

等矩阵

"天真"方法是输出18 * 18 = 324个值并将其视为2维矩阵。然而,2-dim结构表明存在一些可以在架构方面利用的特性,一个典型的特性是平移不变性,这在convnet中被利用,如果你的输出也是如此,你可以考虑去卷积(任何排序,因为你的模型很多。

  

是否建议使用预训练网进行我的任务?或者我应该从头学习?

这不取决于架构,而是任务。如果您的任务与训练过的网络相似,那么您可以使用预训练的任务作为起点,然后进行微调"在新的。一般来说,使用预训练网作为起点是一件安全的事情(它不应该比从头开始训练更糟糕)。请记住训练整个网络,而不仅仅是添加部分(除非您没有足够的数据来训练整个结构)。