Как реализовать пользовательскую функцию потерь (NCD) в pytorch?Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Как реализовать пользовательскую функцию потерь (NCD) в pytorch?

Сообщение Anonymous »

Я хотел бы реализовать пользовательскую функцию потерь, известную как нормализованное расстояние сжатия или, сокращенно, NCD. Я не совсем уверен, как к этому подойти.
Может ли кто-нибудь объяснить и привести пример того, как это можно реализовать в Python для pytorch?
Вот математическое описание:
Ссылка Ncd
Я реализовал ее, как описано, однако я не могу выполнить обратный проход по ней, поскольку она не была разработана с использованием факела. реализована математика.

Код: Выделить всё

def loss_fn(self, x, y):
xy = len(gzip.compress(np.concatenate(x.detach().numpy(),y.detach().numpy())))
x = len(gzip.compress(x.detach().numpy()))
y = len(gzip.compress(y.detach().numpy()))

loss = (xy - min(x,y))/ (max(x,y))
print(loss)
return torch.tensor(loss)
Обновление:
Вот как код выглядит сейчас:

Код: Выделить всё

def loss_fn(self, x, y):
xy = len(gzip.compress(str(torch.cat((x,y))).encode('utf-8')))
x = len(gzip.compress(str(x).encode('utf-8')))
y = len(gzip.compress(str(y).encode('utf-8')))

loss = (xy - torch.min(torch.tensor([x,y])))/ (torch.max(torch.tensor([x,y]))
print(loss)

return torch.tensor(loss)
Я получаю следующую ошибку при запуске loss.backwards на выходе функции потерь:
RuntimeError: элемент 0 тензоров не требует grad и не имеет grad_fn
Я решил ошибку выше, используя require_grad=True в своих тензорах.

Подробнее здесь: https://stackoverflow.com/questions/791 ... in-pytorch
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»