如何解决从最优超参数的字典项中创建一个列表
我正在使用 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'))
解决方法
如果顺序很重要,则在列表中添加一个元素
output = {..data}
for i in output:
if 'num_filter' in i:
my_layers.append([i,output.get(i)])
elif 'dropout' in i:
drops.append([i,output.get(i)])
my_layers.sort()
drops.sort()
for j in range(len(my_layers)):
my_layers[j] = my_layers[j][1]
for k in range(len(drops)):
drops[k] = drops[k][1]
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。