- 微软认知工具包(CNTK)教程
- 家
- 介绍
- 入门
- CPU和GPU
- CNTK-序列分类
- CNTK - 逻辑回归模型
- CNTK - 神经网络 (NN) 概念
- CNTK - 创建第一个神经网络
- CNTK - 训练神经网络
- CNTK - 内存中和大型数据集
- CNTK - 测量性能
- 神经网络分类
- 神经网络二元分类
- CNTK - 神经网络回归
- CNTK - 分类模型
- CNTK - 回归模型
- CNTK - 内存不足的数据集
- CNTK - 监控模型
- CNTK - 卷积神经网络
- CNTK - 循环神经网络
- Microsoft 认知工具包资源
- Microsoft 认知工具包 - 快速指南
- Microsoft 认知工具包 - 资源
- Microsoft 认知工具包 - 讨论
CNTK - 监控模型
在本章中,我们将了解如何在 CNTK 中监控模型。
介绍
在前面的部分中,我们对神经网络模型进行了一些验证。但是,在训练期间监控我们的模型是否也有必要且可能?
是的,我们已经使用ProgressWriter类来监视我们的模型,并且还有更多方法可以做到这一点。在深入了解方法之前,首先让我们看一下 CNTK 中的监控如何工作以及如何使用它来检测 NN 模型中的问题。
CNTK中的回调
实际上,在训练和验证过程中,CNTK 允许我们在 API 的多个位置指定回调。首先,让我们仔细看看 CNTK 何时调用回调。
CNTK何时调用回调?
CNTK 将在训练和测试集时刻调用回调:
小批量已完成。
在训练期间完成对数据集的全面扫描。
小批量测试已完成。
在测试过程中完成了对数据集的全面扫描。
指定回调
使用 CNTK 时,我们可以在 API 的多个位置指定回调。例如 -
什么时候调用损失函数训练?
在这里,当我们在损失函数上调用 train 时,我们可以通过回调参数指定一组回调,如下所示 -
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