fangwei123456 / spikingjelly

SpikingJelly is an open-source deep learning framework for Spiking Neural Network (SNN) based on PyTorch.
https://spikingjelly.readthedocs.io
Other
1.24k stars 235 forks source link

是否遇到过这种问题? #469

Open Yu-xm opened 8 months ago

Yu-xm commented 8 months ago

报错信息如下:

Traceback (most recent call last): File "Train/TrainMultiEMO.py", line 1166, in multiemo_train.train_or_eval_linear_model() File "Train/TrainMultiEMO.py", line 1060, in train_or_eval_linear_model valid_loss, valid_HGR_loss, valid_SWFC_loss, valid_CE_loss,valid_f1, validacc, = self.train_or_eval_model_per_epoch(self.valid_dataloader, train = False) File "Train/TrainMultiEMO.py", line 1018, in train_or_eval_model_per_epoch self.model(padded_texts, padded_audios, padded_visuals, padded_speaker_masks, padded_utterance_masks, padded_labels) File "/root/miniconda3/lib/python3.8/site-packages/torch/nn/modules/module.py", line 1102, in _call_impl return forward_call(*input, kwargs) File "/root/MultiEMO/Model/MultiEMO_Model.py", line 73, in forward text_s_output = self.spikformer_model(text_features) File "/root/miniconda3/lib/python3.8/site-packages/torch/nn/modules/module.py", line 1102, in _call_impl return forward_call(*input, *kwargs) File "/root/MultiEMO/Model/spikformer.py", line 391, in forward x = blk(x) # B T L D File "/root/miniconda3/lib/python3.8/site-packages/torch/nn/modules/module.py", line 1102, in _call_impl return forward_call(input, kwargs) File "/root/MultiEMO/Model/spikformer.py", line 336, in forward x = x + self.attn(x) File "/root/miniconda3/lib/python3.8/site-packages/torch/nn/modules/module.py", line 1102, in _call_impl return forward_call(*input, kwargs) File "/root/MultiEMO/Model/spikformer.py", line 264, in forward q_m_out = self.q_lif(q_m_out) File "/root/miniconda3/lib/python3.8/site-packages/torch/nn/modules/module.py", line 1102, in _call_impl return forward_call(*input, *kwargs) File "/root/miniconda3/lib/python3.8/site-packages/spikingjelly/activation_based/base.py", line 270, in forward return self.multi_step_forward(args, kwargs) File "/root/miniconda3/lib/python3.8/site-packages/spikingjelly/activation_based/neuron.py", line 996, in multi_step_forward spike_seq, self.v = self.jit_eval_multi_step_forward_hard_reset_decay_input(x_seq, self.v, RuntimeError: The following operation failed in the TorchScript interpreter. Traceback of TorchScript (most recent call last): File "/root/miniconda3/lib/python3.8/site-packages/spikingjelly/activation_based/neuron.py", line 805, in fallback_function spike_seq = torch.zeros_like(x_seq) for t in range(x_seq.shape[0]): v = v + (x_seq[t] - (v - v_reset)) / tau


            spike = (v >= v_threshold).to(x_seq)
            v = v_reset * spike + (1. - spike) * v
RuntimeError: The size of tensor a (21) must match the size of tensor b (20) at non-singleton dimension 1

在前几个 batch 的时候,似乎并没有出错,但是快到最后的 batch(可能是最后一个,我不确定),会报错,请问你们知道原因吗?这个dimension 1 是 T 的维度。
Yu-xm commented 8 months ago

抱歉我说错了,维度是:[T B L D]

Taotaonoangry commented 7 months ago

是不是没有reset net

fangwei123456 commented 7 months ago

看起来像是没reset?