1.什么是Comet.ml?
Comet.ml是用于机器学习的实验性支持工具之一。
粗略地说,您可以执行以下操作:
Tensorboard作为Tensorflow的实验支持工具而闻名,但我认为它与实验日志非常接近。
这是日语中易于理解的介绍性文章。
- CometML旨在成为"机器学习的GitHub"
- 我尝试使用Github和CometML进行机器学习
Comet.ml正式宣布的深度学习框架是" Keras,Tensorflow,Pytorch和Theano",但是我真的很想使用Chainer,所以这次,Chainer的MNIST示例试图将Comet.ml与之一起使用。
除了深度学习,官方文档中还发布了scikit-learn执行的示例。 (https://www.comet.ml/docs/python-sdk/scikit/)
2.准备您的Comet.ml帐户
2.1帐户注册
您需要在Comet.ml中注册一个帐户来管理实验结果。
您可以使用您的电子邮件地址进行注册,但也可以使用您的Github帐户进行注册。
我还没有尝试过,但是似乎它还具有与Github的集成功能,因此,如果您有Github帐户,则可能要在此注册。
2.2获取API密钥
创建帐户后,首先创建一个项目。
您可以通过仪表板右上方的"新建项目"按钮来创建它。
目前,您可以将项目设置为公共或私有,但是暂时将其设为私有是个好主意。
进入
项目页面时,页面顶部栏中的按钮名为" API Key",您可以从中获取API密钥。
该密钥对我所有项目都是通用的,因此一旦获得它,就不必更改它。 (大概)
顺便说一下,Comet.ml的帐户创建和API密钥的获取已完成。
3.与Chainer一起移动
以下假定您要在Python中运行链接器。
这次,我对官方发布的MNIST示例进行了一些修改,使其登录到Comet.ml。
完整的代码可在Github上找到,因此请参见此处。
首先,您需要安装Comet.ml Python软件包。
可以使用pip安装。
1 | $ pip install comet_ml |
现在,让我们从特定的实现开始,但是只有三件事要做。
首先,导入
1 | from comet_ml import Experiment |
3.1实验实例生成
为了与您在
comet.ml上的帐户关联,您首先需要创建一个
1 | experiment = Experiment(api_key='自分のAPIキー', project_name='プロジェクト名') |
使用先前创建的项目名称。
即使您的帐户中不存在指定的项目名称,也不会出现问题,因为会自动生成一个私人项目。
3.2记录超参数
进行深度学习实验的最必要任务之一是记录超参数,不是吗?
这可以通过以下方法完成。
1 2 3 4 5 6 | hyper_params = { 'batch_size': 64, 'epoch': 20, 'n_hidden_unit': 32} experiment.log_multiple_params(hyper_params) |
另外,当一一记录超参数时,
1 | experiment.log_parameter(name, value) |
您也可以使用
。
3.3培训过程中的丢失记录和正确答案率
这几乎与记录超参数相同。
1 2 3 4 5 6 7 | metrics = { 'train_loss': train_loss, 'train_acc': train_acc, 'test_loss': test_loss, 'test_acc': test_acc} experiment.log_multiple_metrics(metrics, step=i) |
或
1 | experiment.log_parameter('train_loss', train_loss, step=i) |
以
的形式编写。
唯一的区别是添加了参数
因此,您需要为每个迭代和每个时期运行此代码。
可视化时,以步进值作为X轴显示图形。
(实际上,似乎
这一次,我使用
以Trainer作为参数,我创建了一个函数
扩展实现示例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | def log_cometml(exp, _log_report='LogReport'): @training.make_extension(trigger=(1, 'epoch')) def _log_exp(trainer): log_report = trainer.get_extension(_log_report) lastest_log = log_report.log[-1] n_epoch = lastest_log.pop('epoch') n_iter = lastest_log.pop('iteration') exp.log_multiple_metrics(lastest_log, step=n_epoch) return _log_exp '省略' trainer.extend(extensions.LogReport()) trainer.extend(log_cometml(experiment)) |
对于我自己的扩展,该程序非常有用。
Chainer:创建您自己的扩展程序并将您自己的处理过程插入深度学习培训中
4.结果可视化
我认为实际查看它会更快,所以请看一下我创建的项目页面。
https://www.comet.ml/29takuya/chainer-mnist
我将简要解释屏幕。
以下是项目仪表板页面
一行对应一个实验,还可以列出参数和损耗。
(如果您多次尝试使用相同的项目名称,则会显示如下所示)
接下来,这是您选择实验时的屏幕。
我认为经常使用以下四个项目。
1.图表:以log_metric保存的变量以图形表示
2.代码:执行后的代码将被保存。
3.超级参数:您可以引用log_parameter保存的变量。
4.指标:您可以选择图表上显示的指标。您还可以看到诸如最大和最小的信息。
您还可以将多次实验的结果与以下感觉进行比较。
5.结论
这次,我尝试了comet.ml,它是机器学习的实验性支持工具。
到目前为止,我以前一直逐个输出文本和图像并将其记录下来,但是从现在开始,我希望可以很好地使用此工具。
另外,"也许"学生可以免费使用付费计划,因此,如果获得批准,我想尝试诸如参数优化之类的功能。
感谢您阅读本文!
6.链接
- 官方页面:https://www.comet.ml/
- MNIST分类项目页面:https://www.comet.ml/29takuya/chainer-mnist
- 链接器对MNIST分类的来源:https://github.com/29Takuy??a/chainer-cometml