美文网首页
复现maml论文模型-3

复现maml论文模型-3

作者: China空鸟 | 来源:发表于2020-06-18 14:30 被阅读0次

两个图像数据集的分类模型的训练代码还没有深入看,先给出实验的一些参数对应的训练效果。
数据集下载
链接:https://pan.baidu.com/s/1hcdzRB0BVRwh3Ei4VO2SNQ
提取码:fmrv

一、数据和参数分析

1.数据集
Omniglot数据集.png
MiniImagenet数据集.png
2.基础模型设计在原论文第五章第二小节,我还未细看
3.损失函数
损失函数.png
4.原论文的实验参数
实验参数.png

整理后的参数
4.1 Omniglot


Omniglot实验参数.png

4.2 MiniImagenet


MiniImagenet实验参数.png
5.实验结果
实验结果.png

二、Omniglot

又回到readme

readme.png
需要先执行一下data/omniglot_resized/resize_images.py
这个python文件头部告诉了我们怎么放置这个数据集,但是可能有些文件夹层数的关系,没找到对应文件,所以我稍微修改了下源代码,修改如下:
第一处,resize_images.py
image_path = '*/*/*/'

第二处,data_generator.py
class DataGenerator->def init->elif 'omniglot' in FLAGS.datasource->character_folders(这是一个变量)

character_folders = [os.path.join(data_folder, family, character_dir, character) \
                for family in os.listdir(data_folder) \
                if os.path.isdir(os.path.join(data_folder, family)) \
                for character_dir in os.listdir(os.path.join(data_folder, family)) \
                if os.path.isdir(os.path.join(data_folder, family, character_dir))
                for character in os.listdir(os.path.join(data_folder, family, character_dir))]

开始训练
我的笔记本是:windows10,cpu是Intel(R) Core(TM) i7-8550U CPU @1.80GHz 1.99GHz,内存8g
在不开其他应用的条件下,在命令提示符终端只能跑5way-1shot的实验,其它的在内存达到98%,99%时就自动被杀掉了。这个实验跑的时间大概是2天左右,我总感觉它可能跑着跑着就停了,但是可能在计算中吧(模型训练进度好像可以可视化,但是我还没有试,包名是tqdm)。实验结果:
第一行数据是0~10次少量数据更新权值后计算测试集对应的准确率accuracy;
第二行数据是0~10次少量数据更新权值后计算测试集对应的标准差;
第三行数据0~10次少量数据更新权值后计算测试集对应的95%置信度。

5way1shot实验结果.png
之后没跑起来5way5shot的实验,我只是尝试改了上文中表格中的部分参数(也就是命令行提供的参数),但是似乎问题不在那,而在生成数据上,代码运行往往卡在下图这个位置。
实验进行不下去的地方.png
但是我并没有尝试去改源码中的一些参数,而将代码迁移到centos7上去跑模型了(因为可以返校了;跑着模型的笔记本真的啥也不能干)。
我的主机信息,cpu:Intel(R) Core(TM) i5-8400 CPU @ 2.80GHz, 内存8g(在跑代码时我禁用了图形界面,使用字符界面)
在cpu上跑了5way5shot,大概用了一天半左右的时间,结果如下图:
5way5shot实验结果.png
之后因为觉得耗时有点长,所以打算使用GPU,这部分环境的搭建,在这篇博客中:https://www.jianshu.com/p/52570d1e70b2
其余两个20way1shot和20way5shot时间差不多都在半天左右的时间,实验结果分别如下图:
20way1shot实验结果.png
20way5shot实验结果.png
其实20way5shot是最后一个训练好的模型,因为一直跑不起来,经过我的简单计算,以及小测试,将上面提到的源码中的参数修改了一下,
源码参数修改.png
这个参数按照我的理解,就是和创建的总数据集个数相关,命令行中的meta-iterations指的是number of metatraining iterations,这个数乘以meta_batch_size(number of tasks sampled per meta-update)是训练所用到的任务数量。而刚才的参数num_total_batches可根据meta_batch_size的不同,组合成一个个训练batch。比如,这里源码中的num_total_batches=200000,假设训练任务是20way-1shot,meta_batch_size=16,meta-iterations=60000,那么训练时一个batch的16个任务,就是从200000个数据集任意挑出16个,一共需要随意挑选60000次。那么刚刚说20way5shot一直跑不起来,而20way1shot可以跑起来,我就进行了简单的计算:(200000*20*1)/(20*5)=40000,因为不知道上限是多少,所以我用了50000进行训练,结果是跑了起来。
这步,也就是Generating filenames 过去了,但是代码继续向下进行,又卡在了这里,
命令行参数修改.png
看原因,和examples_per_batch,batch_size两个参数有关系,examples_per_batch是和我们当前的训练任务,就是NwayKshot有关,所以不能更改,只能修改batch_size,也就是命令行参数meta_batch_size。同样和已经跑起来的20way1shot比较,结合源码中的计算公式capacity=min_queue_examples + 3 * batch_image_size,把图中的min_queue_examples = 256省略,简单计算来看,就是(3*20*1*16)/(3*20*5) = 3.2,就约等于3(这里因为已经试了好多次,所以就没有测试最可用的值,直接用了计算得到的可用值3)
因此,Omniglot数据集上我用的训练命令行参数如下:
命令行参数.png

三、MiniImagenet

同样地,按照readme执行对应的预处理数据集的python文件,proc_images.py,但是这个文件也是不能直接运行的。我的数据预处理都是在windows下进行的,这个文件适用于linux系统,所以做了如下修改(主要就是创建文件夹,改名字,在windows上直接用函数,而在linux上os.system()直接执行命令):

预处理源码修改.png

使用GPU环境进行训练,大概也是半天时间(就是前一天的下午或晚上开始训练,第二天早上就训练完成),训练结果如下:


5way1shot实验结果.png
5way5shot实验结果.png

(5way5shot也修改了源代码参数num_total_batches = 50000)

四、结果对比

实验结果对比.png

分析上面的结果,基本接近论文的实验结果,说明了该论文实验结果的可重复性。从深入回归任务部分的代码,可以看出maml模型(gradient by gradient)相较于预训练模型,得到了更优的模型初始化参数。
文中还提到了一阶求导和二阶求导的性能对比


一阶导&二阶导.png
公式推导.png

从性能对比来看,二阶导并没有有效提升性能,同时二阶导的计算也增加了计算时间。

最近还要忙着找工作,得开始刷题了,所以把这段时间做的东西稍稍总结一下,下次要接着做也能有个回顾的。

相关文章

  • 复现maml论文模型-3

    两个图像数据集的分类模型的训练代码还没有深入看,先给出实验的一些参数对应的训练效果。数据集下载链接:https:/...

  • 复现maml论文模型-2

    跑回归代码代码地址:https://github.com/mari-linhares/tensorflow-mam...

  • 复现maml论文模型-1

    论文为:Finn C, Abbeel P, Levine S, et al. Model-agnostic met...

  • ABSA经典结构代码

    keras 论文复现模型学习(ABSA) GitHub上的大神代码学习 [ https://github.com/...

  • 深度学习:预训练模型?

    深度学习中预训练模型是指什么?如何得到?在模型训练过程中,常常会有“预训练模型”来帮助其他复现者能有效达到论文结果...

  • 需要学习的

    es 进化学习问小雨上周说的三篇论文 2.meta learning梦婷之前说的论文,加永君说的 ES-MAML...

  • 文本分类经典模型复现--TextCNN(基于PyTorch)

    前言 复现经典论文,可以回顾深度学习和自然语言处理基础,强化对常用模型的理解,体会经典模型中蕴含的设计哲学,为后续...

  • 12.15

    1. 选论文(完成) 2. 研究好wgan生成代码。 (完成) 3. 读论文。跑复现代码。 (完成) 4. 回顾项...

  • Multiagent cooperation and compe

    论文复现 : tensorflow_2player_pong 论文详述 Multiagent cooperatio...

  • 一键上妆的BeautyGAN

    最近忙着弄论文,不知不觉三个多月没更新了 = = 心里实在过意不去,分享一下前段时间看的一篇论文,以及复现的模型~...

网友评论

      本文标题:复现maml论文模型-3

      本文链接:https://www.haomeiwen.com/subject/mnhexktx.html