Runist
Runist
> In maml.py line 105 and 106, the code is > > ```python > fast_weights = collections.OrderedDict((name, param - args.inner_lr * grads) > for ((name, param), grads) in zip(fast_weights.items(), grads))...
其实对比其他方法的时候,别的方法一般是使用预训练权重,那么我们理论上是所有有监督的数据集,随机选取N个类就可以开始训了,然后这样选取若干次,一直训练,得到的权重就是泛化性很强的权重。那这个时候我们只需要在我们特地的数据集上去做同样次数的训练,就能和其他方法比对了。
你可以分,只不过没必要,因为只要是你的测试集没在训练集里面出现过就行
是的,freeze 所有层,只训练最后一层,这个叫做transfer learning,一般可以让模型大胆地,快速地先收敛,不需要过度训练,否则会过拟合。最后unfreeze所有层,进行微调,这时候就需要小的学习率,不会破坏原有学习的特征。这种属于是经验之谈,也不能说所有的模型都适用,但绝大部分imagenet的预训练权重是这样的。
torch版本的test我没有编写。其实思路很简单,你就随机选几个类的image组成一个task,然后测试他在random init的权重下、别的任务预训练权重下、maml方式训练下的权重去训练同一个task,得到一个acc,最后多进行几次这样的测试,得到一个平均的acc即可。可以参考keras版本的代码。 ------------------ 原始邮件 ------------------ 发件人: "Runist/torch_maml" ***@***.***>; 发送时间: 2022年9月1日(星期四) 下午3:08 ***@***.***>; ***@***.***>; 主题: [Runist/torch_maml] about test.py (Issue #1) 首先非常感谢分享代码,本人刚开始学meta leanring , 找资料的时候找到了您写的blog,按照提示找到了这个pytorch 版本的代码 但是发现这个代码只有train.py 没有 test 的代码 请问有 pytorch 版本的 test.py 代码吗? 有的话可以分享吗...
你好,您的邮件我已收到。我将在近期查看,尽快给你回复。
这版本代码里面有bug `for idx, (x_input, y_true_prob) in enumerate(train_loader):` 这样取出来的idx会因为多线程的问题取出来的是不对的,你再用idx去算step,写入的图表也是乱的
> 您好,我按照默认参数训练了20个epoch,同样lcc只有0.10,请问您是怎样解决这个问题的? 得用预训练权重,不然没有泛化性
In the [model.py](https://github.com/Runist/torch_Vision_Transformer/blob/master/model.py) model define explanatory note.
对的,MAML只是一种训练方式,你任意选取五个类别作为一次训练的data,让它随机探索几步,回到初始点,以一个比较小的LR让它向前优化一步,然后循环这个操作。这就是它的思路,所以实际上对任务的选取没有固定规则,这么做的目的是为了得到一个泛化性很强的权重。