Может ли кто-нибудь объяснить и привести пример того, как это можно реализовать в 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)
RuntimeError: элемент 0 тензоров не требует grad и не имеет grad_fn
Я решил ошибку выше, используя require_grad=True в своих тензорах.
Подробнее здесь: https://stackoverflow.com/questions/791 ... in-pytorch