Closed LingFengGold closed 2 years ago
在MOSEI上复现结果可以按照如下命令:
python Train.py --dataset mosei_SDK --batch_size 64 --encoders gru --features_compose_t cat --features_compose_k cat --activate gelu --time_len 100 --video facet42 --d_v 35 --d_hiddens 50-3-128=10-3-64=10-3-32=10-3-3 --d_outs 50-3-128=10-3-64=10-3-32=10-3-3 --res_project 1-1-1-1 --bias --ln_first --dropout_mlp 0.1-0.1-0.1 --dropout 0.1-0.1-0.1-0.1 --epochs_num 50 --loss MAE --bert_lr_rate 0.01 --lr_decrease_iter 10 --lr_decrease_rate 0.1
但是可能会收到环境版本的影响,我们当时用的环境是PyTorch 1.10 + numpy 1.19 + CUDA 11.1。虽然不能达到完美复现的程度,但是结果应该不会相差太多。
对于第二个问题,我们设置seq_len参数的目的是为了减少显存占用;在实际操作中,我们将a和v的特征按照单词进行对齐,也就是说在数据读取阶段,t a v三个模态的长度是一致的;但是t(纯文本)在经过BERT处理后会添加
感谢,我试试这组超参。原来你们使用的是aligned的数据,我用的是unaligned的数据,所以会出现我之前叙述的问题,请问这个影响大吗?
这个实验我们最近也在做,但是我们发现两种数据的差别很小,甚至unaligned的数据效果更好一点。可能也是很随机的选取过程有关系。
好的谢谢,如果能上传一下处理unaligned数据的代码就更好了哈哈
您好! 很有意思的工作!
我希望复现在MOSEI数据集上复现您的结果,请问能否提供相关超参?
另外,您在论文中提到对于tav的长度大于100的情况,会直接截取前100,对于长度小于100的情况,会padding到100。通过阅读代码,我发现截取100的操作是基于对于a模态的长度判断进行的,并且后面在Model中使用F.pad将av模态padding到和t等长。这样做三个模态的seq_len并不是100,而是等于t的seq_len,这一点是否与论文中叙述有冲突呢?如果只是为了让三个模态的seq_len相等,那么这样操作是否忽略了t的seq_len小于av的seq_len的情况呢?
感谢!