【问题标题】:Change parameters in Convolution neural network改变卷积神经网络中的参数
【发布时间】:2017-08-22 09:07:18
【问题描述】:

我正在练习 CNN。我阅读了一些关于使用 CNNs 训练 MNIST 数据集的论文。图像大小为 28x28 并使用 5 层架构:输入>conv1-maxpool1>conv2-maxpool2>fully connected>output

Convolutional Layer #1
- Computes 32 features using a 5x5 filter with ReLU activation.
- Padding is added to preserve width and height.
- Input Tensor Shape: [batch_size, 28, 28, 1]
- Output Tensor Shape: [batch_size, 28, 28, 32] 
Pooling Layer #1
- First max pooling layer with a 2x2 filter and stride of 2
- Input Tensor Shape: [batch_size, 28, 28, 32]
- Output Tensor Shape: [batch_size, 14, 14, 32] 
Convolutional Layer #2
- Computes 64 features using a 5x5 filter.
- Padding is added to preserve width and height.
- Input Tensor Shape: [batch_size, 14, 14, 32]
- Output Tensor Shape: [batch_size, 14, 14, 64] 
Pooling Layer #2
- Second max pooling layer with a 2x2 filter and stride of 2
- Input Tensor Shape: [batch_size, 14, 14, 64]
- Output Tensor Shape: [batch_size, 7, 7, 64] 
Flatten tensor into a batch of vectors
- Input Tensor Shape: [batch_size, 7, 7, 64]
- Output Tensor Shape: [batch_size, 7 * 7 * 64] 
Fully Connected Layer
- Densely connected layer with 1024 neurons
- Input Tensor Shape: [batch_size, 7 * 7 * 64]
- Output Tensor Shape: [batch_size, 1024] Output layer
- Input Tensor Shape: [batch_size, 1024]
- Output Tensor Shape: [batch_size, 10]

在 conv1 中,1 个输入使用 5x5 滤波器计算 32 个特征,而在 conv2 中,来自 conv1 的 32 个输入使用相同的滤波器计算 64 个特征。 32、64、2x2滤波器等参数是根据什么选择的?它们是否基于图像的大小?

如果图像尺寸大于 28x28,例如 128x128。我应该将层数增加到 5 层以上吗?上述参数如何随其他尺寸的图片变化?

提前感谢

【问题讨论】:

    标签: python tensorflow deep-learning convolution


    【解决方案1】:

    在其基础级别,这些输入称为超参数,通常不由任何特定的规则集定义。也就是说,我们通常使用经验法则(启发式)来选择一组超参数,然后使用超参数优化来提高性能或效率等。

    对此的一个很好的解释是Here

    编辑: 本文中的更多信息 - 这是一个广泛研究的问题,请查看 Arxiv 和 Stats.Stackexchange 以获取更多信息,但这是我在学习时使用的一篇很棒的论文Here

    【讨论】:

    • 看了你的论文后,我还没有明白如何选择一组超参数并改变它们。你能解释清楚或有任何文件详细说明它们吗?
    【解决方案2】:

    32、64、2x2过滤器等参数是根据什么选择的?他们是否 基于图像的大小?

    您提到的参数(32,64,2x2)是卷积层的过滤器数量和过滤器大小。它们是您在训练模型时可以选择和调整的超参数。根据您的数据集、应用程序和模型性能,您可以控制它们。

    对于许多过滤器,您可以使用它来控制模型学习的特征数量。在您的模型中,在 maxpooling 层之后,您的过滤器数量从 32 增加到 64。具有 2x2 过滤器的 Maxpooling 层会将特征数量减少一半。并且通过将过滤器数量增加一倍,它将保持模型中相同数量的特征。按照惯例,在 2x2 最大池化层之后,过滤器数量会因此翻倍。

    对于filter size,如果是maxpooling layer,会决定feature reduction的大小。如果是卷积层,它将决定输入图像的学习细节。例如,如果您尝试使用小像素或特征来区分对象的图像,您可以选择较小的过滤器尺寸,例如 3x3 或 5x5。对于大尺寸过滤器,反之亦然。

    理解这些超参数的一种方法是了解它们如何影响模型的学习,并且您将知道如何根据每种情况控制它们。另一种方法是查看这些是如何为其他人使用的模型设置的。您可能会发现一些约定,例如在 maxpooling 层之后过滤器数量增加。

    如果图像尺寸大于 28x28,例如 128x128。我是不是该 增加层数超过 5 层?以上参数如何 换成其他尺寸的图片?

    关于层,拥有更多层将使您的模型更深,并会产生更多参数。这意味着您的模型将变得更加复杂,并且能够了解更多有关图像特征的信息。因此,拥有一个深度架构可以有利于学习具有大分辨率的图像。因为大分辨率意味着有很多特征需要学习。但是,这也取决于具体情况。解决此问题的好方法是从具有少量层的简单模型开始,然后逐渐增加层数,同时对模型有益。

    【讨论】:

      猜你喜欢
      • 2020-08-21
      • 2017-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-08-23
      • 1970-01-01
      • 1970-01-01
      • 2020-11-01
      相关资源
      最近更新 更多