stigmergic神经网络的pytorch实现

torchsnn的Python项目详细描述


火炬

本文Using stigmergy to incorporate the time into artificial neural networks中stigmergic神经网络的pytorch实现。

该软件包的编写意图是使As{{ STR 1 } $易< /强>尽可能地将SiggSyric神经网络集成到已有的模型中。

您可以安全地mix使用我们的本地pytorch模块。
唯一的catch应该使用stigmergicmodule(它扩展了pytorch的module)作为模型的基类,以便能够tick()reset()它们。

实现我们的proposed architecture to solve MNIST变得非常简单:

importtorchimporttorchsnnnet=torchsnn.Sequential(torchsnn.SimpleLayer(28,10),torchsnn.FullLayer(10,10),torchsnn.TemporalAdapter(10,28),torch.nn.Linear(10*28,10),torch.nn.Sigmoid())

您可以像使用pytorch的module那样训练stigmergicmodule,但不要忘记reset()tick()它!

optimizer=torch.optim.Adam(net.parameters(),lr=0.001)foriinrange(0,N):forX,Yinzip(dataset_X,dataset_Y):net.reset()out=NoneforxiinX:out=net(torch.tensor(xi,dtype=torch.float32))net.tick()loss=(Y-out)**2loss.backward()optimizer.step()

它支持批量输入吗?

是的!如果将一批输入转发到stigmergicmodule,它将返回一批输出

fortinrange(0,num_ticks):batch_out[0],batch_out[1],...=net(torch.tensor([batch_in[0][t],batch_in[1][t],...]))net.tick()

它能在库达身上运行吗?

是的,正如你所期望的那样,从Pythorch模块!
您只需调用模型上的to(device)方法即可将其移动到gpu内存中。

device=torch.device("cuda")net=net.to(device)net.forward(torch.tensor(...,device=device))

文档

扭矩传感器模块

stigmergic网络或层的基类。
如果您正在编写自己的stigmergicmodule则必须实现函数

  • 滴答声()
  • reset()

如果您正在使用其他stigmergicmodule它将在其子树中传播这些调用。
例如,如果您想用linearsimplelayer构建一个网络,您可以执行如下操作:

importtorchimporttorchsnnclassTestNetwork(torchsnn.StigmergicModule):def__init__(self):torchsnn.StigmergicModule.__init__(self)self.linear=torch.nn.Linear(2,5)self.stigmergic=torchsnn.SimpleLayer(5,2)defforward(self,input):l1=torch.sigmoid(self.linear(input))l2=self.stigmergic(l1)returnl2net=TestNetwork()

顺序转矩

具有相同接口torch.nn.sequential的函数,用于构建顺序网络。
上一示例的相同网络可以使用:

importtorchimporttorchsnnnet=torchsnn.Sequential(torch.nn.Linear(2,5),torch.nn.Sigmoid(),torchsnn.SimpleLayer(5,2))

简单火炬手

在这一层中,只有阈值是stigmergic变量,它们的{em1}$stimuli是输出值。


全层火炬

在这一层中,阈值和权重都是stigmergic变量,它们的{em1}$stimuli分别是输出值和输入值。


引用

我们迫不及待地想看看你会用stigmergic神经网络来构建什么!
当你发表你的作品时,你可以用这个bibtex来引用我们:)

@article{galatolo_snn
,	author	= {Galatolo, Federico A and Cimino, Mario GCA and Vaglini, Gigliola}
,	title	= {Using stigmergy to incorporate the time into artificial neural networks}
,	journal	= {MIKE 2018}
,	year	= {2018}
}

贡献

这段代码是在gnu/gplv3下发布的,所以请随意分叉并提交更改,每个pr都有帮助。
如果您需要帮助,请致电galatolo.federico@gmail.com或致电@galatolo

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

推荐PyPI第三方库


热门话题
java Tyrus服务器端点@OnMessage方法未触发   java如何为列表项动态设置boder颜色?   导致错误的java ManyToOne关系无法解析表的绑定   java Jenkins:Gerrit触发器问题的设置   java Mock使用Mockito和PowerMock获取HttpServletRequest和Principal的静态方法   java未找到适合jdbc的驱动程序:derby://localhost:1527/prosto   创建Java对话框的用户界面   java JUnit Hamcrest断言   java中的二元和多元统计   java静态方法重新定义规则   java创建唯一的增量id并将其添加到集合中   C/C++/Java中的运算符   java需要创建一个带有自定义比较器的二进制搜索树,但似乎无法让它工作   在java中交换字符串中的字符组?   java Unnable将我的SpringBoot API连接到MYSQL数据库