簡體   English   中英

在 Pytorch 中,當傳輸到 GPU 時,我收到錯誤“在 CPU 上,但預計在 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM