Тип входного сигнала (факел.Поплавковый) и тип веса (факел.cuda.FloatTensor) должно быть таким же. Очень странно

#python #pytorch

#питон #пыторч

Вопрос:

Я встречаю очень странный вопрос. В настоящее время я использую Colab для запуска модели ResNet50 в fashion-MNIST. В основной функции я четко ввел данные и вес в Cuda, и я дважды проверил это, распечатав устройство параметров и данных. В результате все они находятся на уровне cuda:0. Однако у меня все еще есть ошибка «Тип ввода (факел.Поплавковый) и тип веса (факел.cuda.FloatTensor) должно быть одинаковым или вход должен быть тензором MKLDNN, а вес-плотным тензором» в строке y_hat = net(x)

Это просто так странно, и в этом нет никакого смысла 🙁

Я ввел код, как показано ниже, надеюсь получить некоторую помощь 🙂

 batch_size = 64 epoch = 100 lamda = 0.001 dropout_rate = 0.5 learning_rate = 0.01  train_iter, test_iter = load_data_fashion_mnist(batch_size, resize = 224)  net = ResNet50().cuda()  optimizer = torch.optim.SGD(params = net.parameters(), lr=learning_rate) loss = nn.CrossEntropyLoss() print(f'The model is {str(net)}')  for i in range(epoch):  print(f'Epoch: {i}')   train_loss_value = 0.  train_accuracy_value = 0.  for x, y in train_iter:  optimizer.zero_grad()  x, y = x.cuda(), y.cuda()   print(x.device)  print(y.device)   y_hat = net(x)   loss_value = loss(y_hat, y)   train_loss_value  = loss_value  train_accuracy_value  = accuracy(y_hat, y)  loss_value.backward()  optimizer.step()   print(f'train_acc: {train_accuracy_value / len(train_iter)}, train_loss: {train_loss_value / len(train_iter)}')   accuracy_value = 0.  test_loss_value = 0.  #net.eval()  with torch.no_grad():  for X, y in test_iter:  X, y = X.cuda(), y.cuda()  y_hat = net(X) #, kernel, bias)  accuracy_value  = accuracy(y_hat, y)  test_loss_value  = loss(y_hat, y)  print(f'test_acc: {accuracy_value / len(test_iter)}, test_loss: {test_loss_value / len(test_iter)}')   print('----------------------')