将keras-tuner的结果保存为pandas Dataframe。

3
有没有可能将keras-tuner的结果保存为Dataframe?我只能找到像result_summary()这样的打印函数,但是我无法访问打印出来的内容。下面的示例都打印出None,而result_summary()仍然打印出最佳结果。看起来我必须通过遍历保存的文件来访问试验结果。我希望能够得到一个像result_summary()打印的准备好的表格。
      optimizer = keras_tuner.BayesianOptimization(
            hypermodel=build_model,
            objective='val_loss',
            max_trials=5,
           # num_initial_points=2,
           # alpha=0.0001,
           # beta=2.6,
            seed=1,
            hyperparameters=None,
            tune_new_entries=True,
            allow_new_entries=True
            #,min_trials=3
        )
        search = optimizer.search(x=train_X, y=train_Y,
                         epochs=epochs, validation_data=(test_X, test_Y))
        results = optimizer.results_summary(num_trials=10)
        print(results)
        print(search)


results = tuner.results_summary()pd.DataFrame(results) 不起作用吗? - Vitali Avagyan
@ReinholdN,我不是提问者! - Vitali Avagyan
1
抱歉,伙计 @VitaliAvagyan。 - ReinholdN
@Enes,你需要创建一个最小的示例,以便有人能够在这里帮助你。Pandas数据框架使用字典格式进行创建,在这种情况下,你的keras-tuner将需要首先转换为字典,然后再转换为pandas df。 - ReinholdN
@Enes,如果没有数据集,我无法复制您的代码。只需提供结果的打印,我就能为您解决问题。 - ReinholdN
显示剩余2条评论
1个回答

4
如果您不需要使用超参数存储“得分”,那么这应该可以实现您想要的功能。
您需要获取超参数(HPs)。HPs 存储在 hp.get_config() 下的 ["values"] 键中。您可以收集一个包含 HPs 的字典列表,并将其转换为 DataFrame,然后将其转换为 csv 文件。
best_hps = optimizer.get_best_hyperparameters(num_trials=max_trials)
HP_list = []
for hp in best_hps:
    HP_list.append(hp.get_config()["values"])
HP_df = pd.DataFrame(HP_list)
HP_df.to_csv("name.csv", index=False, na_rep='NaN')

如果您希望保存分数,需要进行试验并将超参数字典与其分数连接起来,代码如下:
trials = optimizer.oracle.get_best_trials(num_trials=max_trials)
HP_list = []
for trial in trials:
    HP_list.append(trial.hyperparameters.get_config()["values"] | {"Score": trial.score})
HP_df = pd.DataFrame(HP_list)
HP_df.to_csv("name.csv", index=False, na_rep='NaN')

我在最后还访问了Oracle对象。 - Enes

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接