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中使用foreach循环构造LinkedList?   通过jsp发送电子邮件时出现java错误(SMTP EXIM)   EDI流到Java对象转换中的edifact异常   surefireplugin 2.22.2的java Maven构建   在Java中初始化变量一次(从文件中读取并存储在ArrayList/HashMap中)   java是不可修改列表线程安全的吗?   数组无法解析“java.lang.ArrayStoreException”   java Dynamic/Onspot JTextfield到JLabel   java在JavaFXTextArea中显示来自XSLT转换的XML   Java8流通过比较两个列表进行过滤   java在多个EC2实例上更新日志级别   未拾取java IntelliJ maven项目生成的源代码(仅部分)   eclipse在Java8中用函数抽象try/catch   JavaSwing:获取位于前面或焦点中的窗口   java监控Kafka消费者延迟并生成警报   java如何检查一个数字是否超过100,并返回多少?   算法:有用于阻止非英语单词的Java函数吗?