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部分以獲取最新列表。
該項目根據麻省理工學院許可發布。請查看許可證文件以獲取更多詳細信息。