Является ли потеря кроссцентропии у питора отличной от «категориальной кросцентропии»? - PullRequest
1 голос
/ 26 апреля 2020

Я пытаюсь имитировать c нейронную сеть pytorch в keras.

Я уверен, что моя версия нейронной сети keras очень близка к той, что есть в pytorch, но во время обучения я вижу, что значение потерь в сети pytorch намного ниже, чем значения потерь в сети keras , Интересно, это потому, что я не скопировал должным образом сеть Pytorch в Keras или вычисление потерь отличается в двух рамках.

Определение потери Pytorch:

loss_function = nn.CrossEntropyLoss()
optimizer = optim.SGD(net.parameters(), lr=args.lr, momentum=0.9, weight_decay=5e-4)

Определение потери Keras:

sgd = optimizers.SGD(lr=.1, momentum=0.9, nesterov=True)
resnet.compile(loss='categorical_crossentropy', optimizer=sgd, metrics=['categorical_accuracy'])

Обратите внимание, что все слои в сети keras были реализованы с регуляризацией L2 kernel_regularizer=regularizers.l2(5e-4), также я использовал инициализацию he_uniform, которая, по моему мнению, по умолчанию в pytorch, согласно источнику код .

Размер пакета для двух сетей одинаков: 128.

В версии с pytorch я получаю значения потерь около 4.1209, которое уменьшается до 0.5. В керасе оно начинается около 30 и уменьшается до 2.5.

Ответы [ 2 ]

3 голосов
/ 26 апреля 2020

PyTorch CrossEntropyLoss принимает ненормализованные оценки для каждого класса, т. Е. Не вероятность ( источник ). Keras categorical_crossentropy по умолчанию использует from_logits=False, что означает, что y_pred содержит вероятности (не необработанные оценки) ( source ).

В PyTorch, если вы используете CrossEntropyLoss, вы не должны использовать слой softmax / sigmoid в конце. В керасе вы можете использовать его или не использовать его, но установите from_logits в соответствии.

2 голосов
/ 26 апреля 2020

В моем случае причина, по которой отображаемые потери в двух моделях были разными, заключается в том, что Керас печатает сумму перекрестных энтропийных потерь с термином регуляризации, тогда как в модели с питорчем была напечатана только категориальная перекрестная энтропия.

...