Microsoft Cognitive Toolkit 简明教程
CNTK - Monitoring the Model
在本章中,我们将了解如何在 CNTK 中监视模型。
Introduction
在前面的部分中,我们已经对我们的 NN 模型进行了一些验证。但是,在训练期间监视我们的模型是否也有必要并且是否可行?
是的,我们已经使用 ProgressWriter 类来监视我们的模型,还有许多其他方式可以做到这一点。在深入了解这些方法之前,首先让我们了解 CNTK 中的监视如何工作以及我们如何使用它来检测 NN 模型中的问题。
Specifying callbacks
在使用 CNTK 时,我们可以在 API 的多个位置中指定回调。例如−
Various monitoring tools
让我们研究不同的监控工具。
ProgressPrinter
在阅读此教程时,你会发现 ProgressPrinter 被作为最常用的监控工具。 ProgressPrinter 监控工具的一些特征如下:
ProgressPrinter 类实现基于控制台的基本日志记录,以监控我们的模型。可以将其记录到我们希望记录到的磁盘。
在分布式培训场景中工作时特别有用。
在我们无法登录控制台查看 Python 程序输出的场景中工作时,它也非常有用。
借助以下代码,我们可以创建 ProgressPrinter 的实例:
ProgressPrinter(0, log_to_file=’test.txt’)
我们会得到我们在前面部分中看到的内容:
Test.txt
CNTKCommandTrainInfo: train : 300
CNTKCommandTrainInfo: CNTKNoMoreCommands_Total : 300
CNTKCommandTrainBegin: train
-------------------------------------------------------------------
average since average since examples
loss last metric last
------------------------------------------------------
Learning rate per minibatch: 0.1
1.45 1.45 -0.189 -0.189 16
1.24 1.13 -0.0382 0.0371 48
[………]
TensorBoard
使用 ProgressPrinter 的缺点之一是,我们很难很好地了解损失和指标如何随时间推移而发展。TensorBoardProgressWriter 是 CNTK 中 ProgressPrinter 类的绝佳替代品。
在使用它之前,我们需要使用以下命令先进行安装:
pip install tensorboard
现在,为了使用 TensorBoard,我们需要在我们的训练代码中设置 TensorBoardProgressWriter ,如下所示:
import time
from cntk.logging import TensorBoardProgressWriter
tensorbrd_writer = TensorBoardProgressWriter(log_dir=’logs/{}’.format(time.time()),freq=1,model=z)
在完成了 NN *模型训练之后,将 *TensorBoardProgressWriter 实例上的 close 方法调用为一种良好做法。
我们可以使用以下命令对 *TensorBoard * 日志数据进行可视化:
Tensorboard –logdir logs