
Мозг - идеальное место, чтобы искать вдохновение для разработки более эффективных нейронных сетей. Одним из основных различий с современным глубоким обучением является то, что мозг кодирует информацию в шипах, а не в непрерывных активациях. Snntorch-это пакет Python для выполнения обучения на основе градиента с помощью нейронных сетей. Он расширяет возможности Pytorch, используя преимущества своего графического графического процессора, ускоренного вычисления тензора и применяя его к сетям нейронов всплеска. Предварительно разработанные модели нейронов пузырьков плавно интегрированы в рамку Pytorch и могут рассматриваться как рецидивирующие активационные единицы.

Если вам нравится этот проект, пожалуйста, рассмотрите возможность сняться в этом репо, поскольку это самый простой и лучший способ его поддержать.
Если у вас есть проблемы, комментарии или вы ищете советы по обучению нейронных сетей, вы можете открыть проблему, обсуждение или поболтать на нашем канале Discord.
Snntorch содержит следующие компоненты:
| Компонент | Описание |
|---|---|
| Snntorch | Библиотека нейронов, такая как Torch.nn, глубоко интегрированная с автоградом |
| snntorch.export | обеспечивает кросс-совместимость с другими библиотеками SNN через NIR |
| snntorch.functional | Общие арифметические операции по шипам, например, потери, регуляризации и т. Д. |
| snntorch.spikegen | Библиотека для генерации всплеска и преобразования данных |
| snntorch.spikeplot | Инструменты визуализации для данных на основе всплесков с использованием matplotlib и celluloid |
| snntorch.surrogate | Необязательные функции суррогатного градиента |
| snntorch.utils | Функции утилиты набора данных |
Snntorch предназначен для интуитивного использования с Pytorch, как будто каждый нейрон с пузырями был просто еще одной активацией в последовательности слоев. Поэтому он является агностичным к полностью связанным слоям, сверточным слоям, остаточным соединениям и т. Д.
В настоящее время модели нейронов представлены рекурсивными функциями, которые устраняют необходимость хранить мембранные потенциальные трассы для всех нейронов в системе, чтобы рассчитать градиент. Требования SNNTORCH SNNTORCH позволяют небольшим и большим сетям проходить через процессор, где это необходимо. При условии, что сетевые модели и тензоры загружаются в CUDA, Snntorch использует ускорение графического процессора так же, как и Pytorch.
Если вы найдете Snntorch полезным в своей работе, пожалуйста, укажите следующий источник:
Джейсон К. Эшрагиан, Макс Уорд, Эмре Нефти, Синсин Ван, Грегор Ленц, Гириш Двиведи, Мохаммед Беннамун, Ду Сок Чжонг и Вэй Д. Лу «Обучение нервных сетей, использующих уроки из глубокого обучения». Материалы IEEE, 111 (9) сентября 2023 года.
@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. Убедитесь, что для вашей системы установлена правильная версия Torch для обеспечения совместимости CUDA.
Запустите следующее для установки:
$ python
$ pip install snntorchВместо этого установить Snntorch из источника:
$ git clone https://github.com/jeshraghian/snntorch $ CD SNNTORCH $ python setup.py install
Чтобы установить Snntorch с Conda:
$ conda install -c conda -forge snntorch
Для установки для интеллектуальной обработки (IPU) сборка с использованием ускорителей GraphCore:
$ pip установить snntorch-ipu
Полный API доступен здесь. Примеры, учебники и ноутбуки Colab представлены.
Вот несколько способов начать с 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 Link |
|---|---|---|
| Учебник 1 | Шип, кодируясь с snntorch | |
| Учебник 2 | Утечка интегрирует и стреляет нейроном | |
| Учебник 3 | Нейронная сеть с питанием | |
| Учебник 4 | 2 -й заказ модели нейронов (необязательно) | |
| Учебник 5 | Обучение нервных сети с Snntorch | |
| Учебник 6 | Суррогатный градиент спуск в сверточной SNN | |
| Учебник 7 | Нейроморфные наборы данных с тоником + snntorch |
| Усовершенствованные учебные пособия | Colab Link |
|---|---|
| Кодирование населения | |
| Регрессия: часть I - мембранное потенциальное обучение с нейронами LIF | |
| Регрессия: часть II - классификация на основе регрессии с рецидивирующими нейронами LIF | |
| Ускорение SNNTORCH на IPUS | - |
Snntorch был оптимизирован для ускорителей IPU GraphCore. Чтобы установить сборку Snntorch на основе IPU:
$ pip установить snntorch-ipu
Недоверные пользовательские операции для совместимости IPU будут автоматически скомпилированы, когда import snntorch вызывает впервые.
При обновлении SDK Poplar эти операции могут потребоваться перекомпилированы. Это может быть сделано путем переустановки snntorch-ipu или удаления файлов в базовом каталоге с расширением .so.
Модуль snntorch.backprop , и несколько функций от snntorch.functional и snntorch.surrogate , несовместимы с IPUS, но могут быть воссозданы с использованием примитивов Pytorch.
Дополнительные требования включают:
Обратитесь к документации Graphcore для инструкций по установке Poptorch и SPLAR SDK.
Домашняя страница для проекта SNNTORCH IPU можно найти здесь. Учебное пособие по обучению SNNS предоставляется здесь.
Если вы готовы внести свой вклад в Snntorch, инструкции по этому поводу можно найти здесь.
Snntorch в настоящее время поддерживается нейроморфной вычислительной группой UCSC. Первоначально он был разработан Джейсоном К. Эшрагиан в группе LU (Университет Мичигана).
Дополнительный вклад был внесен Винсент Сан, Пенг Чжоу, Риджер Чжу, Александр Хенкс, Стивен Абреу, Синсин Ван, Срейес Венкатеш, Гекком и Эмре Нефти.
Исходный код SNNTORCH публикуется в соответствии с условиями лицензии MIT. Документация Snntorch лицензирована по лицензии Creative Commons Attribution-Share 3,0 (CC BY-SA 3.0).