我正在使用optuna框架为我的预期CNN
网络选择最佳参数,包括层数、层中的过滤器、优化器等。我可以确认我的最佳参数是一个包含以下内容的字典:
study = optuna.create_study()
study.optimize(objective, n_trials=100)
print(study.best_params)
{'num_layer': 4,
'mid_units': 200.0,
'num_filter_0': 96.0,
'num_filter_1': 128.0,
'num_filter_2': 112.0,
'num_filter_3': 128.0,
'dropout_rate0': 0.39590554209376033,
'dropout_rate1': 0.3261331226010852,
'optimizer': 'sgd'}
然后,我如何形成一个包含层数、退出等的列表study.best_params
,例如:
my_layers = [96, 128, 112, 128]
drops = [0.39590554209376033,0.3261331226010852]
目标是访问这些值并创建我的网络架构,类似于:
model = Sequential()
model.add(Conv2D(my_layers[0], kernel_size=...))
model.add(Conv2D(my_layers[1], ...))
model.add(Conv2D(my_layers[2], ...))
...
model.add(MaxPooling2D(pool_size=(1, 2)))
model.add(Dropout(dropout_rate[0]))
model.add(Flatten())
model.add(Dense(mid_units))
model.add(Dropout(dropout_rate[1]))
model.add(Dense(num_classes, activation='softmax'))