我想使用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)
损失函数正确吗? 我的分类问题叫做(多类分类)?
答案 0 :(得分:0)
损失函数正确。
问题出在包含我的训练数据的文件中。没有正确创建。实际上,我翻转了图像中的尺寸(宽度和高度),所以对于我的CNN,训练集的结果是难以理解的。
现在,我已经解决了问题,测试准确率达到了99.8%。