9.7.3 损失函数
回忆一下,super(MaskedSoftmaxCELoss, self).forward
就相当于直接计算损失函数,这是nn.Module
的普遍做法;还要注意nn.CrossEntropyLoss
会对传入的数据做
nn.CrossEntropyLoss
的输入要求如下
unweighted_loss
的形状是(batch_size, num_steps)
,也就是对应每一个样本的每一步的直接的交叉熵损失
weighted_loss
那一行,应该不是mean
,应该是先sum
之后再除以有效样本长度。评论区有人提出,但是没有明确回答,不知道是不是应该改(但其实感觉好像也有问题,因为预测输出和标签的长度可能不一致,那么有效样本长度到底该取哪一个呢?)。感觉可能不改,从后面的训练来看,这里传入的valid_len
是标签的有效长度,因为输出的长度可能完全跟标签不一样,这样子就无法确定分母到底是谁的长度
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
2024-02-15 Two Arithmetic Progressions
2024-02-15 周期
2024-02-15 最幸运的数字
2024-02-15 沙拉公主的困惑
2024-02-15 炸脖龙 I
2024-02-15 C Looooops
2024-02-15 称重