优化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如何在springboot mongodata中使用$in运算符   多线程从等待线程Java释放资源   选择的java DropdownChoice与模型值不同,在ajax更新时更改   java在缓存spring中存储值   java在包资源管理器中突出显示文件   java将double[]转换为不可变列表的成本更低的方法   java Joda DateTimeFormat根据默认语言环境切换“MM”和“dd”的位置   ElasticSearch中的java嵌套搜索不起作用?   java SpringBoot@Scheduled Cron表达式在两个任务之间产生轻微延迟?   Spring应用程序中Tomcat mysql连接池的java动态选择目录   未为modal中的前两个字段发送java密钥   java如何在处理过程中使用循环排列打印的数字?i、 从10秒到100秒的e.x和y轴   java如何使用@ManyToMany审核@JoinTable   java如何防止JSESSIONID显示在URL中   JavaSpringSecurity5Always302