Я запускаю модель в Google Colab. Когда я воспроизводю код, я хочу запустить один из фрагментов кода, чтобы получить результаты эксперимента. И я получаю некоторую ошибку. Вот код:
cluster_args = {
'cluster_layers' : {1:400, 3:240},
'conv_feature_size' : 1,
'reshape_exists' : False,
'features' : 'both',
'channel_reduction' : 'fro',
'use_bias' : False,
'linkage_method' : 'ward',
'distance_metric' : 'euclidean',
'cluster_criterion' : 'hierarchical_trunc',
'distance_threshold' : 1.60,
'merge_criterion' : 'max_l2_norm',
'verbose' : False
}
path = args.checkpoint_path[:-4] + '_small_cup.pth'
model_modifier = cluster_model(ann,cluster_args)
compressed_model = model_modifier.cluster_model()
compressed_model.cuda()
val_loss_no_retrain, val_accuracy_no_retrain = test(args, compressed_model, device, test_loader,verbose=False)
args.lr = 0.1
args.epochs = 30
optimizer = optim.SGD(compressed_model.parameters(),lr=args.lr,momentum=args.momentum,weight_decay=args.weight_decay,nesterov=False)
best_val_accuracy_retrain = 0
if not os.path.isfile(path):
for epoch in range(1, args.epochs+1):
adjust_learning_rate(args,optimizer,epoch)
train(args, compressed_model, device, train_loader, optimizer, epoch)
val_loss_retrain, val_accuracy_retrain = test(args, compressed_model, device, test_loader)
if val_accuracy_retrain > best_val_accuracy_retrain:
torch.save(compressed_model, path, pickle_protocol=4)
best_val_accuracy_retrain = val_accuracy_retrain
else:
compressed_model = torch.load(path)
val_loss_retrain, val_accuracy_retrain = test(args, compressed_model, device, test_loader, verbose=False)
best_val_accuracy_retrain = val_accuracy_retrain
print('Accuracy post pruning : {} (without retraining), {} (with retraining)'.format(val_accuracy_no_retrain,best_val_accuracy_retrain))
Я получаю эту ошибку при запуске этой ячейки:
TypeError Traceback (most recent call last)
<ipython-input-17-c3d69464b0c0> in <module>()
16 path = args.checkpoint_path[:-4] + '_small_cup.pth'
17 model_modifier = cluster_model(ann,cluster_args)
---> 18 compressed_model = model_modifier.cluster_model()
19 compressed_model.cuda()
20
5 frames
/usr/local/lib/python3.6/dist-packages/torch/tensor.py in __array__(self, dtype)
484 def __array__(self, dtype=None):
485 if dtype is None:
--> 486 return self.numpy()
487 else:
488 return self.numpy().astype(dtype, copy=False)
TypeError: can't convert CUDA tensor to numpy. Use Tensor.cpu() to copy the tensor to host memory first.
** Я пытаюсь изменить **
compressed_model = model_modifier.cluster_model()
до
compressed_model = model_modifier.cluster_model().data().cpu().numpy()
но все равно появляется та же ошибка
Как мне решить эту проблему?
[введите описание ссылки здесь] [1]