New dataset
LEM0NTE opened this issue · 6 comments
加在预训练模型之后,你需要将原本的linear层权重删除。你可以将模型打印一下,看看model的linear层输出是多少类。
修改MODEL.NUM_CLASSES 的时候,注意run.shell有无对应修改,run.shell的优先级更高会进行覆盖。
加在预训练模型之后,你需要将原本的linear层权重删除。你可以将模型打印一下,看看model的linear层输出是多少类。 修改MODEL.NUM_CLASSES 的时候,注意run.shell有无对应修改,run.shell的优先级更高会进行覆盖。
感谢您的回答。是我粗心搞错了.pth文件,原来的.pth文件保存了优化器的状态,所以提示了以上的错误。现在已经解决了。
但是想再向您请教在Imagenet上预训练的问题。比如我使用的是Uniformer的video任务,那我应该如何在Imagenet上做classify的预训练呢。是需要把模型代码中【B,C,T,H,W】都删掉T这个维度嘛。另外,比如训练后得到了一个uniformer_pre_Imagenet1K.pth的文件,我该如何使用它来在K400上进行后续的训练呢?
一般没有Video预训练模型,在ImageNet上做分类这种问题设置,不过最近ICLR上有工作”SELF-SUPERVISED VIDEO PRETRAINING YIELDS STRONG IMAGE REPRESENTATIONS“,该工作指出video预训练模型可以在很多图像任务上效果较好。回到你原本的问题,如果非要做图像任务的话,需要对输入图片进行padding。
而先在ImageNet预训练,再在K400上微调,是比较常规的设置,我提供的代码便是如此操作。首先在模型初始化时,需要将一些2D卷积拓展为3D卷积,然后再权重加在时将ImageNet预训练权重进行展开,这个在代码中已经提供。
UniFormer/video_classification/slowfast/models/uniformer.py
Lines 387 to 396 in c795a50
一般没有Video预训练模型,在ImageNet上做分类这种问题设置,不过最近ICLR上有工作”SELF-SUPERVISED VIDEO PRETRAINING YIELDS STRONG IMAGE REPRESENTATIONS“,该工作指出video预训练模型可以在很多图像任务上效果较好。回到你原本的问题,如果非要做图像任务的话,需要对输入图片进行padding。
而先在ImageNet预训练,再在K400上微调,是比较常规的设置,我提供的代码便是如此操作。首先在模型初始化时,需要将一些2D卷积拓展为3D卷积,然后再权重加在时将ImageNet预训练权重进行展开,这个在代码中已经提供。
UniFormer/video_classification/slowfast/models/uniformer.py
Lines 387 to 396 in c795a50
首先十分感谢您的答复,是我的提问造成了歧义。我确实是想在Imagenet上进行预训练,然后迁移到K400进行微调。但是我目前遇到的困难是,我不知道该怎样让模型在Imagenet上进行训练。举例来讲,假如我只copy了uniformer的video_classification仓库,并且准备好了Imagenet数据集,接下来我要怎样进行操作呢~(比如模型需要进行怎样的修改之类的)
图像预训练可以参考image_classification仓库,readme有比较详细的步骤可以参考一下
感谢您的耐心解答,我先去按照您的文档尝试,并关闭现在这个问题