用于创建稀疏线性层的Pythorch扩展库

sparselinear的Python项目详细描述


稀疏的

SparseLinear是一个Pythorch包,它允许用户高效地创建非常宽和稀疏的线性层。稀疏连接网络是指每个节点都连接到可用节点的一小部分的网络。这与完全连接的网络不同,一层中的每个节点都连接到下一层中的每个节点。在

提供的层和动态激活稀疏模块兼容反向传播。稀疏线性层以稀疏性初始化,支持非结构化稀疏性,并允许动态增长和修剪。我们通过在PyTorch Sparse上构建一个线性层来实现这一点,该层在PyTorch中提供了优化的稀疏矩阵操作和自动加载支持。在

目录

更多关于稀疏线

默认参数使用随机连接初始化稀疏线性层,该层将线性转换应用于传入数据

参数

  • in_features-每个输入样本的大小
  • out_features-每个输出样本的大小
  • bias-如果设置为False,层将不会学习加性偏差。默认值:True
  • sparsity-权矩阵的稀疏性。默认值:0.9
  • connectivity—用户定义的稀疏矩阵。默认值:None
  • small_world-生成小世界稀疏性的布尔标志。默认值:False
  • dynamic-布尔标志,用于动态更改网络结构。默认值:False
  • deltaT-增长和修剪更新步骤的频率。默认值:6000
  • Tend—增长和修剪算法更新步骤的停止时间。默认值:150000
  • alpha-f余弦更新的衰变参数。默认值:0.1
  • max_size-发生分块之前允许的最大条目数。默认值:1e8

形状

  • 输入:(N, *, H_{in}),其中*表示任何数量的附加维度,H_{in} = in_features
  • 输出:(N, *, H_{out})其中除了最后一个维度外,所有维度都与输入和H_{out} = out_features相同

变量

  • ~稀疏线性重量-形(out_features, in_features)模的可学习权重。值从初始化,其中
  • ~稀疏线性偏差-形(out_features)模的可学习偏差。如果biasTrue,则值从哪里初始化

示例:

>>>m=nn.SparseLinear(20,30)>>>input=torch.randn(128,20)>>>output=m(input)>>>print(output.size())torch.Size([128,30])

以下自定义也可以使用适当的参数完成-

用户定义的稀疏性

可以选择添加自定义静态稀疏度。{nonensor>表示第20层的元素。在

小世界稀疏性

默认的静态稀疏度是随机的。有了这面旗帜,人们可以使用小世界稀疏性。见here。若要指定,请将small_world设置为True。具体地说,我们使连接变得遥不可及,以确保小世界的行为。在

动态增长和剪枝算法

用户可以在训练期间使用此功能从稀疏配置开始增长和修剪单元。该实现基于Rigging the lottery算法。将dynamic指定为True,以便在训练时动态更改层连接。在

动态激活稀疏性

此外,我们提供了一个动态激活稀疏模块,以利用原则性的每层激活稀疏性。算法实现基于K-Winners strategy。在

参数

  • alpha-更新占空比时使用的常量。默认值:0.1
  • beta-提升前一个占空比中未激活的神经元因子。默认值:1.5
  • act_sparity-用于计算K for K-Winners策略的输入分数。默认值:0.65

形状

  • 输入:(N, *),其中*表示任何数量的附加维度
  • 输出:(N, *),与输入形状相同

示例:

^{pr2}$

安装

  • 按照安装说明,从here安装Pytorch稀疏包。在
  • 然后运行pip install sparselinear

入门

我们在this存储库中提供了一个Jupyter笔记本,它演示了稀疏线性层的基本功能。我们还展示了使用这个包的附加功能来训练各种模型的步骤。在

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

推荐PyPI第三方库


热门话题
使用JavaCV库进行图像旋转的java问题   为Java类创建相等的方法来比较double或int值   javarmi、EJB和回调   用java编写phonegap应用程序(使用GWT、Vaadin等)   java在Hibernate中设置参数值时指定字符串类型   java正则表达式文本日期   Java Hibernate@SafeHtml不允许url链接   使用Java Trie时,无法识别词尾。在递归中失败   java如何在Swing的JTextArea中执行正则表达式   java如何在列表的所有对象中更改sepecific属性的值   java为什么是我的ArrayList。删除(id)呼叫不工作?   java是否可以将用户从同一个jcombobox输入的项添加到jcombobox中?   java当从Python调用jar时,如何最小化JavaVM的加载时间?   面向对象Java类如何从Entry类获取信息?   java JPA错误:关系不存在