两个张量之间差异的损失函数

Posted

技术标签:

【中文标题】两个张量之间差异的损失函数【英文标题】:Loss function for differences between two tensors 【发布时间】:2021-03-27 07:38:05 【问题描述】:

我正在使用所谓的“知识蒸馏 (KD)”方法训练卷积神经网络(使用 Tensorflow),简而言之,就是针对您想要完成的任务训练一个大模型(教师)实现并在此之后训练一个较小的模型(学生),使其可以模拟教师的结果,但使用更少的参数,因此在测试时更快。

我面临的问题是如何以有效的方式在相同输入的学生模型和教师模型的结果之间建立损失函数(结果是学生和教师模型大小相同的张量)教师模型)。

我没有分类任务,所以我没有输入的标签,但我只有我想模拟的老师的结果。

现在损失函数是这样定义的:

loss_value = tf.nn.l2_loss(student_prediction - teacher_prediction)

“student_prediction”和“teacher_prediction”是在给定数据集中每个输入的情况下计算的运行时间。

有了这个定义,我仍然无法与我的学生模型达成一致。

谢谢。

【问题讨论】:

【参考方案1】:

我自己找到了答案(使用 MSE)。就是这样:

loss = tf.reduce_mean(tf.squared_difference(tensor_1, tensor_2))

【讨论】:

以上是关于两个张量之间差异的损失函数的主要内容,如果未能解决你的问题,请参考以下文章

如何添加张量流损失函数?

将 numpy 转换为张量(keras)(损失函数)

使用张量流在 keras 中对损失函数的输入进行切片

什么是惩罚幅度和符号差异的良好损失函数

每个张量组的 Keras 自定义损失函数

如何在自定义损失函数中迭代张量?