如何确定卷积神经网络层中使用的要素图的数量?

时间:2015-01-17 23:23:42

标签: machine-learning neural-network conv-neural-network

我一直在Conv Nets上做很多阅读,甚至还有一些使用Julia的Mocha.jl包(看起来很像Caffe,但你可以在Julia REPL中玩它)。

在Conv网中,卷积层后面跟着“要素图”图层。我想知道的是,如何确定网络需要解决某些特定问题的特征映射数量?这有什么科学还是更艺术?我可以看到,如果你试图进行分类,至少最后一层应该有多个特征映射==类的数量(除非你在网络顶部有一个完全连接的MLP,我想)。

在我的情况下,我不是在做分类,而是试图为图像中的每个像素提出一个值(我想这可以看作是一个类,其中类从0到255)。

编辑:正如评论中指出的那样,我正在尝试解决回归问题,其中输出的范围是0到255(在这种情况下是灰度)。但问题仍然存在:如何确定在任何给定卷积层中使用多少个要素图?对于回归问题与分类问题,这是否有所不同?

2 个答案:

答案 0 :(得分:4)

基本上,与任何其他超参数一样 - 通过在单独的开发集上评估结果并找到最佳编号。还值得检查处理类似问题的出版物并查找他们使用的特征图的数量。

答案 1 :(得分:1)

更多艺术。使用conv-nets的imagenet获胜者之间的唯一区别是改变了层的结构,也许还有一些新颖的培训方式。

VGG是一个很好的例子。从过滤器大小开始,以2 ^ 7开始,然后是2 ^ 8,然后是2 ^ 9,接着是完全连接的层,然后是输出层,它将为您提供类。您的地图和图层深度可能与输出类的数量完全无关。

您不希望顶部有完全连接的图层。这种方法破坏了卷积网设计解决的目的(过度拟合和优化每个神经元数十万个权重)

对大集的培训需要一些繁重的计算资源。如果您正在使用imagenet - 那么您可以在http://caffe.berkeleyvision.org/model_zoo.html

之上构建一组带有caffe的预训练模型

我不确定你是否可以将这些移植到mocha。如果您对https://github.com/ethereon/caffe-tensorflow

感兴趣,可以使用端口进行张量调整