为 torch::jit::script::Module 转发方法提供两个输入
Give two inputs to torch::jit::script::Module forward method
我正在尝试使用 pytorch 在 python 中构建和训练网络。我的转发方法需要两个输入,如下所示:
def forward(self, x1, x2):
我在 python 中训练了这个模型并使用 torch.jit.script
保存。
然后我使用 torch::jit::load
在 C++ 中加载这个模型。
我现在如何将输入传递给 C++ 中的模型?
如果我尝试将两个单独的张量传递给正向方法,如下所示
std::vector<torch::jit::IValue> inputs1{tensor1};
std::vector<torch::jit::IValue> inputs2{tensor2};
at::Tensor output = module.forward(inputs1,inputs2).toTensor();
然后我收到一条错误消息,指出方法 forward 需要 1 个参数,但提供了 2 个参数。
我也不能连接两个张量,因为所有轴上的形状都不同。
问题是连接两个张量并将连接后的张量作为模型的输入。然后在 forward 方法中,我们可以使用连接的张量创建两个单独的张量,并将它们分别用于输出计算。
为了串联工作,我在张量上附加了 0,这样除了要进行串联的轴外,它们在所有轴上的大小都相同。
我正在尝试使用 pytorch 在 python 中构建和训练网络。我的转发方法需要两个输入,如下所示:
def forward(self, x1, x2):
我在 python 中训练了这个模型并使用 torch.jit.script
保存。
然后我使用 torch::jit::load
在 C++ 中加载这个模型。
我现在如何将输入传递给 C++ 中的模型?
如果我尝试将两个单独的张量传递给正向方法,如下所示
std::vector<torch::jit::IValue> inputs1{tensor1};
std::vector<torch::jit::IValue> inputs2{tensor2};
at::Tensor output = module.forward(inputs1,inputs2).toTensor();
然后我收到一条错误消息,指出方法 forward 需要 1 个参数,但提供了 2 个参数。
我也不能连接两个张量,因为所有轴上的形状都不同。
问题是连接两个张量并将连接后的张量作为模型的输入。然后在 forward 方法中,我们可以使用连接的张量创建两个单独的张量,并将它们分别用于输出计算。
为了串联工作,我在张量上附加了 0,这样除了要进行串联的轴外,它们在所有轴上的大小都相同。