📜  CNTK-监视模型

📅  最后修改于: 2020-12-10 05:09:52             🧑  作者: Mango


在本章中,我们将了解如何在CNTK中监视模型。

介绍

在前面的部分中,我们对NN模型进行了一些验证。但是,在培训过程中也有必要并且有可能监视我们的模型吗?

是的,我们已经使用ProgressWriter类来监视我们的模型,并且还有许多其他方法可以执行此操作。在深入探讨方法之前,首先让我们看一下CNTK中的监视如何工作以及如何使用它来检测NN模型中的问题。

CNTK中的回调

实际上,在培训和验证期间,CNTK允许我们在API的多个位置指定回调。首先,让我们仔细看看CNTK何时调用回调。

CNTK何时调用回调?

CNTK将在训练和测试设置的时刻调用回调,当-

  • 小批量完成。

  • 在训练过程中完成了对数据集的全面扫描。

  • 小批量测试已完成。

  • 在测试过程中完成了对数据集的全面扫描。

指定回调

使用CNTK时,我们可以在API的多个位置指定回调。例如-

什么时候呼叫丢失函数火车?

在这里,当我们对损失函数调用train时,我们可以通过callbacks参数指定一组回调,如下所示:

training_summary=loss.train((x_train,y_train),
parameter_learners=[learner],
callbacks=[progress_writer]),
minibatch_size=16, max_epochs=15)

当使用小批量来源或使用手动小批量循环时-

在这种情况下,我们可以在创建Trainer时指定用于监视目的的回调,如下所示:

from cntk.logging import ProgressPrinter
callbacks = [
   ProgressPrinter(0)
]
Trainer = Trainer(z, (loss, metric), learner, [callbacks])

各种监控工具

让我们研究不同的监视工具。

进度打印机

阅读本教程时,您会发现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
[………]

张量板

使用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