Я хочу сделать распознавание слов с использованием классификатора 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)
label.shape = (batch_size, 10)
Корректна ли функция потерь?И как называется моя классификационная проблема (классификация нескольких классов)?