【问题标题】:Why Conv2D has different number of filters in each layer为什么 Conv2D 在每一层有不同数量的过滤器
【发布时间】:2020-03-31 22:36:36
【问题描述】:

向这个Keras document example学习

model = Sequential()
model.add(Conv2D(32, (3, 3), padding='same',    # why filter is 32?
                 input_shape=x_train.shape[1:]))
model.add(Activation('relu'))
model.add(Conv2D(32, (3, 3)))      # why filter is not changed?
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.25))

model.add(Conv2D(64, (3, 3), padding='same'))     # why filter is changed to 64?
model.add(Activation('relu'))
model.add(Conv2D(64, (3, 3)))
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.25))

model.add(Flatten())
model.add(Dense(512))     # why Dense neurons is 512? not 1024? what's the rule to set the number?

这是我的问题:

  1. 为什么第一层过滤器是32,第二层没有改变,但仍然在第一层?

  2. 为什么在第 2 层过滤器改为 64?设置号码的规则是什么?

  3. 为什么密集神经元是 512?不是1024?设置数字的规则是什么?

【问题讨论】:

  • 这个链接真的很有帮助:pyimagesearch.com/2018/12/31/…。讨论了何时使用大量过滤器以及何时使用少量过滤器。
  • 谢谢@aminrd 我现在去看看

标签: tensorflow machine-learning keras deep-learning conv-neural-network


【解决方案1】:

为什么第一层过滤器是32,第二层没有改变,但仍然在第一层?

过滤器的数量可以是任意数量。这只是在该层中有更多内核的问题。每个过滤器对输入的所有通道进行单独的卷积。因此,32 个过滤器对输入的所有 RGB 通道进行了 32 个单独的卷积。

为什么在第 2 层过滤器改为 64?设置号码的规则是什么?

再次遵循第一个答案,每层上的过滤器数量可以是任何值。例如,第二层有 64 个过滤器,对第一层输出的 所有 32 个通道进行 64 个单独的卷积。

为什么密集神经元是 512?不是1024?设置数字的规则是什么?

再次,密集层可以有任意数量的神经元。例如,您有一个64x64x3 RGB 输入,您的最后一个卷积输出将产生(batch_size, 16, 16, 64)(假设padding='same' 和最大池层上的(2,2) 步幅)输出。

经过Flatten() 层后,这将成为(batch_size, 16*16*64) 输出。然后将其转换为密集层的输入并产生(batch_size, 512) 输出(因为Dense 层有512 个神经元)。确切地说,Dense 层执行以下矩阵乘法。 (batch_size, 16*16*64) x (16*16*64, 512) 会导致来自 Dense 层的 (batch_size, 512) 大小的输出。

注意:要设置这些参数,最好的方法是根据您的数据集进行超参数优化。

编辑:分离卷积是什么意思

所以过滤器在这里代表一种颜色。这是用于一维卷积(使用padding='valid')。但你明白了。它们是随机初始化的单独过滤器。随着时间的推移,他们会学习各种过滤器。

【讨论】:

  • 解释得很漂亮,谢谢。您能否添加有关“32 个分离卷积”的解释?据我了解,当进行卷积计算时,我们有一个内核,例如3 x 3 数组,我们使用该 ONE 内核进行计算。现在,通过说“32 个单独的卷积”,您的意思是一次又一次地使用相同的内核 32 次以产生相同的 32 个结果吗?为什么我们要这样做呢?如果不是 32 个相同的内核,那么这 32 个内核是什么?他们来自哪里?
  • @Franva 编辑了我的答案。所以说清楚,它们是不一样的。因为拥有相同的内核不会获得任何价值。在卷积网络中,这些过滤器是随机初始化的。所以每个过滤器都会学习独特的特征。
  • 很好的例子~!谢谢~!那么我可以使用 17 作为第一层过滤器,使用 27 作为第二层过滤器的数量吗?如果不是,为什么?
  • @Franva。是的,当然可以是任意数字。但正如我所说,如果可能,请进行超参数优化并找到最佳过滤器数量。但这只是为了提高性能。
  • 这些链接可能会对您有所帮助link 1link 2link 3
猜你喜欢
  • 1970-01-01
  • 2018-02-23
  • 2019-07-09
  • 1970-01-01
  • 2018-09-23
  • 2020-06-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多