Skip to content

Tommy7414/SNN_ToMnet-

Repository files navigation

把 ToMnet+ 換成 SNN 的嘗試 目前可運作了,但細節上還有很多問題需要修正

0. Data Structure

file
0_parameters.py PARAMS dict.、SNN para. 、 training para. 。 所有檔案都from_params import PARAMS,改參數都改在這裡
1_data_and_encoding.py DataHandler->  PyTorchDataset``encode_to_spikes():  Poisson code(很陽春還要改)
2_snn_charnet.py SNN_CharNet:Conv-LIF *2 -> Pool ->LSTMCell -> LIF -> FC 10 步 ->  8-D e-char
3_snn_prednet.py SNN_PredNet_Advanced:(Query+e_char) 2 layees -> Spiking-GAT×2-> FC
**4_main_training_loop.py 目前只跑 train,沒 vali/test;loss 用ce_rate_loss()

1. 參數

0_parameters.py:

TIME_STEPS 每張圖片有幾次 spike >25 訓練會慢
CONV_CHANNELS 32→64
NUM_CLASSES 4 or 1024
INIT_LR

3. 接下來要搞的(Roadmap)

  1. validation / testing
    • 現測試集超小+標籤混亂。
    • 打算照 Tomnet-N 的合成策略補資料,但會加隨機遮罩避免模型只背統計。
    • 目標:把 Vali loop 加回來,早停不靠運氣。
  2. STDP × surrogate 混合學習
    • 想法:Conv1 無監 STDP ➜ 凍結;後段用代理梯度。
    • 期望:收斂更快&特徵更像 V1 欄柱。
  3. snnTorch ≥ 0.6
    • 升級後直接用 snn.LSTM & 新 sf.stdp()
    • 砍掉手搓 LSTMCell +自己疊 LIF,程式瘦身。
  4. Hopfield 讀出 ★bonus
    • 把 PredNet 的 FC 換成稀疏量化 Hopfield,做模式補全。
  5. 學習率調度 + 梯度裁剪
    • CosineAnnealingLR + clip_grad_norm_,救一下爆炸梯度。
  6. 圖注意力 debug
    • adj 需 batch 化,e_char 先過 sigmoid 再 Poisson rate。

4. 我還想提醒

  • 速度感人CharNet 兩層 for-loop 很慢;下版會改向量化或 3D-conv。
  • 熔掉 GPU?NUM_CLASSES=1024 時最後 FC 超肥;顯存不夠就先砍成 4。
  • 版本地獄:Torch 2.1 + snnTorch 0.6.2 實測 OK;太舊的 snnTorch 沒有 LSTM / functional.stdp
  • Spike vs Mem:目前 char_net 回傳 membrane,用 spikegen.rate() 會怪怪的——下版會直接回傳 rate。

Happy hacking!有 bug 直接開 issue 或私訊我,我的口頭禪:「能跑先,優化後」。

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published