
Tensorly est une bibliothèque Python qui vise à rendre l'apprentissage du tenseur simple et accessible. Il permet d'effectuer facilement la décomposition du tenseur, l'apprentissage du tenseur et l'algèbre du tenseur. Son système backend permet d'effectuer un calcul de manière transparente avec Numpy, Pytorch, Jax, Tensorflow, Cupy ou Paddle, et d'exécuter des méthodes à grande échelle sur CPU ou GPU.
La seule condition préalable est d'installer Python 3 . Le moyen le plus simple est via la distribution Anaconda.
| Avec PIP (recommandé) | Avec conda |
pip install -u tensorly
| conda install -c tensorly tenore
|
| Développement (de Git) | |
# cloner le référentiel
git clone https://github.com/tensorly/tensorly
CD Tensorly
# Installer en mode modifiable avec `-e` ou, équivalence,` - Editable`
pip install -e.
| |
Remarque: Tensorly dépend de Numpy par défaut. Si vous souhaitez utiliser d'autres backends, vous devrez installer ces packages séparément.
Pour une instruction détaillée, veuillez consulter la documentation.
Créez un petit tenseur de troisième commande de taille 3 x 4 x 2, à partir d'un réseau Numpy et effectuez des opérations simples:
import tensorly as tl
import numpy as np
tensor = tl . tensor ( np . arange ( 24 ). reshape (( 3 , 4 , 2 )), dtype = tl . float64 )
unfolded = tl . unfold ( tensor , mode = 0 )
tl . fold ( unfolded , mode = 0 , shape = tensor . shape )Vous pouvez également créer des tenseurs aléatoires:
from tensorly import random
# A random tensor
tensor = random . random_tensor (( 3 , 4 , 2 ))
# A random CP tensor in factorized form
cp_tensor = random . random_tensor ( shape = ( 3 , 4 , 2 ), rank = 'same' )Vous pouvez également créer des tenseurs dans le format TT, Tucker, etc., voir les tenseurs aléatoires.
Vous pouvez modifier le backend pour effectuer des calculs avec un cadre différent. Par défaut, le backend est Numpy, mais vous pouvez également effectuer le calcul à l'aide de Pytorch, Tensorflow, Jax, Cupy ou Padle (nécessite de les avoir installés en premier). Par exemple, après avoir défini le backend sur Pytorch, tout le calcul est effectué par Pytorch et les tenseurs peuvent être créés sur GPU:
tl . set_backend ( 'pytorch' ) # Or 'numpy', 'tensorflow', 'cupy' or 'jax'
tensor = tl . tensor ( np . arange ( 24 ). reshape (( 3 , 4 , 2 )), device = 'cuda:0' )
type ( tensor ) # torch.Tensor L'application de la décomposition du tenseur est facile:
from tensorly . decomposition import tucker
# Apply Tucker decomposition
tucker_tensor = tucker ( tensor , rank = [ 2 , 2 , 2 ])
# Reconstruct the full tensor from the decomposed form
tl . tucker_to_tensor ( tucker_tensor )Nous avons beaucoup plus de décompositions disponibles, assurez-vous de les vérifier!
Ce n'est qu'une introduction très rapide à certaines des caractéristiques de base de Tensorly. Pour plus d'informations sur le démarrage, consultez le guide utilisateur et pour une référence détaillée des fonctions et de sa documentation, reportez-vous à l'API
Si vous voyez un bogue, ouvrez un problème ou mieux encore, une demande de traction!
Toutes les contributions sont les bienvenues! Donc, si vous avez une méthode de tenseur cool que vous souhaitez ajouter, si vous apercevez un bug ou même une faute de frappe ou une erreur dans la documentation, veuillez le signaler, et encore mieux, ouvrez une requête de traction sur Github.
Avant de soumettre vos modifications, vous devez vous assurer que votre code adhère à notre guide de style. La façon la plus simple de le faire est avec le noir:
pip install black
black .Les tests et la documentation sont une partie essentielle de ce package et toutes les fonctions sont livrées avec des tests uniques et de la documentation.
Les tests sont effectués à l'aide du package Pytest. Installez d'abord Pytest:
pip install pytest
Ensuite, pour exécuter le test, exécutez simplement, dans le terminal:
pytest -v tensorly
Alternativement, vous pouvez spécifier pour quel backend vous souhaitez exécuter les tests:
Tensorly_backend = 'numpy' pytest -v tensorly
Si vous utilisez Tensorly dans un document académique, veuillez citer [1]:
@article {Tensorly,
Auteur = {Jean Kossaifi et Yannis Panagakis et Anima Anandkumar et Maja Pantic},
title = {Tensorly: Tensor Learning in Python},
Journal = {Journal of Machine Learning Research},
année = {2019},
volume = {20},
nombre = {26},
pages = {1-6},
url = {http://jmlr.org/papers/v20/18-277.html}
}
| [1] | Jean Kossaifi, Yannis Panagakis, Anima Anandkumar et Maja Pantic, Tensorly: Tensor Learning in Python , Journal of Machine Learning Research (JMLR) , 2019, volume 20, numéro 26. |