Siehe Artikel, das Ausnahmen klären und Tensoroperationen in Deep Learning Code und Tensorsensor Implementation Folien (PDF) visualisieren.
( Ab September 2021 erleben M1 MACs illegale Anweisungen in vielen der über Anaconda installierten Tensor-Bibliotheken. Sie sollten also erwarten, dass Tensorsensor derzeit nur auf Intel-basierten Macs funktioniert. Pytorch scheint zu funktionieren. )
Anstelle der folgenden Standardausnahmenachricht:
ValueError: matmul: Input operand 1 has a mismatch in its core dimension 0, with gufunc signature (n?,k),(k,m?)->(n?,m?) (size 764 is different from 100)
Tensorsensor erhöht die Nachricht mit weiteren Informationen darüber, welches Bediener das Problem verursacht hat, und enthält die Form der Operanden:
Cause: @ on tensor operand W w/shape (764, 100) and operand X.T w/shape (764, 200)
Sie können auch das vollständige Berechnungsdiagramm für einen Ausdruck erhalten, der alle Unterexpressionsformen enthält.
W = torch . rand ( size = ( 2000 , 2000 ), dtype = torch . float64 )
b = torch . rand ( size = ( 2000 , 1 ), dtype = torch . float64 )
h = torch . zeros ( size = ( 1_000_000 ,), dtype = int )
x = torch . rand ( size = ( 2000 , 1 ))
z = torch . rand ( size = ( 2000 , 1 ), dtype = torch . complex64 )
tsensor . astviz ( "b = W@b + (h+3).dot(h) + z" , sys . _getframe ())ergibt den folgenden abstrakten Syntaxbaum mit Formen:
pip install tensor-sensor # This will only install the library for you
pip install tensor-sensor[torch] # install pytorch related dependency
pip install tensor-sensor[tensorflow] # install tensorflow related dependency
pip install tensor-sensor[jax] # install jax, jaxlib
pip install tensor-sensor[all] # install tensorflow, pytorch, jax
Das gibt Ihnen Modul tsensor . Ich habe die folgenden Versionen entwickelt und getestet
$ pip list | grep -i flow
tensorflow 2.5.0
tensorflow-estimator 2.5.0
$ pip list | grep -i numpy
numpy 1.19.5
numpydoc 1.1.0
$ pip list | grep -i torch
torch 1.10.0
torchvision 0.10.0
$ pip list | grep -i jax
jax 0.2.20
jaxlib 0.1.71
Für die Anzeige abstrakter Syntaxbäume (ASTS) mit tsensor.astviz(...) benötigen Sie die ausführbare dot von GraphViz, nicht nur die Python -Bibliothek.
Tun Sie dies vor oder nach dem Tensor-Sensor Installation:
brew install graphviz
Anscheinend brauchen Sie unter Windows
conda install python-graphviz # Do this first; get's dot executable and py lib
pip install tensor-sensor # Or one of the other installs
Ich verlasse mich nur auf Parsing von Zeilen, bei denen es sich um Zuweisungen oder Ausdrücke handelt, damit die Routinen die Ausdrucksmethoden nicht verarbeiten, wie es ausgedrückt wird:
def bar(): b + x * 3
Verwenden Sie stattdessen
def bar():
b + x * 3
Achten Sie auf Nebenwirkungen! Ich mache keine Aufträge, aber alle Funktionen, die Sie mit Nebenwirkungen aufrufen, werden erledigt, während ich Aussagen neu bewertete.
Ich kann nicht mit Kontinuationen umgehen.
Verwenden Sie mit Python threading -Paket nicht mehrere Threads, die Clarify () aufrufen. multiprocessing -Paket sollte in Ordnung sein.
ANMERKUNG: Ich habe meinen eigenen Parser gebaut, um nur die Aufgaben / Ausdrücke zu verarbeiten, die Tsensor verarbeiten kann.
$ python setup.py sdist upload Oder laden Sie lokal herunter und installieren Sie sie
$ cd ~ /github/tensor-sensor
$ pip install .