🧠 Spiking Neural Network with STDP – Python Simulation
این پروژه یک شبیهساز ساده از شبکههای عصبی اسپایکینگ (Spiking Neural Networks) با الگوریتم یادگیری STDP (Spike-Timing Dependent Plasticity) است که توسط amirh1385 توسعه داده شده.
✨ قابلیتها:
- مدلسازی نورونهای اسپایکینگ با آستانه تحریک
- اتصال نورونها با سیناپسهای قابل یادگیری
- پیادهسازی الگوریتم STDP برای تنظیم وزن سیناپسها بر اساس زمان اسپایک
- امکان تعریف گروههای نورونی و اتصال تصادفی بین آنها
- شبیهسازی گامبهگام فعالیت شبکه و پردازش اسپایکها
🧩 ساختار کلاسها:
Neuron: نورون با آستانه تحریک، ولتاژ داخلی، ورودیها و خروجیها
Synapse: سیناپس بین دو نورون با وزن قابل یادگیری بر اساس STDP
Network: مدیریت نورونها، سیناپسها، صف پردازش و گامهای زمانی
🛠️ نحوه استفاده:
-
ساخت شبکه و اضافه کردن نورونها: net = Network() start, end = net.add_neurons_to_netowrk(count=10, threshold=1.0)
-
اتصال نورونها با سیناپسهای تصادفی: net.random_synapses(start_index=start, end_index=end, min_weight=0.1, max_weight=1.0, min_synapses=2, max_synapses=5)
-
تحریک نورونها (اسپایک زدن): net.spike_neuron(neuron_index=3)
-
اجرای گامهای زمانی شبکه: for _ in range(100): net.step()
📚 الگوریتم STDP:
- اگر نورون ورودی قبل از نورون خروجی اسپایک بزند → تقویت وزن سیناپس
- اگر نورون خروجی قبل از نورون ورودی اسپایک بزند → تضعیف وزن سیناپس
- وزن سیناپس همیشه بین ۰ و ۱ محدود میشود
📦 نصب و اجرا: این پروژه وابستگی خاصی ندارد و فقط از کتابخانههای استاندارد پایتون استفاده میکند: python Network.py
🙋♂️ توسعهدهنده: ساخته شده توسط amirh1385 اگر پیشنهادی برای بهبود یا رفع باگ دارید، خوشحال میشم در بخش Issues یا Pull Requests در GitHub مطرح کنید.
🧪 وضعیت فعلی: این پروژه در مرحله آزمایشی است و ممکن است در شرایط خاص بهدرستی عمل نکند. لطفاً در استفاده از آن احتیاط کنید و برای کاربردهای جدی علمی یا صنعتی از ابزارهای معتبرتر استفاده نمایید.