zl程序教程

您现在的位置是:首页 >  后端

当前栏目

paddlepaddle 18 面向静态图的知识蒸馏实践(基于paddle2实现)

静态 实现 基于 实践 知识 18 面向 蒸馏
2023-09-14 09:01:36 时间

paddle2是动态图模型,为什么博主要基于paddle2实现静态图的知识蒸馏呢?当然是因为paddlehub中海量的预训练模型都是静态图的原因呀。首先通过对paddlehub的静态图模型进行迁移学习,可以得到一个性能优越的静态图模型。但是,这样的预训练模型通常在泛化能力和运行内存需求上还有待优化。通过使用知识蒸馏技术,将迁移学习模型作为教师模型,可以将其的性能迁移到学生模型中。对paddlehub的静态图模型进行迁移学习的教程可以参考paddlepaddle 17 迁移学习-图像分类实战四 基于paddle2(paddlehub2)实现静态图的训练与测试_a486259的博客-CSDN博客

在进行知识蒸馏前有一些关于paddle2静态图的前置知识需要明白 :

1、在paddle2中静态图的对象称为program,同时面向训练与测试需要两个不同的program

2、通过以下命令可以将训练program克隆为测试progra。

        test_program=train_program.clone(for_test=True)

3、静态图中train_program中的bn、dropout是处于激活状态,同时train_program通过包含反向传播过程;而test_program只包含前向传播过程

4、正常渠道获取的train_program是不包含反向传播过程的,需要自己进行添加

关于静态图的知识蒸馏其实就是在train_program中实现将教师模型的输出作为标签传播给学生模型。

1、教