RuntimeError: Expected object of backend CPU but got backend CUDA for argument #2 'weight''

anyone can guide me how to solve this issue? :frowning:


Traceback (most recent call last):

  File "<ipython-input-24-740ff909cca9>", line 1, in <module>
    runfile('C:/Users/Windows10/Downloads/Hala3/main-run-vr.py', wdir='C:/Users/Windows10/Downloads/Hala3')

  File "C:\Users\Windows10\Anaconda3\envs\New\lib\site-packages\spyder_kernels\customize\spydercustomize.py", line 827, in runfile
    execfile(filename, namespace)

  File "C:\Users\Windows10\Anaconda3\envs\New\lib\site-packages\spyder_kernels\customize\spydercustomize.py", line 110, in execfile
    exec(compile(f.read(), filename, 'exec'), namespace)

  File "C:/Users/Windows10/Downloads/Hala3/main-run-vr.py", line 543, in <module>
    __main__()

  File "C:/Users/Windows10/Downloads/Hala3/main-run-vr.py", line 541, in __main__
    evalInterval, evalMode, numWorkers, outDir,modelUsed,pretrained,train_test_split,datasetDir,crossValidation,nFolds)

  File "C:/Users/Windows10/Downloads/Hala3/main-run-vr.py", line 416, in main_run
    model,accuracy=modelTrain(modelUsed,pretrained,trainDataset,trainLabels,validationDataset,validationLabels,numEpochs,evalInterval,evalMode,outDir,numWorkers,lr, stepSize, decayRate, trainBatchSize, seqLen,True)

  File "C:/Users/Windows10/Downloads/Hala3/main-run-vr.py", line 295, in modelTrain
    features = model(inputVariable1)

  File "C:\Users\Windows10\Anaconda3\envs\New\lib\site-packages\torch\nn\modules\module.py", line 493, in __call__
    result = self.forward(*input, **kwargs)

  File "C:\Users\Windows10\Downloads\Hala3\createModel.py", line 83, in forward
    x1 = self.convNet(x1)

  File "C:\Users\Windows10\Anaconda3\envs\New\lib\site-packages\torch\nn\modules\module.py", line 493, in __call__
    result = self.forward(*input, **kwargs)

  File "C:\Users\Windows10\Anaconda3\envs\New\lib\site-packages\torch\nn\modules\container.py", line 92, in forward
    input = module(input)

  File "C:\Users\Windows10\Anaconda3\envs\New\lib\site-packages\torch\nn\modules\module.py", line 493, in __call__
    result = self.forward(*input, **kwargs)

  File "C:\Users\Windows10\Anaconda3\envs\New\lib\site-packages\torch\nn\modules\container.py", line 92, in forward
    input = module(input)

  File "C:\Users\Windows10\Anaconda3\envs\New\lib\site-packages\torch\nn\modules\module.py", line 493, in __call__
    result = self.forward(*input, **kwargs)

  File "C:\Users\Windows10\Anaconda3\envs\New\lib\site-packages\torch\nn\modules\conv.py", line 338, in forward
    self.padding, self.dilation, self.groups)

RuntimeError: Expected object of backend CPU but got backend CUDA for argument #2 'weight'

model = ViolenceModel(modelUsed,pretrained)
svclassifier = SVC(kernel=โ€˜linearโ€™)

trainParams = []
for params in model.parameters():
    if params.requires_grad:
        trainParams += [params]
model.train(True)
if(torch.cuda.is_available()):
    model.cuda()

lossFn = nn.CrossEntropyLoss()
optimizerFn = torch.optim.RMSprop(trainParams, lr=lr)
optimizerFn.zero_grad()
optimScheduler = torch.optim.lr_scheduler.StepLR(optimizerFn, stepSize, decayRate)

minAccuracy = 50
train_loss=[]
val_loss=[]
train_acc=[]
val_acc=[]
bestmodel=None

for epoch in range(numEpochs):
    optimScheduler.step()
    epochLoss = 0
    numCorrTrain = 0
    iterPerEpoch = 0
    model.train(True)
    print('Epoch = {}'.format(epoch + 1))
    writer.add_scalar('lr', optimizerFn.param_groups[0]['lr'], epoch+1)
    for i, (inputs, targets) in enumerate(trainLoader):
        iterPerEpoch += 1
        optimizerFn.zero_grad()
        if(torch.cuda.is_available()):
            inputVariable1 = Variable(inputs.permute(1, 0, 2, 3, 4).cuda()).cpu()                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            
            labelVariable = Variable(targets.cuda()).cpu()
        
        else:
            inputVariable1=Variable(inputs.permute(1,0,2,3,4))
            labelVariable=Variable(targets)
        #outputLabel = model(inputVariable1)
        features = model(inputVariable1)
        svclassifier.fit(features, labelVariable)
        outputLabel= svclassifier.predict(inputVariable1)
        loss = lossFn(outputLabel, labelVariable)
        loss.backward()
        optimizerFn.step()
        #outputProb = torch.nn.Softmax(dim=1)(outputLabel)
        #_, predicted = torch.max(outputProb.data, 1)
        _, predicted= outputLabel
        if(torch.cuda.is_available()):
            numCorrTrain += (predicted == targets.cuda()).sum()
        else:
            numCorrTrain+=(predicted==targets).sum()
        epochLoss += loss.item()
class ViolenceModel(nn.Module):
    def __init__(self,modelused,pretrained):
        super(ViolenceModel, self).__init__()
        if modelused=='alexnet':
                self.mod=models.alexnet(pretrained=pretrained)
                self.convNet = nn.Sequential(*(list(self.mod.children()))[:-1])
                self.mem_size=256
                self.conv_lstm = ConvLSTMCell(256, self.mem_size)
        
        if pretrained:
            for param in self.convNet.parameters():
                param.requires_grad = False
  
    
    def forward(self, x):
        state = None
        seqLen = x.size(0) - 1
        for t in range(0, seqLen):
            x1 = x[t] - x[t+1]
            x1 = self.convNet(x1)
            x1=x1.cuda()
            state = self.conv_lstm(x1, state)
        
        x = self.maxpool(state[0])
        x= x.view(x.size(0), -1)
      
       # x = self.classifier(x)
        return x

thanks in advance :slight_smile:

Your model parameters are on the GPU, while the input and target were copied to the GPU and then back to the CPU again:

if(torch.cuda.is_available()):
    inputVariable1 = Variable(inputs.permute(1, 0, 2, 3, 4).cuda()).cpu()                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            
    labelVariable = Variable(targets.cuda()).cpu()