TensorWatch是一种用于数据科学,深入学习和从Microsoft Research学习的调试和可视化工具。它在Jupyter笔记本中工作,以显示机器学习培训的实时可视化,并为您的模型和数据执行其他一些关键分析任务。
TensorWatch设计为灵活且可扩展的,因此您还可以构建自己的自定义可视化,UIS和仪表板。除了传统的“ What-you-see-is-is-what-you-log”方法外,它还具有对您的实时ML培训过程执行任意查询的独特功能您选择的可视化器(我们称之为这种懒惰的记录模式)。
Tensorwatch正在进行繁重的开发中,其目标是为一个易于使用,可扩展和可砍伐的软件包提供一个平台,以调试机器学习。

pip install tensorwatch
TensorWatch支持Python 3.x,并用Pytorch 0.4-1.x进行测试。大多数功能也应与张量的急切张量一起使用。 TensorWatch使用GraphViz创建网络图,并根据您的平台有时需要手动安装它。
这是简单的代码,每秒记录一个整数及其正方形作为元组,以张紧张值:
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)
运行此代码时,您会注意到jupyter笔记本文件test.ipynb在脚本文件夹中创建。从命令提示符类型jupyter notebook中,然后选择test.ipynb 。选择单元格>在菜单中运行全部以查看实时行图,因为值将写入脚本中。
这是您将在Jupyter笔记本中看到的输出:

要深入研究其他各种功能,请参阅教程和笔记本。
当您写入TensorWatch流时,值将序列化并发送到TCP/IP插座以及您指定的文件。从Jupyter Notebook中,我们从文件中加载了先前记录的值,然后以任何未来值收听该TCP/IP套接字。可视化器听到流并在到达时呈现值。
好的,这是一个非常简化的描述。 TensorWatch体系结构实际上更强大。 TensorWatch中几乎所有内容都是流。文件,插座,控制台甚至可视化器都是流本身。关于TensorWatch流的一件很酷的事情是,他们可以听任何其他流。这允许TensorWatch创建数据流程图。这意味着可视化器可以同时收听许多流,每个流都可以是文件,插座或其他流。您可以递归地扩展它以构建任意数据流程图。 TensorWatch将流的方式与它们的存储方式以及如何可视化。
在上面的示例中,线图用作默认可视化。但是,TensorWatch支持许多其他图类型,包括直方图,饼图,散点图,条形图和3D版本的许多图。您可以记录数据,指定所需的图表类型,然后让TensorWatch负责其余的。
TensorWatch的重要优势之一是能够毫不费力地组合,组成和创建自定义可视化。例如,您可以选择在同一图中可视化任意数量的流。或者,您可以同时在许多不同的图中可视化相同的流。或者,您可以并排放置一组任意的可视化。您甚至可以通过创建新的Python类,实现几种方法来创建自己的自定义可视化小部件。
每个TensorWatch流可以包含您选择的指标。默认情况下,TensorWatch将所有流将所有流保存在一个文件中,但是您也可以选择将每个流保存在单独的文件中或完全不保存它们(例如,将流通过插座发送或直接发送到控制台中,零点击到磁盘! )。稍后,您可以打开这些流并将其引导到一个或多个可视化效果。这种设计使您可以快速比较不同实验的结果,以轻松选择可视化。
通常,您可能更喜欢进行数据分析,ML培训和测试 - 全部来自Jupyter Notebook,而不是来自单独的脚本。 TensorWatch可以通过在jupyter笔记本端到端运行的代码轻松地帮助您进行复杂的实时可视化。
TensorWatch中的一个独特功能是能够查询实时运行过程,将此查询的结果检索为流,并将此流将其引向您首选的可视化。您无需事先记录任何数据。我们将这种新的调试和可视化方法称为懒惰的记录模式。
例如,如下所示,我们可视化输入和输出图像对,在水果数据集中自动编码器训练期间随机采样。这些图像未事先在脚本中记录。相反,用户将查询作为python lambda表达式发送,该表达式导致jupyter笔记本中显示的图像流:

参见懒惰的记录教程。
TensorWatch利用了几个出色的库,包括Hidden Layerer,Torchstat,Visual归因,以允许在一个一致的软件包和界面中执行通常的调试和分析活动。
例如,您可以使用单线仪的张量形状查看模型图:

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

请参阅笔记本。
您可以使用T-SNE等技术在较低维空间中查看数据集:

请参阅笔记本。
我们希望提供各种工具来解释预测以帮助调试模型。目前,我们为包括石灰在内的卷积网络提供了几个解释器。例如,以下突出显示导致RESNET50模型对Imagenet数据集的240类预测的区域:

请参阅笔记本。
简单的登录教程
懒惰的记录教程
使用TensorWatch进行深度学习培训(MNIST)
使用TensorWatch进行深度学习培训(Food360)
使用T-SNE探索数据
卷积神经网络的预测解释器
查看模型图和统计数据
Tensorwatch论文(EICS 2019会议)提供了更多技术细节。请引用:
@inproceedings{tensorwatch2019eics,
author = {Shital Shah and Roland Fernandez and Steven M. Drucker},
title = {A system for real-time interactive analysis of deep learning training},
booktitle = {Proceedings of the {ACM} {SIGCHI} Symposium on Engineering Interactive
Computing Systems, {EICS} 2019, Valencia, Spain, June 18-21, 2019},
pages = {16:1--16:6},
year = {2019},
crossref = {DBLP:conf/eics/2019},
url = {https://arxiv.org/abs/2001.01215},
doi = {10.1145/3319499.3328231},
timestamp = {Fri, 31 May 2019 08:40:31 +0200},
biburl = {https://dblp.org/rec/bib/conf/eics/ShahFD19},
bibsource = {dblp computer science bibliography, https://dblp.org}
}
我们希望您的贡献,反馈,问题和功能请求!请提交GitHub问题或向我们发送拉请请求。请查看Microsoft行为准则,并了解更多信息。
加入Facebook上的Tensorwatch组,以保持最新状态或提出任何问题。
TensorWatch使用几个开源库来实现其许多功能。其中包括:Hidden Layerer,Torchstat,Visual-Attribution,Pyzmq,FositiveField,nbformat。请参阅setup.py中的install_requires部分以获取最新列表。
该项目根据麻省理工学院许可发布。请查看许可证文件以获取更多详细信息。