价钱网站建设,网店装修设计与制作用什么软件,网站logo做h1标签,丹东建设网官方网站在使用pytorch实现一个多分类任务的时候#xff0c;许多多分类任务在训练过程中都会有如下的代码#xff1a;
criterion nn.CrossEntropyLoss()
loss criterion(output, target)
# output.size : [batch_size, class_num]
# target.size : [batch_size]许多的初学者会卡在…在使用pytorch实现一个多分类任务的时候许多多分类任务在训练过程中都会有如下的代码
criterion nn.CrossEntropyLoss()
loss criterion(output, target)
# output.size : [batch_size, class_num]
# target.size : [batch_size]许多的初学者会卡在这里生出这样一个疑问为什么输入的output.size和target.size是不一样的这样如何计算损失值呢因为根据损失函数的设计原理损失值的计算应该如下图所示 output应该和target的size是一一对应才可以实现损失值的计算。 包括在官网上查看CrossEntropyLoss()函数的例子 也可以看到依旧有size不匹配的例子。这是为什么呢 这是因为在CrossEntropyLoss()函数的内部会将传入的target转化为独热编码的格式这样就会使target的size从[batch_size] 》 [batch_size, class_num]了。
故究其原因就是CrossEntropyLoss()函数的内部会将target转化为独热编码所以输入的时候直接将[batch_size] 的target(存放的是batch_size个对应类别标签) 输入进去即可。