tntorch - Tensor Network Learning with PyTorch
by rballester
https://tntorch.readthedocs.io/
Github项目地址:
https://github.com/rballester/tntorch
New:我们的 Read the Docs 网站已经发布!
欢迎使用tntorch,一个使用张量网络的PyTorch驱动的建模和学习库。 这种网络的独特之处在于它们使用多线性神经单元(而不是非线性激活单元)。 功能包括:
张量、广播、转让等的基本和花哨索引
张量的分解和重建
元素和张量算术
使用交叉近似从黑盒函数构建张量
统计和敏感性分析
使用自动分化进行优化
杂项。对张量的操作:堆叠、展开、取样、求导等
可用的张量格式包括:
CANDECOMP/PARAFAC (CP)
Tucker
Tensor train (Tensor训练 - TT)
混合: CP-Tucker, TT-Tucker 等等。
部分支持其他分解,如 INDSCAL, CANDELINC, DEDICOM, PARATUCK2, 和自定义格式
例如,以下网络都代表TT和TT-Tucker格式的4D张量(即可以采用 I1 x I2 x I3 x I4可能值的实数函数):
在tntorch 中,所有张量分解共享相同的接口。 你可以用容易理解的形式处理它们,就像它们是纯NumPy数组或PyTorch张量一样:
import tntorch as tn
t = tn.randn(32, 32, 32, 32, ranks_tt=5) # Random 4D TT tensor of shape 32 x 32 x 32 x 32 and TT-rank 5
print(t)
4D TT tensor:
32 32 32 32
| | | |
(0) (1) (2) (3)
/ \ / \ / \ / \
1 5 5 5 1
> print(tn.mean(t))
tensor(8.0388)
> print(tn.norm(t))
tensor(9632.3726)
解压缩张量很容易:
> print(t.torch().shape)
torch.Size([32, 32, 32, 32])
由于PyTorch的自动微分,你可以很容易地定义张量上的各种损失函数:
def loss(t):
return torch.norm(t[:, 0, 10:, [3, 4]].torch()) # NumPy-like "fancy indexing" for arrays
最重要的是,损失函数也可以在压缩张量上定义:
def loss(t):
return tn.norm(t[:3, :3, :3, :3] - t[-3:, -3:, -3:, -3:])
查看 introductory notebook ,了解有关基础知识的所有详细信息。
Introduction - 介绍
Active subspaces - 活跃子空间
ANOVA decomposition - ANOVA分解
Boolean logic - 布尔逻辑
Classification - 分类
Cross-approximation - 交叉近似
Differentiation - 微分
Discrete/weighted finite automata - 离散/加权有限自动机
Exponential machines - 指数机器
Main tensor formats available - 可用的主要张量格式
Other custom formats - 其他自定义格式
Polynomial chaos expansions - 多项式混沌扩张
Tensor arithmetics - 张量算法
Tensor completion and regression - 张量补全与回归
Tensor decomposition - 张量分解
Sensitivity analysis - 敏感性分析
Vector field data - 矢量场数据
主要依赖项是 NumPy 和 PyTorch。 要下载并安装 tntorch ,请输入:
git clone https://github.com/rballester/tntorch.git
cd tntorch
pip install .
我们使用 pytest 进行测试。 简单地运行以下命令即可:
cd tests/
pytest
我们非常欢迎进行pull request。
除了使用问题跟踪器,你也可以通过rballester@ifi.uzh.ch与我联系。
点击阅读原文,查看本文更多内容