上次写代码时,backbone encoder是用了别人代码,另外又添加了多分支多layer作为task decoder。
但是开始犯了个很致命的错误,在pytorch设置优化器时,仅使用了:
optimizer = torch.optim.Adam(model.parameters(), lr=args.lr, weight_decay=args.weight_decay)
这样实际上只优化了部分模型,应该这样设置:
optimizer = torch.optim.Adam([{'params': model.parameters()},
{'params': jigsaw_classifier.parameters()},
{'params': element_classifier.parameters()}
],
lr=args.lr, weight_decay=args.weight_decay)
参考:
https://blog.csdn.net/junqing_wu/article/details/94395340
还可以对不同模型使用不同优化策略