Pytorch: Converter FloatTensor em DoubleTensor
Eu tenho 2 matrizes numpy, que eu converto em tensores para usar o objeto TensorDataset.
import torch.utils.data as data_utils
X = np.zeros((100,30))
Y = np.zeros((100,30))
train = data_utils.TensorDataset(torch.from_numpy(X).double(), torch.from_numpy(Y))
train_loader = data_utils.DataLoader(train, batch_size=50, shuffle=True)
quando eu faço:
for batch_idx, (data, target) in enumerate(train_loader):
data, target = Variable(data), Variable(target)
optimizer.zero_grad()
output = model(data) # error occurs here
Eu recebo o seguinte erro:
TypeError: addmm_ recebeu uma combinação inválida de argumentos - got (int, int, torch.DoubleTensor, torch.FloatTensor), mas esperava um dos seguintes: [...]
* (float beta, float alfa, torch.DoubleTensor mat1, torch.DoubleTensor mat2) não corresponderam porque alguns dos argumentos têm tipos inválidos: (int, int, torch.DoubleTensor, torch.FloatTensor)
* (float beta, float alfa, torch.SparseDoubleTensor mat1, torch.DoubleTensor mat2) não corresponderam porque alguns dos argumentos têm tipos inválidos: (int, int, torch.DoubleTensor, torch.FloatTensor)
O último erro vem de:
output.addmm_ (0, 1, entrada, peso.t ())
Como você vê no meu código, tentei converter o tensor usando .double () - mas isso não funcionou. Por que ele está lançando uma matriz em um objeto FloatTensor e a outra em um DoubleTensor? Alguma ideia?