![](/img/trans.png)
[英]PyTorch RuntimeError: Tensor for argument #1 'self' is on CPU, but expected them to be on GPU
[英]In Pytorch, when transferring to GPU, I get an error “is on CPU, but expected to be on GPU”
錯誤示例:“'out' 的張量在 CPU 上,參數 #1 'self' 的張量在 CPU 上,但預計它們在 GPU 上”。 我被困在分類教程上:
https://pytorch.org/tutorials/beginner/blitz/cifar10_tutorial.html
注意:代碼用於回歸。
代碼如下:
class Net(nn.Module):
def __init__(self, num_features, size_hidden_layer, n_hidden_layer):
super(Net, self).__init__()
self.size_hidden_layer = size_hidden_layer
self.n_hidden_layer = n_hidden_layer
self.hidden_layers = list()
self.hidden_layers.append(nn.Linear(num_features, size_hidden_layer))
for _ in range(n_hidden_layer-1):
self.hidden_layers.append(nn.Linear(size_hidden_layer, size_hidden_layer))
self.last_layer = nn.Linear(size_hidden_layer, 1)
def forward(self, x):
for i in range(self.n_hidden_layer):
x = torch.relu(self.hidden_layers[i](x))
return self.last_layer(x)
教程部分沒有提到的是必須包裝參數才能被 GPU 讀取。 例如,查看__init__
,其中正常和神經網絡層被包裹在nn.Sequential
中。
class Net(nn.Module):
def __init__(self, num_features, size_hidden_layer, n_hidden_layer):
super(Net, self).__init__()
self.size_hidden_layer = size_hidden_layer
self.n_hidden_layer = n_hidden_layer
hidden_layers = list()
hidden_layers.append(nn.Linear(num_features, size_hidden_layer))
for _ in range(n_hidden_layer-1):
hidden_layers.append(nn.Linear(size_hidden_layer, size_hidden_layer))
self.hidden_layers = nn.Sequential(*hidden_layers)
self.last_layer = nn.Linear(size_hidden_layer, 1)
def forward(self, x):
for i in range(self.n_hidden_layer):
x = torch.relu(self.hidden_layers[i](x))
return self.last_layer(x)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.