Правильно ли настроена моя функция потерь?(Pytorch) - PullRequest
0 голосов
/ 23 декабря 2018

Я хочу сделать распознавание слов с использованием классификатора 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)

Корректна ли функция потерь?И как называется моя классификационная проблема (классификация нескольких классов)?

1 Ответ

0 голосов
/ 25 декабря 2018

Функция потерь правильная.

Проблема была в файле, содержащем мои тренировочные данные.Это не было правильно создано.Фактически, я перевернул размеры изображений (ширину и высоту), поэтому результат моего тренировочного набора был не поддается расшифровке для моего CNN.

Теперь, когда я решил проблему, я достиг точности теста 99,8%.

...