gpt4 book ai didi

c++ - PyTorch C++ 前端向前返回多个张量

转载 作者:行者123 更新时间:2023-12-02 10:15:50 28 4
gpt4 key购买 nike

我想知道如何返回 std::vector<torch::Tensor>在我的模块类的前向传递中,
我读到了 的宏FORWARD_HAS_DEFAULT_ARGS 在文档中,但实际上并没有
了解如何使用它,以及如何使用它来返回一个 vector 作为返回。
先感谢您。

最佳答案

FORWARD_HAS_DEFAULT_ARGS 是一个 C++ 宏,根据 documentation :

This macro enables a module with default arguments in its forward method to be used in a Sequential module.



所以这不是你所追求的。

我假设您正在返回 torch::Tensor 中包含的多个 std::vector 值。你可以这样做,但你应该在像这样返回后适本地解压它:
# Interprets returned IValue as your desired return type
# You may have to use module.forward(inputs) depending how you loaded model
auto outputs = module->forward(inputs).toTensorVector();
# Print first tensor
std::cout << outputs[0] << std::endl;

如果你想从 forward 方法返回多个不同类型的值,你应该只返回 std::tuple 包含你想要的类型。

在此之后,您可以像这样解压缩它(对于两个 torch::Tensor 返回值)(源 here ):
auto outputs = module->forward(inputs).toTuple();
torch::Tensor out1 = outputs->elements()[0].toTensor();
torch::Tensor out2 = outputs->elements()[1].toTensor();

您还可以连接 pytorch 张量(如果这就是您返回的全部并且它们具有相同的形状)并使用 view 或类似方法来解包它。 C++ 前端与 Python 非常相似,如有疑问,请参阅文档。

关于c++ - PyTorch C++ 前端向前返回多个张量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61988134/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com