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层中没有变化,但仍在第1层中?
为什么将第二层过滤器更改为64?设置号码的规则是什么?
为什么密集神经元是512个?不是1024?设置号码有什么规则?
谢谢
答案 0 :(得分:2)
为什么第一层过滤器中的值为32,而在第二层中没有变化,但仍在第一层中?
过滤器的数量可以是任意数量。这只是在该层中拥有更多内核的问题。每个过滤器在输入的所有通道上进行单独的卷积。因此32个滤镜会在输入的所有 RGB通道上进行32个单独的卷积。
为什么将第二层过滤器更改为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)
导致(batch_size, 512)
层的输出大小为Dense
。
注意:要设置这些参数,最好的方法是对数据集进行超参数优化。
编辑:分别卷积是什么意思
因此,过滤器将在此处代表一种颜色。这是用于一维卷积(使用padding='valid'
)。但是你明白了。它们是随机初始化的单独过滤器。随着时间的流逝,他们学习各种过滤器。