AILab-CVC / UniRepLKNet

[CVPR'24] UniRepLKNet: A Universal Perception Large-Kernel ConvNet for Audio, Video, Point Cloud, Time-Series and Image Recognition
https://arxiv.org/abs/2311.15599
Apache License 2.0
863 stars 52 forks source link

作者您好,在Time-series子项目中,张量的格式似乎出错 #10

Closed prestyan closed 6 months ago

prestyan commented 6 months ago

133:enc_out = self.encoder(enc_out) # enc_out's shape [350, 1000] 134:enc_out = enc_out.reshape(self.node_num,-1,self.d_model) # however, node_num = 350 and d_model = 768 这导致无法转换:RunTimEerror:shape '[350,-1,768]' is invalid for input size 350000. 我发现github仓库中代码和点云代码中不同,是否是哪里需要进行改动,但是我不敢随意改动网络模型格式。 非常感谢!

invictus717 commented 6 months ago

方便多贴一些代码和截图吗 这里面网络的结构不需要改变 只需要改变一下这里的张量形状 可以发一下你运行的代码脚本和相关参数设定

prestyan commented 6 months ago

可以的,我使用的数据是按照readme里面所说的在点云data文件中下载,并放到了dataset文件夹中,运行结果如截图所示。

run

运行的项目为Time-Series,在该项目文件夹中所使用的unireplknet.py为从主文件夹复制,文件夹格式安排为:

dir

运行方法:按照Time-Series中readme所提示的命令运行,即bash ./scripts/Global_Temp/UniRepLKNet.sh,并无其他改动。 并没有使用iGEMM,使用默认pytorch卷积。 由于Time-Series中的models中不包含Corrformer_Large.py文件,所以在exp/exp_main.py文件中,在import中删除了Corrformer_Large,只保留from models import Corrformer。 其余全部使用默认代码。

prestyan commented 6 months ago

补充dataset文件组织形式: image

invictus717 commented 6 months ago

同学你好,你这个问题是因为你调用外层的UniRepLKNet的时候前传过了ImageNet的分类头所以特征被分类成了(1000种类别),但是在时序里面我们仅使用UniRepLKNet所提取的特征。

除此以外,可以对照一下我给出的对应的代码和张量形状输出

核心使用UniRepLKNet前传的代码如下面所示,对应github上面开源部分L126L134

B, L, D = x_enc.shape
print((x_enc.shape))
_, _, C = x_mark_enc.shape
x_enc = x_enc.view(B, L, self.node_num, -1).permute(0, 2, 1, 3).contiguous() \
    .view(B * self.node_num, L, D // self.node_num)
print((x_enc.shape))
x_mark_enc = x_mark_enc.unsqueeze(1).repeat(1, self.node_num, 1, 1).view(B * self.node_num, L, C)
print((x_enc.shape))
enc_out = self.enc_embedding(x_enc, x_mark_enc)
print((enc_out.shape))
enc_out = enc_out.reshape(self.node_num,1,192,192)
print((enc_out.shape))

image

prestyan commented 6 months ago

谢谢,祝您早日发表!

yanghu819 commented 5 months ago

replk/UniRepLKNet/Time-Series/layers/MultiCorrelation.py", line 111, in forward , S, _ = keys.shape ValueError: too many values to unpack (expected 3) 根据上述更改后,会出现这个bug,请教下怎么改

prestyan commented 4 months ago

replk/UniRepLKNet/Time-Series/layers/MultiCorrelation.py", line 111, in forward , S, _ = keys.shape ValueError: too many values to unpack (expected 3) 根据上述更改后,会出现这个bug,请教下怎么改

是参数过多,需要去除一些