Deep learning 从预先存在的冗余模型制作更小的模型

Deep learning 从预先存在的冗余模型制作更小的模型,deep-learning,Deep Learning,很抱歉标题含糊不清 我将从一个例子开始。假设我有一个预先存在的模型,可以对狗、猫和人进行分类。然而,我所需要的只是一个可以区分猫和狗的模型(不需要人类)。先前存在的模型很重而且冗余,所以我想制作一个更小、更快的模型,它可以完成所需的工作 存在哪些方法 我想利用知识提炼(将以前的模型用作教师,将新模型用作学生)并训练一个全新的模型。首先,删减教师模型,使其具有更小的版本,以便作为学生在提炼中使用。一个简单的机制,比如基于幅度的修剪就足够了 对于蒸馏,因为您的输出向量将不再匹配(学生是二维的,老师是

很抱歉标题含糊不清

我将从一个例子开始。假设我有一个预先存在的模型,可以对狗、猫和人进行分类。然而,我所需要的只是一个可以区分猫和狗的模型(不需要人类)。先前存在的模型很重而且冗余,所以我想制作一个更小、更快的模型,它可以完成所需的工作

存在哪些方法


我想利用知识提炼(将以前的模型用作教师,将新模型用作学生)并训练一个全新的模型。

首先,删减教师模型,使其具有更小的版本,以便作为学生在提炼中使用。一个简单的机制,比如基于幅度的修剪就足够了

对于蒸馏,因为您的输出向量将不再匹配(学生是二维的,老师是三维的,你必须考虑到这一点,并且只根据重叠维度计算蒸馏损失。另一种方法是分层蒸馏,其中输出向量是无关的,蒸馏损失是根据中间体之间的差异计算的教师和学生的层次。在这两种情况下,除了学生输出和教师输出之外,全部损失可能包括学生输出和标签之间的差异

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