Согласованность размера фильтра - PullRequest
0 голосов
/ 15 марта 2020

Я использую 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

В настоящее время, когда модель решает, сколько контуров включить, она изменит размер фильтра между ними. Вместо этого я хотел бы, чтобы он просматривал циклы, чтобы увидеть, сколько слоев он выбирает, и количество фильтров остается неизменным.

Например, то, что делает в настоящее время, выберет количество слоев, давайте скажем, 2 и размер фильтра для этих двух слоев будет отличаться. Мне бы хотелось, чтобы размер фильтра для этих слоев был одинаковым.

...