
الدماغ هو المكان المثالي للبحث عن الإلهام لتطوير شبكات عصبية أكثر كفاءة. أحد الاختلافات الرئيسية مع التعلم العميق الحديث هو أن الدماغ يشفر المعلومات في المسامير بدلاً من التنشيط المستمر. Snntorch هي حزمة Python لأداء التعلم القائم على التدرج مع شبكات عصبية. يمتد قدرات Pytorch ، مع الاستفادة من حساب GPU المتسارع في حساب الموتر وتطبيقه على شبكات الخلايا العصبية المتساقطة. يتم دمج نماذج الخلايا العصبية المتصمة مسبقًا بسلاسة في إطار Pytorch ويمكن التعامل معها كوحدات تنشيط متكررة.

إذا أعجبك هذا المشروع ، فيرجى التفكير في بطولة هذا الريبو لأنه أسهل وأفضل طريقة لدعمه.
إذا كانت لديك مشكلات أو تعليقات أو تبحث عن نصيحة حول تدريب الشبكات العصبية المتساقطة ، فيمكنك فتح مشكلة أو مناقشة أو دردشة في قناة Discord الخاصة بنا.
يحتوي Snntorch على المكونات التالية:
| عنصر | وصف |
|---|---|
| Snntorch | مكتبة الخلايا العصبية المتساقطة مثل Torch.nn ، متكاملة بعمق مع Autograd |
| snntorch.export | يتيح التوافق المتبادل مع مكتبات SNN الأخرى عبر NIR |
| snntorch.functional | العمليات الحسابية الشائعة على المسامير ، على سبيل المثال ، الخسارة ، التنظيم وما إلى ذلك. |
| snntorch.spikegen | مكتبة لتوليد الارتفاع وتحويل البيانات |
| snntorch.spikeplot | أدوات التصور للبيانات المستندة إلى Spike باستخدام matplotlib و celluloid |
| snntorch.surrogate | وظائف التدرج البديل الاختياري |
| snntorch.utils | وظائف أداة البيانات |
تم تصميم Snntorch ليتم استخدامه بشكل حدسي مع Pytorch ، كما لو أن كل الخلايا العصبية المتناثرة كانت ببساطة تنشيط آخر في سلسلة من الطبقات. لذلك ، من اللازم الطبقات المتصلة بالكامل ، والطبقات التلافيفية ، والاتصالات المتبقية ، إلخ.
في الوقت الحاضر ، يتم تمثيل نماذج الخلايا العصبية بالوظائف العودية التي تزيل الحاجة إلى تخزين آثار الغشاء المحتملة لجميع الخلايا العصبية في النظام من أجل حساب التدرج. تمكن المتطلبات العجاف لـ Snntorch الشبكات الصغيرة والكبيرة من تدريبها على وحدة المعالجة المركزية ، عند الحاجة. شريطة أن يتم تحميل نماذج الشبكة والتوتر على CUDA ، يستفيد Snntorch من تسارع GPU بنفس طريقة 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 تثبيت
لتثبيت Snntorch مع كوندا:
$ conda install -c conda -forge snnntorch
للتثبيت للحصول على بنية معالجة ذكية (IPU) باستخدام مسرعات GraphCore:
$ pip install snntorch-ipu
واجهة برمجة تطبيقات كاملة متاحة هنا. يتم توفير أمثلة ، دروس ودفاتر كولاب.
فيما يلي بعض الطرق التي يمكنك البدء بها مع 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 Tutorial هي مكان رائع للبدء. وهو يتألف من أجهزة الكمبيوتر المحمولة التفاعلية مع تفسيرات كاملة يمكن أن تصل إلى السرعة.
| درس تعليمي | عنوان | رابط كولاب |
|---|---|---|
| البرنامج التعليمي 1 | ترميز مع snntorch | |
| البرنامج التعليمي 2 | يدمج المتسرب ويطلق النار على الخلايا العصبية | |
| البرنامج التعليمي 3 | شبكة عصبية تتفوق | |
| البرنامج التعليمي 4 | نماذج الخلايا العصبية ذات الترتيب الثاني (اختياري) | |
| البرنامج التعليمي 5 | تدريب الشبكات العصبية مع Snntorch | |
| البرنامج التعليمي 6 | نزول التدرج البديل في SNN التلافييل | |
| البرنامج التعليمي 7 | مجموعات بيانات Neuromorphic مع منشط + snntorch |
| دروس متقدمة | رابط كولاب |
|---|---|
| ترميز السكان | |
| الانحدار: الجزء الأول - التعلم المحتمل للغشاء مع الخلايا العصبية LIF | |
| الانحدار: الجزء الثاني - التصنيف القائم على الانحدار مع الخلايا العصبية LIF المتكررة | |
| تسريع snntorch على ipus | - |
تم تحسين Snntorch لمسرعات IPU من GraphCore. لتثبيت بناء قائم على IPU من Snntorch:
$ pip install snntorch-ipu
سيتم تجميع العمليات المخصصة ذات المستوى المنخفض لتوافق IPU تلقائيًا عند استدعاء import snntorch لأول مرة.
عند تحديث Poplar SDK ، قد تحتاج هذه العمليات إلى إعادة ترجمة. يمكن القيام بذلك عن طريق إعادة تثبيت snntorch-ipu ، أو حذف الملفات في الدليل الأساسي بامتداد. لذا.
وحدة snntorch.backprop ، والعديد من الوظائف من snntorch.functional و snntorch.surrogate ، لا تتوافق مع IPUs ، ولكن يمكن إعادة تصميمها باستخدام البدائية pytorch.
تشمل المتطلبات الإضافية:
ارجع إلى وثائق GraphCore للحصول على تعليمات التثبيت الخاصة بـ Poptorch و Poplar SDK.
يمكن العثور على الصفحة الرئيسية لمشروع Snntorch IPU هنا. يتم توفير برنامج تعليمي للتدريب SNNS هنا.
إذا كنت مستعدًا للمساهمة في Snntorch ، فيمكن العثور على تعليمات للقيام بذلك هنا.
يتم الحفاظ على Snntorch حاليًا بواسطة مجموعة الحوسبة العصبية UCSC. تم تطويره في البداية من قبل جيسون ك. إيشراجيان في مجموعة LU (جامعة ميشيغان).
قدمت مساهمات إضافية من قبل فنسنت صن ، بينغ تشو ، ريدجر تشو ، ألكساندر هينكس ، ستيفن أبرو ، شينكسين وانغ ، سريس فينكاتيش ، جيكوم ، وإمير نيفتسي.
يتم نشر رمز المصدر Snntorch ضمن شروط ترخيص معهد ماساتشوستس للتكنولوجيا. تم ترخيص وثائق Snntorch بموجب ترخيص Creative Commons Attribution على حد سواء 3.0 (CC BY-SA 3.0).