183 std::vector<uint8_t> inputVector = {166, 179, 50, 150};
186 std::vector<int16_t> cellStateInVector = {876, 1034, 955, -909, 761, 1029, 796, -1036};
189 std::vector<uint8_t> outputStateInVector = {136, 150, 140, 115, 135, 152, 138, 112};
192 std::vector<int16_t> cellStateOutVector = {1485, 1177, 1373, -1023, 1019, 1355, 1097, -1235};
195 std::vector<uint8_t> outputStateOutVector = {140, 151, 146, 112, 136, 156, 142, 112};
199 armnn::INetworkPtr net = CreateQuantizedLstmNetwork(inputDesc.GetShape(), outputDesc.GetShape());
209 runtime->LoadNetwork(netId, std::move(optNet));
212 inputTensors.reserve(3);
215 TensorInfo inputTensorInfo0 = runtime->GetInputTensorInfo(netId, 0);
216 TensorInfo inputTensorInfo1 = runtime->GetInputTensorInfo(netId, 1);
217 TensorInfo inputTensorInfo2 = runtime->GetInputTensorInfo(netId, 2);
222 inputTensors.push_back({0,
ConstTensor(inputTensorInfo0, inputVector.data())});
223 inputTensors.push_back({1,
ConstTensor(inputTensorInfo1, cellStateInVector.data())});
224 inputTensors.push_back({2,
ConstTensor(inputTensorInfo2, outputStateInVector.data())});
227 outputTensors.reserve(2);
230 std::vector<int16_t> cellStateOutResult(cellStateOutVector.size());
231 std::vector<uint8_t> outputStateOutResult(outputStateOutVector.size());
232 outputTensors.push_back({0,
Tensor(runtime->GetOutputTensorInfo(netId, 0), cellStateOutResult.data())});
233 outputTensors.push_back({1,
Tensor(runtime->GetOutputTensorInfo(netId, 1), outputStateOutResult.data())});
236 runtime->EnqueueWorkload(netId, inputTensors, outputTensors);
239 constexpr int16_t toleranceInt16 = 2;
240 for (
unsigned int i = 0u; i < cellStateOutResult.size(); ++i)
242 CHECK(IsCloseEnough(cellStateOutVector[i], cellStateOutResult[i], toleranceInt16));
245 constexpr uint8_t toleranceUint8 = 1;
246 for (
unsigned int i = 0u; i < outputStateOutResult.size(); ++i)
248 CHECK(IsCloseEnough(outputStateOutVector[i], outputStateOutResult[i], toleranceUint8));
std::unique_ptr< IRuntime, void(*)(IRuntime *runtime)> IRuntimePtr
std::vector< std::pair< LayerBindingId, class ConstTensor > > InputTensors
A tensor defined by a TensorInfo (shape and data type) and a mutable backing store.
IOptimizedNetworkPtr Optimize(const INetwork &network, const std::vector< BackendId > &backendPreferences, const IDeviceSpec &deviceSpec, const OptimizerOptions &options=OptimizerOptions(), Optional< std::vector< std::string > &> messages=EmptyOptional())
Create an optimized version of the network.
A tensor defined by a TensorInfo (shape and data type) and an immutable backing store.
std::vector< std::pair< LayerBindingId, class Tensor > > OutputTensors
std::unique_ptr< IOptimizedNetwork, void(*)(IOptimizedNetwork *network)> IOptimizedNetworkPtr
void SetConstant(const bool IsConstant=true)
Marks the data corresponding to this tensor info as constant.
std::unique_ptr< INetwork, void(*)(INetwork *network)> INetworkPtr