TensorWatch:用于机器学习,数据科学的调试和可视化工具

Microsoft Research的深度学习和强化学习的调试,监控和可视化

欢迎来到TensorWatch

TensorWatch是一个调试和可视化工具,专为Microsoft Research的深度学习和强化学习而设计。它适用于Jupyter Notebook,可显示机器学习培训的实时可视化,并执行模型和数据的其他几个关键可视化。

TensorWatch旨在灵活且可扩展,因此您甚至可以构建自己的自定义可视化,UI和仪表板。除了传统的所见即所得的方法外,它还具有针对您的实时ML培训流程执行任意查询的独特功能,作为查询结果返回流并使用您的选择查看此流可视化器(我们称之为惰性日志记录模式)。

TensorWatch正在大力发展,其目标是通过一个易于使用,可扩展和可破解的软件包提供调试机器学习的平台。

Jupyter笔记本中的TensorWatch

如何获得它

1
pip install tensorwatch

TensorWatch支持Python 3.x,并使用PyTorch 0.4-1.x进行测试。大多数功能也应该与TensorFlow急切张量一起使用。

如何使用它

快速开始

这是一个简单的代码,它每秒将一个整数及其正方形记录为TensorWatch的元组:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
import tensorwatch as tw
import time

# streams will be stored in test.log file
w = tw.Watcher(filename='test.log')

# create a stream for logging
s = w.create_stream(name='metric1')

# generate Jupyter Notebook to view real-time streams
w.make_notebook()

for i in range(1000):
# write x,y pair we want to log
s.write((i, i*i))

time.sleep(1)

运行此代码时,您会注意到test.ipynb在脚本文件夹中创建了一个Jupyter Notebook文件。从命令提示符键入jupyter notebook并选择test.ipynb。在菜单中选择“ 单元格”>“全部运行”以查看实时线图,因为值将写入脚本中。

这是您将在Jupyter Notebook中看到的输出:

Jupyter笔记本中的TensorWatch

要深入了解其他各种功能,请参阅教程笔记本

这是如何运作的?

当您写入TensorWatch流时,值将被序列化并发送到TCP / IP套接字以及您指定的文件。从Jupyter Notebook中,我们从文件中加载以前记录的值,然后监听该TCP / IP套接字以获取任何未来值。可视化工具监听流并在值到达时呈现值。

好的,这是一个非常简化的描述。TensorWatch架构实际上更强大。TensorWatch中的几乎所有内容都是一个。文件,套接字,控制台甚至可视化器都是流本身。关于TensorWatch流的一个很酷的事情是它们可以收听任何其他流。这允许TensorWatch创建数据流图。这意味着可视化工具可以同时监听多个流,每个流可以是文件,套接字或其他流。您可以递归地扩展它以构建任意数据流图。TensorWatch将流与它们的存储方式以及它们如何可视化分离。

可视化

在上面的示例中,折线图用作默认可视化。但是,TensorWatch支持许多其他图表类型,包括直方图,饼图,散点图,条形图和许多这些图的3D版本。您可以记录数据,指定所需的图表类型,让TensorWatch负责其余部分。

TensorWatch的一个显着优势是能够毫不费力地组合,组合和创建自定义可视化。例如,您可以选择在同一图中可视化任意数量的流。或者你可以在许多不同的情节想象同一个流同时。或者您可以并排放置任意一组可视化。您甚至可以通过创建新的Python类,实现一些方法来创建自己的自定义可视化小部件。

比较多次运行的结果

每个TensorWatch流可能包含您选择的度量标准。默认情况下,TensorWatch将所有流保存在单个文件中,但您也可以选择将每个流保存在单独的文件中,或者根本不保存它们(例如,通过套接字直接发送流或直接进入控制台,零点击到磁盘! )。稍后您可以打开这些流并将它们指向一个或多个可视化。通过此设计,您可以轻松地在您选择的可视化中快速比较不同实验的结果。

Jupyter笔记本内的培训

通常,您可能更喜欢进行数据分析,ML培训和测试 - 所有这些都来自Jupyter Notebook,而不是来自单独的脚本。TensorWatch可以帮助您轻松地从端到端的Jupyter笔记本中运行的代码轻松实现复杂的实时可视化。

延迟记录模式

TensorWatch中的一个独特功能是查询实时运行过程,将此查询的结果作为流检索并将此流定向到首选可视化的功能。您无需事先记录任何数据。我们将这种调试和可视化的新方式称为惰性日志记录模式

例如,如下所示,我们可视化输入和输出图像对,在水果数据集上训练自动编码器期间随机采样。这些图像未事先记录在脚本中。相反,用户将查询作为Python lambda表达式发送,这会导致在Jupyter Notebook中显示的图像流:

Jupyter笔记本中的TensorWatch

请参阅Lazy Logging Tutorial

培训前和培训后的任务

TensorWatch利用几个优秀的库,包括hiddenlayertorchstatVisual Attribution,允许在一个一致的包和接口中执行常规的调试和分析活动。

例如,您可以使用单线程查看具有张量形状的模型图:

Alexnet的模型图

您可以查看不同层的统计信息,例如触发器,参数数量等:

Alexnet的模型统计

看笔记本

您可以使用t-SNE等技术在较低维空间中查看数据集:

MNIST的t-SNE可视化

看笔记本

预测解释

我们希望提供各种工具来解释预测,以帮助调试模型。目前,我们为卷积网络提供了几种解释器,包括Lime。例如,以下重点介绍导致Resnet50模型对Imagenet数据集的类240进行预测的区域:

CNN预测说明

看笔记本

教程

有助于

我们希望您的贡献,反馈,问题和功能要求!请提交Github问题或向我们发送拉取请求。请查看Microsoft的行为准则了解更多信息

联系

加入Facebook上的TensorWatch小组,了解最新信息或提出任何问题。

积分

TensorWatch利用多个开源库来实现其许多功能。这些包括:hiddenlayertorchstatVisual-Attributionpyzmqreceptivefieldnbformat。有关最新列表,请参阅setup.py中的install_requires部分。

来了,老弟
-------------    本文结束  感谢您的阅读    -------------
0%