CANNs 文档¶
欢迎来到 CANNs (连续吸引子神经网络) 文档!本库为构建、训练和分析连续吸引子神经网络提供了统一的高级API。
可视化展示¶
1D CANN 平滑追踪平滑追踪过程中的实时动力学 |
2D CANN 群体编码
空间信息编码模式 |
Theta 扫描分析
网格细胞和方向细胞网络的 theta 节律调制 |
|
Bump 分析
1D bump 拟合与分析 |
环面拓扑分析
3D 环面可视化与解码 |
📖 内容目录
API 参考
- API Reference
- src.canns
- src.canns.misc
- src.canns.task
- src.canns.models
- src.canns.typing
- src.canns.trainer
- src.canns.analyzer
- src.canns.pipeline
- src.canns.models.basic
- src.canns.models.hybrid
- src.canns.task.tracking
- src.canns.analyzer.utils
- src.canns.misc.benchmark
- src.canns.trainer.hebbian
- src.canns.analyzer.spatial
- src.canns.models.basic.cann
- src.canns.analyzer.plotting
- src.canns.analyzer.theta_sweep
- src.canns.pipeline.theta_sweep
- src.canns.task.navigation_base
- src.canns.models.brain_inspired
- src.canns.analyzer.plotting.energy
- src.canns.analyzer.plotting.tuning
- src.canns.analyzer.plotting.spikes
- src.canns.analyzer.plotting.config
- src.canns.analyzer.plotting.spatial
- src.canns.task.open_loop_navigation
- src.canns.analyzer.experimental_data
- src.canns.task.closed_loop_navigation
- src.canns.models.basic.theta_sweep_model
- src.canns.models.brain_inspired.hopfield
- src.canns.models.basic.hierarchical_model
- src.canns.analyzer.experimental_data.cann1d
- src.canns.analyzer.experimental_data.cann2d
关于 CANNs¶
连续吸引子神经网络 (CANNs) 是一类神经网络模型,其特征是能够在连续状态空间中维持稳定的活动模式。本库提供:
丰富的模型库: 1D/2D CANNs、SFA模型、层次化网络
面向任务的设计: 路径积分、平滑跟踪、自定义任务
强大的分析工具: 实时可视化、统计分析
高性能: 基于JAX的计算,支持GPU/TPU
快速安装¶
# 基础安装 (CPU)
pip install canns
# GPU支持 (Linux)
pip install canns[cuda12]
# TPU支持 (Linux)
pip install canns[tpu]
快速示例¶
以下是一个完整的示例,展示如何创建1D CANN、运行平滑跟踪任务并可视化结果:
import brainstate
from canns.models.basic import CANN1D
from canns.task.tracking import SmoothTracking1D
from canns.analyzer.plotting import PlotConfigs, energy_landscape_1d_animation
# 设置环境并创建1D CANN网络
brainstate.environ.set(dt=0.1)
cann = CANN1D(num=512)
cann.init_state()
# 定义具有多个目标位置的平滑跟踪任务
task = SmoothTracking1D(
cann_instance=cann,
Iext=(1., 0.75, 2., 1.75, 3.),
duration=(10., 10., 10., 10.),
time_step=brainstate.environ.get_dt(),
)
task.get_data()
# 使用编译循环运行仿真以提高效率
def run_step(t, inputs):
cann(inputs)
return cann.u.value, cann.inp.value
us, inps = brainstate.compile.for_loop(
run_step, task.run_steps, task.data,
pbar=brainstate.compile.ProgressBar(10)
)
# 使用动画可视化结果
config = PlotConfigs.energy_landscape_1d_animation(
title='1D CANN 平滑跟踪',
save_path='tracking_demo.gif'
)
energy_landscape_1d_animation(
{'活动': (cann.x, us), '输入': (cann.x, inps)},
config=config
)