Как обрабатывать значения » nan » в PyTorch при обучении нейронной сети с новым параметром в экспоненте?

#python #neural-network #pytorch #gradient

Вопрос:

Я запускаю программу, которая изучает тензор параметров x. Но я изменил его на x^y, добавив новый параметр y в свою модель.

Более поздние результаты приводят к nan значениям. Вы можете проверить, например, следующее

 >>>import torch
>>>x = torch.randn(4,3)
>>>y = torch.randn(1)
>>print(x)
tensor([[-0.7662,  0.7113, -0.8803],
        [-1.0947,  0.4314,  2.2009],
        [-1.4202,  0.5253, -0.5965],
        [-0.1162,  1.3597,  1.1211]])
>>print(y)
tensor([0.6968])
>>print(x ** y)
tensor([[   nan, 0.7887,    nan],
        [   nan, 0.5567, 1.7327],
        [   nan, 0.6385,    nan],
        [   nan, 1.2387, 1.0829]])
 

Если я попытаюсь инициализировать y целыми числами, то это приведет к следующей ошибке

 RuntimeError: Only Tensors of floating point and complex dtype can require gradients
 

Как решить эту проблему, чтобы обучить мою сеть?