Open Cheng122 opened 7 months ago
作者您好,非常感谢您的工作。我在基于Human3.6M数据集进行训练时,运行命令:
python run_stc.py -f 27 -b 128 --train 1 --layers 6 -s 3
出现如下报错:
该如何修改解决呢?感谢您的回复。
哈喽,看上去是你的输入数据的尺寸和我的代码不匹配,正确的应该是[b,t,n,2]->变成[b,t,n,c];然后在这一步应该是[9072,17,16]的尺寸变成[42,8,27,17,c],报错是因为当前你的尺寸是[1,9072,17,16],所以rearrange函数无法对第一维进行释放(它1);你可以这样修改,把x_s的第一维压缩掉,就是 x_s = rearrange(x_s.squeeze(0), ‘(b h t)s c-> b h t s c’,h=self.head,t=t). 但是你最好确认一下,从模型最开始就让input_2D的尺寸变成[b,t,n,2]而不是[1,b,t,n,2]。
作者您好,非常感谢您的工作。我在基于Human3.6M数据集进行训练时,运行命令:
python run_stc.py -f 27 -b 128 --train 1 --layers 6 -s 3
出现如下报错: 该如何修改解决呢?感谢您的回复。
哈喽,看上去是你的输入数据的尺寸和我的代码不匹配,正确的应该是[b,t,n,2]->变成[b,t,n,c];然后在这一步应该是[9072,17,16]的尺寸变成[42,8,27,17,c],报错是因为当前你的尺寸是[1,9072,17,16],所以rearrange函数无法对第一维进行释放(它1);你可以这样修改,把x_s的第一维压缩掉,就是 x_s = rearrange(x_s.squeeze(0), ‘(b h t)s c-> b h t s c’,h=self.head,t=t). 但是你最好确认一下,从模型最开始就让input_2D的尺寸变成[b,t,n,2]而不是[1,b,t,n,2]。
感谢作者的建议,检查input2D尺寸后发现没有问题,我逐行debug发现,是droppath出现了问题:(可能是timm的版本原因导致?)
x_s = att_s @ v_s + sep2_s + 0.0001 * self.drop(sep_s)[0] # drop(sep_s)会使sep_s原来的维度[1,s,c//2//h]变为[1,1,s,c//2//h],添加[0]后rearrange不会出现问题
x_s = rearrange(x_s, '(b h t) s c -> b h t s c ', h=self.head, t=t) # b*h*t,s,c//h//2 -> b,h,t,s,c//h//2
作者您好,非常感谢您的工作。我在基于Human3.6M数据集进行训练时,运行命令:
出现如下报错:
该如何修改解决呢?感谢您的回复。