huawei-noah / Efficient-AI-Backbones

Efficient AI Backbones including GhostNet, TNT and MLP, developed by Huawei Noah's Ark Lab.
4.07k stars 708 forks source link

ViG在其他数据集上的效果不佳 #184

Closed zhaoxixixi closed 1 year ago

zhaoxixixi commented 1 year ago

首先感谢作者出色的工作!

我是一名科研小白,复现自己数据集时出现错误,想请教应该如何修改模型进行迁移学习,谢谢!

以下是我做的工作

​ 我将模型prediction最后一层改为100类,并降低学习率后。在训练时test的准确率一直在提高,同时ACC1和ACC5在不同程度地提高,而Test(EMA)提升的比较缓慢。同时在使用此训练过后的预训练模型进行测试,效果不佳。

模型修改的部分: image 将最后一层1000类别改为100类别,train.py代码处修改为:(加载参数之后修改模型)

image

在进行预测时,将代码修改为(先修改模型,再加载参数)

同时在加载以此为基础的训练模型,train.py代码修改为:

image

训练命令:

image 训练时loss以及正确率:

image 预测命令:

image best_md.pth是以我的数据集训练得到的预训练模型。

预测时的loss:

image 测试数据:miniImgNet

train:100类,每类480张

image val:100类,每类120张

image

问题

请问我这样修改模型是否正确?应该如何修改模型才能迁移学习到我目前的数据集呢?

iamhankai commented 1 year ago
zhaoxixixi commented 1 year ago

作者您好! 非常感谢您的答复,问题已解决! 再次感谢您优秀的工作!

yankwi commented 1 year ago

作者您好! 非常感谢您的答复,问题已解决! 再次感谢您优秀的工作!

大佬请问下,您最后是如何解决的呢?我现在也出现一样的问题。

zhaoxixixi commented 1 year ago

我是模型没加载成功导致的,具体你可以输出一下模型加载后的权重参数,如果出现大面积都是全0这种情况,你就需要看一下是定义模型和你记载模型参数的张量维度大小是不是一样的。

yankwi commented 1 year ago

谢谢 已经解决。问题出在多卡训练单卡推理,模型名称不匹配(多卡模型名多了“module”), 可如下修改:model.load_state_dict(checkpoint['state_dict'], strict=False)

PoisonKiller commented 7 months ago

我是模型没加载成功导致的,具体你可以输出一下模型加载后的权重参数,如果出现大面积都是全0这种情况,你就需要看一下是定义模型和你记载模型参数的张量维度大小是不是一样的。

请问哥你是怎么解决这个问题的呀,能参考下你的代码吗?最近也遇到了这个问题但是不知道如何解决,谢谢!

yankwi commented 7 months ago

  您好,邮箱已收到,我会尽快给您回复。