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

时间:2018-12-22 21:03:34

标签: python deep-learning classification pytorch loss-function

我想使用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)

损失函数正确吗? 我的分类问题叫做(多类分类)?

1 个答案:

答案 0 :(得分:0)

损失函数正确。

问题出在包含我的训练数据的文件中。没有正确创建。实际上,我翻转了图像中的尺寸(宽度和高度),所以对于我的CNN,训练集的结果是难以理解的。

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