
Tensorly es una biblioteca de Python que tiene como objetivo hacer que el aprendizaje de tensor sea simple y accesible. Permite realizar fácilmente la descomposición del tensor, el aprendizaje del tensor y el álgebra tensor. Su sistema de backend permite realizar un cálculo sin problemas con Numpy, Pytorch, Jax, TensorFlow, Cupy o Paddle, y ejecutar métodos a escala en CPU o GPU.
El único requisito previo es tener instalado Python 3 . La forma más fácil es a través de la distribución de Anaconda.
| Con Pip (recomendado) | Con conda |
PIP install -u tensorly
| Conda Install -C Tensorly Tensorly
|
| Desarrollo (de Git) | |
# clon el repositorio
Git clon https://github.com/tensorly/tensorly
CD tensorly
# Instalar en modo editable con `-e` o, de manera equivalente,` --Editable` "
PIP install -e.
| |
Nota: Tensorly depende de Numpy por defecto. Si desea usar otros backends, deberá instalar estos paquetes por separado.
Para una instrucción detallada, consulte la documentación.
Cree un pequeño tensor de tercer orden del tamaño 3 x 4 x 2, a partir de una matriz numpy y realice operaciones 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 )También puede crear tensores aleatorios:
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' )También puede crear tensores en TT-formato, Tucker, etc., ver tensores aleatorios.
Puede cambiar el backend para realizar el cálculo con un marco diferente. Por defecto, el backend es numpy, pero también puede realizar el cálculo con Pytorch, TensorFlow, Jax, Cupy o Paddle (requiere haberlos instalado primero). Por ejemplo, después de configurar el backend en Pytorch, Pytorch realiza todo el cálculo, y los tensores se pueden crear en 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 Aplicar la descomposición del tensor es fácil:
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 )Tenemos muchas más descomposiciones disponibles, ¡asegúrese de revisarlas!
Esta es solo una introducción muy rápida a algunas de las características básicas de Tensorly. Para obtener más información sobre cómo comenzar, consulte la guía del usuario y para obtener una referencia detallada de las funciones y su documentación, consulte la API
Si ve un error, abre un problema o mejor aún, ¡una solicitud de extracción!
¡Todas las contribuciones son bienvenidas! Entonces, si tiene un método de tensor genial que desea agregar, si detecta un error o incluso un error tipográfico o un error en la documentación, infórmelo, e incluso mejor, abra una solicitud de extracción en Github.
Antes de enviar sus cambios, debe asegurarse de que su código se adhiera a nuestra guía de estilo. La forma más fácil de hacer esto es con el negro:
pip install black
black .Las pruebas y la documentación son una parte esencial de este paquete y todas las funciones vienen con unas pruebas y documentación.
Las pruebas se ejecutan usando el paquete Pytest. Primero instalar Pytest:
PIP install Pytest
Luego, para ejecutar la prueba, simplemente ejecute, en la terminal:
pytest -v tensorly
Alternativamente, puede especificar para qué backend desea ejecutar las pruebas:
Tensorly_backend = 'numpy' pytest -v tensorly
Si usa tensorly en un artículo académico, cite [1]:
@article {tensorly,
Autor = {Jean Kossaifi y Yannis Panagakis y Anima Anandkumar y Maja Pantic},
title = {Tensorly: Tensor Learning in Python},
Journal = {Journal of Machine Learning Research},
año = {2019},
volumen = {20},
número = {26},
páginas = {1-6},
url = {http://jmlr.org/papers/v20/18-277.html}
}
| [1] | Jean Kossaifi, Yannis Panagakis, Anima Anandkumar y Maja Pantic, Tensorly: Tensor Learning in Python , Journal of Machine Learning Research (JMLR) , 2019, Volumen 20, Número 26. |