
뇌는보다 효율적인 신경망을 개발하기위한 영감을 찾기에 완벽한 장소입니다. 현대 딥 러닝의 주요 차이점 중 하나는 뇌가 지속적인 활성화보다는 스파이크의 정보를 인코딩한다는 것입니다. SNNTORCH는 스파이크 신경 네트워크로 기울기 기반 학습을 수행하기위한 파이썬 패키지입니다. 그것은 GPU 가속 텐서 계산을 활용하여 스파이크 뉴런 네트워크에 적용하여 Pytorch의 기능을 확장합니다. 사전 디자인 된 스파이크 뉴런 모델은 Pytorch 프레임 워크 내에 매끄럽게 통합되며 재발 성 활성화 장치로 처리 될 수 있습니다.

이 프로젝트가 마음에 드시면이 리포지어를 주연하는 것이 가장 쉽고 지원하는 가장 좋은 방법이기 때문에이 리포지기를 주연으로 생각하십시오.
스파이 킹 신경망 훈련에 대한 문제가 있거나 조언이있는 경우, 불화 채널에서 문제, 토론 또는 채팅을 열 수 있습니다.
snntorch에는 다음 구성 요소가 포함됩니다.
| 요소 | 설명 |
|---|---|
| snntorch | Torch.nn과 같은 스파이크 뉴런 라이브러리, Autograd와 깊이 통합 |
| snntorch.export | NIR을 통해 다른 SNN 라이브러리와의 교차 호환성을 가능하게합니다 |
| snntorch.functional | 스파이크에 대한 일반적인 산술 작업, 예를 들어, 손실, 정규화 등 |
| snntorch.spikegen | 스파이크 생성 및 데이터 변환을위한 라이브러리 |
| snntorch.spikeplot | Matplotlib 및 Celluloid를 사용한 스파이크 기반 데이터를위한 시각화 도구 |
| snntorch.surrogate | 선택적 대리 기울기 기능 |
| snntorch.utils | 데이터 세트 유틸리티 기능 |
SNNTORCH는 각 스파이크 뉴런이 단순히 일련의 층에서 또 다른 활성화 인 것처럼 Pytorch와 함께 직관적으로 사용되도록 설계되었습니다. 그러므로 완전히 연결된 층, 컨볼 루션 층, 잔류 연결 등은 불가지론 적입니다.
현재, 뉴런 모델은 그라디언트를 계산하기 위해 시스템에 모든 뉴런에 대한 막 전위 트레이스를 저장할 필요성을 제거하는 재귀 함수로 표현된다. SNNTORCH의 린 요구 사항을 통해 소규모 및 대형 네트워크는 필요한 경우 CPU에 대해 전적으로 교육 할 수 있습니다. Snntorch는 네트워크 모델과 텐서가 Cuda에로드 된 경우 Pytorch와 같은 방식으로 GPU 가속도를 활용합니다.
작업에 유용한 Snntorch를 찾으면 다음 출처를 인용하십시오.
Jason K. Eshraghian, Max Ward, Emre Neftci, Xinxin Wang, Gregor Lenz, Girish Dwivedi, Mohammed Bennamoun, Doo Seok Jeong 및 Wei D. Lu“Spiking Spiking Neural Networks를 딥 러닝의 수업”. IEEE의 절차, 111 (9) 2023 년 9 월.
@article{eshraghian2021training,
title = {Training spiking neural networks using lessons from deep learning},
author = {Eshraghian, Jason K and Ward, Max and Neftci, Emre and Wang, Xinxin
and Lenz, Gregor and Dwivedi, Girish and Bennamoun, Mohammed and
Jeong, Doo Seok and Lu, Wei D},
journal = {Proceedings of the IEEE},
volume = {111},
number = {9},
pages = {1016--1054},
year = {2023}
}흥미로운 작품, 연구 또는 블로그에서 SNNTORCH를 사용하고 있는지 알려주십시오. [email protected]으로 연락하십시오.
snntorch를 사용하려면 다음 패키지를 설치해야합니다.
SNNTORCH가 PIP 명령을 사용하여 설치되면 자동으로 설치됩니다. CUDA 호환성을 활성화하기 위해 시스템에 올바른 버전의 Torch가 설치되어 있는지 확인하십시오.
설치하려면 다음을 실행하십시오.
$ python
$ pip install snntorch대신 소스에서 snntorch를 설치하려면 :
$ git 클론 https://github.com/jeshraghian/snntorch $ cd snntorch $ python setup.py 설치
Conda로 snntorch를 설치하려면 :
$ Conda 설치 -C Conda -Forge Snntorch
GraphCore의 가속기를 사용하여 지능형 처리 장치 (IPU) 기반 빌드를 설치하려면 :
$ PIP 설치 SNNTORCH-IPU
완전한 API를 여기에서 사용할 수 있습니다. 예, 튜토리얼 및 콜랩 노트북이 제공됩니다.
Snntorch로 시작할 수있는 몇 가지 방법은 다음과 같습니다.
SNNTORCH를 실행하려는 간단한 예를 보려면 다음 스 니펫을 참조하거나 QuickStart 노트를 테스트하십시오.
import torch , torch . nn as nn
import snntorch as snn
from snntorch import surrogate
from snntorch import utils
num_steps = 25 # number of time steps
batch_size = 1
beta = 0.5 # neuron decay rate
spike_grad = surrogate . fast_sigmoid () # surrogate gradient
net = nn . Sequential (
nn . Conv2d ( 1 , 8 , 5 ),
nn . MaxPool2d ( 2 ),
snn . Leaky ( beta = beta , init_hidden = True , spike_grad = spike_grad ),
nn . Conv2d ( 8 , 16 , 5 ),
nn . MaxPool2d ( 2 ),
snn . Leaky ( beta = beta , init_hidden = True , spike_grad = spike_grad ),
nn . Flatten (),
nn . Linear ( 16 * 4 * 4 , 10 ),
snn . Leaky ( beta = beta , init_hidden = True , spike_grad = spike_grad , output = True )
)
data_in = torch . rand ( num_steps , batch_size , 1 , 28 , 28 ) # random input data
spike_recording = [] # record spikes over time
utils . reset ( net ) # reset/initialize hidden states for all neurons
for step in range ( num_steps ): # loop over time
spike , state = net ( data_in [ step ]) # one time step of forward-pass
spike_recording . append ( spike ) # record spikes in list 뉴런 모델에서 신경 코드, 역전술에 이르기까지 스파이 킹 신경망의 모든 기본 사항을 배우려면 SNNTORCH 튜토리얼 시리즈가 시작하기에 좋은 장소입니다. 속도를 높일 수있는 완전한 설명이있는 대화식 노트북으로 구성됩니다.
| 지도 시간 | 제목 | Colab 링크 |
|---|---|---|
| 튜토리얼 1 | Snntorch와 인코딩 | |
| 튜토리얼 2 | 누출 된 통합 및 발사 뉴런 | |
| 튜토리얼 3 | 피드 포워드 스파이크 신경망 | |
| 튜토리얼 4 | 2 차 스파이크 뉴런 모델 (선택 사항) | |
| 튜토리얼 5 | Snntorch를 사용한 스파이킹 신경망 | |
| 튜토리얼 6 | 컨볼 루션 SNN에서 대리 기울기 하강 | |
| 튜토리얼 7 | 토닉 + snntorch가있는 신경성 데이터 세트 |
| 고급 튜토리얼 | Colab 링크 |
|---|---|
| 인구 코딩 | |
| 회귀 : 1 부 - LIF 뉴런을 사용한 막 잠재적 학습 | |
| 회귀 : 파트 II- 반복 LIF 뉴런으로 회귀 기반 분류 | |
| IPU에 snntorch 가속화 | - |
SNNTORCH는 GraphCore의 IPU 가속기에 최적화되었습니다. SNNTORCH의 IPU 기반 빌드를 설치하려면 :
$ PIP 설치 SNNTORCH-IPU
IPU 호환성에 대한 저수준 사용자 정의 작업은 import snntorch 처음으로 요구되면 자동으로 컴파일됩니다.
포플러 SDK를 업데이트 할 때 이러한 작업을 다시 컴파일해야 할 수도 있습니다. 이는 snntorch-ipu 다시 설치하거나 확장자가있는 기본 디렉토리에서 파일을 삭제하여 수행 할 수 있습니다.
snntorch.backprop 모듈 및 snntorch.functional 및 snntorch.surrogate 의 여러 기능은 IPU와 호환되지 않지만 Pytorch 프리미티브를 사용하여 재현 할 수 있습니다.
추가 요구 사항은 다음과 같습니다.
Poptorch 및 Poplar SDK의 설치 지침은 GraphCore의 문서를 참조하십시오.
SNNTORCH IPU 프로젝트의 홈페이지는 여기에서 찾을 수 있습니다. SNN을 훈련하기위한 튜토리얼이 여기에 제공됩니다.
Snntorch에 기여할 준비가 되었다면 여기에서 찾을 수 있습니다.
SNNTORCH는 현재 UCSC Neuromorphic Computing Group에 의해 유지됩니다. 처음에는 LU 그룹 (미시간 대학교)에서 Jason K. Eshraghian이 개발했습니다.
Vincent Sun, Peng Zhou, Ridger Zhu, Alexander Henkes, Steven Abreu, Xinxin Wang, Sreyes Venkatesh, Gekkom 및 Emre Neftci가 추가로 기여했습니다.
SNNTORCH 소스 코드는 MIT 라이센스의 조건에 따라 게시됩니다. SNNTORCH의 문서는 Creative Commons Attribution-Share Alike 3.0 Unported License (CC By-SA 3.0)에 따라 라이센스가 부여됩니다.