PyTorch LSTM在colab gpu上崩溃(在cpu上工作正常)

PyTorch LSTM在colab gpu上崩溃(在cpu上工作正常),pytorch,gpu,lstm,google-colaboratory,Pytorch,Gpu,Lstm,Google Colaboratory,你好,我有下面的LSTM,它在CPU上运行良好 import torch class LSTMForecast(torch.nn.Module): """ A very simple baseline LSTM model that returns an output sequence given a multi-dimensional input seq. Inspired by the StackOverflow link below. https://st

你好,我有下面的LSTM,它在CPU上运行良好

import torch

class LSTMForecast(torch.nn.Module):
    """
    A very simple baseline LSTM model that returns
    an output sequence given a multi-dimensional input seq. Inspired by the StackOverflow link below.
    https://stackoverflow.com/questions/56858924/multivariate-input-lstm-in-pytorch
    """
    def __init__(self, seq_length: int, n_time_series: int, output_seq_len=1, hidden_states:int=20, num_layers=2, bias=True, batch_size=100):
        super().__init__()
        self.forecast_history = seq_length
        self.n_time_series = n_time_series
        self.hidden_dim = hidden_states
        self.num_layers = num_layers
        self.lstm = torch.nn.LSTM(n_time_series, hidden_states, num_layers, bias, batch_first=True)
        self.final_layer = torch.nn.Linear(seq_length*hidden_states, output_seq_len)
        self.init_hidden(batch_size)

    def init_hidden(self, batch_size)->None:
        # This is what we'll initialise our hidden state
        self.hidden = (torch.zeros(self.num_layers, batch_size, self.hidden_dim), torch.zeros(self.num_layers, batch_size, self.hidden_dim))

    def forward(self, x: torch.Tensor) -> torch.Tensor:
        batch_size = x.size()[0]
        self.init_hidden(batch_size)
        out_x, self.hidden = self.lstm(x, self.hidden)
        x = self.final_layer(out_x.contiguous().view(batch_size, -1))
        return x
然而,当我尝试在colab GPU上运行时,它崩溃了,甚至没有错误消息

   model = LSTMForecast(1, 1, batch_size=1).to('cuda')
   a = torch.rand(1, 1, 1).to('cuda')
   model(a)

日志也没有告诉我任何事情。我真是不知所措。

我不得不明确地给CUDA打电话。一旦我这么做了,它就成功了

def init_hidden(self, batch_size)->None:
    # This is what we'll initialise our hidden state
    self.hidden = (torch.zeros(self.num_layers, batch_size, self.hidden_dim).to('cuda'), torch.zeros(self.num_layers, batch_size, self.hidden_dim).to('cuda'))

我必须给库达打个电话。一旦我这么做了,它就成功了

def init_hidden(self, batch_size)->None:
    # This is what we'll initialise our hidden state
    self.hidden = (torch.zeros(self.num_layers, batch_size, self.hidden_dim).to('cuda'), torch.zeros(self.num_layers, batch_size, self.hidden_dim).to('cuda'))

要在Pytorch中使用GPU,您必须确保模型和张量引用到GPU或cuda,否则它将显示错误。此外,colab仅提供11GB左右的容量。如果数据集预处理可以直接在GPU上完成,则加载数据集时也可以使用pin_内存。要在Pytorch中使用GPU,必须确保模型和张量引用GPU或cuda,否则将显示错误。此外,colab仅提供11GB左右的容量。如果您的数据集预处理可以直接在GPU上完成,您也可以在加载数据集时使用pin_内存

是否在colab设置中打开GPU?是GPU已打开。我检查了它是否也与其他型号一起运行,如multihead attention等。您是否在colab设置中打开了GPU?是的,GPU已打开。我检查了它也运行与其他模型,如多头注意等。