pytorch的一种高效酉神经网络实现

torch-eunn的Python项目详细描述


火炬

这个存储库包含一个简单的pytorch实现 酉神经网络(eunn)单元。

该实现松散地基于本文中提出的可调eunn 纸张:https://arxiv.org/abs/1612.05231

安装

    pip install torch_eunn

用法

fromtorch_eunnimportEUNN# feed forward layerfromtorch_eunnimportEURNN# recurrent unit

注意

正如“与原始实现的区别”一节中所述,eunn的hidden_size^{em1}}$和的capacity需要是偶数

示例

要求

  • PyTorch>;=0.4.0:conda install pytorch -c pytorch

与原始实现的差异

eunn的这个实现与原来的有很大的不同 执行建议 https://arxiv.org/abs/1612.05231,这是 概述如下。

在最初的实现中,顶部定向耦合器的第一个输出 一个容量-2子层跳过第二层定向耦合器 (在下面的ascii图中用点表示)连接到下一个 EUNN的Capacity-2子层。相反的情况发生在底部, 跳过Capacity-2子层的第一层。这边,A (2*n+1)创建多维酉矩阵表示,使用n 在每个容量-1子层中的混合单元的数目。

  __  __......
    \/
  __/\____  __
          \/
  __  ____/\__
    \/
  __/\____  __
          \/
  ......__/\__

对于每个有N=2*n+1输入(N奇数)的capacity-1子层,我们有N-1 参数(每个混合单元有2个参数)。从而得到酉矩阵 跨越整个酉空间的表示,需要N容量-1 附加到容量后面的层Nextra阶段-N 子层使酉矩阵中的参数总数 表示为N**2( 酉矩阵)。

在这里提出的实现中,每个capacity-2子层中的点是 连接到它们自己(周期性边界)。这意味着 对于每个带有n定向耦合器的capacity-1子层,有N=2*n 输入和尽可能多的独立参数。这意味着我们只需要N 容量-1子层和noextra相位以跨越整个酉空间 使用N**2参数。

然而,这意味着 酉矩阵应该总是偶数。另外,因为前传是 按容量定义-2子层(与 最初的实现)容量也必须是even

许可证

©弗洛里斯·拉波特,2018-2019年。

在麻省理工学院的许可下提供。

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

推荐PyPI第三方库


热门话题
与ReentrantLock相比,java ReentrantReadWriteLock的性能非常差   java如何使用Maven Android Studio正确导入?   安卓将ADB添加到我的Java PC应用程序   反射Java getDeclaredConstructor失败,来自JUnit的NoSuchMethodException   JSP上siteedit标记库的java替代   JavaSpring环境概要文件和JPA   java中是否有一个类似于StringBuilder的类,唯一的区别是它具有固定的长度?   JavaMathContext。小数点32 vs MathContext。小数点64,使用哪一个,为什么?   java使用spring在Ibm Websphere MQ中实现重试逻辑   java调用SpriteBatch。开始()和结束()   java有一种从文本中读取文本的方法。文件,并将其设置为pom中的maven属性。xml专家?   java让sitemesh使用struts2   Java Swing:在现有窗口上定位对话框   使用带有MemSql的JPA本机查询的java Select json列