Voir l'article clarifiant les exceptions et visualisation des opérations du tenseur dans le code d'apprentissage en profondeur et les diapositives de mise en œuvre des tensensteurs (PDF).
( En septembre 2021, les Mac M1 éprouvent des instructions illégales dans de nombreuses bibliothèques de tenseur installées via Anaconda, vous devez donc vous attendre à ce que le tenseur ne fonctionne que sur les Mac basés sur Intel en ce moment. Pytorch semble fonctionner. )
Au lieu du message d'exception par défaut suivant:
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)
Le tenseur augmente le message avec plus d'informations sur l'opérateur a provoqué le problème et comprend la forme des opérandes:
Cause: @ on tensor operand W w/shape (764, 100) and operand X.T w/shape (764, 200)
Vous pouvez également obtenir le graphique de calcul complet pour une expression qui comprend toutes les formes de sous-expression.
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 ())donne l'arbre de syntaxe abstrait suivant avec des formes:
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
ce qui vous donne le module tsensor . J'ai développé et testé avec les versions suivantes
$ 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
Pour afficher des arbres de syntaxe abstraits (AST) avec tsensor.astviz(...) , vous avez besoin de l'exécutable dot de Graphviz, pas seulement de la bibliothèque Python.
Sur Mac , faites-le avant ou après l'installation du capot de tenseur:
brew install graphviz
Sur Windows , vous avez apparemment besoin
conda install python-graphviz # Do this first; get's dot executable and py lib
pip install tensor-sensor # Or one of the other installs
Je compte sur des lignes d'analyse qui ne sont que des affectations ou des expressions pour que les routines clarifient et expliquent ne pas gérer les méthodes exprimées comme:
def bar(): b + x * 3
Au lieu de cela, utilisez
def bar():
b + x * 3
Attention aux effets secondaires! Je ne fais pas de missions, mais toutes les fonctions que vous appelez avec des effets secondaires seront effectuées pendant que je réévalue les instructions.
Impossible de gérer Continuations.
Avec Python threading Package, n'utilisez pas plusieurs threads appelant Clarify (). Le package multiprocessing devrait être bien.
Remarque également: j'ai construit mon propre analyseur pour gérer uniquement les affectations / expressions que Tsensor peut gérer.
$ python setup.py sdist upload Ou télécharger et installer localement
$ cd ~ /github/tensor-sensor
$ pip install .