【发布时间】:2019-10-04 12:15:50
【问题描述】:
我不熟悉使用 ray.tune。我已经以模块化格式编写了我的网络,现在我正在尝试合并 ray.tune,但我不知道在哪里初始化模型(与更新扰动的超参数相比),这样模型和权重就不会重新初始化当工人被截断并被表现更好的工人取代时。
背景
我正在使用 ray.tune 的 PBT 调度程序,它创建 num_samples 个模型(工作人员),每个模型(工作人员)都使用一组不同的采样超参数进行初始化。当一个模型被评估时,如果它表现不佳,它将被停止并加载一个表现最好的工人的检查点。一旦加载(这是网络的深层副本),超参数就会受到扰动,然后它会一直训练到下一次评估。
MyTrainable 类应该具有 _setup、_train、_save 和 _restore 函数。设置需要一个配置变量,这是实现新采样的超参数的地方。
我的问题是应该在哪里定义原始模型?我可以轻松地实现本节中更新的 HP。但是我在文档中没有看到可以将预定义模型传递给 ray.tune.run 函数的任何地方。但是,如果我将 create_model() 函数保留在 _setup() 中,它将消除先前训练的权重,这是此方法的好处的一部分。
代码
这是我拥有的 3 个功能:
self._hyperparameters(config) # redefines the self.opt options accoring to the new perturbations
self.model.update_optimizer(self.opt) # redefines the optimizers using the new learning rates and the beta values for Adam
self.model = create_model(self.opt) # Original function that defines the initial model and initializes the weights
【问题讨论】:
标签: python pytorch hyperparameters ray