优化numpys einsum函数

opt-einsum的Python项目详细描述


Build StatuscodecovAnaconda-Server BadgePyPIDocumentation StatusDOI

优化的einsum:张量压缩序优化器

优化的einsum可以显著减少类einsum表达式的总体执行时间(例如, ^{}^{}^{}^{}, ) 通过优化表达式的压缩顺序并将多个 对规范blas、cublas或其他特殊例程的操作。优化 einsum对后端是不可知的,可以处理numpy、dask、pytorch, tensorflow、cupy、sparse、theano、jax和autograd数组 任何符合标准api的库。见 documentation了解更多 信息。

示例用法

^{} 函数通常可以作为einsum的替换项。 功能无需进一步更改代码,同时提供卓越的性能。 这里,张量收缩是通过优化和不优化来实现的:

importnumpyasnpfromopt_einsumimportcontractN=10C=np.random.rand(N,N)I=np.random.rand(N,N,N,N)%timeitnp.einsum('pi,qj,ijkl,rk,sl->pqrs',C,C,I,C,C)1loops,bestof3:934msperloop%timeitcontract('pi,qj,ijkl,rk,sl->pqrs',C,C,I,C,C)1000loops,bestof3:324usperloop

在这个特定的例子中,我们看到大约3000倍的性能改进,这是 与未优化的宫缩相比并不少见。见backend examples 有关使用其他后端的详细信息。

功能

在这个存储库中找到的算法经常支持einsum优化 在上述许多项目中。例如,优化np.einsum 已向上游传递,大多数相同的功能可以在 可以使用np.einsum(..., optimize=True)启用此存储库。然而, 对于复杂的压缩,这个存储库通常有更多的最新算法。

以下功能由opt_einsum启用:

有关更多功能,请参见documentation

安装

opt_einsum可以通过pip install opt_einsum或从condaconda install opt_einsum -c conda-forge安装。有关进一步的方法,请参见安装documenation

引文

如果此代码有助于您的研究,请引用:

Daniel G.A.Smith和Johnnie Gray,opt_Einsum-一个用于优化类Einsum表达式的压缩顺序的Python包。开源软件杂志2018,3(26),753

doi:https://doi.org/10.21105/joss.00753

贡献

欢迎所有贡献、错误报告、错误修复、文档改进、增强和想法。

有关如何贡献的详细概述可以在contributing guide中找到。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java为BST支持的符号表创建Iterable   java抽屉布局在按下后未关闭(取决于supportv4 lib)   java Spring Soap拦截器如何修改消息的内容?   使用camel和springboot时,java ProducerTemplate始终为空   RecycleServiceAdapter中的java itemview不能为空错误   java HSSFCell setCellStyle将样式应用于所有工作表的单元格,而不是所选单元格   java底页Android滚动问题   导致一致GC搅动的java技术   java Ho w在用户成功登录SAML OKTA后获取用户信息   java始终在顶部图像视图   java如何在Android中创建需要上下文的单例?   java Jersey提供程序未以编程方式获取上下文   java Observablelist和arraylist,不同的行为   java构造函数给我的参数列表长度不同   java Eclipse Lombok批注未编译。。。为什么?