10 #include <boost/format.hpp> 11 #include <boost/variant/apply_visitor.hpp> 16 template<
typename TContainer>
18 const std::vector<TContainer>& inputDataContainers)
22 const size_t numInputs = inputBindings.size();
23 if (numInputs != inputDataContainers.size())
25 throw armnn::Exception(boost::str(boost::format(
"The number of inputs does not match number of " 26 "tensor data containers: %1% != %2%")
28 % inputDataContainers.size()));
31 for (
size_t i = 0; i < numInputs; i++)
34 const TContainer& inputData = inputDataContainers[i];
36 boost::apply_visitor([&](
auto&& value)
38 if (value.size() != inputBinding.second.GetNumElements())
40 throw armnn::Exception(boost::str(boost::format(
"The input tensor has incorrect size " 41 "(expected %1% got %2%)")
42 % inputBinding.second.GetNumElements()
47 inputTensors.push_back(std::make_pair(inputBinding.first, inputTensor));
55 template<
typename TContainer>
57 std::vector<TContainer>& outputDataContainers)
61 const size_t numOutputs = outputBindings.size();
62 if (numOutputs != outputDataContainers.size())
64 throw armnn::Exception(boost::str(boost::format(
"Number of outputs does not match number of " 65 "tensor data containers: %1% != %2%")
67 % outputDataContainers.size()));
70 for (
size_t i = 0; i < numOutputs; i++)
73 TContainer& outputData = outputDataContainers[i];
75 boost::apply_visitor([&](
auto&& value)
77 if (value.size() != outputBinding.second.GetNumElements())
82 armnn::Tensor outputTensor(outputBinding.second, value.data());
83 outputTensors.push_back(std::make_pair(outputBinding.first, outputTensor));
armnn::OutputTensors MakeOutputTensors(const std::vector< armnn::BindingPointInfo > &outputBindings, std::vector< TContainer > &outputDataContainers)
A tensor defined by a TensorInfo (shape and data type) and an immutable backing store.
std::vector< std::pair< LayerBindingId, class Tensor > > OutputTensors
std::pair< armnn::LayerBindingId, armnn::TensorInfo > BindingPointInfo
armnn::InputTensors MakeInputTensors(const std::vector< armnn::BindingPointInfo > &inputBindings, const std::vector< TContainer > &inputDataContainers)
A tensor defined by a TensorInfo (shape and data type) and a mutable backing store.
std::vector< std::pair< LayerBindingId, class ConstTensor > > InputTensors
Base class for all ArmNN exceptions so that users can filter to just those.
boost::variant< std::vector< float >, std::vector< int >, std::vector< unsigned char > > TContainer