fangwei123456 / Parallel-Spiking-Neuron

40 stars 4 forks source link

关于cifar10dvs的vgg模型训练问题 #3

Open liufh1 opened 7 months ago

liufh1 commented 7 months ago

您好,您的工作十分有趣,我在试图复现您的程序。 我在配置好依赖以及使用move_data.py文件与处理好数据后,运行 python train_vgg.py -b 32 --epochs 200 -method PSN -TET -T 10 命令。 发现在每个batch中,输出的mean_out值是一样的。 并且训练后的正确率是10%左右。 请问是我的操作在哪里有问题吗,您那里是否会显示这样的特性呢。 谢谢!

fangwei123456 commented 7 months ago

这里有原始的日志:

https://github.com/fangwei123456/Parallel-Spiking-Neuron/blob/main/cifar10dvs/T10_opt_SGD0.1_tau_0.25_method_PSN_b_32_TET_2gpu.log

你显示正确率10%相当于网络完全没得到训练,可能哪里配置出问题了。如果用的就是原始代码不做任何改动,那可能是数据集处理部分的问题

gitxdf commented 3 months ago

我也遇到了这个问题,请问你解决了吗?是哪儿的问题呢? 我的是有的没问题,有的会出问题,不知道哪个会出现问题,感觉随机的……并且是刚开始是好的,但是到一半就掉下来了。 微信图片_20240327234554 微信图片_20240327234330 微信图片_20240327234419

fangwei123456 commented 3 months ago

用的是原始训练参数吗

gitxdf commented 3 months ago

参数是用的原始的参数,不过我加入了自己的模块。 还有就是同样的网络,我换个随机种子,有的就变好了可以跑完,不会掉下来,有的还依然会掉下来。

另外,在cifar10 上做了一些实验,这种情况只出现一次,出问题的频率远低于cifar10dvs。

其他的数据集上没有出现这种问题。

想过很多原因,我个人目前猜测的原因,很可能是由于数据集太小了,导致训练参数时候出现问题?

fangwei123456 commented 3 months ago

cifar10dvs可能更难一些。训练崩溃一般是BN层的除法导致出现inf所致