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

关于#深度学习知识蒸馏算法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日

悬赏问题

  • ¥15 求指导ADS低噪放设计
  • ¥15 CARSIM前车变道设置
  • ¥50 三种调度算法报错 有实例
  • ¥15 关于#python#的问题,请各位专家解答!
  • ¥200 询问:python实现大地主题正反算的程序设计,有偿
  • ¥15 smptlib使用465端口发送邮件失败
  • ¥200 总是报错,能帮助用python实现程序实现高斯正反算吗?有偿
  • ¥15 对于squad数据集的基于bert模型的微调
  • ¥15 为什么我运行这个网络会出现以下报错?CRNN神经网络
  • ¥20 steam下载游戏占用内存