spikingjelly的最新版本,我当时使用的是20210330,中间存在onnx的包调用错误,难以解决。
通过调试20201221,发现这个版本的是好使的,但是也有一些是需要调试的。
1.首先应该训练出一个ANN模型出来,此时main函数中应该不填入任何信息,即
if __name__ == '__main__':
main()
# main('./log-cnn_mnist1622169436.7251258')
2.当训练出ANN模型后,会自动生成一个文件夹
如
./log-cnn_mnist1622169436.7251258
这个文件夹中存有大量的ANN和SNN模型
3.
utils.pytorch_ann2snn(model_name=model_name,
norm_tensor=norm_tensor,
test_data_loader=test_data_loader,
device=device,
T=T,
log_dir=log_dir,
config=config
)
这里面有好几个坑:
3.1
原来的代码中,第二个参数写的不是norm_tensor,好像是test_tensor,这个容易发现,按着ctrl 点击pytorch_ann2snn就能很快找到错误。
3.2
utils.py 里面有大量的function
其中有一个pytorch_ann2snn,这个function里面有一行是使用val_ann的
正确代码如下:
ann_acc = val_ann(net=parsed_ann, loss_function=nn.CrossEntropyLoss(),device=device, data_loader=test_data_loader)
原来的代码中,好像是少了一个loss_function的参数
3.3
还是val_ann的问题,但是我忘记了。。。。
反正最后是成功了
控制台输出代码如下:
All the temp files are saved to ./log-cnn_mnist1622169436.7251258
ann2snn config:
{'simulation': {'reset_to_zero': False, 'encoder': {'possion': False}, 'avg_pool': {'has_neuron': True}, 'max_pool': {'if_spatial_avg': False, 'if_wta': False, 'momentum': None}}, 'parser': {'robust_norm': True}}
Directly load model cnn_mnist.pkl
Using 120 pictures as norm set
Load best model for Model:cnn_mnist...
ANN Validating Accuracy:0.986
Save model to: ./log-cnn_mnist1622169436.7251258\parsed_cnn_mnist.pkl
Using robust normalization...
normalize with bias...
Print Parsed ANN model Structure:
Pytorch_Parser(
(network): Sequential(
(0): Conv2d(1, 32, kernel_size=(3, 3), stride=(1, 1))
(1): ReLU()
(2): AvgPool2d(kernel_size=2, stride=2, padding=0)
(3): Conv2d(32, 32, kernel_size=(3, 3), stride=(1, 1))
(4): ReLU()
(5): AvgPool2d(kernel_size=2, stride=2, padding=0)
(6): Conv2d(32, 32, kernel_size=(3, 3), stride=(1, 1))
(7): ReLU()
(8): AvgPool2d(kernel_size=2, stride=2, padding=0)
(9): Flatten(start_dim=1, end_dim=-1)
(10): Linear(in_features=32, out_features=10, bias=True)
(11): ReLU()
)
)
Save model to: ./log-cnn_mnist1622169436.7251258\normalized_cnn_mnist.pkl
Print Simulated SNN model Structure:
PyTorch_Converter(
(network): Sequential(
(0): Conv2d(1, 32, kernel_size=(3, 3), stride=(1, 1))
(1): IFNode(
v_threshold=1.0, v_reset=None, detach_reset=False
(surrogate_function): Sigmoid(alpha=1.0, spiking=True)
)
(2): AvgPool2d(kernel_size=2, stride=2, padding=0)
(3): IFNode(
v_threshold=1.0, v_reset=None, detach_reset=False
(surrogate_function): Sigmoid(alpha=1.0, spiking=True)
)
(4): Conv2d(32, 32, kernel_size=(3, 3), stride=(1, 1))
(5): IFNode(
v_threshold=1.0, v_reset=None, detach_reset=False
(surrogate_function): Sigmoid(alpha=1.0, spiking=True)
)
(6): AvgPool2d(kernel_size=2, stride=2, padding=0)
(7): IFNode(
v_threshold=1.0, v_reset=None, detach_reset=False
(surrogate_function): Sigmoid(alpha=1.0, spiking=True)
)
(8): Conv2d(32, 32, kernel_size=(3, 3), stride=(1, 1))
(9): IFNode(
v_threshold=1.0, v_reset=None, detach_reset=False
(surrogate_function): Sigmoid(alpha=1.0, spiking=True)
)
(10): AvgPool2d(kernel_size=2, stride=2, padding=0)
(11): IFNode(
v_threshold=1.0, v_reset=None, detach_reset=False
(surrogate_function): Sigmoid(alpha=1.0, spiking=True)
)
(12): Flatten(start_dim=1, end_dim=-1)
(13): Linear(in_features=32, out_features=10, bias=True)
(14): IFNode(
v_threshold=1.0, v_reset=None, detach_reset=False
(surrogate_function): Sigmoid(alpha=1.0, spiking=True)
)
)
)
100%|██████████| 100/100 [00:00<00:00, 285.67it/s]
[SNN Simulating... 1.00%] Acc:0.990
100%|██████████| 100/100 [00:00<00:00, 374.17it/s]
[SNN Simulating... 2.00%] Acc:0.995
78%|███████▊ | 78/100 [00:00<00:00, 383.98it/s][SNN Simulating... 3.00%] Acc:0.990
100%|██████████| 100/100 [00:00<00:00, 383.84it/s]
100%|██████████| 100/100 [00:00<00:00, 387.40it/s]
[SNN Simulating... 4.00%] Acc:0.993
100%|██████████| 100/100 [00:00<00:00, 380.71it/s]
[SNN Simulating... 5.00%] Acc:0.992
77%|███████▋ | 77/100 [00:00<00:00, 386.11it/s][SNN Simulating... 6.00%] Acc:0.992
100%|██████████| 100/100 [00:00<00:00, 382.31it/s]
77%|███████▋ | 77/100 [00:00<00:00, 379.92it/s][SNN Simulating... 7.00%] Acc:0.991
100%|██████████| 100/100 [00:00<00:00, 382.12it/s]
100%|██████████| 100/100 [00:00<00:00, 380.98it/s]
[SNN Simulating... 8.00%] Acc:0.990
100%|██████████| 100/100 [00:00<00:00, 383.18it/s]
[SNN Simulating... 9.00%] Acc:0.991
100%|██████████| 100/100 [00:00<00:00, 380.64it/s]
[SNN Simulating... 10.00%] Acc:0.991
78%|███████▊ | 78/100 [00:00<00:00, 382.40it/s][SNN Simulating... 11.00%] Acc:0.989
100%|██████████| 100/100 [00:00<00:00, 382.72it/s]
100%|██████████| 100/100 [00:00<00:00, 387.78it/s]
[SNN Simulating... 12.00%] Acc:0.988
77%|███████▋ | 77/100 [00:00<00:00, 380.84it/s][SNN Simulating... 13.00%] Acc:0.989
100%|██████████| 100/100 [00:00<00:00, 382.14it/s]
77%|███████▋ | 77/100 [00:00<00:00, 379.64it/s][SNN Simulating... 14.00%] Acc:0.989
100%|██████████| 100/100 [00:00<00:00, 380.64it/s]
78%|███████▊ | 78/100 [00:00<00:00, 386.31it/s][SNN Simulating... 15.00%] Acc:0.990
100%|██████████| 100/100 [00:00<00:00, 384.24it/s]
100%|██████████| 100/100 [00:00<00:00, 382.49it/s]
[SNN Simulating... 16.00%] Acc:0.989
100%|██████████| 100/100 [00:00<00:00, 383.12it/s]
[SNN Simulating... 17.00%] Acc:0.989
100%|██████████| 100/100 [00:00<00:00, 381.43it/s]
[SNN Simulating... 18.00%] Acc:0.989
100%|██████████| 100/100 [00:00<00:00, 384.29it/s]
[SNN Simulating... 19.00%] Acc:0.989
100%|██████████| 100/100 [00:00<00:00, 383.13it/s]
[SNN Simulating... 20.00%] Acc:0.989
77%|███████▋ | 77/100 [00:00<00:00, 383.32it/s][SNN Simulating... 21.00%] Acc:0.988
100%|██████████| 100/100 [00:00<00:00, 383.44it/s]
100%|██████████| 100/100 [00:00<00:00, 384.28it/s]
[SNN Simulating... 22.00%] Acc:0.988
78%|███████▊ | 78/100 [00:00<00:00, 382.79it/s][SNN Simulating... 23.00%] Acc:0.988
100%|██████████| 100/100 [00:00<00:00, 382.40it/s]
100%|██████████| 100/100 [00:00<00:00, 377.74it/s]
[SNN Simulating... 24.00%] Acc:0.988
78%|███████▊ | 78/100 [00:00<00:00, 382.20it/s][SNN Simulating... 25.00%] Acc:0.987
100%|██████████| 100/100 [00:00<00:00, 383.59it/s]
100%|██████████| 100/100 [00:00<00:00, 385.62it/s]
[SNN Simulating... 26.00%] Acc:0.987
78%|███████▊ | 78/100 [00:00<00:00, 383.72it/s][SNN Simulating... 27.00%] Acc:0.987
100%|██████████| 100/100 [00:00<00:00, 384.30it/s]
77%|███████▋ | 77/100 [00:00<00:00, 378.39it/s][SNN Simulating... 28.00%] Acc:0.986
100%|██████████| 100/100 [00:00<00:00, 383.11it/s]
77%|███████▋ | 77/100 [00:00<00:00, 380.10it/s][SNN Simulating... 29.00%] Acc:0.987
100%|██████████| 100/100 [00:00<00:00, 382.31it/s]
78%|███████▊ | 78/100 [00:00<00:00, 385.14it/s][SNN Simulating... 30.00%] Acc:0.987
100%|██████████| 100/100 [00:00<00:00, 384.02it/s]
78%|███████▊ | 78/100 [00:00<00:00, 380.23it/s][SNN Simulating... 31.00%] Acc:0.986
100%|██████████| 100/100 [00:00<00:00, 381.53it/s]
100%|██████████| 100/100 [00:00<00:00, 384.25it/s]
[SNN Simulating... 32.00%] Acc:0.986
100%|██████████| 100/100 [00:00<00:00, 386.27it/s]
[SNN Simulating... 33.00%] Acc:0.986
78%|███████▊ | 78/100 [00:00<00:00, 381.66it/s][SNN Simulating... 34.00%] Acc:0.985
100%|██████████| 100/100 [00:00<00:00, 381.08it/s]
78%|███████▊ | 78/100 [00:00<00:00, 386.44it/s][SNN Simulating... 35.00%] Acc:0.985
100%|██████████| 100/100 [00:00<00:00, 383.48it/s]
100%|██████████| 100/100 [00:00<00:00, 384.00it/s]
[SNN Simulating... 36.00%] Acc:0.985
100%|██████████| 100/100 [00:00<00:00, 385.31it/s]
[SNN Simulating... 37.00%] Acc:0.985
78%|███████▊ | 78/100 [00:00<00:00, 383.32it/s][SNN Simulating... 38.00%] Acc:0.986
100%|██████████| 100/100 [00:00<00:00, 382.76it/s]
100%|██████████| 100/100 [00:00<00:00, 382.12it/s]
[SNN Simulating... 39.00%] Acc:0.986
77%|███████▋ | 77/100 [00:00<00:00, 379.25it/s][SNN Simulating... 40.00%] Acc:0.986
100%|██████████| 100/100 [00:00<00:00, 380.26it/s]
100%|██████████| 100/100 [00:00<00:00, 381.43it/s]
[SNN Simulating... 41.00%] Acc:0.985
78%|███████▊ | 78/100 [00:00<00:00, 385.23it/s][SNN Simulating... 42.00%] Acc:0.985
100%|██████████| 100/100 [00:00<00:00, 385.14it/s]
100%|██████████| 100/100 [00:00<00:00, 382.23it/s]
[SNN Simulating... 43.00%] Acc:0.985
78%|███████▊ | 78/100 [00:00<00:00, 381.57it/s][SNN Simulating... 44.00%] Acc:0.985
100%|██████████| 100/100 [00:00<00:00, 381.63it/s]
80%|████████ | 80/100 [00:00<00:00, 382.68it/s][SNN Simulating... 45.00%] Acc:0.986
100%|██████████| 100/100 [00:00<00:00, 382.89it/s]
100%|██████████| 100/100 [00:00<00:00, 381.87it/s]
[SNN Simulating... 46.00%] Acc:0.986
100%|██████████| 100/100 [00:00<00:00, 382.94it/s]
[SNN Simulating... 47.00%] Acc:0.986
78%|███████▊ | 78/100 [00:00<00:00, 381.88it/s][SNN Simulating... 48.00%] Acc:0.986
100%|██████████| 100/100 [00:00<00:00, 381.80it/s]
78%|███████▊ | 78/100 [00:00<00:00, 380.89it/s][SNN Simulating... 49.00%] Acc:0.986
100%|██████████| 100/100 [00:00<00:00, 381.39it/s]
100%|██████████| 100/100 [00:00<00:00, 385.67it/s]
[SNN Simulating... 50.00%] Acc:0.987
77%|███████▋ | 77/100 [00:00<00:00, 380.18it/s][SNN Simulating... 51.00%] Acc:0.987
100%|██████████| 100/100 [00:00<00:00, 380.93it/s]
78%|███████▊ | 78/100 [00:00<00:00, 384.34it/s][SNN Simulating... 52.00%] Acc:0.987
100%|██████████| 100/100 [00:00<00:00, 384.01it/s]
100%|██████████| 100/100 [00:00<00:00, 381.28it/s]
[SNN Simulating... 53.00%] Acc:0.987
78%|███████▊ | 78/100 [00:00<00:00, 382.42it/s][SNN Simulating... 54.00%] Acc:0.987
100%|██████████| 100/100 [00:00<00:00, 383.27it/s]
100%|██████████| 100/100 [00:00<00:00, 380.66it/s]
[SNN Simulating... 55.00%] Acc:0.987
77%|███████▋ | 77/100 [00:00<00:00, 383.32it/s][SNN Simulating... 56.00%] Acc:0.986
100%|██████████| 100/100 [00:00<00:00, 381.38it/s]
100%|██████████| 100/100 [00:00<00:00, 384.44it/s]
[SNN Simulating... 57.00%] Acc:0.986
100%|██████████| 100/100 [00:00<00:00, 380.93it/s]
[SNN Simulating... 58.00%] Acc:0.987
77%|███████▋ | 77/100 [00:00<00:00, 383.83it/s][SNN Simulating... 59.00%] Acc:0.987
100%|██████████| 100/100 [00:00<00:00, 382.44it/s]
77%|███████▋ | 77/100 [00:00<00:00, 379.82it/s][SNN Simulating... 60.00%] Acc:0.986
100%|██████████| 100/100 [00:00<00:00, 380.56it/s]
77%|███████▋ | 77/100 [00:00<00:00, 381.51it/s][SNN Simulating... 61.00%] Acc:0.986
100%|██████████| 100/100 [00:00<00:00, 378.22it/s]
100%|██████████| 100/100 [00:00<00:00, 378.32it/s]
[SNN Simulating... 62.00%] Acc:0.986
100%|██████████| 100/100 [00:00<00:00, 381.82it/s]
[SNN Simulating... 63.00%] Acc:0.986
100%|██████████| 100/100 [00:00<00:00, 380.16it/s]
[SNN Simulating... 64.00%] Acc:0.986
77%|███████▋ | 77/100 [00:00<00:00, 379.44it/s][SNN Simulating... 65.00%] Acc:0.986
100%|██████████| 100/100 [00:00<00:00, 381.32it/s]
100%|██████████| 100/100 [00:00<00:00, 380.55it/s]
[SNN Simulating... 66.00%] Acc:0.986
100%|██████████| 100/100 [00:00<00:00, 377.32it/s]
[SNN Simulating... 67.00%] Acc:0.985
100%|██████████| 100/100 [00:00<00:00, 380.96it/s]
[SNN Simulating... 68.00%] Acc:0.985
100%|██████████| 100/100 [00:00<00:00, 380.04it/s]
[SNN Simulating... 69.00%] Acc:0.985
78%|███████▊ | 78/100 [00:00<00:00, 380.84it/s][SNN Simulating... 70.00%] Acc:0.985
100%|██████████| 100/100 [00:00<00:00, 381.85it/s]
100%|██████████| 100/100 [00:00<00:00, 381.54it/s]
[SNN Simulating... 71.00%] Acc:0.985
100%|██████████| 100/100 [00:00<00:00, 383.40it/s]
[SNN Simulating... 72.00%] Acc:0.985
78%|███████▊ | 78/100 [00:00<00:00, 382.86it/s][SNN Simulating... 73.00%] Acc:0.985
100%|██████████| 100/100 [00:00<00:00, 382.38it/s]
77%|███████▋ | 77/100 [00:00<00:00, 381.36it/s][SNN Simulating... 74.00%] Acc:0.984
100%|██████████| 100/100 [00:00<00:00, 382.45it/s]
77%|███████▋ | 77/100 [00:00<00:00, 380.61it/s][SNN Simulating... 75.00%] Acc:0.985
100%|██████████| 100/100 [00:00<00:00, 381.50it/s]
100%|██████████| 100/100 [00:00<00:00, 384.54it/s]
[SNN Simulating... 76.00%] Acc:0.985
76%|███████▌ | 76/100 [00:00<00:00, 375.56it/s][SNN Simulating... 77.00%] Acc:0.985
100%|██████████| 100/100 [00:00<00:00, 377.99it/s]
100%|██████████| 100/100 [00:00<00:00, 384.83it/s]
[SNN Simulating... 78.00%] Acc:0.985
72%|███████▏ | 72/100 [00:00<00:00, 346.83it/s][SNN Simulating... 79.00%] Acc:0.985
100%|██████████| 100/100 [00:00<00:00, 363.56it/s]
77%|███████▋ | 77/100 [00:00<00:00, 380.04it/s][SNN Simulating... 80.00%] Acc:0.985
100%|██████████| 100/100 [00:00<00:00, 380.84it/s]
100%|██████████| 100/100 [00:00<00:00, 382.03it/s]
[SNN Simulating... 81.00%] Acc:0.985
77%|███████▋ | 77/100 [00:00<00:00, 379.45it/s][SNN Simulating... 82.00%] Acc:0.985
100%|██████████| 100/100 [00:00<00:00, 380.99it/s]
100%|██████████| 100/100 [00:00<00:00, 381.97it/s]
[SNN Simulating... 83.00%] Acc:0.985
100%|██████████| 100/100 [00:00<00:00, 382.07it/s]
[SNN Simulating... 84.00%] Acc:0.985
100%|██████████| 100/100 [00:00<00:00, 382.60it/s]
[SNN Simulating... 85.00%] Acc:0.985
83%|████████▎ | 83/100 [00:00<00:00, 380.87it/s][SNN Simulating... 86.00%] Acc:0.985
100%|██████████| 100/100 [00:00<00:00, 380.21it/s]
78%|███████▊ | 78/100 [00:00<00:00, 380.85it/s][SNN Simulating... 87.00%] Acc:0.985
100%|██████████| 100/100 [00:00<00:00, 378.54it/s]
76%|███████▌ | 76/100 [00:00<00:00, 373.97it/s][SNN Simulating... 88.00%] Acc:0.985
100%|██████████| 100/100 [00:00<00:00, 375.22it/s]
100%|██████████| 100/100 [00:00<00:00, 382.67it/s]
[SNN Simulating... 89.00%] Acc:0.985
100%|██████████| 100/100 [00:00<00:00, 384.07it/s]
[SNN Simulating... 90.00%] Acc:0.985
100%|██████████| 100/100 [00:00<00:00, 385.50it/s]
[SNN Simulating... 91.00%] Acc:0.985
78%|███████▊ | 78/100 [00:00<00:00, 384.77it/s][SNN Simulating... 92.00%] Acc:0.984
100%|██████████| 100/100 [00:00<00:00, 382.92it/s]
77%|███████▋ | 77/100 [00:00<00:00, 381.75it/s][SNN Simulating... 93.00%] Acc:0.985
100%|██████████| 100/100 [00:00<00:00, 381.70it/s]
100%|██████████| 100/100 [00:00<00:00, 381.89it/s]
[SNN Simulating... 94.00%] Acc:0.985
78%|███████▊ | 78/100 [00:00<00:00, 382.47it/s][SNN Simulating... 95.00%] Acc:0.985
100%|██████████| 100/100 [00:00<00:00, 381.82it/s]
100%|██████████| 100/100 [00:00<00:00, 382.68it/s]
[SNN Simulating... 96.00%] Acc:0.985
78%|███████▊ | 78/100 [00:00<00:00, 383.37it/s][SNN Simulating... 97.00%] Acc:0.985
100%|██████████| 100/100 [00:00<00:00, 383.90it/s]
100%|██████████| 100/100 [00:00<00:00, 381.86it/s]
[SNN Simulating... 98.00%] Acc:0.985
100%|██████████| 100/100 [00:00<00:00, 378.68it/s]
[SNN Simulating... 99.00%] Acc:0.985
100%|██████████| 100/100 [00:00<00:00, 383.33it/s]
[SNN Simulating... 100.00%] Acc:0.985
SNN Simulating Accuracy:0.985
Summary: ANN Accuracy:98.6100% SNN Accuracy:98.5000% [Decreased 0.1100%]