如何确定在卷积神经网络层中使用的特征图的数量?

How to determine the number of feature maps to use in a convolutional neural network layer?

我一直在阅读有关 Conv Nets 的大量书籍,甚至还使用过 Julia 的 Mocha.jl 包(它看起来很像 Caffe,但您可以在 Julia REPL 中使用它)。

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

在我的例子中,我并没有做分类,而是试图为图像中的每个像素得出一个值(我想这可以看作是 类 是的分类从 0 到 255)。

编辑:正如评论中指出的那样,我正在尝试解决输出范围为 0 到 255(在本例中为灰度)的回归问题。尽管如此,问题仍然存在:如何确定在任何给定的卷积层使用多少特征图?这对于回归问题和分类问题有什么不同吗?

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

更多艺术。使用 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