TensorWatch เป็นเครื่องมือการดีบักและการสร้างภาพข้อมูลที่ออกแบบมาสำหรับวิทยาศาสตร์ข้อมูลการเรียนรู้อย่างลึกซึ้งและการเรียนรู้การเสริมแรงจากการวิจัยของ Microsoft มันทำงานในสมุดบันทึก Jupyter เพื่อแสดงการสร้างภาพข้อมูลแบบเรียลไทม์ของการฝึกอบรมการเรียนรู้ของเครื่องและดำเนินงานการวิเคราะห์ที่สำคัญอื่น ๆ อีกมากมายสำหรับแบบจำลองและข้อมูลของคุณ
TensorWatch ได้รับการออกแบบให้มีความยืดหยุ่นและขยายได้เพื่อให้คุณสามารถสร้างการสร้างภาพข้อมูล UIs และแดชบอร์ดที่กำหนดเองของคุณเอง นอกจากวิธีการแบบดั้งเดิม ตัวเลือกของคุณเกี่ยวกับ Visualizer (เราเรียกโหมดการบันทึกที่ขี้เกียจนี้)
TensorWatch อยู่ระหว่างการพัฒนาอย่างหนักโดยมีเป้าหมายในการจัดหาแพลตฟอร์มสำหรับการดีบักการเรียนรู้ของเครื่องในแพ็คเกจที่ใช้งานง่ายขยายได้และแฮ็กได้

pip install tensorwatch
TensorWatch รองรับ Python 3.x และทดสอบด้วย pytorch 0.4-1.x คุณสมบัติส่วนใหญ่ควรทำงานร่วมกับเทนเซอร์ที่กระตือรือร้นของ Tensorflow TensorWatch ใช้ GraphViz เพื่อสร้างไดอะแกรมเครือข่ายและขึ้นอยู่กับแพลตฟอร์มของคุณในบางครั้งคุณอาจต้องติดตั้งด้วยตนเอง
นี่คือรหัสง่าย ๆ ที่บันทึกจำนวนเต็มและสแควร์เป็น tuple ทุกวินาทีถึง 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)
เมื่อคุณเรียกใช้รหัสนี้คุณจะสังเกตเห็น test.ipynb ไฟล์สมุดบันทึก Jupyter Notebook ได้รับการสร้างขึ้นในโฟลเดอร์สคริปต์ของคุณ จาก jupyter notebook และเลือก test.ipynb เลือก เซลล์> เรียกใช้ทั้งหมด ในเมนูเพื่อดูกราฟบรรทัดแบบเรียลไทม์เป็นค่าที่เขียนไว้ในสคริปต์ของคุณ
นี่คือผลลัพธ์ที่คุณจะเห็นในสมุดบันทึก Jupyter:

หากต้องการดำน้ำลึกลงไปในคุณสมบัติอื่น ๆ โปรดดูบทเรียนและสมุดบันทึก
เมื่อคุณเขียนไปยังสตรีม TensorWatch ค่าจะได้รับอนุกรมและส่งไปยังซ็อกเก็ต TCP/IP รวมถึงไฟล์ที่คุณระบุ จากสมุดบันทึก Jupyter เราโหลดค่าที่บันทึกไว้ก่อนหน้านี้จากไฟล์แล้วฟังซ็อกเก็ต TCP/IP สำหรับค่าในอนาคต Visualizer รับฟังสตรีมและแสดงค่าเมื่อมาถึง
ตกลงนั่นเป็นคำอธิบายที่ง่ายมาก สถาปัตยกรรม TensorWatch นั้นมีประสิทธิภาพมากกว่า เกือบทุกอย่างใน TensorWatch เป็น สตรีม ไฟล์ซ็อกเก็ตคอนโซลและแม้กระทั่ง Visualizers เป็นสตรีมของตัวเอง สิ่งที่ยอดเยี่ยมเกี่ยวกับสตรีม TensorWatch คือพวกเขาสามารถฟังสตรีมอื่น ๆ ได้ สิ่งนี้ช่วยให้ TensorWatch สร้าง กราฟการไหลของข้อมูล ซึ่งหมายความว่า Visualizer สามารถฟังหลายสตรีมพร้อมกันซึ่งแต่ละอันอาจเป็นไฟล์ซ็อกเก็ตหรือสตรีมอื่น ๆ คุณสามารถขยายสิ่งนี้ซ้ำเพื่อสร้างกราฟการไหลของข้อมูลโดยพลการ Tensorwatch แยกสตรีมจากวิธีที่พวกเขาได้รับการจัดเก็บและวิธีที่พวกเขาได้รับภาพ
ในตัวอย่างด้านบนกราฟบรรทัดจะใช้เป็นการสร้างภาพข้อมูลเริ่มต้น อย่างไรก็ตาม TensorWatch รองรับแผนภาพประเภทอื่น ๆ อีกมากมายรวมถึงฮิสโตแกรมแผนภูมิวงกลมแผนภูมิกระจายแผนภูมิแท่งและรุ่น 3 มิติของแปลงเหล่านี้จำนวนมาก คุณสามารถบันทึกข้อมูลของคุณระบุประเภทแผนภูมิที่คุณต้องการและให้ TensorWatch ดูแลส่วนที่เหลือ
หนึ่งในจุดแข็งที่สำคัญของ TensorWatch คือความสามารถในการรวมแต่งและสร้างการสร้างภาพข้อมูลที่กำหนดเองได้อย่างง่ายดาย ตัวอย่างเช่นคุณสามารถเลือกที่จะเห็นภาพจำนวนสตรีมโดยพลการในพล็อตเดียวกัน หรือคุณสามารถเห็นภาพสตรีมเดียวกันในพล็อตที่แตกต่างกันมากมาย พร้อมกัน หรือคุณสามารถวางชุดการสร้างภาพข้อมูลแบบเคียงข้างกัน คุณสามารถสร้างวิดเจ็ตการสร้างภาพข้อมูลที่กำหนดเองของคุณเองได้ง่ายๆโดยการสร้างคลาส Python ใหม่โดยใช้วิธีการสองสามวิธี
สตรีม TensorWatch แต่ละตัวอาจมีตัวชี้วัดที่คุณเลือก โดยค่าเริ่มต้น TensorWatch จะบันทึกสตรีมทั้งหมดในไฟล์เดียว แต่คุณสามารถเลือกที่จะบันทึกแต่ละสตรีมในไฟล์แยกต่างหากหรือไม่บันทึกไว้ทั้งหมด (ตัวอย่างเช่นการส่งสตรีมผ่านซ็อกเก็ตหรือลงในคอนโซลโดยตรง ). หลังจากนั้นคุณสามารถเปิดสตรีมเหล่านี้และนำพวกเขาไปยังการสร้างภาพข้อมูลอย่างน้อยหนึ่งครั้ง การออกแบบนี้ช่วยให้คุณสามารถเปรียบเทียบผลลัพธ์จากการทดลองที่แตกต่างกันของคุณอย่างรวดเร็วในการเลือกการสร้างภาพข้อมูลได้อย่างง่ายดาย
บ่อยครั้งที่คุณอาจต้องการทำการวิเคราะห์ข้อมูลการฝึกอบรม ML และการทดสอบ - ทั้งหมดจากภายในสมุดบันทึก Jupyter แทนจากสคริปต์แยกต่างหาก TensorWatch สามารถช่วยให้คุณสร้างภาพข้อมูลที่ซับซ้อนและเรียลไทม์ได้อย่างง่ายดายจากรหัสที่ทำงานภายในสมุดบันทึก Jupyter end-to-end
คุณสมบัติที่เป็นเอกลักษณ์ใน TensorWatch คือความสามารถในการสอบถามกระบวนการทำงานสดดึงผลลัพธ์ของการสืบค้นนี้เป็นสตรีมและนำสตรีมนี้ไปยังการสร้างภาพข้อมูลที่คุณต้องการ คุณไม่จำเป็นต้องบันทึกข้อมูลใด ๆ ล่วงหน้า เราเรียกวิธีการใหม่ของการดีบักและสร้างภาพ โหมดการบันทึกขี้เกียจ
ตัวอย่างเช่นดังที่เห็นด้านล่างเราจะเห็นภาพคู่อินพุตและเอาต์พุตตัวอย่างสุ่มสุ่มระหว่างการฝึกอบรมของเครื่องดนตรีอัตโนมัติบนชุดข้อมูลผลไม้ ภาพเหล่านี้ไม่ได้ถูกบันทึกไว้ล่วงหน้าในสคริปต์ แต่ผู้ใช้จะส่งแบบสอบถามเป็นนิพจน์ Python Lambda ซึ่งส่งผลให้กระแสของภาพที่แสดงในสมุดบันทึก Jupyter:

ดูการสอนการตัดไม้ขี้เกียจ
TensorWatch ใช้ประโยชน์จากห้องสมุดที่ยอดเยี่ยมหลายแห่งรวมถึง HiddenLayer, Torchstat, การระบุแหล่งที่มาของภาพเพื่อให้สามารถดำเนินกิจกรรมการดีบักและการวิเคราะห์ตามปกติในแพ็คเกจและอินเทอร์เฟซที่สอดคล้องกัน
ตัวอย่างเช่นคุณสามารถดูกราฟรุ่นที่มีรูปร่างเทนเซอร์ด้วยหนึ่งซับ:

คุณสามารถดูสถิติสำหรับเลเยอร์ที่แตกต่างกันเช่น flops จำนวนพารามิเตอร์ ฯลฯ :

ดูสมุดบันทึก
คุณสามารถดูชุดข้อมูลในพื้นที่มิติที่ต่ำกว่าโดยใช้เทคนิคเช่น T-SNE:

ดูสมุดบันทึก
เราต้องการจัดหาเครื่องมือต่าง ๆ สำหรับการอธิบายการคาดการณ์เพื่อช่วยในการดีบักแบบจำลอง ปัจจุบันเราเสนอผู้อธิบายหลายคนสำหรับเครือข่าย Convolutional รวมถึงมะนาว ตัวอย่างเช่นต่อไปนี้เน้นพื้นที่ที่ทำให้โมเดล RESNET50 ทำการทำนายสำหรับคลาส 240 สำหรับชุดข้อมูล Imagenet:

ดูสมุดบันทึก
การสอนการบันทึกแบบง่าย ๆ
การสอนการตัดไม้ขี้เกียจ
การใช้ 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 และเรียนรู้เพิ่มเติม
เข้าร่วมกลุ่ม Tensorwatch บน Facebook เพื่อติดตามข่าวสารล่าสุดหรือถามคำถามใด ๆ
TensorWatch ใช้ไลบรารีโอเพ่นซอร์สหลายแห่งสำหรับคุณสมบัติหลายอย่าง สิ่งเหล่านี้รวมถึง: hiddenlayer, Torchstat, Visual-Attribution, PYZMQ, RepeptiveField, NBFORMAT โปรดดูส่วน install_requires ใน setup.py สำหรับรายการวันที่ไม่เกิน
โครงการนี้เปิดตัวภายใต้ใบอนุญาต MIT โปรดตรวจสอบไฟล์ใบอนุญาตสำหรับรายละเอียดเพิ่มเติม