PyTorch C++ FrontEnd returning multiple Tensors in forward
I was wonder how can I return a std::vector&lt;torch::Tensor&gt; in my forward pass of a Module Class,
I read about the Macro of FORWARD_HAS_DEFAULT_ARGS in the docs, but didn’t really
understand how to use it, and also how to use it for making it possible to return a vector in return.
Thank you in advance.

FORWARD_HAS_DEFAULT_ARGS is a C++ macro and according to documentation: 


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


So it's not what you are after.

I assume you are returning multiple torch::Tensor values contained in std::vector. You could just do that, but you should appropriately unpack it after returning like this:

# Interprets returned IValue as your desired return type
# You may have to use module.forward(inputs) depending how you loaded model
auto outputs = module-&gt;forward(inputs).toTensorVector();
# Print first tensor
std::cout &lt;&lt; outputs[0] &lt;&lt; std::endl;


If you want to return multiple values of different types from forward method you should just return std::tuple containing your desired types.

After this you can unpack it like this (for two torch::Tensor return values) (source here):

auto outputs = module-&gt;forward(inputs).toTuple();
torch::Tensor out1 = outputs-&gt;elements()[0].toTensor();
torch::Tensor out2 = outputs-&gt;elements()[1].toTensor(); 


You could also concatenate pytorch tensors (if that's all you are returning and they are of the same shape) and use view or a-like methods to unpack it. C++ frontend is pretty similar to Python's all in all, refer to docs if in doubt. 
