我的自定义损失函数是否正确? (火炬)

Is my custom loss function correct? (Pytorch)

我想使用 CNN + 分类器进行单词识别,其中输入是图像,输出是矩阵 10x37。 10是一个单词的最大字符数,37是我例子中的字母数。

我为这个模型写了一个自定义损失函数,但我不确定它是否正确,因为我无法达到 80% 以上的测试精度。

我正在使用 Pytorch

class CustomLoss(nn.Module):
    def __init__(self):
        super().__init__()
        self.nllloss = nn.NLLLoss()

    def forward(self, output, labels):
        loss = 0
        for i in range(labels.shape[1]):
            loss += self.nllloss(output[:, i, :], labels[:, i])
        loss /= labels.shape[1]
        return loss

信息:

output.shape = (batch_size, 10, 37)

labels.shape = (batch_size, 10)

损失函数对吗? 我的class化问题叫做(Multiple Multi class classification)?

损失函数正确。

问题出在包含我的训练数据的文件中。它没有正确创建。事实上,我翻转了图像中的尺寸(宽度和高度),所以我的训练集的结果对于我的 CNN 来说是无法辨认的。

现在我已经解决了这个问题,我的测试准确率已经达到99.8%