Runist

Results 52 comments of Runist

我是用voc2012的,训练集15000多张,验证集1700多张。我用同样的数据集,训练你最新的repo,上周五下载的。map只有28。。。

可以,那我试试VOC2007

> 是07+12,我都提供了为啥不用呢 你这个是自己改过标注的吗?还是整理过官方的呢

谢谢耐心解答,麻烦了。

> 您好,请问一下您这个数据集是以什么结构设置的?,您这个数据处理的代码没有太看明白。 是这样的:假设你有五个分类的任务,所以一个任务中你将会有“五种”图片,那么每一种分类有k张图片作为support set,另外还有q张图片作为query set,所以“一个任务”就会有 n*(k + q)张图片。这只是一个任务,还得加上batch size维度。如果batch size是,则一个Batch就有8个任务。 另外,这个代码我也是自己参考别人写的。实在找不到哪里和论文不一致了,就是训练不出结果。

> 您好,我自己也在写一个MAML的算例,参考的时候发现了代码中可能的问题,MAML中 参数应该是只进行第二次的gradient, 第一次的gradient不进行迭代的,我看到train中第一次也迭代了,可能是这个地方的问题导致这个代码训练不出来。 我不知道你说的第一次的gradient不进行迭代,是指不计算梯度信息,还是计算了梯度信息,把梯度信息更新进去。但实际上我是这样一个思路: 1、我在每一个batch_task开始时,先拷贝一份权重信息。 2、对support_set进行梯度下降,得到一个更新后的权重模型。 3、用新的模型计算query_set的loss,记为query_loss。 4、恢复原来的权重信息,然后利用query_loss计算出梯度,并且更新梯度。 这就是我train部分的过程。而validation的过程四步都一样,计算出query_loss,而不更新梯度。 然后我现在的现象是,train loss 和 train acc是会正常下降和上升的。但是validation的loss就会上升,acc基本维持在20%。 你可以详细说说我的问题在哪吗?

> 我也是刚刚才开始学MAML,可能说的有问题。 > 不进行迭代指的是不更新梯度信息,从你这说法里并没有看出来什么问题。 > 我之前是没有注意到重载了权重信息,所以误以为权重一个batch更新了两次,是我没有看清楚,这个地方应该没有问题。 > > 但是在我看来在validition的过程中,最后又将初始的没有更新的梯度重新赋值到model中应该起不到作用吧。 因为validation仅仅只是测试,train完之后的权重是不能在验证阶段修改。这和普通的模型训练应该是一样的,应该只是看看他在新数据上的泛化能力。

先前由于理解错误,导致get_meta_batch写错了。所以会造成过拟合的假象,现在已经修正过来了。

@AnshThakur Thank for you review my code and tell me where bug.I will try to do this.However I am trouble with other project, I can't tell you the result right...

> HI, > I think there is a problem in code. Even if you set the meta-weights before computing gradients, model will still use the original weights to compute gradients....