首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从预先存在的冗余模型制作较小的模型

从预先存在的冗余模型制作较小的模型
EN

Stack Overflow用户
提问于 2020-11-18 14:22:35
回答 1查看 12关注 0票数 0

抱歉,标题太模糊了。

我将从一个示例开始。假设我有一个预先存在的模型,可以对狗、猫和人类进行分类。然而,我所需要的是一个可以区分狗和猫的模型(不需要人类)。现有的模型是笨重和冗余的,所以我想做一个更小,更快的模型,可以做所需的工作。

存在哪些方法?

我想利用知识蒸馏(使用以前的模型作为教师,使用新的模型作为学生),并训练一个全新的模型。

EN

回答 1

Stack Overflow用户

发布于 2021-01-22 00:24:04

首先,修剪教师模型,使其具有较小的版本,以便在蒸馏过程中用作学生。一个简单的机制,如基于幅度的剪枝就足够了。

对于蒸馏,因为你的输出向量不再匹配(学生是2维的,教师是3维的,你必须考虑到这一点,并且只根据重叠的维度计算蒸馏损失。另一种选择是分层蒸馏,其中输出向量是无关的,蒸馏损失是基于教师和学生中间层之间的差异来计算的。在这两种情况下,除了学生输出和教师输出之外,总损失还可能包括学生输出和标签之间的差异。

对于这样一个简单的任务,在剪枝之后,仅仅是基本的迁移学习就足够了--也就是用2d输出向量替换3d输出向量并继续训练。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64888070

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档