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

标签 python machine-learning deep-learning pytorch cross-entropy

我想使用 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: Expected target size (42, 130), got torch.Size([42, 32, 130])

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

有办法避免这种情况吗?自 XY介于 0 之间和1 ,我可以以等效的方式按元素使用二元交叉熵损失吗?

最佳答案

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

您可能需要使用 BCELossBCEWithLogitsLoss 来解决您的问题。

关于python - 如何使用torch.nn.CrossEntropyLoss作为自动编码器的重建损失?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55651920/

相关文章:

image-processing - 使用 YOLO 进行车牌检测

deep-learning - 如何计算 PyTorch 中的自举交叉熵损失?

machine-learning - 在 GPU 上运行 TensorFlow Textsum 模型

python - 如何检查列表中 3 个整数的总和是否与另一个整数匹配? (Python)

python - @property 是否是一种访问类内私有(private)和 protected 成员的方法?

python - 在 sklearn cross_val_score 上评估多个分数

python - Keras/Tensorflow 计算批处理的mean_iou

python - 沿第三轴的点积

python - 类型错误 : 'NoneType' object is not callable (Python: Scraping from HTML data)

tensorflow - 更改图像标题模型中的标记名称会影响性能吗?