如何解决如何将 nn.CrossEntropyLoss() 用于 PatchGAN 鉴别器输出?
我正在尝试使用 nn.CrossEntropyLoss()
来查找输出形状为 (batch_size,1,30,30)
的张量的 patchGAN 鉴别器的真实和虚假之间的交叉熵损失。
我对要求类索引而不是目标的文档 here 感到困惑。
CE_loss = nn.CrossEntropyLoss()
real_loss = CE_loss(discriminator_real_outputs,torch.ones_like(discriminator_real_outputs))
fake_loss= CE_loss(discriminator_fake_outputs,torch.zeros_like(discriminator_fake_outputs))
我从错误中了解到目标需要 long int
。我将其转换为 long。
CE_loss = nn.CrossEntropyLoss()
real_loss = CE_loss(discriminator_real_outputs,torch.ones_like(discriminator_real_outputs).long())
fake_loss= CE_loss(discriminator_fake_outputs,torch.zeros_like(discriminator_fake_outputs).long())
然后它要求目标是 (batch_size,30)
而不是 (batch_size,30)
,也解决了这个问题。
之后,它返回了这个错误 cuda runtime error (710) device-side assert triggered
,它破坏了 Google Colab 上的 GPU,并且在我重置运行时之前无法再次运行它。
我想像其他损失一样使用这种损失形式
loss = Loss(input,target)
没有索引。我该怎么办?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。