如何使用torch.nn.CrossEntropyLoss作为自动编码器的重建损失?

问题描述 投票:0回答:1

我想使用CrossEntropyLoss计算我的自动编码器的重建精度:

ae_criterion = nn.CrossEntropyLoss()
ae_loss = ae_criterion(X, Y)

其中X是自动编码器的重建,而Y是目标(因为它是自动编码器,Y与原始输入X相同)。 XY都有形状[42, 32, 130] = [batch_size, timesteps, number_of_classes]。当我运行上面的代码时,我收到以下错误:

ValueError:预期目标大小(42,130),得到了torch.Size([42,32,130])

在查看文档后,我仍然不确定如何以适当的方式调用nn.CrossEntropyLoss()。似乎我应该改变Y形状[42, 32, 1],每个元素是区间[0, 129](或[1, 130])中的标量,我是对的吗?

有办法避免这种情况吗?由于XY介于01之间,我能否以相同的方式使用二元交叉熵损失?

python machine-learning deep-learning pytorch cross-entropy
1个回答
1
投票

对于CrossEntropyLoss,Y的形状必须为(42,32),每个元素必须是区间[0,129]中的长标量。

你可能想用BCELossBCEWithLogitsLoss来解决你的问题。

© www.soinside.com 2019 - 2024. All rights reserved.