Hi !, I run my model with PyTorch. However, I met a problem when I trained my model with GPU. The error message is shown below.
Traceback (most recent call last):
File "F:/experiment_code/deep-learning-with-iv-fault-detection/network/CNN_ResGRU.py", line 60, in <module>
out = net(x)
File "D:\Anaconda3\lib\site-packages\torch\nn\modules\module.py", line 493, in __call__
result = self.forward(*input, **kwargs)
File "F:/experiment_code/deep-learning-with-iv-fault-detection/network/CNN_ResGRU.py", line 48, in forward
out = nn.Linear(out.size(1) , 5)(out)
File "D:\Anaconda3\lib\site-packages\torch\nn\modules\module.py", line 493, in __call__
result = self.forward(*input, **kwargs)
File "D:\Anaconda3\lib\site-packages\torch\nn\modules\linear.py", line 92, in forward
return F.linear(input, self.weight, self.bias)
File "D:\Anaconda3\lib\site-packages\torch\nn\functional.py", line 1406, in linear
ret = torch.addmm(bias, input, weight.t())
RuntimeError: Expected object of backend CPU but got backend CUDA for argument #4 'mat1'
Process finished with exit code 1
and this is my network code ,I don’t know how to solve this problem.
import torch
from torch import nn
from torch.nn import functional as F
from torch.utils.data import DataLoader
from torchvision import transforms
from torch import nn, optim
from network.RGRU import Residual_Gated_Recurrent_Unit
from network.CNN import CNN
class CNN_Residual_Gated_Recurrent_Unit(nn.Module):
def __init__(self,ch_in, ch_out,input_size1, hidden_size1, input_size2,hidden_size2, input_size3, hidden_size3):
super(CNN_Residual_Gated_Recurrent_Unit, self).__init__()
self.cnn = nn.Sequential(
CNN(ch_in, ch_out)
)
self.RGRU = nn.Sequential(
Residual_Gated_Recurrent_Unit(input_size1, hidden_size1, input_size2, hidden_size2, input_size3, hidden_size3)
)
self.outputlayer = nn.Sequential(
nn.ReLU(),
nn.Dropout(p=0.5),
# nn.Linear(in_features, out_features),
# nn.Softmax()
)
def forward(self, x):
out = self.cnn(x)
out = self.RGRU(out)
out = self.outputlayer(out)
out = out.permute(1, 0, 2)
out = out.contiguous().view(out.size(0), -1)
out = nn.Linear(out.size(1) , 5)(out)
out = nn.Softmax(dim=1)(out)
return out
if __name__ == '__main__':
device = torch.device("cuda:0" if torch.cuda.is_available() else "cpu")
x = torch.rand(size=(8, 4, 256)).to(device)
net = CNN_Residual_Gated_Recurrent_Unit(4, 128, 120, 50, 50, 60, 120, 60)
net = net.to(device)
out = net(x)
print(out.size())
print("************************************打印结果*********************************************")
print(out)
I wonder why the error comes.
Thank you!