Neural Circuit Policies 项目介绍
项目背景
Neural Circuit Policies(简称 NCPs)是一种稀疏循环神经网络,这一设计灵感来自于一种名为秀丽隐杆线虫(C. elegans)的生物神经系统。NCPs 的目标是为 PyTorch 和 Keras 用户提供一套简单易用的工具,让使用 NCPs 更为便捷。
核心功能
项目提供了两种主要的模型:液体时间常数(LTC)和闭式连续时间模型(CfC)。这两种模型可以作为 tf.keras.layers.Layer
或 torch.nn.Module
的循环神经网络层。
示例代码
下面的 Python 代码演示了如何使用 PyTorch 中的 CfC 模型:
import torch
from ncps.torch import CfC
# 创建 CfC RNN 层
rnn = CfC(20, 50) # 输入 20,隐藏单元 50
x = torch.randn(2, 3, 20) # (批次, 时间步长, 特征)
h0 = torch.zeros(2, 50) # 初始化隐藏状态
output, hn = rnn(x, h0)
项目的灵活性
NCPs 的独特之处在于其结构化的连接图,用户既可以使用预设的全连接模式(如 LSTM 和 GRU),也可以根据需要调整神经元的连接。利用 AutoNCP
模块,用户可以定义 NCPs 的结构,适用于更复杂和特定的应用场景。
示例代码
以 PyTorch 为例,结合结构化连接图的使用:
from ncps.torch import CfC, LTC
from ncps.wirings import AutoNCP
# 定义 NCPs 的连接方式
wiring = AutoNCP(28, 4) # 28 个神经元,4 个输出
input_size = 20
# 根据连接方式创建 RNN 层
rnn = CfC(input_size, wiring)
rnn = LTC(input_size, wiring)
适用平台
NCPs 项目不仅支持 PyTorch,还支持 TensorFlow。用户可以在 ncps.tf
模块中访问相应的绑定。
示例项目及实践
项目提供了一系列 Colab 笔记本,帮助用户深入了解如何使用该包。这些笔记本包括基础使用教程以及一些特定应用场景的示例,如处理不规则采样时间序列和与其他层结合使用等。
此外,项目还提供了一些端到端的使用示例,如复刻 Atari 游戏行为、Atari 强化学习和更多快速入门指南,非常适合初学者参考。
结语
通过 NCPs,用户可以利用类似生物神经网络的优势,构建高效且省资源的神经网络,对于需要可审计自动化的场景特别适用。项目的开源性质允许开发者基于此框架开发定制化解决方案,为神经网络研究和应用提供了一种新的可能性。