Python 3.x TensorBoard Keras调谐器试验目录的命名

Python 3.x TensorBoard Keras调谐器试验目录的命名,python-3.x,tensorflow,keras,tensorboard,keras-tuner,Python 3.x,Tensorflow,Keras,Tensorboard,Keras Tuner,我使用Kerastuner的BayesianOptimization来搜索模型的最佳超参数,我还使用TensorBoard回调来可视化每个模型/试验的性能 然而,来自调谐器的试验命名/标签怪异(例如试验\u 1dc483863f2e4e8a84f0e415ee1db33)。有没有办法让调谐器仅将试用命名为“试用版1”、“试用版2”等。?而不是后面所有的数字和字母 我在Keras文档中找不到如何做,或者在创建调谐器实例时是否有参数支持它。我可以通过覆盖BayesianOptimization和Ba

我使用
Keras
tuner的
BayesianOptimization
来搜索模型的最佳超参数,我还使用
TensorBoard
回调来可视化每个模型/试验的性能

然而,来自调谐器的试验命名/标签怪异(例如试验\u 1dc483863f2e4e8a84f0e415ee1db33)。有没有办法让调谐器仅将试用命名为“试用版1”、“试用版2”等。?而不是后面所有的数字和字母


我在
Keras
文档中找不到如何做,或者在创建调谐器实例时是否有参数支持它。

我可以通过覆盖
BayesianOptimization
BayesianOptimizationOracle
类来解决这个问题。它只是将每个试验命名为“0”、“1”、“2”等

但如果这更灵活,那就更好了,因为我可能会为其他超调方法做这件事。还有

来自kerastuner.engine导入试验作为试验库
从kerastuner.tuner导入贝叶斯优化
从kerastuner.tuners.bayesian导入\
贝叶斯优化
类CustomBayesianOptimizationOracle(BayesianOptimizationOracle):
定义初始化(自我,
客观的
最高法院审判,
num_initial_points=无,
α=1e-4,
β=2.6,
种子=无,
超参数=无,
允许新项目=真,
tune_new_entries=True):
超级(自定义BayesianOptimizationOracle,self)。\uu init__(
客观的,
最大试验=最大试验,
num_initial_points=num_initial_points,
α=α,
β=β,
种子=种子,
超参数=超参数,
tune_new_entries=tune_new_entries,
允许新项目=允许新项目)
self.trial\u id='0'
def create_试用版(自身、调谐器id):
“”“创建要由“调谐器”运行的新“试用版”。”。
“试用”对应于要运行的一组唯一超参数
通过“Tuner.run\u试用版”。
Args:
调谐器标识:标识请求调谐器的“调谐器”的标识
`试用版`.`tuner`应该运行相同的试用版(例如,
当运行多工作模型时,应具有相同的ID。
返回:
包含一组要运行的超参数值的“试用”对象
在“调谐器”中。
"""
#允许在一次试验中采用多人分配策略。
如果调谐器id在self.consuming\u试用中:
返回自我。正在进行的测试[tuner\u id]
如果self.max\u试验和len(self.trials)>=self.max\u试验:
status=试用版_lib.TrialStatus.STOPPED
值=无
其他:
响应=self.\u填充空间(self.trial\u id)
状态=响应['status']
values=响应['values']如果响应中的'values'没有
hyperparameters=self.hyperparameters.copy()
hyperparameters.values=值或{}
审判(
超参数=超参数,
试用id=自我试用id,
状态=状态)
如果status==trial_lib.TrialStatus.RUNNING:
self.congressing_trials[tuner_id]=试用
self.trials[self.trial\u id]=试用
自我保存试验(试验)
self.save()
self.trial\u id=str(int(self.trial\u id)+1)
复试
类自定义贝叶斯优化(贝叶斯优化):
定义初始化(自我,
超级模型,
客观的
最高法院审判,
初始点数=2,
种子=无,
超参数=无,
tune_new_entries=True,
允许新项目=真,
**kwargs):
oracle=自定义贝叶斯优化oracle(
客观的,
最大试验=最大试验,
num_initial_points=num_initial_points,
种子=种子,
超参数=超参数,
tune_new_entries=tune_new_entries,
允许新项目=允许新项目)
超级(贝叶斯优化,自).\u初始化__(
甲骨文,
超模型=超模型,
**kwargs)

我本想试着走那条路,但想再检查一下是否有一条简单的路。还是很有帮助的,谢谢!但是为什么要创建自定义类,不能编辑现有的类吗?我假设您现在需要调用“CustomBayesianOptimization”作为您的调谐器类,对吗?我不想修改已安装的软件包,这通常不是一个好主意,如果您编辑现有软件包的意思是这样的话。是的,我正在调用自定义类。