поскольку графические процессоры не хороши в вычислениях двойной точности. Кроме того, с плавающей точкой достаточно для глубокого обучения.

я есть 2 массива, которые я конвертирую в тензоры, чтобы использовать объект 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)

когда я делаю:

for batch_idx, (data, target) in enumerate(train_loader):
    data, target = Variable(data), Variable(target)
    optimizer.zero_grad()
    output = model(data)               # error occurs here

Я получаю следующую ошибку:

Ошибка типа: addmm_ получил недопустимую комбинацию аргументов - получил (int, int, torch. DoubleTensor, torch.FloatTensor), но ожидал один из: [...]
* (плавающая бета, плавающая альфа, torch. DoubleTensor mat1, torch.DoubleTensor mat2) не совпадают, потому что некоторые аргументы имеют недопустимые типы: (int, int, torch.DoubleTensor, torch.FloatTensor)
* (плавающая бета, плавающая альфа, torch.SparseDoubleTensor mat1, torch.DoubleTensor mat2) не совпадают, поскольку некоторые аргументы имеют недопустимые типы: (int, int, torch.DoubleTensor, torch.FloatTensor)

Последняя ошибка происходит от:

output.addmm_ (0, 1, input, weight.t ())

Как вы видите из моего кода, я попытался преобразовать тензор с помощью .double () - но это не сработало. Почему он преобразует один массив в объект FloatTensor, а другой - в DoubleTensor? Есть идеи?

Ответы на вопрос(2)

Ваш ответ на вопрос