tuple 和 list等python的类型没有cuda()属性,因此需要对其中每一个元素进行x.cuda()
例如:
神经网络中,有一个hidden变量,是tuple类型,需要使用gpu时,直接将hidden变量进行hidden.cuda(),会报错。
原函数如下(会报错):
def init_hidden(self, batchsize):
return (Variable(torch.zeros(2 * self.num_layers, batchsize, self.hidden_size)),Variable(torch.zeros(2 * self.num_layers, batchsize, self.hidden_size)))
将变量定义时把每一个元素加上cuda()属性,即可(运行成功):
def init_hidden(self, batchsize):
return (Variable(torch.zeros(2 * self.num_layers, batchsize, self.hidden_size)).cuda(),Variable(torch.zeros(2 * self.num_layers, batchsize, self.hidden_size)).cuda())