Я пытаюсь реализовать эту потерю SSIM с помощью этого репо для восстановления изображения.
Для ссылки на оригинальный пример кода на GitHub автора я попытался:
model.train()
for epo in range(epoch):
for i, data in enumerate(trainloader, 0):
inputs = data
inputs = Variable(inputs)
optimizer.zero_grad()
inputs = inputs.view(bs, 1, 128, 128)
top = model.upward(inputs)
outputs = model.downward(top, shortcut = True)
outputs = outputs.view(bs, 1, 128, 128)
if i % 20 == 0:
out = outputs[0].view(128, 128).detach().numpy() * 255
cv2.imwrite("/home/tk/Documents/recover/SSIM/" + str(epo) + "_" + str(i) + "_re.png", out)
loss = - criterion(inputs, outputs)
ssim_value = - loss.data.item()
print (ssim_value)
loss.backward()
optimizer.step()
Однако результаты оказались не такими, как я ожидал.После первых 10 эпох отпечатанное итоговое изображение было черным.
loss = - criterion(inputs, outputs)
предлагается автором, однако для классического обучающего кода Pytorch это будет loss = criterion(y_pred, target)
, поэтому здесь должно быть loss = criterion(inputs, outputs)
.
Однако я попытался loss = criterion(inputs, outputs)
, но результаты все те же.
Может кто-нибудь поделиться некоторыми мыслями о том, как правильно использовать потерю SSIM?Благодаря.