TensorWatch는 Microsoft Research의 데이터 과학, 딥 러닝 및 강화 학습을 위해 설계된 디버깅 및 시각화 도구입니다. Jupyter Notebook에서 작동하여 기계 학습 교육의 실시간 시각화를 보여주고 모델 및 데이터에 대한 몇 가지 다른 주요 분석 작업을 수행합니다.
TensorWatch는 유연하고 확장 가능하도록 설계되었으므로 고유 한 사용자 정의 시각화, UI 및 대시 보드를 구축 할 수 있습니다. 전통적인 "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 Notebook File test.ipynb 생성됩니다. 명령 프롬프트 유형 jupyter notebook 에서 test.ipynb 선택하십시오. 메뉴에서 셀> 실행을 선택하여 값이 스크립트에 작성 될 때 실시간 줄 그래프를보십시오.
Jupyter Notebook에서 볼 수있는 출력은 다음과 같습니다.

다른 다양한 기능에 대해 자세히 살펴 보려면 자습서 및 노트북을 참조하십시오.
TensorWatch 스트림에 쓰면 값이 직렬화되어 지정한 파일뿐만 아니라 TCP/IP 소켓으로 전송됩니다. Jupyter Notebook에서 우리는 파일에서 이전에 기록 된 값을로드 한 다음 미래의 값에 대해 TCP/IP 소켓을 듣습니다. Visualizer는 스트림에 청취하고 도착 할 때 값을 렌더링합니다.
좋아, 그래서 그것은 매우 단순화 된 설명입니다. TensorWatch 아키텍처는 실제로 훨씬 더 강력합니다. TensorWatch의 거의 모든 것이 스트림 입니다. 파일, 소켓, 콘솔 및 심지어 시각화조차도 스트림 자체입니다. TensorWatch 스트림의 멋진 점은 다른 스트림을들을 수 있다는 것입니다. 이를 통해 TensorWatch는 데이터 흐름 그래프를 생성 할 수 있습니다. 이는 Visualizer가 많은 스트림을 동시에들을 수 있음을 의미하며, 각 스트림은 파일, 소켓 또는 다른 스트림 일 수 있습니다. 임의의 데이터 흐름 그래프를 구축하기 위해이를 재귀 적으로 확장 할 수 있습니다. Tensorwatch는 저장되는 방식과 시각화 방식에서 스트림을 분리합니다.
위의 예에서는 라인 그래프가 기본 시각화로 사용됩니다. 그러나 TensorWatch는 히스토그램, 파이 차트, 산란 차트, 막대 차트 및 이러한 많은 플롯의 3D 버전을 포함한 다른 많은 다이어그램 유형을 지원합니다. 데이터를 기록하고 원하는 차트 유형을 지정하고 TensorWatch가 나머지를 처리하도록 할 수 있습니다.
TensorWatch의 중요한 강점 중 하나는 사용자 정의 시각화를 쉽게 결합, 작곡 및 만들 수있는 기능입니다. 예를 들어, 동일한 플롯에서 임의의 스트림을 시각화하도록 선택할 수 있습니다. 또는 여러 다른 플롯에서 동시에 동일한 스트림을 시각화 할 수 있습니다. 또는 임의의 시각화 세트를 나란히 놓을 수 있습니다. 몇 가지 방법을 구현하여 새 Python 클래스를 만들어 간단히 자신의 사용자 정의 시각화 위젯을 만들 수도 있습니다.
각 TensorWatch 스트림에는 선택한 메트릭이 포함될 수 있습니다. 기본적으로 TensorWatch는 모든 스트림을 단일 파일로 저장하지만 각 스트림을 별도의 파일로 저장하거나 전혀 저장하지 않도록 선택할 수도 있습니다 (예 : 소켓 위 또는 콘솔에 직접 스트림을 보내고 디스크로 제로 히트! ). 나중에이 스트림을 열고 하나 이상의 시각화로 지시 할 수 있습니다. 이 디자인을 사용하면 시각화 선택에서 다양한 실험 결과를 쉽게 비교할 수 있습니다.
종종 별도의 스크립트가 아닌 Jupyter Notebook 내에서 데이터 분석, ML 교육 및 테스트를 선호 할 수 있습니다. TensorWatch는 Jupyter 노트북 엔드 투 엔드 내에서 실행되는 코드에서 쉽게 정교하고 실시간 시각화를 수행하는 데 도움이됩니다.
TensorWatch의 고유 한 기능은 라이브 실행 프로세스를 쿼리 하고이 쿼리의 결과를 스트림으로 검색 하고이 스트림을 선호하는 시각화로 지시하는 기능입니다. 사전에 데이터를 기록 할 필요가 없습니다. 우리는 이것을 새로운 디버깅 및 시각화 방식을 게으른 벌목 모드 라고 부릅니다.
예를 들어, 아래에서 볼 수 있듯이 과일 데이터 세트에서 자동 인코더를 훈련하는 동안 무작위로 샘플링 된 입력 및 출력 이미지 쌍을 시각화합니다. 이 이미지는 스크립트에 미리 로그인되지 않았습니다. 대신, 사용자는 쿼리를 Python Lambda 표현식으로 보냅니다. 이는 Jupyter 노트에 표시되는 이미지 스트림을 초래합니다.

게으른 로깅 튜토리얼을 참조하십시오.
TensorWatch는 Hiddenlayer, TorchStat, 시각적 속성을 포함한 여러 가지 우수한 라이브러리를 활용하여 일관된 패키지 및 인터페이스에서 일반적인 디버깅 및 분석 활동을 수행 할 수 있습니다.
예를 들어, 하나의 라이너로 텐서 모양으로 모델 그래프를 볼 수 있습니다.

플롭, 매개 변수 수 등과 같은 다른 레이어에 대한 통계를 볼 수 있습니다.

노트북을 참조하십시오.
t-sne과 같은 기술을 사용하여 더 낮은 차원 공간에서 데이터 세트를 볼 수 있습니다.

노트북을 참조하십시오.
우리는 모델을 디버깅하는 데 도움이되는 예측을 설명하기위한 다양한 도구를 제공하고자합니다. 현재 우리는 라임을 포함한 컨볼 루션 네트워크에 대한 여러 설명자를 제공합니다. 예를 들어, 다음은 RESNET50 모델이 ImageNet 데이터 세트에 대한 클래스 240을 예측하도록하는 영역을 강조합니다.

노트북을 참조하십시오.
간단한 로깅 튜토리얼
게으른 로깅 튜토리얼
딥 러닝 훈련 (MNIST)을위한 TensorWatch 사용
딥 러닝 훈련을위한 TensorWatch 사용 (Food360)
t-sne을 사용한 데이터 탐색
Convolutional Neural Networks에 대한 예측 설명 자
모델 그래프 및 통계보기
더 많은 기술적 인 세부 사항은 TensorWatch Paper (EICS 2019 Conference)에서 제공됩니다. 다음과 같이 인용하십시오.
@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는 여러 기능에 대해 여러 오픈 소스 라이브러리를 사용합니다. 여기에는 Hiddenlayer, Torchstat, Visual-Attribution, Pyzmq, Receptivefield, NBFormat가 포함됩니다. UPTO 날짜 목록은 setup.py의 install_requires 섹션을 참조하십시오.
이 프로젝트는 MIT 라이센스에 따라 릴리스됩니다. 자세한 내용은 라이센스 파일을 검토하십시오.