Press "Enter" to skip to content

使用Hydra跟踪您的实验

(作者: 图片)

通过使用YAML文件配置超参数来加快研究速度!

介绍

与第一次尝试编写不含错误的代码一样,第一次尝试训练出正确的模型也是不可能的。

有一些在机器学习和深度学习领域有经验的人都知道,你经常需要花费很多时间选择模型的正确超参数。这些超参数例如学习率、批量大小和输出中的类数,但这些只是一些最常见的超参数,一个项目可能有上百个这样的参数。

通过改变超参数,我们可以得到不同的结果(更好或更差),而在某个时刻,跟踪所有已经进行的测试变得非常困难。

我过去做的事情是:我习惯手动将所有这些超参数写在Excel表格中,并在旁边写下每个实验的结果,例如损失值。后来,我“进化”了,开始为超参数编写配置文件,其中放入我想要测试的各种值。我过去会编写自定义的Python函数,用于读取这些值并将它们放入训练函数中。YAML文件基本上是一个层次结构构建的文件,您可以插入键和值,如下所示:

data:  path: "data/ESC-50"  sample_rate: 8000  train_folds: [1, 2, 3]  val_folds: [4]  test_folds: [5]  batch_size: 8model:  base_filters: 32  num_classes: 50  optim:    lr: 3e-4seed: 0trainer:  max_epochs: 10

后来,我发现了Hydra,它是一个开源框架,使整个过程更加简单和快速。

让我们开始吧!

假设我们正在使用PyTorch开发一个简单的机器学习项目。像往常一样,我们为数据集创建一个类,实例化数据加载器,创建模型并进行训练。在这个例子中,我将使用PyTorch Lightning来更好地组织代码,其中我们有一个Trainer对象,类似于您在Keras中的操作。如果您习惯使用PyTorch,您也将很快理解Lightning。

Leave a Reply

Your email address will not be published. Required fields are marked *