L888666Q 2022-08-12 14:57 采纳率: 100%
浏览 27
已结题

关于#深度学习知识蒸馏算法loss函数计算#的问题?

深度学习中的知识蒸馏算法loss函数计算哪种是正确的?

hard_loss=nn.CrossEntropyLoss()
soft_loss=nn.KLDivLoss(reduction="batchmean")
loss=hard_loss(student_out,label)
ditillation_loss=soft_loss(F.softmax(student_out/T,dim=1),F.softmax(teacher_output/T,dim=1))

方式一:

loss_total = loss*alpha+ditillation_loss*(1-alpha)

方式二:

loss_total = loss*alpha+ditillation_loss(T*T*2)*(1-alpha)
  • 写回答

1条回答 默认 最新

  • kakaccys 2022-08-12 18:56
    关注
    原论文是第一种,所以用第一种肯定没问题,第二种也有人用,主要是为了保证两个loss贡献差不多,毕竟softloss里有做平滑,所以都可以哈,还是要看哪种收敛更快,效果很好
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 8月23日
  • 已采纳回答 8月15日
  • 创建了问题 8月12日