
Tensorly是一個Python庫,旨在使張量學習變得簡單易懂。它允許輕鬆執行張量分解,張量學習和張量代數。它的後端系統允許使用Numpy,Pytorch,Jax,Tensorflow,Cupy或Paddle無縫執行計算,並在CPU或GPU上按大規模運行方法。
唯一的先決條件是安裝Python 3 。最簡單的方法是通過Anaconda分佈。
| 使用PIP (推薦) | 與Conda |
pip安裝-u張力
| conda安裝-c張力張力
|
| 開發(來自git) | |
#克隆存儲庫
git克隆https://github.com/tensorly/tensorly
CD張力
#以`-e`或等效地安裝可編輯模式安裝`` -
PIP安裝-e。
| |
注意:默認情況下,張力依賴於numpy。如果要使用其他後端,則需要單獨安裝這些軟件包。
有關詳細說明,請參閱文檔。
從numpy陣列中創建一個小尺寸3 x 4 x 2的小三階張量,然後對其進行簡單的操作:
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 )您還可以創建隨機張量:
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' )您還可以在TT-Format,Tucker等中創建張量,請參閱隨機張量。
您可以更改後端以使用不同的框架執行計算。默認情況下,後端是Numpy,但是您也可以使用Pytorch,Tensorflow,Jax,Cupy或Paddle執行計算(需要先安裝它們)。例如,將後端設置為Pytorch後,所有計算都是由Pytorch完成的,並且可以在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 應用張量分解很容易:
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 )我們還有更多的分解,請務必檢查它們!
這只是對Tensorly的一些基本功能的快速介紹。有關入門的更多信息,請查看用戶指南以及有關功能及其文檔的詳細參考,請參閱API
如果您看到一個錯誤,請打開問題,或者更好的是,請進行抽籤!
歡迎所有貢獻!因此,如果您要添加一個涼爽的張量方法,如果您在文檔中發現錯誤甚至錯誤或錯誤,請報告它,甚至更好,在GitHub上打開plup-要求。
在提交更改之前,應確保您的代碼遵守我們的樣式指南。最簡單的方法是與黑色:
pip install black
black .測試和文檔是此軟件包的重要組成部分,所有功能都帶有Uni檢驗和文檔。
使用PYTEST軟件包進行測試。首先安裝pytest:
PIP安裝pytest
然後,要運行測試,只需在終端中運行:
pytest -v tensorly
另外,您可以指定要運行測試的後端:
tensorly_backend ='numpy'pytest -v tensorly
如果您在學術論文中使用張力,請引用[1]:
@article {tensorly,
作者= {Jean Kossaifi和Yannis Panagakis和Anima Anandkumar和Maja Pantic},
title = {tensorly:python中的張量學習},
日記= {機器學習研究期刊},
年= {2019},
音量= {20},
數字= {26},
頁= {1-6},
url = {http://jmlr.org/papers/v20/18-277.html}
}
| [1] | Jean Kossaifi,Yannis Panagakis,Anima Anandkumar和Maja Pantic, Tensorly:Python中的張量學習,機器學習研究雜誌(JMLR) ,2019年,2019年,第20卷,編號26。 |