pytorch模型的预期尺寸

2024-04-23 15:19:12 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在努力理解我的pytorch模型需要什么样的维度作为输入。我的模型设置是:

class RNN(nn.Module):
    def __init__(self, input_size, hidden_size, output_size):
        super(RNN, self).__init__()
        self.rnn_b = nn.RNN(input_size=input_size, 
                           hidden_size=hidden_size,
                           num_layers=1,
                           bias=False)
        self.hidden_size = hidden_size
        self.linearout = nn.Linear(hidden_size, output_size)

    def forward(self, input, hidden):
        out, hidden = self.rnn_b(input, hidden)
        output = self.linearout(out)
        return output, hidden

    def initHidden(self):
        return torch.zeros(1, self.hidden_size)

model = RNN(1, 2, 1)

如果我调用model(tensor(25.) tensor([[0., 0.]])),则得到错误:

IndexError: dimension specified as 1 but tensor has no dimensions

如果我调用model(tensor([25.]) tensor([[0., 0.]])),那么我就会得到错误

IndexError: Dimension out of range (expected to be in range of [-1, 0], but got 1)

有人能解释一下这是怎么回事吗?为模型输入设置数据格式的正确方法是什么?你知道吗


Tags: 模型selfinputoutputsizemodelinitdef
1条回答
网友
1楼 · 发布于 2024-04-23 15:19:12

你需要封装更多。这是因为pytorch自动允许批处理:

model(tensor([[[25.]]]), tensor([[[0., 0.]]]))

输出:

(tensor([[[-0.7704]]], grad_fn=<AddBackward0>),
 tensor([[[1., 1.]]], grad_fn=<StackBackward>))

您可以将多个输入作为一个批使用:

model(tensor([[[25.]], [[25.]]]), tensor([[[0., 0.]]]))

输出:

(tensor([[[0.0341]],

         [[0.0341]]], grad_fn=<AddBackward0>),
 tensor([[[ 0.9999, -1.0000]]], grad_fn=<StackBackward>))

相关问题 更多 >