我正在使用Keras和Keras Tuner构建CNN。目前,我正在使用此代码...
#Model with
def build_model(hp):
model = keras.Sequential()
#First BLOCK
model.add(keras.layers.Conv2D(filters=hp.Choice('conv_1_filter',
values=[32,64,128,256,512]),
kernel_size=hp.Choice('conv_1_kernel', values=[3,5]),
padding = 'same',
activation = 'relu',
input_shape=(224,224,3)))
for i in range(hp.Int('num_layers_1', 1, 3)):
model.add(keras.layers.Conv2D(filters=hp.Choice('conv_block1_filters_' + str(i),
values=[32,64,128,256,512]),
kernel_size=hp.Choice('con_block1_kernel_' + str(i),
values=[3,5]),
padding = 'same',
activation = 'relu'))
model.add(keras.layers.MaxPool2D(pool_size=(2,2),strides=(2,2)))
#CLASSIFIER
model.add(keras.layers.Flatten())
model.add(keras.layers.Dense(2048, activation = 'relu'))
model.add(keras.layers.Dense(7, activation = 'softmax'))
model.compile(optimizer=keras.optimizers.Adam(hp.Choice('learning_rate',
values=[1e-2, 1e-3, 1e-4])),
loss='categorical_crossentropy',
metrics=['accuracy'])
return model
当前,当模型决定要包含多少个conv层时,它将更改它们之间的过滤器大小。相反,我想做的是遍历整个循环以查看选择的层数以保持过滤器数量一致。
例如,当前正在执行的操作将选择层数,例如2,这两个层的过滤器大小将不同。我希望这些图层的过滤器大小相同。