人工智能的交互式实时调试与可视化
tensorwatch的Python项目详细描述
欢迎使用TensorWatch
TensorWatch是一个调试和可视化工具,用于从Microsoft Research进行深入学习和强化学习。它可以在Jupyter笔记本中显示机器学习培训的实时可视化,并执行模型和数据的其他一些关键可视化。
tensorwatch的设计是灵活和可扩展的,因此您甚至可以构建自己的自定义可视化、ui和仪表板。除了传统的日志方法外,它还有一个独特的功能,可以对您的实时ml培训过程执行任意查询,作为查询的结果返回一个流,并使用您选择的可视化工具查看该流(我们将其称为惰性日志记录模式(lazy logging mode%5d)rel="nofollow">惰性日志记录模式(lazy logging mode))。
TensorWatch正在进行大量开发,其目标是在一个易于使用、可扩展和可破解的软件包中为调试机器学习提供一个平台。
如何获得它
pip install tensorwatch
TensorWatch支持Python3.x,并使用Pythorch 0.4-1.x进行了测试。大多数功能还应使用TensorFlow的热切张量。
如何使用
快速启动
下面是一个简单的代码,它将一个整数及其平方作为一个元组每秒记录到tensorwatch中:
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 streams的一个很酷的地方是他们可以收听任何其他的流。这允许tensorwatch创建一个数据流图。这意味着可视化工具可以同时监听多个流,每个流可以是文件、套接字或其他流。您可以递归地扩展它来构建任意的数据流图。TensorWatch将流与它们的存储方式和可视化方式分离。
可视化
在上面的例子中,线图被用作默认的可视化。但是,TensorWatch支持许多其他图表类型,包括柱状图、饼图、散点图、条形图和其中许多绘图的3D版本。您可以记录您的数据,指定所需的图表类型,并让TensorWatch处理其余的数据。
TensorWatch的一个显著优势是能够轻松地组合、合成和创建自定义可视化效果。例如,可以选择在同一绘图中可视化任意数量的流。或者你可以想象在马州的同一条河流同时绘制任何不同的图形。或者可以并排放置任意一组可视化效果。您甚至可以创建自己的自定义可视化小部件,只需创建一个新的python类,实现一些方法即可。
比较多次运行的结果
每个tensorwatch流可能包含您选择的度量。默认情况下,TensorWatch将所有流保存在一个文件中,但您也可以选择将每个流保存在seprate文件中,或者根本不保存它们(例如,通过套接字发送流或直接发送到控制台,零命中磁盘!)。稍后,您可以打开这些流并将它们定向到一个或多个可视化效果。这种设计允许您在选择可视化效果时快速比较不同实验的结果。
Jupyter笔记本内的培训
通常,您可能更喜欢从jupyter笔记本中进行数据分析、ml培训和测试,而不是从单独的脚本中。TensorWatch可以帮助您轻松地从Jupyter笔记本电脑端到端运行的代码中进行复杂的实时可视化。
惰性日志记录模式
TensorWatch的一个独特功能是能够查询实时运行的进程,以流的形式检索此查询的结果,并将此流定向到您首选的可视化。你不需要事先记录任何数据。我们将这种新的调试和可视化方式称为"惰性日志记录模式"。
例如,如下所示,我们可视化输入和输出图像对,在水果数据集上的自动编码器训练期间随机采样。这些图像没有事先记录在脚本中。相反,用户以python lambda表达式的形式发送查询,结果是在jupyter笔记本中显示的图像流:
请参见懒惰日志教程
培训前和培训后任务
TensorWatch利用了几个优秀的库,包括hiddenlayer,torchstat,可视化属性允许在一个一致的包和接口中执行常见的调试和分析活动。
例如,您可以使用一行代码查看带有张量形状的模型图:
请参见笔记本您可以使用t-sne:
预测解释
我们希望提供各种工具来解释预测,以帮助调试模型。目前,我们为卷积网络提供了几种解释,包括石灰。例如,下面将突出显示导致resnet50模型对imagenet数据集的类240进行预测的区域:
教程
使用tensorwatch进行深度学习培训(food360)
卷积神经网络的预测解释程序
查看模型图和统计信息
贡献
我们会喜欢你的贡献,反馈,问题和功能要求!请提交github问题或向我们发送请求。请查看Microsoft行为准则和了解更多信息。
联系人
在Facebook上加入TensorWatch小组,了解最新情况或提出任何问题。
学分
tensorwatch使用了几个开源库来实现它的许多特性。这些属性包括:hiddenlayer,torchstat,视觉属性,pyzmq,receptivefield,nbformat。有关最新列表,请参见setup.py中的"需要安装"部分。
许可证
这个项目是在麻省理工学院的许可下发布的。有关详细信息,请查看许可文件。