blob: 7b3f9664d0a1de381963ea547a0e6cd34a1128c8 [file] [log] [blame]
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.13"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>ArmNN: armnn Namespace Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">ArmNN
&#160;<span id="projectnumber">NotReleased</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
</script>
<div id="main-nav"></div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('namespacearmnn.html','');});
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div class="header">
<div class="summary">
<a href="#namespaces">Namespaces</a> &#124;
<a href="#nested-classes">Classes</a> &#124;
<a href="#typedef-members">Typedefs</a> &#124;
<a href="#enum-members">Enumerations</a> &#124;
<a href="#func-members">Functions</a> &#124;
<a href="#var-members">Variables</a> </div>
<div class="headertitle">
<div class="title">armnn Namespace Reference</div> </div>
</div><!--header-->
<div class="contents">
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="namespaces"></a>
Namespaces</h2></td></tr>
<tr class="memitem:namespacearmnn_1_1gatordmock"><td class="memItemLeft" align="right" valign="top"> &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn_1_1gatordmock.html">gatordmock</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:namespacearmnn_1_1optimizations"><td class="memItemLeft" align="right" valign="top"> &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn_1_1optimizations.html">optimizations</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:namespacearmnn_1_1profiling"><td class="memItemLeft" align="right" valign="top"> &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn_1_1profiling.html">profiling</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:namespacearmnn_1_1test"><td class="memItemLeft" align="right" valign="top"> &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn_1_1test.html">test</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
Classes</h2></td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1abs.html">abs</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_abs_layer.html">AbsLayer</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_abs_queue_descriptor.html">AbsQueueDescriptor</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_activation_descriptor.html">ActivationDescriptor</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">An <a class="el" href="structarmnn_1_1_activation_descriptor.html" title="An ActivationDescriptor for the ActivationLayer. ">ActivationDescriptor</a> for the <a class="el" href="classarmnn_1_1_activation_layer.html" title="This layer represents an activation operation with the specified activation function. ">ActivationLayer</a>. <a href="structarmnn_1_1_activation_descriptor.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_activation_layer.html">ActivationLayer</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">This layer represents an activation operation with the specified activation function. <a href="classarmnn_1_1_activation_layer.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_activation_queue_descriptor.html">ActivationQueueDescriptor</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_added_layer_observable.html">AddedLayerObservable</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_addition_layer.html">AdditionLayer</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">This layer represents an addition operation. <a href="classarmnn_1_1_addition_layer.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_addition_queue_descriptor.html">AdditionQueueDescriptor</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_arg_min_max_descriptor.html">ArgMinMaxDescriptor</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">An <a class="el" href="structarmnn_1_1_arg_min_max_descriptor.html" title="An ArgMinMaxDescriptor for ArgMinMaxLayer. ">ArgMinMaxDescriptor</a> for <a class="el" href="classarmnn_1_1_arg_min_max_layer.html" title="This layer represents a ArgMinMax operation. ">ArgMinMaxLayer</a>. <a href="structarmnn_1_1_arg_min_max_descriptor.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_arg_min_max_layer.html">ArgMinMaxLayer</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">This layer represents a ArgMinMax operation. <a href="classarmnn_1_1_arg_min_max_layer.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_arg_min_max_queue_descriptor.html">ArgMinMaxQueueDescriptor</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_backend_options.html">BackendOptions</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Struct for the users to pass backend specific options. <a href="structarmnn_1_1_backend_options.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_backend_registry.html">BackendRegistry</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_backend_settings.html">BackendSettings</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_backend_unavailable_exception.html">BackendUnavailableException</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Class for non-fatal exceptions raised while initialising a backend. <a href="classarmnn_1_1_backend_unavailable_exception.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_backend_version.html">BackendVersion</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_bad_optional_access_exception.html">BadOptionalAccessException</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_base_iterator.html">BaseIterator</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_base_memory_manager.html">BaseMemoryManager</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_base_tensor.html">BaseTensor</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_base_workload.html">BaseWorkload</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_batch_normalization_descriptor.html">BatchNormalizationDescriptor</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">A <a class="el" href="structarmnn_1_1_batch_normalization_descriptor.html" title="A BatchNormalizationDescriptor for the BatchNormalizationLayer. ">BatchNormalizationDescriptor</a> for the <a class="el" href="classarmnn_1_1_batch_normalization_layer.html" title="This layer represents a batch normalization operation. ">BatchNormalizationLayer</a>. <a href="structarmnn_1_1_batch_normalization_descriptor.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_batch_normalization_layer.html">BatchNormalizationLayer</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">This layer represents a batch normalization operation. <a href="classarmnn_1_1_batch_normalization_layer.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_batch_normalization_queue_descriptor.html">BatchNormalizationQueueDescriptor</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_batch_to_space_nd_descriptor.html">BatchToSpaceNdDescriptor</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">A <a class="el" href="structarmnn_1_1_batch_to_space_nd_descriptor.html" title="A BatchToSpaceNdDescriptor for the BatchToSpaceNdLayer. ">BatchToSpaceNdDescriptor</a> for the <a class="el" href="classarmnn_1_1_batch_to_space_nd_layer.html" title="This layer represents a BatchToSpaceNd operation. ">BatchToSpaceNdLayer</a>. <a href="structarmnn_1_1_batch_to_space_nd_descriptor.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_batch_to_space_nd_layer.html">BatchToSpaceNdLayer</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">This layer represents a BatchToSpaceNd operation. <a href="classarmnn_1_1_batch_to_space_nd_layer.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_batch_to_space_nd_queue_descriptor.html">BatchToSpaceNdQueueDescriptor</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_bias_and_weights_types_compatible.html">BiasAndWeightsTypesCompatible</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_bias_and_weights_types_match.html">BiasAndWeightsTypesMatch</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_bindable_layer.html">BindableLayer</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_boolean_encoder.html">BooleanEncoder</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_broadcast_loop.html">BroadcastLoop</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_check_location.html">CheckLocation</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_cl_abs_workload.html">ClAbsWorkload</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_cl_activation_workload.html">ClActivationWorkload</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_cl_addition_workload.html">ClAdditionWorkload</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_cl_arg_min_max_workload.html">ClArgMinMaxWorkload</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_cl_backend.html">ClBackend</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_cl_backend_context.html">ClBackendContext</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_cl_batch_normalization_float_workload.html">ClBatchNormalizationFloatWorkload</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_cl_batch_to_space_nd_workload.html">ClBatchToSpaceNdWorkload</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_cl_concat_workload.html">ClConcatWorkload</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_cl_constant_workload.html">ClConstantWorkload</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_cl_context_control.html">ClContextControl</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_cl_convert_fp16_to_fp32_workload.html">ClConvertFp16ToFp32Workload</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_cl_convert_fp32_to_fp16_workload.html">ClConvertFp32ToFp16Workload</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_cl_convolution2d_workload.html">ClConvolution2dWorkload</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_cl_depth_to_space_workload.html">ClDepthToSpaceWorkload</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_cl_depthwise_convolution_workload.html">ClDepthwiseConvolutionWorkload</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_cl_dequantize_workload.html">ClDequantizeWorkload</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_cl_division_float_workload.html">ClDivisionFloatWorkload</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_cl_floor_float_workload.html">ClFloorFloatWorkload</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_cl_fully_connected_workload.html">ClFullyConnectedWorkload</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_cl_greater_workload.html">ClGreaterWorkload</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_cl_instance_normalization_workload.html">ClInstanceNormalizationWorkload</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_cl_l2_normalization_float_workload.html">ClL2NormalizationFloatWorkload</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_cl_layer_support.html">ClLayerSupport</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_cl_lstm_float_workload.html">ClLstmFloatWorkload</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_cl_maximum_workload.html">ClMaximumWorkload</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_cl_mean_workload.html">ClMeanWorkload</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_cl_memory_manager.html">ClMemoryManager</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_cl_minimum_workload.html">ClMinimumWorkload</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_cl_multiplication_workload.html">ClMultiplicationWorkload</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_cl_normalization_float_workload.html">ClNormalizationFloatWorkload</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_cl_pad_workload.html">ClPadWorkload</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_cl_permute_workload.html">ClPermuteWorkload</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_cl_pooling2d_workload.html">ClPooling2dWorkload</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_cl_prelu_workload.html">ClPreluWorkload</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_cl_quantized_lstm_workload.html">ClQuantizedLstmWorkload</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_cl_quantize_workload.html">ClQuantizeWorkload</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_cl_reshape_workload.html">ClReshapeWorkload</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_cl_resize_workload.html">ClResizeWorkload</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_cl_rsqrt_workload.html">ClRsqrtWorkload</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_cl_runtime_unavailable_exception.html">ClRuntimeUnavailableException</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_cl_slice_workload.html">ClSliceWorkload</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_cl_softmax_float_workload.html">ClSoftmaxFloatWorkload</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_cl_softmax_uint8_workload.html">ClSoftmaxUint8Workload</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_cl_space_to_batch_nd_workload.html">ClSpaceToBatchNdWorkload</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_cl_space_to_depth_workload.html">ClSpaceToDepthWorkload</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_cl_splitter_workload.html">ClSplitterWorkload</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_cl_stack_workload.html">ClStackWorkload</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_cl_strided_slice_workload.html">ClStridedSliceWorkload</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_cl_sub_tensor_handle.html">ClSubTensorHandle</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_cl_subtraction_workload.html">ClSubtractionWorkload</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_cl_tensor_handle.html">ClTensorHandle</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_cl_tensor_handle_factory.html">ClTensorHandleFactory</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_cl_transpose_convolution2d_workload.html">ClTransposeConvolution2dWorkload</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_cl_tuned_parameters.html">ClTunedParameters</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_cl_workload_factory.html">ClWorkloadFactory</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_comparison_descriptor.html">ComparisonDescriptor</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">A <a class="el" href="structarmnn_1_1_comparison_descriptor.html" title="A ComparisonDescriptor for the ComparisonLayer. ">ComparisonDescriptor</a> for the <a class="el" href="classarmnn_1_1_comparison_layer.html" title="This layer represents a comparison operation. ">ComparisonLayer</a>. <a href="structarmnn_1_1_comparison_descriptor.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_comparison_layer.html">ComparisonLayer</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">This layer represents a comparison operation. <a href="classarmnn_1_1_comparison_layer.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_comparison_queue_descriptor.html">ComparisonQueueDescriptor</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_concat_layer.html">ConcatLayer</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">This layer represents a merge operation. <a href="classarmnn_1_1_concat_layer.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_concat_queue_descriptor.html">ConcatQueueDescriptor</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_constant_layer.html">ConstantLayer</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">A layer that the constant data can be bound to. <a href="classarmnn_1_1_constant_layer.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_constant_queue_descriptor.html">ConstantQueueDescriptor</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_const_cpu_tensor_handle.html">ConstCpuTensorHandle</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_const_passthrough_cpu_tensor_handle.html">ConstPassthroughCpuTensorHandle</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_construct_in_place.html">ConstructInPlace</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_const_tensor.html">ConstTensor</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">A tensor defined by a <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> (shape and data type) and an immutable backing store. <a href="classarmnn_1_1_const_tensor.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_convert_fp16_to_fp32_layer.html">ConvertFp16ToFp32Layer</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">This layer converts data type Float 16 to Float 32. <a href="classarmnn_1_1_convert_fp16_to_fp32_layer.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_convert_fp16_to_fp32_queue_descriptor.html">ConvertFp16ToFp32QueueDescriptor</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_convert_fp32_to_fp16_layer.html">ConvertFp32ToFp16Layer</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">This layer converts data type Float 32 to Float 16. <a href="classarmnn_1_1_convert_fp32_to_fp16_layer.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_convert_fp32_to_fp16_queue_descriptor.html">ConvertFp32ToFp16QueueDescriptor</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_convolution2d_descriptor.html">Convolution2dDescriptor</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">A <a class="el" href="structarmnn_1_1_convolution2d_descriptor.html" title="A Convolution2dDescriptor for the Convolution2dLayer. ">Convolution2dDescriptor</a> for the <a class="el" href="classarmnn_1_1_convolution2d_layer.html" title="This layer represents a convolution 2d operation. ">Convolution2dLayer</a>. <a href="structarmnn_1_1_convolution2d_descriptor.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_convolution2d_layer.html">Convolution2dLayer</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">This layer represents a convolution 2d operation. <a href="classarmnn_1_1_convolution2d_layer.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_convolution2d_queue_descriptor.html">Convolution2dQueueDescriptor</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_copy_mem_generic_workload.html">CopyMemGenericWorkload</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_cpu_tensor_handle.html">CpuTensorHandle</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_debug_layer.html">DebugLayer</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">This layer visualizes the data flowing through the network. <a href="classarmnn_1_1_debug_layer.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_debug_queue_descriptor.html">DebugQueueDescriptor</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_decoder.html">Decoder</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_depth_to_space_layer.html">DepthToSpaceLayer</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">This layer represents a DepthToSpace operation. <a href="classarmnn_1_1_depth_to_space_layer.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_depth_to_space_queue_descriptor.html">DepthToSpaceQueueDescriptor</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_depthwise_convolution2d_descriptor.html">DepthwiseConvolution2dDescriptor</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">A <a class="el" href="structarmnn_1_1_depthwise_convolution2d_descriptor.html" title="A DepthwiseConvolution2dDescriptor for the DepthwiseConvolution2dLayer. ">DepthwiseConvolution2dDescriptor</a> for the <a class="el" href="classarmnn_1_1_depthwise_convolution2d_layer.html" title="This layer represents a depthwise convolution 2d operation. ">DepthwiseConvolution2dLayer</a>. <a href="structarmnn_1_1_depthwise_convolution2d_descriptor.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_depthwise_convolution2d_layer.html">DepthwiseConvolution2dLayer</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">This layer represents a depthwise convolution 2d operation. <a href="classarmnn_1_1_depthwise_convolution2d_layer.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_depthwise_convolution2d_queue_descriptor.html">DepthwiseConvolution2dQueueDescriptor</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_dequantize_layer.html">DequantizeLayer</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">This layer dequantizes the input tensor. <a href="classarmnn_1_1_dequantize_layer.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_dequantize_queue_descriptor.html">DequantizeQueueDescriptor</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_detection_post_process_descriptor.html">DetectionPostProcessDescriptor</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_detection_post_process_layer.html">DetectionPostProcessLayer</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">This layer represents a detection postprocess operator. <a href="classarmnn_1_1_detection_post_process_layer.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_detection_post_process_queue_descriptor.html">DetectionPostProcessQueueDescriptor</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_device_spec.html">DeviceSpec</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_division_layer.html">DivisionLayer</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">This layer represents a division operation. <a href="classarmnn_1_1_division_layer.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_division_queue_descriptor.html">DivisionQueueDescriptor</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_dot_attribute_set.html">DotAttributeSet</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_dot_base.html">DotBase</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_dot_defaults.html">DotDefaults</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_dot_edge.html">DotEdge</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_dot_graph.html">DotGraph</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_dot_node.html">DotNode</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_dynamic_backend.html">DynamicBackend</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_dynamic_backend_utils.html">DynamicBackendUtils</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_dynamic_quantization_visitor.html">DynamicQuantizationVisitor</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Visitor class to establish min/max ranges based on the type of the layer. <a href="classarmnn_1_1_dynamic_quantization_visitor.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_elementwise_base_layer.html">ElementwiseBaseLayer</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_elementwise_binary_function.html">ElementwiseBinaryFunction</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_elementwise_unary_descriptor.html">ElementwiseUnaryDescriptor</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">A <a class="el" href="structarmnn_1_1_elementwise_unary_descriptor.html" title="A ElementwiseUnaryDescriptor for the ElementwiseUnaryLayer. ">ElementwiseUnaryDescriptor</a> for the <a class="el" href="classarmnn_1_1_elementwise_unary_layer.html" title="This layer represents a elementwiseUnary operation. ">ElementwiseUnaryLayer</a>. <a href="structarmnn_1_1_elementwise_unary_descriptor.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_elementwise_unary_function.html">ElementwiseUnaryFunction</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_elementwise_unary_layer.html">ElementwiseUnaryLayer</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">This layer represents a elementwiseUnary operation. <a href="classarmnn_1_1_elementwise_unary_layer.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_elementwise_unary_queue_descriptor.html">ElementwiseUnaryQueueDescriptor</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_empty_optional.html">EmptyOptional</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_encoder.html">Encoder</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_equal_queue_descriptor.html">EqualQueueDescriptor</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_erased_layer_names_observable.html">ErasedLayerNamesObservable</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_event.html">Event</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_exception.html">Exception</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Base class for all ArmNN exceptions so that users can filter to just those. <a href="classarmnn_1_1_exception.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_execution_frame.html">ExecutionFrame</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1exp.html">exp</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_fake_quantization_descriptor.html">FakeQuantizationDescriptor</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">A <a class="el" href="structarmnn_1_1_fake_quantization_descriptor.html" title="A FakeQuantizationDescriptor for the FakeQuantizationLayer. ">FakeQuantizationDescriptor</a> for the <a class="el" href="classarmnn_1_1_fake_quantization_layer.html" title="This layer represents a fake quantization operation. ">FakeQuantizationLayer</a>. <a href="structarmnn_1_1_fake_quantization_descriptor.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_fake_quantization_layer.html">FakeQuantizationLayer</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">This layer represents a fake quantization operation. <a href="classarmnn_1_1_fake_quantization_layer.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_fake_quantization_queue_descriptor.html">FakeQuantizationQueueDescriptor</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_file_not_found_exception.html">FileNotFoundException</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_first_input_typed_workload.html">FirstInputTypedWorkload</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_float16_decoder.html">Float16Decoder</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_float16_encoder.html">Float16Encoder</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_float32_decoder.html">Float32Decoder</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_float32_encoder.html">Float32Encoder</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_floor_layer.html">FloorLayer</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">This layer represents a floor operation. <a href="classarmnn_1_1_floor_layer.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_floor_queue_descriptor.html">FloorQueueDescriptor</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_fully_connected_descriptor.html">FullyConnectedDescriptor</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">A <a class="el" href="structarmnn_1_1_fully_connected_descriptor.html" title="A FullyConnectedDescriptor for the FullyConnectedLayer. ">FullyConnectedDescriptor</a> for the <a class="el" href="classarmnn_1_1_fully_connected_layer.html" title="This layer represents a fully connected operation. ">FullyConnectedLayer</a>. <a href="structarmnn_1_1_fully_connected_descriptor.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_fully_connected_layer.html">FullyConnectedLayer</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">This layer represents a fully connected operation. <a href="classarmnn_1_1_fully_connected_layer.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_fully_connected_queue_descriptor.html">FullyConnectedQueueDescriptor</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_gather_layer.html">GatherLayer</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">This layer represents a Gather operator. <a href="classarmnn_1_1_gather_layer.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_gather_queue_descriptor.html">GatherQueueDescriptor</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_graph.html">Graph</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_graph_observable.html">GraphObservable</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_graph_validation_exception.html">GraphValidationException</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_greater_queue_descriptor.html">GreaterQueueDescriptor</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_html_bold.html">HtmlBold</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_html_font.html">HtmlFont</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_html_section.html">HtmlSection</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_html_simple_tag.html">HtmlSimpleTag</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_i_acl_tensor_handle.html">IAclTensorHandle</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_i_backend.html">IBackend</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Each backend should implement an <a class="el" href="classarmnn_1_1_i_backend.html" title="Each backend should implement an IBackend. ">IBackend</a>. <a href="classarmnn_1_1_i_backend.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_i_backend_context.html">IBackendContext</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_i_backend_internal.html">IBackendInternal</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_i_cl_tensor_handle.html">IClTensorHandle</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_i_connectable_layer.html">IConnectableLayer</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Interface for a layer that is connectable to other layers via InputSlots and OutputSlots. <a href="classarmnn_1_1_i_connectable_layer.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_i_device_spec.html">IDeviceSpec</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Device specific knowledge to be passed to the optimizer. <a href="classarmnn_1_1_i_device_spec.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_i_execution_frame.html">IExecutionFrame</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight"><a class="el" href="classarmnn_1_1_execution_frame.html">ExecutionFrame</a> interface to enqueue a workload computation. <a href="classarmnn_1_1_i_execution_frame.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_i_gpu_acc_tuned_parameters.html">IGpuAccTunedParameters</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_i_graph_observable.html">IGraphObservable</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_i_input_slot.html">IInputSlot</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">An input connection slot for a layer. The input slot can be connected to an output slot of the preceding layer in the graph. Only one connection to the input slot is allowed. <a href="classarmnn_1_1_i_input_slot.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_i_layer_support.html">ILayerSupport</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_i_layer_visitor.html">ILayerVisitor</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_i_memory_manager.html">IMemoryManager</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_import_mem_generic_workload.html">ImportMemGenericWorkload</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_i_network.html">INetwork</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_i_network_properties.html">INetworkProperties</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_i_network_quantizer.html">INetworkQuantizer</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Quantizer class Quantizes a float32 InputNetwork. <a href="classarmnn_1_1_i_network_quantizer.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_input_layer.html">InputLayer</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">A layer user-provided data can be bound to (e.g. inputs, outputs). <a href="classarmnn_1_1_input_layer.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_input_slot.html">InputSlot</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_instance_normalization_descriptor.html">InstanceNormalizationDescriptor</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">An <a class="el" href="structarmnn_1_1_instance_normalization_descriptor.html" title="An InstanceNormalizationDescriptor for InstanceNormalizationLayer. ">InstanceNormalizationDescriptor</a> for <a class="el" href="classarmnn_1_1_instance_normalization_layer.html" title="This layer represents an instance normalization operation. ">InstanceNormalizationLayer</a>. <a href="structarmnn_1_1_instance_normalization_descriptor.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_instance_normalization_layer.html">InstanceNormalizationLayer</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">This layer represents an instance normalization operation. <a href="classarmnn_1_1_instance_normalization_layer.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_instance_normalization_queue_descriptor.html">InstanceNormalizationQueueDescriptor</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_instrument.html">Instrument</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_int32_decoder.html">Int32Decoder</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_int32_encoder.html">Int32Encoder</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_invalid_argument_exception.html">InvalidArgumentException</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_i_optimized_network.html">IOptimizedNetwork</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_i_output_slot.html">IOutputSlot</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">An output connection slot for a layer. The output slot may be connected to 1 or more input slots of subsequent layers in the graph. <a href="classarmnn_1_1_i_output_slot.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_i_profiler.html">IProfiler</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_i_quantization_scheme.html">IQuantizationScheme</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_i_runtime.html">IRuntime</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_is_half_type.html">IsHalfType</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_is_memory_source.html">IsMemorySource</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_is_memory_source_3_01_memory_source_01_4.html">IsMemorySource&lt; MemorySource &gt;</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_i_subgraph_view_converter.html">ISubgraphViewConverter</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_i_tensor_handle.html">ITensorHandle</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_i_tensor_handle_factory.html">ITensorHandleFactory</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_i_workload.html">IWorkload</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Workload interface to enqueue a layer computation. <a href="classarmnn_1_1_i_workload.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_i_workload_factory.html">IWorkloadFactory</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_json_child_object.html">JsonChildObject</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_json_printer.html">JsonPrinter</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_l2_normalization_descriptor.html">L2NormalizationDescriptor</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">A <a class="el" href="structarmnn_1_1_l2_normalization_descriptor.html" title="A L2NormalizationDescriptor for the L2NormalizationLayer. ">L2NormalizationDescriptor</a> for the <a class="el" href="classarmnn_1_1_l2_normalization_layer.html" title="This layer represents a L2 normalization operation. ">L2NormalizationLayer</a>. <a href="structarmnn_1_1_l2_normalization_descriptor.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_l2_normalization_layer.html">L2NormalizationLayer</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">This layer represents a L2 normalization operation. <a href="classarmnn_1_1_l2_normalization_layer.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_l2_normalization_queue_descriptor.html">L2NormalizationQueueDescriptor</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_layer.html">Layer</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_layer_support_base.html">LayerSupportBase</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_layer_type_of_impl.html">LayerTypeOfImpl</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_layer_type_of_impl_3_01_layer_type_1_1_activation_01_4.html">LayerTypeOfImpl&lt; LayerType::Activation &gt;</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_layer_type_of_impl_3_01_layer_type_1_1_addition_01_4.html">LayerTypeOfImpl&lt; LayerType::Addition &gt;</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_layer_type_of_impl_3_01_layer_type_1_1_arg_min_max_01_4.html">LayerTypeOfImpl&lt; LayerType::ArgMinMax &gt;</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_layer_type_of_impl_3_01_layer_type_1_1_batch_normalization_01_4.html">LayerTypeOfImpl&lt; LayerType::BatchNormalization &gt;</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_layer_type_of_impl_3_01_layer_type_1_1_batch_to_space_nd_01_4.html">LayerTypeOfImpl&lt; LayerType::BatchToSpaceNd &gt;</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_layer_type_of_impl_3_01_layer_type_1_1_comparison_01_4.html">LayerTypeOfImpl&lt; LayerType::Comparison &gt;</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_layer_type_of_impl_3_01_layer_type_1_1_concat_01_4.html">LayerTypeOfImpl&lt; LayerType::Concat &gt;</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_layer_type_of_impl_3_01_layer_type_1_1_constant_01_4.html">LayerTypeOfImpl&lt; LayerType::Constant &gt;</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_layer_type_of_impl_3_01_layer_type_1_1_convert_fp16_to_fp32_01_4.html">LayerTypeOfImpl&lt; LayerType::ConvertFp16ToFp32 &gt;</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_layer_type_of_impl_3_01_layer_type_1_1_convert_fp32_to_fp16_01_4.html">LayerTypeOfImpl&lt; LayerType::ConvertFp32ToFp16 &gt;</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_layer_type_of_impl_3_01_layer_type_1_1_convolution2d_01_4.html">LayerTypeOfImpl&lt; LayerType::Convolution2d &gt;</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_layer_type_of_impl_3_01_layer_type_1_1_debug_01_4.html">LayerTypeOfImpl&lt; LayerType::Debug &gt;</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_layer_type_of_impl_3_01_layer_type_1_1_depth_to_space_01_4.html">LayerTypeOfImpl&lt; LayerType::DepthToSpace &gt;</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_layer_type_of_impl_3_01_layer_type_1_1_depthwise_convolution2d_01_4.html">LayerTypeOfImpl&lt; LayerType::DepthwiseConvolution2d &gt;</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_layer_type_of_impl_3_01_layer_type_1_1_dequantize_01_4.html">LayerTypeOfImpl&lt; LayerType::Dequantize &gt;</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_layer_type_of_impl_3_01_layer_type_1_1_detection_post_process_01_4.html">LayerTypeOfImpl&lt; LayerType::DetectionPostProcess &gt;</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_layer_type_of_impl_3_01_layer_type_1_1_division_01_4.html">LayerTypeOfImpl&lt; LayerType::Division &gt;</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_layer_type_of_impl_3_01_layer_type_1_1_elementwise_unary_01_4.html">LayerTypeOfImpl&lt; LayerType::ElementwiseUnary &gt;</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_layer_type_of_impl_3_01_layer_type_1_1_fake_quantization_01_4.html">LayerTypeOfImpl&lt; LayerType::FakeQuantization &gt;</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_layer_type_of_impl_3_01_layer_type_1_1_floor_01_4.html">LayerTypeOfImpl&lt; LayerType::Floor &gt;</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_layer_type_of_impl_3_01_layer_type_1_1_fully_connected_01_4.html">LayerTypeOfImpl&lt; LayerType::FullyConnected &gt;</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_layer_type_of_impl_3_01_layer_type_1_1_gather_01_4.html">LayerTypeOfImpl&lt; LayerType::Gather &gt;</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_layer_type_of_impl_3_01_layer_type_1_1_input_01_4.html">LayerTypeOfImpl&lt; LayerType::Input &gt;</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_layer_type_of_impl_3_01_layer_type_1_1_instance_normalization_01_4.html">LayerTypeOfImpl&lt; LayerType::InstanceNormalization &gt;</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_layer_type_of_impl_3_01_layer_type_1_1_l2_normalization_01_4.html">LayerTypeOfImpl&lt; LayerType::L2Normalization &gt;</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_layer_type_of_impl_3_01_layer_type_1_1_log_softmax_01_4.html">LayerTypeOfImpl&lt; LayerType::LogSoftmax &gt;</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_layer_type_of_impl_3_01_layer_type_1_1_lstm_01_4.html">LayerTypeOfImpl&lt; LayerType::Lstm &gt;</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_layer_type_of_impl_3_01_layer_type_1_1_maximum_01_4.html">LayerTypeOfImpl&lt; LayerType::Maximum &gt;</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_layer_type_of_impl_3_01_layer_type_1_1_mean_01_4.html">LayerTypeOfImpl&lt; LayerType::Mean &gt;</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_layer_type_of_impl_3_01_layer_type_1_1_mem_copy_01_4.html">LayerTypeOfImpl&lt; LayerType::MemCopy &gt;</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_layer_type_of_impl_3_01_layer_type_1_1_mem_import_01_4.html">LayerTypeOfImpl&lt; LayerType::MemImport &gt;</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_layer_type_of_impl_3_01_layer_type_1_1_merge_01_4.html">LayerTypeOfImpl&lt; LayerType::Merge &gt;</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_layer_type_of_impl_3_01_layer_type_1_1_minimum_01_4.html">LayerTypeOfImpl&lt; LayerType::Minimum &gt;</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_layer_type_of_impl_3_01_layer_type_1_1_multiplication_01_4.html">LayerTypeOfImpl&lt; LayerType::Multiplication &gt;</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_layer_type_of_impl_3_01_layer_type_1_1_normalization_01_4.html">LayerTypeOfImpl&lt; LayerType::Normalization &gt;</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_layer_type_of_impl_3_01_layer_type_1_1_output_01_4.html">LayerTypeOfImpl&lt; LayerType::Output &gt;</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_layer_type_of_impl_3_01_layer_type_1_1_pad_01_4.html">LayerTypeOfImpl&lt; LayerType::Pad &gt;</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_layer_type_of_impl_3_01_layer_type_1_1_permute_01_4.html">LayerTypeOfImpl&lt; LayerType::Permute &gt;</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_layer_type_of_impl_3_01_layer_type_1_1_pooling2d_01_4.html">LayerTypeOfImpl&lt; LayerType::Pooling2d &gt;</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_layer_type_of_impl_3_01_layer_type_1_1_pre_compiled_01_4.html">LayerTypeOfImpl&lt; LayerType::PreCompiled &gt;</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_layer_type_of_impl_3_01_layer_type_1_1_prelu_01_4.html">LayerTypeOfImpl&lt; LayerType::Prelu &gt;</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_layer_type_of_impl_3_01_layer_type_1_1_quantize_01_4.html">LayerTypeOfImpl&lt; LayerType::Quantize &gt;</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_layer_type_of_impl_3_01_layer_type_1_1_quantized_lstm_01_4.html">LayerTypeOfImpl&lt; LayerType::QuantizedLstm &gt;</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_layer_type_of_impl_3_01_layer_type_1_1_reshape_01_4.html">LayerTypeOfImpl&lt; LayerType::Reshape &gt;</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_layer_type_of_impl_3_01_layer_type_1_1_resize_01_4.html">LayerTypeOfImpl&lt; LayerType::Resize &gt;</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_layer_type_of_impl_3_01_layer_type_1_1_slice_01_4.html">LayerTypeOfImpl&lt; LayerType::Slice &gt;</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_layer_type_of_impl_3_01_layer_type_1_1_softmax_01_4.html">LayerTypeOfImpl&lt; LayerType::Softmax &gt;</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_layer_type_of_impl_3_01_layer_type_1_1_space_to_batch_nd_01_4.html">LayerTypeOfImpl&lt; LayerType::SpaceToBatchNd &gt;</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_layer_type_of_impl_3_01_layer_type_1_1_space_to_depth_01_4.html">LayerTypeOfImpl&lt; LayerType::SpaceToDepth &gt;</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_layer_type_of_impl_3_01_layer_type_1_1_splitter_01_4.html">LayerTypeOfImpl&lt; LayerType::Splitter &gt;</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_layer_type_of_impl_3_01_layer_type_1_1_stack_01_4.html">LayerTypeOfImpl&lt; LayerType::Stack &gt;</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_layer_type_of_impl_3_01_layer_type_1_1_stand_in_01_4.html">LayerTypeOfImpl&lt; LayerType::StandIn &gt;</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_layer_type_of_impl_3_01_layer_type_1_1_strided_slice_01_4.html">LayerTypeOfImpl&lt; LayerType::StridedSlice &gt;</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_layer_type_of_impl_3_01_layer_type_1_1_subtraction_01_4.html">LayerTypeOfImpl&lt; LayerType::Subtraction &gt;</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_layer_type_of_impl_3_01_layer_type_1_1_switch_01_4.html">LayerTypeOfImpl&lt; LayerType::Switch &gt;</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_layer_type_of_impl_3_01_layer_type_1_1_transpose_convolution2d_01_4.html">LayerTypeOfImpl&lt; LayerType::TransposeConvolution2d &gt;</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_layer_validation_exception.html">LayerValidationException</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_layer_visitor_base.html">LayerVisitorBase</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_layer_with_parameters.html">LayerWithParameters</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_loaded_network.html">LoadedNetwork</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_log_sink.html">LogSink</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_log_softmax_layer.html">LogSoftmaxLayer</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">This layer represents a log softmax operation. <a href="classarmnn_1_1_log_softmax_layer.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_log_softmax_queue_descriptor.html">LogSoftmaxQueueDescriptor</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_lstm_basic_parameters.html">LstmBasicParameters</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_lstm_descriptor.html">LstmDescriptor</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">An <a class="el" href="structarmnn_1_1_lstm_descriptor.html" title="An LstmDescriptor for the LstmLayer. ">LstmDescriptor</a> for the <a class="el" href="classarmnn_1_1_lstm_layer.html" title="This layer represents a LSTM operation. ">LstmLayer</a>. <a href="structarmnn_1_1_lstm_descriptor.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_lstm_input_params.html">LstmInputParams</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_lstm_input_params_info.html">LstmInputParamsInfo</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_lstm_layer.html">LstmLayer</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">This layer represents a LSTM operation. <a href="classarmnn_1_1_lstm_layer.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_lstm_opt_cifg_parameters.html">LstmOptCifgParameters</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_lstm_opt_layer_norm_parameters.html">LstmOptLayerNormParameters</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_lstm_opt_peephole_parameters.html">LstmOptPeepholeParameters</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_lstm_opt_projection_parameters.html">LstmOptProjectionParameters</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_lstm_queue_descriptor.html">LstmQueueDescriptor</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1maximum.html">maximum</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_maximum_layer.html">MaximumLayer</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">This layer represents a maximum operation. <a href="classarmnn_1_1_maximum_layer.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_maximum_queue_descriptor.html">MaximumQueueDescriptor</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_mean_descriptor.html">MeanDescriptor</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">A <a class="el" href="structarmnn_1_1_mean_descriptor.html" title="A MeanDescriptor for the MeanLayer. ">MeanDescriptor</a> for the <a class="el" href="classarmnn_1_1_mean_layer.html" title="This layer represents a mean operation. ">MeanLayer</a>. <a href="structarmnn_1_1_mean_descriptor.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_mean_layer.html">MeanLayer</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">This layer represents a mean operation. <a href="classarmnn_1_1_mean_layer.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_mean_queue_descriptor.html">MeanQueueDescriptor</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_measurement.html">Measurement</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_mem_copy_layer.html">MemCopyLayer</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">This layer represents a memory copy operation. <a href="classarmnn_1_1_mem_copy_layer.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_mem_copy_queue_descriptor.html">MemCopyQueueDescriptor</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_mem_import_layer.html">MemImportLayer</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">This layer represents a memory import operation. <a href="classarmnn_1_1_mem_import_layer.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_mem_import_queue_descriptor.html">MemImportQueueDescriptor</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_memory_export_exception.html">MemoryExportException</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_memory_import_exception.html">MemoryImportException</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_mem_sync_queue_descriptor.html">MemSyncQueueDescriptor</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_merge_layer.html">MergeLayer</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">This layer dequantizes the input tensor. <a href="classarmnn_1_1_merge_layer.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_merge_queue_descriptor.html">MergeQueueDescriptor</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1minimum.html">minimum</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_minimum_layer.html">MinimumLayer</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">This layer represents a minimum operation. <a href="classarmnn_1_1_minimum_layer.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_minimum_queue_descriptor.html">MinimumQueueDescriptor</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_mock_backend.html">MockBackend</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_mock_backend_initialiser.html">MockBackendInitialiser</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_mock_backend_profiling_context.html">MockBackendProfilingContext</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_mock_backend_profiling_service.html">MockBackendProfilingService</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_mock_layer_support.html">MockLayerSupport</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_multiplication_layer.html">MultiplicationLayer</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">This layer represents a multiplication operation. <a href="classarmnn_1_1_multiplication_layer.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_multiplication_queue_descriptor.html">MultiplicationQueueDescriptor</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_multi_typed_workload.html">MultiTypedWorkload</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_neon_abs_workload.html">NeonAbsWorkload</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_neon_activation_workload.html">NeonActivationWorkload</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_neon_addition_workload.html">NeonAdditionWorkload</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_neon_arg_min_max_workload.html">NeonArgMinMaxWorkload</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_neon_backend.html">NeonBackend</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_neon_batch_normalization_workload.html">NeonBatchNormalizationWorkload</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_neon_batch_to_space_nd_workload.html">NeonBatchToSpaceNdWorkload</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_neon_concat_workload.html">NeonConcatWorkload</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_neon_constant_workload.html">NeonConstantWorkload</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_neon_convert_fp16_to_fp32_workload.html">NeonConvertFp16ToFp32Workload</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_neon_convert_fp32_to_fp16_workload.html">NeonConvertFp32ToFp16Workload</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_neon_convolution2d_workload.html">NeonConvolution2dWorkload</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_neon_depth_to_space_workload.html">NeonDepthToSpaceWorkload</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_neon_depthwise_convolution_workload.html">NeonDepthwiseConvolutionWorkload</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_neon_dequantize_workload.html">NeonDequantizeWorkload</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_neon_detection_post_process_workload.html">NeonDetectionPostProcessWorkload</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_neon_division_workload.html">NeonDivisionWorkload</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_neon_floor_float_workload.html">NeonFloorFloatWorkload</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_neon_fully_connected_workload.html">NeonFullyConnectedWorkload</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_neon_greater_workload.html">NeonGreaterWorkload</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_neon_instance_normalization_workload.html">NeonInstanceNormalizationWorkload</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_neon_interceptor_scheduler.html">NeonInterceptorScheduler</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_neon_l2_normalization_float_workload.html">NeonL2NormalizationFloatWorkload</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_neon_layer_support.html">NeonLayerSupport</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_neon_lstm_float_workload.html">NeonLstmFloatWorkload</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_neon_maximum_workload.html">NeonMaximumWorkload</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_neon_mean_workload.html">NeonMeanWorkload</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_neon_memory_manager.html">NeonMemoryManager</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_neon_minimum_workload.html">NeonMinimumWorkload</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_neon_multiplication_workload.html">NeonMultiplicationWorkload</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_neon_normalization_float_workload.html">NeonNormalizationFloatWorkload</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_neon_pad_workload.html">NeonPadWorkload</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_neon_permute_workload.html">NeonPermuteWorkload</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_neon_pooling2d_workload.html">NeonPooling2dWorkload</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_neon_prelu_workload.html">NeonPreluWorkload</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_neon_quantized_lstm_workload.html">NeonQuantizedLstmWorkload</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_neon_quantize_workload.html">NeonQuantizeWorkload</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_neon_reshape_workload.html">NeonReshapeWorkload</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_neon_resize_workload.html">NeonResizeWorkload</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_neon_rsqrt_workload.html">NeonRsqrtWorkload</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_neon_slice_workload.html">NeonSliceWorkload</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_neon_softmax_float_workload.html">NeonSoftmaxFloatWorkload</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_neon_softmax_uint8_workload.html">NeonSoftmaxUint8Workload</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_neon_space_to_batch_nd_workload.html">NeonSpaceToBatchNdWorkload</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_neon_space_to_depth_workload.html">NeonSpaceToDepthWorkload</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_neon_splitter_workload.html">NeonSplitterWorkload</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_neon_stack_workload.html">NeonStackWorkload</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_neon_strided_slice_workload.html">NeonStridedSliceWorkload</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_neon_sub_tensor_handle.html">NeonSubTensorHandle</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_neon_subtraction_workload.html">NeonSubtractionWorkload</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_neon_tensor_handle.html">NeonTensorHandle</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_neon_tensor_handle_factory.html">NeonTensorHandleFactory</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_neon_timer.html">NeonTimer</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_neon_transpose_convolution2d_workload.html">NeonTransposeConvolution2dWorkload</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_neon_workload_factory.html">NeonWorkloadFactory</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_network.html">Network</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Private implementation of <a class="el" href="classarmnn_1_1_i_network.html">INetwork</a>. <a href="classarmnn_1_1_network.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_network_quantizer.html">NetworkQuantizer</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_node_content.html">NodeContent</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_normalization_descriptor.html">NormalizationDescriptor</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">A <a class="el" href="structarmnn_1_1_normalization_descriptor.html" title="A NormalizationDescriptor for the NormalizationLayer. ">NormalizationDescriptor</a> for the <a class="el" href="classarmnn_1_1_normalization_layer.html" title="This layer represents a normalization operation. ">NormalizationLayer</a>. <a href="structarmnn_1_1_normalization_descriptor.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_normalization_layer.html">NormalizationLayer</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">This layer represents a normalization operation. <a href="classarmnn_1_1_normalization_layer.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_normalization_queue_descriptor.html">NormalizationQueueDescriptor</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_null_workload.html">NullWorkload</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_open_cl_timer.html">OpenClTimer</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight"><a class="el" href="classarmnn_1_1_open_cl_timer.html" title="OpenClTimer instrument that times all OpenCl kernels executed between calls to Start() and Stop()...">OpenClTimer</a> instrument that times all OpenCl kernels executed between calls to <a class="el" href="classarmnn_1_1_open_cl_timer.html#a156f3866ca69d98b4d9e6e1c1b3ec7da" title="Start the OpenCl timer. ">Start()</a> and <a class="el" href="classarmnn_1_1_open_cl_timer.html#a634c58de2126b4a4e6a2a093e60e1290" title="Stop the OpenCl timer. ">Stop()</a>. <a href="classarmnn_1_1_open_cl_timer.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_optimization.html">Optimization</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_optimization_result.html">OptimizationResult</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_optimization_views.html">OptimizationViews</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_optimized_network.html">OptimizedNetwork</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_optimize_for_connection.html">OptimizeForConnection</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_optimize_for_connection_impl.html">OptimizeForConnectionImpl</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_optimize_for_type.html">OptimizeForType</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_optimize_for_type_impl.html">OptimizeForTypeImpl</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_optimize_for_type_impl_3_01_layer_00_01_wrapped_01_4.html">OptimizeForTypeImpl&lt; Layer, Wrapped &gt;</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Specialization that calls Wrapped::Run() for any layer type. <a href="classarmnn_1_1_optimize_for_type_impl_3_01_layer_00_01_wrapped_01_4.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_optimizer.html">Optimizer</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_optimizer_options.html">OptimizerOptions</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_optional.html">Optional</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_optional_base.html">OptionalBase</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_optional_reference_switch.html">OptionalReferenceSwitch</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_optional_reference_switch_3_01true_00_01_t_01_4.html">OptionalReferenceSwitch&lt; true, T &gt;</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_origins_descriptor.html">OriginsDescriptor</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">An <a class="el" href="structarmnn_1_1_origins_descriptor.html" title="An OriginsDescriptor for the ConcatLayer. Descriptor to configure the concatenation process...">OriginsDescriptor</a> for the <a class="el" href="classarmnn_1_1_concat_layer.html" title="This layer represents a merge operation. ">ConcatLayer</a>. Descriptor to configure the concatenation process. Number of views must be equal to the number of inputs, and their order must match - e.g. first view corresponds to the first input, second view to the second input, etc. <a href="structarmnn_1_1_origins_descriptor.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_output_handler.html">OutputHandler</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_output_layer.html">OutputLayer</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">A layer user-provided data can be bound to (e.g. inputs, outputs). <a href="classarmnn_1_1_output_layer.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_output_slot.html">OutputSlot</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_override_input_range_visitor.html">OverrideInputRangeVisitor</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Visitor object for overriding the input range of the quantized input layers in a network. <a href="classarmnn_1_1_override_input_range_visitor.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_pad_descriptor.html">PadDescriptor</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">A <a class="el" href="structarmnn_1_1_pad_descriptor.html" title="A PadDescriptor for the PadLayer. ">PadDescriptor</a> for the <a class="el" href="classarmnn_1_1_pad_layer.html" title="This layer represents a pad operation. ">PadLayer</a>. <a href="structarmnn_1_1_pad_descriptor.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_pad_layer.html">PadLayer</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">This layer represents a pad operation. <a href="classarmnn_1_1_pad_layer.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_pad_queue_descriptor.html">PadQueueDescriptor</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_parse_exception.html">ParseException</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_passthrough_cpu_tensor_handle.html">PassthroughCpuTensorHandle</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_per_axis_iterator.html">PerAxisIterator</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_permutation_vector.html">PermutationVector</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_permute_descriptor.html">PermuteDescriptor</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">A <a class="el" href="structarmnn_1_1_permute_descriptor.html" title="A PermuteDescriptor for the PermuteLayer. ">PermuteDescriptor</a> for the <a class="el" href="classarmnn_1_1_permute_layer.html" title="This layer represents a permutation operation. ">PermuteLayer</a>. <a href="structarmnn_1_1_permute_descriptor.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_permute_layer.html">PermuteLayer</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">This layer represents a permutation operation. <a href="classarmnn_1_1_permute_layer.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_permute_queue_descriptor.html">PermuteQueueDescriptor</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_pooling2d_descriptor.html">Pooling2dDescriptor</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">A <a class="el" href="structarmnn_1_1_pooling2d_descriptor.html" title="A Pooling2dDescriptor for the Pooling2dLayer. ">Pooling2dDescriptor</a> for the <a class="el" href="classarmnn_1_1_pooling2d_layer.html" title="This layer represents a pooling 2d operation. ">Pooling2dLayer</a>. <a href="structarmnn_1_1_pooling2d_descriptor.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_pooling2d_layer.html">Pooling2dLayer</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">This layer represents a pooling 2d operation. <a href="classarmnn_1_1_pooling2d_layer.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_pooling2d_queue_descriptor.html">Pooling2dQueueDescriptor</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_pre_compiled_descriptor.html">PreCompiledDescriptor</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">A <a class="el" href="structarmnn_1_1_pre_compiled_descriptor.html" title="A PreCompiledDescriptor for the PreCompiledLayer. ">PreCompiledDescriptor</a> for the <a class="el" href="classarmnn_1_1_pre_compiled_layer.html">PreCompiledLayer</a>. <a href="structarmnn_1_1_pre_compiled_descriptor.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_pre_compiled_layer.html">PreCompiledLayer</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_pre_compiled_queue_descriptor.html">PreCompiledQueueDescriptor</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_prelu_layer.html">PreluLayer</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_prelu_queue_descriptor.html">PreluQueueDescriptor</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_profiler.html">Profiler</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_profiler_manager.html">ProfilerManager</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_q_a_symm8_decoder.html">QASymm8Decoder</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_q_a_symm8_encoder.html">QASymm8Encoder</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_q_a_symm_s8_decoder.html">QASymmS8Decoder</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_q_a_symm_s8_encoder.html">QASymmS8Encoder</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_q_asymm_s8_quantization_scheme.html">QAsymmS8QuantizationScheme</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_q_asymm_u8_quantization_scheme.html">QAsymmU8QuantizationScheme</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_q_symm16_decoder.html">QSymm16Decoder</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_q_symm16_encoder.html">QSymm16Encoder</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_q_symm16_quantization_scheme.html">QSymm16QuantizationScheme</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_q_symm8_per_axis_decoder.html">QSymm8PerAxisDecoder</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_q_symm8_per_axis_encoder.html">QSymm8PerAxisEncoder</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_q_symm_s8_decoder.html">QSymmS8Decoder</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_q_symm_s8_encoder.html">QSymmS8Encoder</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_q_symm_s8_quantization_scheme.html">QSymmS8QuantizationScheme</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_quantization_parameters_are_equal.html">QuantizationParametersAreEqual</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_quantized_lstm_input_params.html">QuantizedLstmInputParams</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_quantized_lstm_input_params_info.html">QuantizedLstmInputParamsInfo</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_quantized_lstm_layer.html">QuantizedLstmLayer</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">This layer represents a QuantizedLstm operation. <a href="classarmnn_1_1_quantized_lstm_layer.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_quantized_lstm_parameters.html">QuantizedLstmParameters</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_quantized_lstm_queue_descriptor.html">QuantizedLstmQueueDescriptor</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_quantized_multiplier_smaller_than_one.html">QuantizedMultiplierSmallerThanOne</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_quantize_layer.html">QuantizeLayer</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_quantize_queue_descriptor.html">QuantizeQueueDescriptor</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_quantizer_options.html">QuantizerOptions</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_quantizer_visitor.html">QuantizerVisitor</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Visitor object for quantizing layers in a network. <a href="classarmnn_1_1_quantizer_visitor.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_queue_descriptor.html">QueueDescriptor</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_queue_descriptor_with_parameters.html">QueueDescriptorWithParameters</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_range_tracker.html">RangeTracker</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_ref_activation_workload.html">RefActivationWorkload</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_ref_arg_min_max_workload.html">RefArgMinMaxWorkload</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_ref_backend.html">RefBackend</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_ref_batch_normalization_workload.html">RefBatchNormalizationWorkload</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_ref_batch_to_space_nd_workload.html">RefBatchToSpaceNdWorkload</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_ref_comparison_workload.html">RefComparisonWorkload</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_ref_concat_workload.html">RefConcatWorkload</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_ref_constant_workload.html">RefConstantWorkload</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_ref_convert_fp16_to_fp32_workload.html">RefConvertFp16ToFp32Workload</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_ref_convert_fp32_to_fp16_workload.html">RefConvertFp32ToFp16Workload</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_ref_convolution2d_workload.html">RefConvolution2dWorkload</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_ref_debug_workload.html">RefDebugWorkload</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_ref_depth_to_space_workload.html">RefDepthToSpaceWorkload</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_ref_depthwise_convolution2d_workload.html">RefDepthwiseConvolution2dWorkload</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_ref_dequantize_workload.html">RefDequantizeWorkload</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_ref_detection_post_process_workload.html">RefDetectionPostProcessWorkload</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_ref_elementwise_unary_workload.html">RefElementwiseUnaryWorkload</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_ref_elementwise_workload.html">RefElementwiseWorkload</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_ref_fake_quantization_float32_workload.html">RefFakeQuantizationFloat32Workload</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_ref_floor_workload.html">RefFloorWorkload</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_ref_fully_connected_workload.html">RefFullyConnectedWorkload</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_ref_gather_workload.html">RefGatherWorkload</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_ref_instance_normalization_workload.html">RefInstanceNormalizationWorkload</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_ref_l2_normalization_workload.html">RefL2NormalizationWorkload</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_ref_layer_support.html">RefLayerSupport</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_ref_log_softmax_workload.html">RefLogSoftmaxWorkload</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_ref_lstm_workload.html">RefLstmWorkload</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_ref_mean_workload.html">RefMeanWorkload</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_ref_memory_manager.html">RefMemoryManager</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_ref_normalization_workload.html">RefNormalizationWorkload</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_ref_pad_workload.html">RefPadWorkload</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_ref_permute_workload.html">RefPermuteWorkload</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_ref_pooling2d_workload.html">RefPooling2dWorkload</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_ref_prelu_workload.html">RefPreluWorkload</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_ref_quantize_workload.html">RefQuantizeWorkload</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_ref_reshape_workload.html">RefReshapeWorkload</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_ref_resize_bilinear_workload.html">RefResizeBilinearWorkload</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_ref_resize_workload.html">RefResizeWorkload</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_ref_slice_workload.html">RefSliceWorkload</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_ref_softmax_workload.html">RefSoftmaxWorkload</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_ref_space_to_batch_nd_workload.html">RefSpaceToBatchNdWorkload</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_ref_space_to_depth_workload.html">RefSpaceToDepthWorkload</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_ref_splitter_workload.html">RefSplitterWorkload</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_ref_stack_workload.html">RefStackWorkload</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_ref_strided_slice_workload.html">RefStridedSliceWorkload</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_ref_tensor_handle.html">RefTensorHandle</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_ref_tensor_handle_factory.html">RefTensorHandleFactory</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_ref_transpose_convolution2d_workload.html">RefTransposeConvolution2dWorkload</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_ref_workload_factory.html">RefWorkloadFactory</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_reshape_descriptor.html">ReshapeDescriptor</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">A <a class="el" href="structarmnn_1_1_reshape_descriptor.html" title="A ReshapeDescriptor for the ReshapeLayer. ">ReshapeDescriptor</a> for the <a class="el" href="classarmnn_1_1_reshape_layer.html" title="This layer represents a reshape operation. ">ReshapeLayer</a>. <a href="structarmnn_1_1_reshape_descriptor.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_reshape_layer.html">ReshapeLayer</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">This layer represents a reshape operation. <a href="classarmnn_1_1_reshape_layer.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_reshape_queue_descriptor.html">ReshapeQueueDescriptor</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_resize_bilinear_descriptor.html">ResizeBilinearDescriptor</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">A <a class="el" href="structarmnn_1_1_resize_bilinear_descriptor.html" title="A ResizeBilinearDescriptor for the ResizeBilinearLayer. ">ResizeBilinearDescriptor</a> for the ResizeBilinearLayer. <a href="structarmnn_1_1_resize_bilinear_descriptor.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_resize_bilinear_queue_descriptor.html">ResizeBilinearQueueDescriptor</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_resize_descriptor.html">ResizeDescriptor</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">A <a class="el" href="structarmnn_1_1_resize_descriptor.html" title="A ResizeDescriptor for the ResizeLayer. ">ResizeDescriptor</a> for the <a class="el" href="classarmnn_1_1_resize_layer.html" title="This layer represents a resize operation. ">ResizeLayer</a>. <a href="structarmnn_1_1_resize_descriptor.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_resize_layer.html">ResizeLayer</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">This layer represents a resize operation. <a href="classarmnn_1_1_resize_layer.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_resize_queue_descriptor.html">ResizeQueueDescriptor</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_resolve_type_impl.html">ResolveTypeImpl</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_resolve_type_impl_3_01_data_type_1_1_boolean_01_4.html">ResolveTypeImpl&lt; DataType::Boolean &gt;</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_resolve_type_impl_3_01_data_type_1_1_float16_01_4.html">ResolveTypeImpl&lt; DataType::Float16 &gt;</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_resolve_type_impl_3_01_data_type_1_1_float32_01_4.html">ResolveTypeImpl&lt; DataType::Float32 &gt;</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_resolve_type_impl_3_01_data_type_1_1_q_asymm_s8_01_4.html">ResolveTypeImpl&lt; DataType::QAsymmS8 &gt;</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_resolve_type_impl_3_01_data_type_1_1_q_asymm_u8_01_4.html">ResolveTypeImpl&lt; DataType::QAsymmU8 &gt;</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_resolve_type_impl_3_01_data_type_1_1_q_symm_s16_01_4.html">ResolveTypeImpl&lt; DataType::QSymmS16 &gt;</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_resolve_type_impl_3_01_data_type_1_1_q_symm_s8_01_4.html">ResolveTypeImpl&lt; DataType::QSymmS8 &gt;</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_resolve_type_impl_3_01_data_type_1_1_signed32_01_4.html">ResolveTypeImpl&lt; DataType::Signed32 &gt;</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1rsqrt.html">rsqrt</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_rsqrt_layer.html">RsqrtLayer</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_rsqrt_queue_descriptor.html">RsqrtQueueDescriptor</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_rule.html">Rule</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_runtime.html">Runtime</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_runtime_exception.html">RuntimeException</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_sample_dynamic_addition_workload.html">SampleDynamicAdditionWorkload</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_sample_dynamic_layer_support.html">SampleDynamicLayerSupport</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_sample_dynamic_workload_factory.html">SampleDynamicWorkloadFactory</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_sample_memory_manager.html">SampleMemoryManager</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_sample_tensor_handle.html">SampleTensorHandle</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_scaled_int32_decoder.html">ScaledInt32Decoder</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_scaled_int32_per_axis_decoder.html">ScaledInt32PerAxisDecoder</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_scoped_cpu_tensor_handle.html">ScopedCpuTensorHandle</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_scoped_profiling_event.html">ScopedProfilingEvent</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_scoped_record.html">ScopedRecord</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_shapes_are_broadcast_compatible.html">ShapesAreBroadcastCompatible</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_shapes_are_same_rank.html">ShapesAreSameRank</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_shapes_are_same_total_size.html">ShapesAreSameTotalSize</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_simple_logger.html">SimpleLogger</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_slice_descriptor.html">SliceDescriptor</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">A <a class="el" href="structarmnn_1_1_slice_descriptor.html" title="A SliceDescriptor for the SliceLayer. ">SliceDescriptor</a> for the <a class="el" href="classarmnn_1_1_slice_layer.html">SliceLayer</a>. <a href="structarmnn_1_1_slice_descriptor.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_slice_layer.html">SliceLayer</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_slice_queue_descriptor.html">SliceQueueDescriptor</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_softmax_descriptor.html">SoftmaxDescriptor</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">A <a class="el" href="structarmnn_1_1_softmax_descriptor.html" title="A SoftmaxDescriptor for the SoftmaxLayer. ">SoftmaxDescriptor</a> for the <a class="el" href="classarmnn_1_1_softmax_layer.html" title="This layer represents a softmax operation. ">SoftmaxLayer</a>. <a href="structarmnn_1_1_softmax_descriptor.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_softmax_layer.html">SoftmaxLayer</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">This layer represents a softmax operation. <a href="classarmnn_1_1_softmax_layer.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_softmax_queue_descriptor.html">SoftmaxQueueDescriptor</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_space_to_batch_nd_descriptor.html">SpaceToBatchNdDescriptor</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">A <a class="el" href="structarmnn_1_1_space_to_batch_nd_descriptor.html" title="A SpaceToBatchNdDescriptor for the SpaceToBatchNdLayer. ">SpaceToBatchNdDescriptor</a> for the <a class="el" href="classarmnn_1_1_space_to_batch_nd_layer.html" title="This layer represents a SpaceToBatchNd operation. ">SpaceToBatchNdLayer</a>. <a href="structarmnn_1_1_space_to_batch_nd_descriptor.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_space_to_batch_nd_layer.html">SpaceToBatchNdLayer</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">This layer represents a SpaceToBatchNd operation. <a href="classarmnn_1_1_space_to_batch_nd_layer.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_space_to_batch_nd_queue_descriptor.html">SpaceToBatchNdQueueDescriptor</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_space_to_depth_descriptor.html">SpaceToDepthDescriptor</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">A <a class="el" href="structarmnn_1_1_space_to_depth_descriptor.html" title="A SpaceToDepthDescriptor for the SpaceToDepthLayer. ">SpaceToDepthDescriptor</a> for the <a class="el" href="classarmnn_1_1_space_to_depth_layer.html" title="This layer represents a SpaceToDepth operation. ">SpaceToDepthLayer</a>. <a href="structarmnn_1_1_space_to_depth_descriptor.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_space_to_depth_layer.html">SpaceToDepthLayer</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">This layer represents a SpaceToDepth operation. <a href="classarmnn_1_1_space_to_depth_layer.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_space_to_depth_queue_descriptor.html">SpaceToDepthQueueDescriptor</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_splitter_layer.html">SplitterLayer</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">This layer represents a split operation. <a href="classarmnn_1_1_splitter_layer.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_splitter_queue_descriptor.html">SplitterQueueDescriptor</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1sqrt.html">sqrt</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_stack_descriptor.html">StackDescriptor</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">A <a class="el" href="structarmnn_1_1_stack_descriptor.html" title="A StackDescriptor for the StackLayer. ">StackDescriptor</a> for the <a class="el" href="classarmnn_1_1_stack_layer.html" title="This layer represents a stack operation. ">StackLayer</a>. <a href="structarmnn_1_1_stack_descriptor.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_stack_layer.html">StackLayer</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">This layer represents a stack operation. <a href="classarmnn_1_1_stack_layer.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_stack_queue_descriptor.html">StackQueueDescriptor</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_standard_output_sink.html">StandardOutputSink</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_stand_in_descriptor.html">StandInDescriptor</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">A <a class="el" href="structarmnn_1_1_stand_in_descriptor.html" title="A StandInDescriptor for the StandIn layer. ">StandInDescriptor</a> for the StandIn layer. <a href="structarmnn_1_1_stand_in_descriptor.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_stand_in_layer.html">StandInLayer</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">This layer represents an unknown operation in the input graph. <a href="classarmnn_1_1_stand_in_layer.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_static_range_visitor.html">StaticRangeVisitor</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Visitor class to establish min/max ranges based on the type of the layer. <a href="classarmnn_1_1_static_range_visitor.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_strided_slice_descriptor.html">StridedSliceDescriptor</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">A <a class="el" href="structarmnn_1_1_strided_slice_descriptor.html" title="A StridedSliceDescriptor for the StridedSliceLayer. ">StridedSliceDescriptor</a> for the <a class="el" href="classarmnn_1_1_strided_slice_layer.html" title="This layer represents a strided slice operation. ">StridedSliceLayer</a>. <a href="structarmnn_1_1_strided_slice_descriptor.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_strided_slice_layer.html">StridedSliceLayer</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">This layer represents a strided slice operation. <a href="classarmnn_1_1_strided_slice_layer.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_strided_slice_queue_descriptor.html">StridedSliceQueueDescriptor</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_stringify_layer_parameters.html">StringifyLayerParameters</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_stringify_layer_parameters_3_01_activation_descriptor_01_4.html">StringifyLayerParameters&lt; ActivationDescriptor &gt;</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_stringify_layer_parameters_3_01_batch_normalization_descriptor_01_4.html">StringifyLayerParameters&lt; BatchNormalizationDescriptor &gt;</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_stringify_layer_parameters_3_01_batch_to_space_nd_descriptor_01_4.html">StringifyLayerParameters&lt; BatchToSpaceNdDescriptor &gt;</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_stringify_layer_parameters_3_01_convolution2d_descriptor_01_4.html">StringifyLayerParameters&lt; Convolution2dDescriptor &gt;</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_stringify_layer_parameters_3_01_depthwise_convolution2d_descriptor_01_4.html">StringifyLayerParameters&lt; DepthwiseConvolution2dDescriptor &gt;</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_stringify_layer_parameters_3_01_detection_post_process_descriptor_01_4.html">StringifyLayerParameters&lt; DetectionPostProcessDescriptor &gt;</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_stringify_layer_parameters_3_01_fake_quantization_descriptor_01_4.html">StringifyLayerParameters&lt; FakeQuantizationDescriptor &gt;</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_stringify_layer_parameters_3_01_fully_connected_descriptor_01_4.html">StringifyLayerParameters&lt; FullyConnectedDescriptor &gt;</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_stringify_layer_parameters_3_01_l2_normalization_descriptor_01_4.html">StringifyLayerParameters&lt; L2NormalizationDescriptor &gt;</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_stringify_layer_parameters_3_01_lstm_descriptor_01_4.html">StringifyLayerParameters&lt; LstmDescriptor &gt;</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_stringify_layer_parameters_3_01_mean_descriptor_01_4.html">StringifyLayerParameters&lt; MeanDescriptor &gt;</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_stringify_layer_parameters_3_01_normalization_descriptor_01_4.html">StringifyLayerParameters&lt; NormalizationDescriptor &gt;</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_stringify_layer_parameters_3_01_origins_descriptor_01_4.html">StringifyLayerParameters&lt; OriginsDescriptor &gt;</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_stringify_layer_parameters_3_01_pad_descriptor_01_4.html">StringifyLayerParameters&lt; PadDescriptor &gt;</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_stringify_layer_parameters_3_01_permute_descriptor_01_4.html">StringifyLayerParameters&lt; PermuteDescriptor &gt;</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_stringify_layer_parameters_3_01_pooling2d_descriptor_01_4.html">StringifyLayerParameters&lt; Pooling2dDescriptor &gt;</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_stringify_layer_parameters_3_01_pre_compiled_descriptor_01_4.html">StringifyLayerParameters&lt; PreCompiledDescriptor &gt;</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_stringify_layer_parameters_3_01_reshape_descriptor_01_4.html">StringifyLayerParameters&lt; ReshapeDescriptor &gt;</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_stringify_layer_parameters_3_01_resize_bilinear_descriptor_01_4.html">StringifyLayerParameters&lt; ResizeBilinearDescriptor &gt;</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_stringify_layer_parameters_3_01_resize_descriptor_01_4.html">StringifyLayerParameters&lt; ResizeDescriptor &gt;</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_stringify_layer_parameters_3_01_softmax_descriptor_01_4.html">StringifyLayerParameters&lt; SoftmaxDescriptor &gt;</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_stringify_layer_parameters_3_01_space_to_batch_nd_descriptor_01_4.html">StringifyLayerParameters&lt; SpaceToBatchNdDescriptor &gt;</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_stringify_layer_parameters_3_01_space_to_depth_descriptor_01_4.html">StringifyLayerParameters&lt; SpaceToDepthDescriptor &gt;</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_stringify_layer_parameters_3_01_stack_descriptor_01_4.html">StringifyLayerParameters&lt; StackDescriptor &gt;</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_stringify_layer_parameters_3_01_strided_slice_descriptor_01_4.html">StringifyLayerParameters&lt; StridedSliceDescriptor &gt;</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_stringify_layer_parameters_3_01_transpose_convolution2d_descriptor_01_4.html">StringifyLayerParameters&lt; TransposeConvolution2dDescriptor &gt;</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_stringify_layer_parameters_3_01_views_descriptor_01_4.html">StringifyLayerParameters&lt; ViewsDescriptor &gt;</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_string_mapping.html">StringMapping</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_subgraph_view.html">SubgraphView</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_subgraph_view_selector.html">SubgraphViewSelector</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_subtraction_layer.html">SubtractionLayer</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">This layer represents a subtraction operation. <a href="classarmnn_1_1_subtraction_layer.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_subtraction_queue_descriptor.html">SubtractionQueueDescriptor</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_switch_layer.html">SwitchLayer</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">This layer calculates both true and false outputs for input. <a href="classarmnn_1_1_switch_layer.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_switch_queue_descriptor.html">SwitchQueueDescriptor</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_sync_mem_generic_workload.html">SyncMemGenericWorkload</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_tensor.html">Tensor</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">A tensor defined by a <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> (shape and data type) and a mutable backing store. <a href="classarmnn_1_1_tensor.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_tensor_buffer_array_view.html">TensorBufferArrayView</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_tensor_handle_factory_registry.html">TensorHandleFactoryRegistry</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_tensor_num_dimensions_are_correct.html">TensorNumDimensionsAreCorrect</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_tensor_shape.html">TensorShape</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_test_batch_normalization_layer_visitor.html">TestBatchNormalizationLayerVisitor</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_test_constant_layer_visitor.html">TestConstantLayerVisitor</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_test_convolution2d_layer_visitor.html">TestConvolution2dLayerVisitor</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_test_depthwise_convolution2d_layer_visitor.html">TestDepthwiseConvolution2dLayerVisitor</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_test_fully_connected_layer_vistor.html">TestFullyConnectedLayerVistor</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_test_input_layer_visitor.html">TestInputLayerVisitor</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_test_layer_visitor.html">TestLayerVisitor</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_test_lstm_layer_visitor.html">TestLstmLayerVisitor</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_test_output_layer_visitor.html">TestOutputLayerVisitor</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_test_quantized_lstm_layer_visitor.html">TestQuantizedLstmLayerVisitor</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_timeout_exception.html">TimeoutException</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_transpose_convolution2d_descriptor.html">TransposeConvolution2dDescriptor</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">A <a class="el" href="structarmnn_1_1_transpose_convolution2d_descriptor.html" title="A TransposeConvolution2dDescriptor for the TransposeConvolution2dLayer. ">TransposeConvolution2dDescriptor</a> for the <a class="el" href="classarmnn_1_1_transpose_convolution2d_layer.html" title="This layer represents a 2D transpose convolution operation. ">TransposeConvolution2dLayer</a>. <a href="structarmnn_1_1_transpose_convolution2d_descriptor.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_transpose_convolution2d_layer.html">TransposeConvolution2dLayer</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">This layer represents a 2D transpose convolution operation. <a href="classarmnn_1_1_transpose_convolution2d_layer.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_transpose_convolution2d_queue_descriptor.html">TransposeConvolution2dQueueDescriptor</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_type_any_of.html">TypeAnyOf</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_typed_iterator.html">TypedIterator</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_typed_workload.html">TypedWorkload</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_type_is.html">TypeIs</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_type_not_per_axis_quantized.html">TypeNotPerAxisQuantized</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_types_are_equal.html">TypesAreEqual</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_unimplemented_exception.html">UnimplementedException</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_views_descriptor.html">ViewsDescriptor</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">A <a class="el" href="structarmnn_1_1_views_descriptor.html" title="A ViewsDescriptor for the SplitterLayer. Descriptor to configure the splitting process. Number of Views must be equal to the number of outputs, and their order must match - e.g. first view corresponds to the first output, second view to the second output, etc. ">ViewsDescriptor</a> for the <a class="el" href="classarmnn_1_1_splitter_layer.html" title="This layer represents a split operation. ">SplitterLayer</a>. Descriptor to configure the splitting process. Number of Views must be equal to the number of outputs, and their order must match - e.g. first view corresponds to the first output, second view to the second output, etc. <a href="structarmnn_1_1_views_descriptor.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_visitor_no_throw_policy.html">VisitorNoThrowPolicy</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_visitor_throwing_policy.html">VisitorThrowingPolicy</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_wall_clock_timer.html">WallClockTimer</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_workload_data_collector.html">WorkloadDataCollector</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_workload_factory_base.html">WorkloadFactoryBase</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_workload_info.html">WorkloadInfo</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="typedef-members"></a>
Typedefs</h2></td></tr>
<tr class="memitem:ac858d91eedb7b4dba1bcd0aa760ab510"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#ac858d91eedb7b4dba1bcd0aa760ab510">BackendIdVector</a> = std::vector&lt; <a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a> &gt;</td></tr>
<tr class="separator:ac858d91eedb7b4dba1bcd0aa760ab510"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1854d9cda81304325664363c1fd0fb27"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a1854d9cda81304325664363c1fd0fb27">BackendIdSet</a> = std::unordered_set&lt; <a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a> &gt;</td></tr>
<tr class="separator:a1854d9cda81304325664363c1fd0fb27"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ade0af9dacaa52cafdd701bef2e901c77"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#ade0af9dacaa52cafdd701bef2e901c77">IBackendInternalUniquePtr</a> = std::unique_ptr&lt; <a class="el" href="classarmnn_1_1_i_backend_internal.html">IBackendInternal</a> &gt;</td></tr>
<tr class="separator:ade0af9dacaa52cafdd701bef2e901c77"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a754d43dc24a0fe36ecb3044d8f13a413"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a754d43dc24a0fe36ecb3044d8f13a413">DynamicBackendPtr</a> = std::unique_ptr&lt; <a class="el" href="classarmnn_1_1_dynamic_backend.html">DynamicBackend</a> &gt;</td></tr>
<tr class="separator:a754d43dc24a0fe36ecb3044d8f13a413"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a65a0ad0a7b807e70295481a7b9cb93ac"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a65a0ad0a7b807e70295481a7b9cb93ac">IBackendContextUniquePtr</a> = std::unique_ptr&lt; <a class="el" href="classarmnn_1_1_i_backend_context.html">IBackendContext</a> &gt;</td></tr>
<tr class="separator:a65a0ad0a7b807e70295481a7b9cb93ac"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a12bff6d51d63dac1375c89bc8415dc46"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a12bff6d51d63dac1375c89bc8415dc46">IMemoryManagerUniquePtr</a> = std::unique_ptr&lt; <a class="el" href="classarmnn_1_1_i_memory_manager.html">IMemoryManager</a> &gt;</td></tr>
<tr class="separator:a12bff6d51d63dac1375c89bc8415dc46"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac14705405cbcdd580df613de6766fe65"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#ac14705405cbcdd580df613de6766fe65">LogSoftmaxDescriptor</a> = <a class="el" href="structarmnn_1_1_softmax_descriptor.html">SoftmaxDescriptor</a></td></tr>
<tr class="memdesc:ac14705405cbcdd580df613de6766fe65"><td class="mdescLeft">&#160;</td><td class="mdescRight">A LogSoftmaxDescriptor for the <a class="el" href="classarmnn_1_1_log_softmax_layer.html" title="This layer represents a log softmax operation. ">LogSoftmaxLayer</a>. <a href="#ac14705405cbcdd580df613de6766fe65">More...</a><br /></td></tr>
<tr class="separator:ac14705405cbcdd580df613de6766fe65"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3647f60510bc8ddaced01c51b0ee8714"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a3647f60510bc8ddaced01c51b0ee8714">DepthToSpaceDescriptor</a> = <a class="el" href="structarmnn_1_1_space_to_depth_descriptor.html">SpaceToDepthDescriptor</a></td></tr>
<tr class="memdesc:a3647f60510bc8ddaced01c51b0ee8714"><td class="mdescLeft">&#160;</td><td class="mdescRight">A DepthToSpaceDescriptor for the <a class="el" href="classarmnn_1_1_depth_to_space_layer.html" title="This layer represents a DepthToSpace operation. ">DepthToSpaceLayer</a>. <a href="#a3647f60510bc8ddaced01c51b0ee8714">More...</a><br /></td></tr>
<tr class="separator:a3647f60510bc8ddaced01c51b0ee8714"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7863c179ff92feec660c48ab7b95ae55"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a7863c179ff92feec660c48ab7b95ae55">ConcatDescriptor</a> = <a class="el" href="structarmnn_1_1_origins_descriptor.html">OriginsDescriptor</a></td></tr>
<tr class="separator:a7863c179ff92feec660c48ab7b95ae55"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a003d213dd28b0b8c0f26fbf268ccb975"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a003d213dd28b0b8c0f26fbf268ccb975">MergerDescriptor</a> = <a class="el" href="structarmnn_1_1_origins_descriptor.html">OriginsDescriptor</a></td></tr>
<tr class="separator:a003d213dd28b0b8c0f26fbf268ccb975"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a60291543fe872b795e71e05bcd835fd1"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a60291543fe872b795e71e05bcd835fd1">SplitterDescriptor</a> = <a class="el" href="structarmnn_1_1_views_descriptor.html">ViewsDescriptor</a></td></tr>
<tr class="separator:a60291543fe872b795e71e05bcd835fd1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a11fa919c11fe46aad613b2e960fcfe90"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a11fa919c11fe46aad613b2e960fcfe90">ILayerSupportSharedPtr</a> = std::shared_ptr&lt; <a class="el" href="classarmnn_1_1_i_layer_support.html">ILayerSupport</a> &gt;</td></tr>
<tr class="separator:a11fa919c11fe46aad613b2e960fcfe90"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ace74f6f9feb95a964a49d79458232703"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> = std::unique_ptr&lt; <a class="el" href="classarmnn_1_1_i_network.html">INetwork</a>, void(*)(<a class="el" href="classarmnn_1_1_i_network.html">INetwork</a> *network)&gt;</td></tr>
<tr class="separator:ace74f6f9feb95a964a49d79458232703"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a674efcf6cbdb9e831d653ff0e821fb38"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a674efcf6cbdb9e831d653ff0e821fb38">IOptimizedNetworkPtr</a> = std::unique_ptr&lt; <a class="el" href="classarmnn_1_1_i_optimized_network.html">IOptimizedNetwork</a>, void(*)(<a class="el" href="classarmnn_1_1_i_optimized_network.html">IOptimizedNetwork</a> *network)&gt;</td></tr>
<tr class="separator:a674efcf6cbdb9e831d653ff0e821fb38"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a83015160d8c67d5d77735eb0d4033d9a"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a83015160d8c67d5d77735eb0d4033d9a">NetworkId</a> = int</td></tr>
<tr class="separator:a83015160d8c67d5d77735eb0d4033d9a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a150468a02bd7b2d2d061c4aaaee939f0"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a150468a02bd7b2d2d061c4aaaee939f0">IRuntimePtr</a> = std::unique_ptr&lt; <a class="el" href="classarmnn_1_1_i_runtime.html">IRuntime</a>, void(*)(<a class="el" href="classarmnn_1_1_i_runtime.html">IRuntime</a> *runtime)&gt;</td></tr>
<tr class="separator:a150468a02bd7b2d2d061c4aaaee939f0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2d3a708a26ac6d77bf8f15506e89a25a"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a2d3a708a26ac6d77bf8f15506e89a25a">IGpuAccTunedParametersPtr</a> = std::shared_ptr&lt; <a class="el" href="classarmnn_1_1_i_gpu_acc_tuned_parameters.html">IGpuAccTunedParameters</a> &gt;</td></tr>
<tr class="memdesc:a2d3a708a26ac6d77bf8f15506e89a25a"><td class="mdescLeft">&#160;</td><td class="mdescRight">The following API is replaced by the backend options API. <a href="#a2d3a708a26ac6d77bf8f15506e89a25a">More...</a><br /></td></tr>
<tr class="separator:a2d3a708a26ac6d77bf8f15506e89a25a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5b05f3b7208ec7cea3338e30057c0bac"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a5b05f3b7208ec7cea3338e30057c0bac">MemorySourceFlags</a> = unsigned int</td></tr>
<tr class="separator:a5b05f3b7208ec7cea3338e30057c0bac"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a280670a263dc4fd40491f6d0a2737f44"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a280670a263dc4fd40491f6d0a2737f44">BindingPointInfo</a> = std::pair&lt; <a class="el" href="namespacearmnn.html#ab8cf8f9fb6792e654c2d8d8382f6f01b">armnn::LayerBindingId</a>, <a class="el" href="classarmnn_1_1_tensor_info.html">armnn::TensorInfo</a> &gt;</td></tr>
<tr class="separator:a280670a263dc4fd40491f6d0a2737f44"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa01bce88f89975a5a031db4cc8861527"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#aa01bce88f89975a5a031db4cc8861527">InputTensors</a> = std::vector&lt; std::pair&lt; <a class="el" href="namespacearmnn.html#ab8cf8f9fb6792e654c2d8d8382f6f01b">LayerBindingId</a>, class <a class="el" href="classarmnn_1_1_const_tensor.html">ConstTensor</a> &gt; &gt;</td></tr>
<tr class="separator:aa01bce88f89975a5a031db4cc8861527"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8f091a512915d1cb29a4ebf13dfc53ea"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a8f091a512915d1cb29a4ebf13dfc53ea">OutputTensors</a> = std::vector&lt; std::pair&lt; <a class="el" href="namespacearmnn.html#ab8cf8f9fb6792e654c2d8d8382f6f01b">LayerBindingId</a>, class <a class="el" href="classarmnn_1_1_tensor.html">Tensor</a> &gt; &gt;</td></tr>
<tr class="separator:a8f091a512915d1cb29a4ebf13dfc53ea"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae18caa7ee6287aa7f8c2a5ce6bc92382"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#ae18caa7ee6287aa7f8c2a5ce6bc92382">IBackendSharedPtr</a> = std::shared_ptr&lt; <a class="el" href="classarmnn_1_1_i_backend.html">IBackend</a> &gt;</td></tr>
<tr class="separator:ae18caa7ee6287aa7f8c2a5ce6bc92382"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5a665483e56a688e9f8180accdf72d80"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a5a665483e56a688e9f8180accdf72d80">IBackendUniquePtr</a> = std::unique_ptr&lt; <a class="el" href="classarmnn_1_1_i_backend.html">IBackend</a>, void(*)(<a class="el" href="classarmnn_1_1_i_backend.html">IBackend</a> *backend)&gt;</td></tr>
<tr class="separator:a5a665483e56a688e9f8180accdf72d80"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab8cf8f9fb6792e654c2d8d8382f6f01b"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#ab8cf8f9fb6792e654c2d8d8382f6f01b">LayerBindingId</a> = int</td></tr>
<tr class="memdesc:ab8cf8f9fb6792e654c2d8d8382f6f01b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Type of identifiers for bindable layers (inputs, outputs). <a href="#ab8cf8f9fb6792e654c2d8d8382f6f01b">More...</a><br /></td></tr>
<tr class="separator:ab8cf8f9fb6792e654c2d8d8382f6f01b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afad4088a9a058114ee5f87246f87bf49"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#afad4088a9a058114ee5f87246f87bf49">LayerGuid</a> = <a class="el" href="classarmnn_1_1profiling_1_1_profiling_guid.html">profiling::ProfilingGuid</a></td></tr>
<tr class="memdesc:afad4088a9a058114ee5f87246f87bf49"><td class="mdescLeft">&#160;</td><td class="mdescRight">Define LayerGuid type. <a href="#afad4088a9a058114ee5f87246f87bf49">More...</a><br /></td></tr>
<tr class="separator:afad4088a9a058114ee5f87246f87bf49"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a15f3ad9b5e4e3d46b0a6dda246a7bc28"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a15f3ad9b5e4e3d46b0a6dda246a7bc28">DebugCallbackFunction</a> = std::function&lt; void(<a class="el" href="namespacearmnn.html#afad4088a9a058114ee5f87246f87bf49">LayerGuid</a> guid, unsigned int slotIndex, <a class="el" href="classarmnn_1_1_i_tensor_handle.html">ITensorHandle</a> *tensorHandle)&gt;</td></tr>
<tr class="separator:a15f3ad9b5e4e3d46b0a6dda246a7bc28"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a41119e261eec9343888d2ceab1e4999a"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a41119e261eec9343888d2ceab1e4999a">INetworkQuantizerPtr</a> = std::unique_ptr&lt; class <a class="el" href="classarmnn_1_1_i_network_quantizer.html">INetworkQuantizer</a>, void(*)(<a class="el" href="classarmnn_1_1_i_network_quantizer.html">INetworkQuantizer</a> *quantizer)&gt;</td></tr>
<tr class="separator:a41119e261eec9343888d2ceab1e4999a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a15f53f26b8495b51d0bba3d1bc4efc80"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a15f53f26b8495b51d0bba3d1bc4efc80">WorkloadQueue</a> = std::vector&lt; std::unique_ptr&lt; <a class="el" href="classarmnn_1_1_i_workload.html">IWorkload</a> &gt; &gt;</td></tr>
<tr class="separator:a15f53f26b8495b51d0bba3d1bc4efc80"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac6e86c1def7f674d3c4cb7f577874aa6"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#ac6e86c1def7f674d3c4cb7f577874aa6">Coordinates</a> = std::array&lt; unsigned int, <a class="el" href="namespacearmnn.html#abdcd184ed3bd648bb31d385040cafd5d">MaxNumOfTensorDimensions</a> &gt;</td></tr>
<tr class="separator:ac6e86c1def7f674d3c4cb7f577874aa6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a293695a94110c1a0eb77e29c22dce79a"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a293695a94110c1a0eb77e29c22dce79a">Dimensions</a> = std::array&lt; unsigned int, <a class="el" href="namespacearmnn.html#abdcd184ed3bd648bb31d385040cafd5d">MaxNumOfTensorDimensions</a> &gt;</td></tr>
<tr class="separator:a293695a94110c1a0eb77e29c22dce79a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a689de00cadd81b4e35b7448e4fbbc034"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a689de00cadd81b4e35b7448e4fbbc034">CompiledBlobDeleter</a> = std::function&lt; void(const void *)&gt;</td></tr>
<tr class="separator:a689de00cadd81b4e35b7448e4fbbc034"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7b4ac337ed307e0739e628d5b9883856"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a7b4ac337ed307e0739e628d5b9883856">CompiledBlobPtr</a> = std::unique_ptr&lt; void, <a class="el" href="namespacearmnn.html#a689de00cadd81b4e35b7448e4fbbc034">CompiledBlobDeleter</a> &gt;</td></tr>
<tr class="separator:a7b4ac337ed307e0739e628d5b9883856"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a02847c99a2acae3b267615479f93ab55"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a02847c99a2acae3b267615479f93ab55">supported</a> = <a class="el" href="classarmnn_1_1_i_subgraph_view_converter.html">ISubgraphViewConverter</a></td></tr>
<tr class="separator:a02847c99a2acae3b267615479f93ab55"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a419086ecb4dc9d0f9e5d8933c87e2ea2"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a419086ecb4dc9d0f9e5d8933c87e2ea2">LayerPriority</a> = unsigned int</td></tr>
<tr class="separator:a419086ecb4dc9d0f9e5d8933c87e2ea2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae73bf7cb78cc552c5511431b0d583f14"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#ae73bf7cb78cc552c5511431b0d583f14">PreCompiledObjectDeleter</a> = std::function&lt; void(const void *)&gt;</td></tr>
<tr class="separator:ae73bf7cb78cc552c5511431b0d583f14"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae3bff3986cb5a50637c9b3238d821f54"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#ae3bff3986cb5a50637c9b3238d821f54">PreCompiledObjectPtr</a> = std::unique_ptr&lt; void, <a class="el" href="namespacearmnn.html#ae73bf7cb78cc552c5511431b0d583f14">PreCompiledObjectDeleter</a> &gt;</td></tr>
<tr class="separator:ae3bff3986cb5a50637c9b3238d821f54"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6b5db6cc9aad8ec0ac7b14f859aacdab"><td class="memTemplParams" colspan="2">template&lt;LayerType Type&gt; </td></tr>
<tr class="memitem:a6b5db6cc9aad8ec0ac7b14f859aacdab"><td class="memTemplItemLeft" align="right" valign="top">using&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a6b5db6cc9aad8ec0ac7b14f859aacdab">LayerTypeOf</a> = typename <a class="el" href="structarmnn_1_1_layer_type_of_impl.html">LayerTypeOfImpl</a>&lt; Type &gt;::Type</td></tr>
<tr class="separator:a6b5db6cc9aad8ec0ac7b14f859aacdab"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9173495a61a0092b5f38b855f02c3585"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a9173495a61a0092b5f38b855f02c3585">BackendsMap</a> = std::map&lt; <a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a>, std::unique_ptr&lt; class <a class="el" href="classarmnn_1_1_i_backend_internal.html">IBackendInternal</a> &gt; &gt;</td></tr>
<tr class="separator:a9173495a61a0092b5f38b855f02c3585"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9b8e5a95f8c061bbbcdb036915dcb61a"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a9b8e5a95f8c061bbbcdb036915dcb61a">OffsetScalePair</a> = std::pair&lt; float, int &gt;</td></tr>
<tr class="separator:a9b8e5a95f8c061bbbcdb036915dcb61a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9eb69ebdaf4ceb8014e7c8a540266100"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a9eb69ebdaf4ceb8014e7c8a540266100">TContainer</a> = boost::variant&lt; std::vector&lt; float &gt;, std::vector&lt; int &gt;, std::vector&lt; unsigned char &gt; &gt;</td></tr>
<tr class="separator:a9eb69ebdaf4ceb8014e7c8a540266100"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0743ed5e860c316a20b68ca96301b411"><td class="memTemplParams" colspan="2">template&lt;DataType DT&gt; </td></tr>
<tr class="memitem:a0743ed5e860c316a20b68ca96301b411"><td class="memTemplItemLeft" align="right" valign="top">using&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a0743ed5e860c316a20b68ca96301b411">ResolveType</a> = typename <a class="el" href="structarmnn_1_1_resolve_type_impl.html">ResolveTypeImpl</a>&lt; DT &gt;::Type</td></tr>
<tr class="separator:a0743ed5e860c316a20b68ca96301b411"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8c42c6647e31ebe525aeba878d133e45"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a8c42c6647e31ebe525aeba878d133e45">ParameterStringifyFunction</a> = std::function&lt; void(const std::string &amp;name, const std::string &amp;value)&gt;</td></tr>
<tr class="separator:a8c42c6647e31ebe525aeba878d133e45"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a86e4b37c7c48cf5fbc5e99ccc6fd50b7"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a86e4b37c7c48cf5fbc5e99ccc6fd50b7">instead</a> = <a class="el" href="classarmnn_1_1_subgraph_view.html">SubgraphView</a></td></tr>
<tr class="separator:a86e4b37c7c48cf5fbc5e99ccc6fd50b7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a997e96288bdb106c922202e3f33d5d7b"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a997e96288bdb106c922202e3f33d5d7b">MinMaxRange</a> = std::pair&lt; float, float &gt;</td></tr>
<tr class="separator:a997e96288bdb106c922202e3f33d5d7b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac757baefa4b72b54c38f713f86418f8a"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#ac757baefa4b72b54c38f713f86418f8a">MinMaxRanges</a> = std::vector&lt; <a class="el" href="namespacearmnn.html#a997e96288bdb106c922202e3f33d5d7b">MinMaxRange</a> &gt;</td></tr>
<tr class="separator:ac757baefa4b72b54c38f713f86418f8a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a061aafb62b3769f55369845c3990ec7a"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a061aafb62b3769f55369845c3990ec7a">MinMaxRangeMap</a> = std::unordered_map&lt; <a class="el" href="namespacearmnn.html#afad4088a9a058114ee5f87246f87bf49">LayerGuid</a>, <a class="el" href="namespacearmnn.html#ac757baefa4b72b54c38f713f86418f8a">MinMaxRanges</a> &gt;</td></tr>
<tr class="separator:a061aafb62b3769f55369845c3990ec7a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0f38fa92b2468d5378258a2b074c1a31"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a0f38fa92b2468d5378258a2b074c1a31">Half</a> = half_float::half</td></tr>
<tr class="separator:a0f38fa92b2468d5378258a2b074c1a31"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abaedcfd0ae08790c03bfe8ba7586dd84"><td class="memTemplParams" colspan="2">template&lt;typename QueueDescriptor &gt; </td></tr>
<tr class="memitem:abaedcfd0ae08790c03bfe8ba7586dd84"><td class="memTemplItemLeft" align="right" valign="top">using&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#abaedcfd0ae08790c03bfe8ba7586dd84">FloatWorkload</a> = <a class="el" href="classarmnn_1_1_typed_workload.html">TypedWorkload</a>&lt; <a class="el" href="structarmnn_1_1_queue_descriptor.html">QueueDescriptor</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a26e6ed77470c6f2f830ecf874e6c0d55">armnn::DataType::Float16</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">armnn::DataType::Float32</a> &gt;</td></tr>
<tr class="separator:abaedcfd0ae08790c03bfe8ba7586dd84"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0493144f15b35804a133c9aa0b63fcc9"><td class="memTemplParams" colspan="2">template&lt;typename QueueDescriptor &gt; </td></tr>
<tr class="memitem:a0493144f15b35804a133c9aa0b63fcc9"><td class="memTemplItemLeft" align="right" valign="top">using&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a0493144f15b35804a133c9aa0b63fcc9">Float32Workload</a> = <a class="el" href="classarmnn_1_1_typed_workload.html">TypedWorkload</a>&lt; <a class="el" href="structarmnn_1_1_queue_descriptor.html">QueueDescriptor</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">armnn::DataType::Float32</a> &gt;</td></tr>
<tr class="separator:a0493144f15b35804a133c9aa0b63fcc9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad4d53881107428c301d43b5aad16bfe0"><td class="memTemplParams" colspan="2">template&lt;typename QueueDescriptor &gt; </td></tr>
<tr class="memitem:ad4d53881107428c301d43b5aad16bfe0"><td class="memTemplItemLeft" align="right" valign="top">using&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#ad4d53881107428c301d43b5aad16bfe0">Uint8Workload</a> = <a class="el" href="classarmnn_1_1_typed_workload.html">TypedWorkload</a>&lt; <a class="el" href="structarmnn_1_1_queue_descriptor.html">QueueDescriptor</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a0a3f57c876f5a230244c38e1453a8a6e">armnn::DataType::QAsymmU8</a> &gt;</td></tr>
<tr class="separator:ad4d53881107428c301d43b5aad16bfe0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3e4b88b993c90b274e0bd268c35d798e"><td class="memTemplParams" colspan="2">template&lt;typename QueueDescriptor &gt; </td></tr>
<tr class="memitem:a3e4b88b993c90b274e0bd268c35d798e"><td class="memTemplItemLeft" align="right" valign="top">using&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a3e4b88b993c90b274e0bd268c35d798e">Int32Workload</a> = <a class="el" href="classarmnn_1_1_typed_workload.html">TypedWorkload</a>&lt; <a class="el" href="structarmnn_1_1_queue_descriptor.html">QueueDescriptor</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6accedffbc6e5308e33d3843e8bdc0dad7">armnn::DataType::Signed32</a> &gt;</td></tr>
<tr class="separator:a3e4b88b993c90b274e0bd268c35d798e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab539ef5a0c152536da71c8fcc065efb5"><td class="memTemplParams" colspan="2">template&lt;typename QueueDescriptor &gt; </td></tr>
<tr class="memitem:ab539ef5a0c152536da71c8fcc065efb5"><td class="memTemplItemLeft" align="right" valign="top">using&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#ab539ef5a0c152536da71c8fcc065efb5">BooleanWorkload</a> = <a class="el" href="classarmnn_1_1_typed_workload.html">TypedWorkload</a>&lt; <a class="el" href="structarmnn_1_1_queue_descriptor.html">QueueDescriptor</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a27226c864bac7454a8504f8edb15d95b">armnn::DataType::Boolean</a> &gt;</td></tr>
<tr class="separator:ab539ef5a0c152536da71c8fcc065efb5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a20d2055c37fedf3f39db9facf2c8c697"><td class="memTemplParams" colspan="2">template&lt;typename QueueDescriptor &gt; </td></tr>
<tr class="memitem:a20d2055c37fedf3f39db9facf2c8c697"><td class="memTemplItemLeft" align="right" valign="top">using&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a20d2055c37fedf3f39db9facf2c8c697">BaseFloat32ComparisonWorkload</a> = <a class="el" href="classarmnn_1_1_multi_typed_workload.html">MultiTypedWorkload</a>&lt; <a class="el" href="structarmnn_1_1_queue_descriptor.html">QueueDescriptor</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">armnn::DataType::Float32</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a27226c864bac7454a8504f8edb15d95b">armnn::DataType::Boolean</a> &gt;</td></tr>
<tr class="separator:a20d2055c37fedf3f39db9facf2c8c697"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9cbc0957cf0637cc3fd9702086117cc0"><td class="memTemplParams" colspan="2">template&lt;typename QueueDescriptor &gt; </td></tr>
<tr class="memitem:a9cbc0957cf0637cc3fd9702086117cc0"><td class="memTemplItemLeft" align="right" valign="top">using&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a9cbc0957cf0637cc3fd9702086117cc0">BaseUint8ComparisonWorkload</a> = <a class="el" href="classarmnn_1_1_multi_typed_workload.html">MultiTypedWorkload</a>&lt; <a class="el" href="structarmnn_1_1_queue_descriptor.html">QueueDescriptor</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a0a3f57c876f5a230244c38e1453a8a6e">armnn::DataType::QAsymmU8</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a27226c864bac7454a8504f8edb15d95b">armnn::DataType::Boolean</a> &gt;</td></tr>
<tr class="separator:a9cbc0957cf0637cc3fd9702086117cc0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a827d59b5a779a8089017802172817f3c"><td class="memTemplParams" colspan="2">template&lt;typename QueueDescriptor &gt; </td></tr>
<tr class="memitem:a827d59b5a779a8089017802172817f3c"><td class="memTemplItemLeft" align="right" valign="top">using&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a827d59b5a779a8089017802172817f3c">Float16ToFloat32Workload</a> = <a class="el" href="classarmnn_1_1_multi_typed_workload.html">MultiTypedWorkload</a>&lt; <a class="el" href="structarmnn_1_1_queue_descriptor.html">QueueDescriptor</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a26e6ed77470c6f2f830ecf874e6c0d55">armnn::DataType::Float16</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">armnn::DataType::Float32</a> &gt;</td></tr>
<tr class="separator:a827d59b5a779a8089017802172817f3c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6486138451112140f98516c0bee18615"><td class="memTemplParams" colspan="2">template&lt;typename QueueDescriptor &gt; </td></tr>
<tr class="memitem:a6486138451112140f98516c0bee18615"><td class="memTemplItemLeft" align="right" valign="top">using&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a6486138451112140f98516c0bee18615">Float32ToFloat16Workload</a> = <a class="el" href="classarmnn_1_1_multi_typed_workload.html">MultiTypedWorkload</a>&lt; <a class="el" href="structarmnn_1_1_queue_descriptor.html">QueueDescriptor</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">armnn::DataType::Float32</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a26e6ed77470c6f2f830ecf874e6c0d55">armnn::DataType::Float16</a> &gt;</td></tr>
<tr class="separator:a6486138451112140f98516c0bee18615"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6d4fbf927a9d8e68cab1d7965c7dbc44"><td class="memTemplParams" colspan="2">template&lt;typename QueueDescriptor &gt; </td></tr>
<tr class="memitem:a6d4fbf927a9d8e68cab1d7965c7dbc44"><td class="memTemplItemLeft" align="right" valign="top">using&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a6d4fbf927a9d8e68cab1d7965c7dbc44">Uint8ToFloat32Workload</a> = <a class="el" href="classarmnn_1_1_multi_typed_workload.html">MultiTypedWorkload</a>&lt; <a class="el" href="structarmnn_1_1_queue_descriptor.html">QueueDescriptor</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a0a3f57c876f5a230244c38e1453a8a6e">armnn::DataType::QAsymmU8</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">armnn::DataType::Float32</a> &gt;</td></tr>
<tr class="separator:a6d4fbf927a9d8e68cab1d7965c7dbc44"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2231ac018fe2c465f2d42fef597d67e7"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a2231ac018fe2c465f2d42fef597d67e7">InputQueueDescriptor</a> = <a class="el" href="structarmnn_1_1_mem_copy_queue_descriptor.html">MemCopyQueueDescriptor</a></td></tr>
<tr class="separator:a2231ac018fe2c465f2d42fef597d67e7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a37a1a6b381ccc76df203fee023234996"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a37a1a6b381ccc76df203fee023234996">OutputQueueDescriptor</a> = <a class="el" href="structarmnn_1_1_mem_copy_queue_descriptor.html">MemCopyQueueDescriptor</a></td></tr>
<tr class="separator:a37a1a6b381ccc76df203fee023234996"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a308ba160745ba35e1de8d698d0139eb4"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a308ba160745ba35e1de8d698d0139eb4">MergerQueueDescriptor</a> = <a class="el" href="structarmnn_1_1_concat_queue_descriptor.html">ConcatQueueDescriptor</a></td></tr>
<tr class="separator:a308ba160745ba35e1de8d698d0139eb4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a947e07902b1b5d98b57eeae34053146b"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a947e07902b1b5d98b57eeae34053146b">FactoryId</a> = <a class="el" href="classarmnn_1_1_i_tensor_handle_factory.html#a32f4aa6a7089d877af08928139c2c277">ITensorHandleFactory::FactoryId</a></td></tr>
<tr class="separator:a947e07902b1b5d98b57eeae34053146b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a77e1ccec3acbb3dadba3fd4939508b32"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a77e1ccec3acbb3dadba3fd4939508b32">ClGreaterFloat32Workload</a> = <a class="el" href="classarmnn_1_1_cl_greater_workload.html">ClGreaterWorkload</a>&lt; <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">DataType::Float32</a> &gt;</td></tr>
<tr class="separator:a77e1ccec3acbb3dadba3fd4939508b32"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a569ba573145851e753623be817b98e9b"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a569ba573145851e753623be817b98e9b">ClGreaterUint8Workload</a> = <a class="el" href="classarmnn_1_1_cl_greater_workload.html">ClGreaterWorkload</a>&lt; <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a0a3f57c876f5a230244c38e1453a8a6e">DataType::QAsymmU8</a> &gt;</td></tr>
<tr class="separator:a569ba573145851e753623be817b98e9b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a18b8b3bd9e39c84e36ab560978ab64c7"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a18b8b3bd9e39c84e36ab560978ab64c7">NeonGreaterFloat32Workload</a> = <a class="el" href="classarmnn_1_1_neon_greater_workload.html">NeonGreaterWorkload</a>&lt; <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">DataType::Float32</a> &gt;</td></tr>
<tr class="separator:a18b8b3bd9e39c84e36ab560978ab64c7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9b0bb8592cd6e6cb693d305825fae448"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a9b0bb8592cd6e6cb693d305825fae448">NeonGreaterUint8Workload</a> = <a class="el" href="classarmnn_1_1_neon_greater_workload.html">NeonGreaterWorkload</a>&lt; <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a0a3f57c876f5a230244c38e1453a8a6e">DataType::QAsymmU8</a> &gt;</td></tr>
<tr class="separator:a9b0bb8592cd6e6cb693d305825fae448"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac8d7aa6e66fb59a839833b160f619228"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#ac8d7aa6e66fb59a839833b160f619228">RefDebugFloat16Workload</a> = <a class="el" href="classarmnn_1_1_ref_debug_workload.html">RefDebugWorkload</a>&lt; <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a26e6ed77470c6f2f830ecf874e6c0d55">DataType::Float16</a> &gt;</td></tr>
<tr class="separator:ac8d7aa6e66fb59a839833b160f619228"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad194629946077375dcce05b2449334c8"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#ad194629946077375dcce05b2449334c8">RefDebugFloat32Workload</a> = <a class="el" href="classarmnn_1_1_ref_debug_workload.html">RefDebugWorkload</a>&lt; <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">DataType::Float32</a> &gt;</td></tr>
<tr class="separator:ad194629946077375dcce05b2449334c8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0c1df21c99a094d2f078ca90047a73ff"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a0c1df21c99a094d2f078ca90047a73ff">RefDebugQAsymmU8Workload</a> = <a class="el" href="classarmnn_1_1_ref_debug_workload.html">RefDebugWorkload</a>&lt; <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a0a3f57c876f5a230244c38e1453a8a6e">DataType::QAsymmU8</a> &gt;</td></tr>
<tr class="separator:a0c1df21c99a094d2f078ca90047a73ff"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a44ab486f2a7728d75bbf52ffa1025ab5"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a44ab486f2a7728d75bbf52ffa1025ab5">RefDebugQAsymmS8Workload</a> = <a class="el" href="classarmnn_1_1_ref_debug_workload.html">RefDebugWorkload</a>&lt; <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a9d02ea768c081d4bdb2b7cab0b3f510d">DataType::QAsymmS8</a> &gt;</td></tr>
<tr class="separator:a44ab486f2a7728d75bbf52ffa1025ab5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae6d1d064ec7d33b2cc5bcc8afafbe193"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#ae6d1d064ec7d33b2cc5bcc8afafbe193">RefDebugQSymmS16Workload</a> = <a class="el" href="classarmnn_1_1_ref_debug_workload.html">RefDebugWorkload</a>&lt; <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7">DataType::QSymmS16</a> &gt;</td></tr>
<tr class="separator:ae6d1d064ec7d33b2cc5bcc8afafbe193"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad607a96fafba334ba5bde946947dd0af"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#ad607a96fafba334ba5bde946947dd0af">RefDebugQSymmS8Workload</a> = <a class="el" href="classarmnn_1_1_ref_debug_workload.html">RefDebugWorkload</a>&lt; <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a9945327825b115e93a3b89f4302e76db">DataType::QSymmS8</a> &gt;</td></tr>
<tr class="separator:ad607a96fafba334ba5bde946947dd0af"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2b2b0a60cbb51bf3eb9bd2899aee2c86"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a2b2b0a60cbb51bf3eb9bd2899aee2c86">RefDebugSigned32Workload</a> = <a class="el" href="classarmnn_1_1_ref_debug_workload.html">RefDebugWorkload</a>&lt; <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6accedffbc6e5308e33d3843e8bdc0dad7">DataType::Signed32</a> &gt;</td></tr>
<tr class="separator:a2b2b0a60cbb51bf3eb9bd2899aee2c86"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7a9d365fbb868d53e67c4cdfdbf9cf7e"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a7a9d365fbb868d53e67c4cdfdbf9cf7e">RefAdditionWorkload</a> = <a class="el" href="classarmnn_1_1_ref_elementwise_workload.html">RefElementwiseWorkload</a>&lt; std::plus&lt; float &gt;, <a class="el" href="structarmnn_1_1_addition_queue_descriptor.html">AdditionQueueDescriptor</a>, <a class="el" href="structarmnn_1_1_string_mapping.html#a4e7b349a05a558fa6792c71c11a6bf11a5b84f797c82a1ad494549330af517ad5">StringMapping::RefAdditionWorkload_Execute</a> &gt;</td></tr>
<tr class="separator:a7a9d365fbb868d53e67c4cdfdbf9cf7e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a01853f5d02495c04636016c1e3e7c144"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a01853f5d02495c04636016c1e3e7c144">RefSubtractionWorkload</a> = <a class="el" href="classarmnn_1_1_ref_elementwise_workload.html">RefElementwiseWorkload</a>&lt; std::minus&lt; float &gt;, <a class="el" href="structarmnn_1_1_subtraction_queue_descriptor.html">SubtractionQueueDescriptor</a>, <a class="el" href="structarmnn_1_1_string_mapping.html#a4e7b349a05a558fa6792c71c11a6bf11a3694ad0341ebb1fe50b78efe13672519">StringMapping::RefSubtractionWorkload_Execute</a> &gt;</td></tr>
<tr class="separator:a01853f5d02495c04636016c1e3e7c144"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aabff736a576814611f65ce1a14600a17"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#aabff736a576814611f65ce1a14600a17">RefMultiplicationWorkload</a> = <a class="el" href="classarmnn_1_1_ref_elementwise_workload.html">RefElementwiseWorkload</a>&lt; std::multiplies&lt; float &gt;, <a class="el" href="structarmnn_1_1_multiplication_queue_descriptor.html">MultiplicationQueueDescriptor</a>, <a class="el" href="structarmnn_1_1_string_mapping.html#a4e7b349a05a558fa6792c71c11a6bf11ab3eb648f0f29bf56db68d80624b9bb6c">StringMapping::RefMultiplicationWorkload_Execute</a> &gt;</td></tr>
<tr class="separator:aabff736a576814611f65ce1a14600a17"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5c3a2aa3adc87d79164914b63f27dc25"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a5c3a2aa3adc87d79164914b63f27dc25">RefDivisionWorkload</a> = <a class="el" href="classarmnn_1_1_ref_elementwise_workload.html">RefElementwiseWorkload</a>&lt; std::divides&lt; float &gt;, <a class="el" href="structarmnn_1_1_division_queue_descriptor.html">DivisionQueueDescriptor</a>, <a class="el" href="structarmnn_1_1_string_mapping.html#a4e7b349a05a558fa6792c71c11a6bf11a69485fd6282ca5ed7d50589f8f759645">StringMapping::RefDivisionWorkload_Execute</a> &gt;</td></tr>
<tr class="separator:a5c3a2aa3adc87d79164914b63f27dc25"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a044df856403d0af13189f49bcfb209dd"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a044df856403d0af13189f49bcfb209dd">RefMaximumWorkload</a> = <a class="el" href="classarmnn_1_1_ref_elementwise_workload.html">RefElementwiseWorkload</a>&lt; <a class="el" href="structarmnn_1_1maximum.html">armnn::maximum</a>&lt; float &gt;, <a class="el" href="structarmnn_1_1_maximum_queue_descriptor.html">MaximumQueueDescriptor</a>, <a class="el" href="structarmnn_1_1_string_mapping.html#a4e7b349a05a558fa6792c71c11a6bf11aea93564675347f60a80cf699c177a80e">StringMapping::RefMaximumWorkload_Execute</a> &gt;</td></tr>
<tr class="separator:a044df856403d0af13189f49bcfb209dd"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa8c69a3741eafef59e51564511403fb8"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#aa8c69a3741eafef59e51564511403fb8">RefMinimumWorkload</a> = <a class="el" href="classarmnn_1_1_ref_elementwise_workload.html">RefElementwiseWorkload</a>&lt; <a class="el" href="structarmnn_1_1minimum.html">armnn::minimum</a>&lt; float &gt;, <a class="el" href="structarmnn_1_1_minimum_queue_descriptor.html">MinimumQueueDescriptor</a>, <a class="el" href="structarmnn_1_1_string_mapping.html#a4e7b349a05a558fa6792c71c11a6bf11a9bddcf9777d5ca3ab5e40b3a93559625">StringMapping::RefMinimumWorkload_Execute</a> &gt;</td></tr>
<tr class="separator:aa8c69a3741eafef59e51564511403fb8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aef8145fff0dca42e42786745414fec96"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#aef8145fff0dca42e42786745414fec96">RefPadFloat32Workload</a> = <a class="el" href="classarmnn_1_1_ref_pad_workload.html">RefPadWorkload</a>&lt; <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">DataType::Float32</a> &gt;</td></tr>
<tr class="separator:aef8145fff0dca42e42786745414fec96"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9e2582f828ee36a6bce3e1abdd660bc5"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a9e2582f828ee36a6bce3e1abdd660bc5">RefPadFloat16Workload</a> = <a class="el" href="classarmnn_1_1_ref_pad_workload.html">RefPadWorkload</a>&lt; <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a26e6ed77470c6f2f830ecf874e6c0d55">DataType::Float16</a> &gt;</td></tr>
<tr class="separator:a9e2582f828ee36a6bce3e1abdd660bc5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abc074517cf18f4e0827faca852df7bd9"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#abc074517cf18f4e0827faca852df7bd9">RefPadQAsymm8Workload</a> = <a class="el" href="classarmnn_1_1_ref_pad_workload.html">RefPadWorkload</a>&lt; <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a0a3f57c876f5a230244c38e1453a8a6e">DataType::QAsymmU8</a> &gt;</td></tr>
<tr class="separator:abc074517cf18f4e0827faca852df7bd9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:acc8fc2b1c708fd1c7af0d04e004e8516"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#acc8fc2b1c708fd1c7af0d04e004e8516">RefPadQSymm16Workload</a> = <a class="el" href="classarmnn_1_1_ref_pad_workload.html">RefPadWorkload</a>&lt; <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7">DataType::QSymmS16</a> &gt;</td></tr>
<tr class="separator:acc8fc2b1c708fd1c7af0d04e004e8516"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad1c0fb6bfa580b04574ab56971b6cbc6"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#ad1c0fb6bfa580b04574ab56971b6cbc6">RefPermuteFloat16Workload</a> = <a class="el" href="classarmnn_1_1_ref_permute_workload.html">RefPermuteWorkload</a>&lt; <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a26e6ed77470c6f2f830ecf874e6c0d55">DataType::Float16</a> &gt;</td></tr>
<tr class="separator:ad1c0fb6bfa580b04574ab56971b6cbc6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a54c3f7c7b9909e828a084f68dc78a031"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a54c3f7c7b9909e828a084f68dc78a031">RefPermuteFloat32Workload</a> = <a class="el" href="classarmnn_1_1_ref_permute_workload.html">RefPermuteWorkload</a>&lt; <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">DataType::Float32</a> &gt;</td></tr>
<tr class="separator:a54c3f7c7b9909e828a084f68dc78a031"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a50ffe5068ecb2fbf7f73b30ef0d753f8"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a50ffe5068ecb2fbf7f73b30ef0d753f8">RefPermuteQAsymm8Workload</a> = <a class="el" href="classarmnn_1_1_ref_permute_workload.html">RefPermuteWorkload</a>&lt; <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a0a3f57c876f5a230244c38e1453a8a6e">DataType::QAsymmU8</a> &gt;</td></tr>
<tr class="separator:a50ffe5068ecb2fbf7f73b30ef0d753f8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6ffed93fad525ce1d534cec2cdaee6bd"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a6ffed93fad525ce1d534cec2cdaee6bd">RefPermuteQSymm16Workload</a> = <a class="el" href="classarmnn_1_1_ref_permute_workload.html">RefPermuteWorkload</a>&lt; <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7">DataType::QSymmS16</a> &gt;</td></tr>
<tr class="separator:a6ffed93fad525ce1d534cec2cdaee6bd"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="enum-members"></a>
Enumerations</h2></td></tr>
<tr class="memitem:ae2f04a162585c0a5222a537efd5456ae"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#ae2f04a162585c0a5222a537efd5456ae">Compute</a> { <a class="el" href="namespacearmnn.html#ae2f04a162585c0a5222a537efd5456aeaec0fc0100c4fc1ce4eea230c3dc10360">Undefined</a> = 0,
<a class="el" href="namespacearmnn.html#ae2f04a162585c0a5222a537efd5456aea83c2c4e9b658ccafbcbe6309c5d84c64">CpuRef</a> = 1,
<a class="el" href="namespacearmnn.html#ae2f04a162585c0a5222a537efd5456aea39f8662ca778258e9c6a14f26fec5ec1">CpuAcc</a> = 2,
<a class="el" href="namespacearmnn.html#ae2f04a162585c0a5222a537efd5456aeafaa4524e3df19ada32643ce9a222362b">GpuAcc</a> = 3
}</td></tr>
<tr class="separator:ae2f04a162585c0a5222a537efd5456ae"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aff209afc1dc598da399e3e78617ce016"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#aff209afc1dc598da399e3e78617ce016">EdgeStrategy</a> { <a class="el" href="namespacearmnn.html#aff209afc1dc598da399e3e78617ce016aec0fc0100c4fc1ce4eea230c3dc10360">Undefined</a>,
<a class="el" href="namespacearmnn.html#aff209afc1dc598da399e3e78617ce016a78d1be0baa31e083ae8da99aaedaf650">DirectCompatibility</a>,
<a class="el" href="namespacearmnn.html#aff209afc1dc598da399e3e78617ce016a46e8b7bfd6fd3c0cb34a100478a39189">ExportToTarget</a>,
<a class="el" href="namespacearmnn.html#aff209afc1dc598da399e3e78617ce016ac366da48cc11956ae377a77751936852">CopyToTarget</a>
}</td></tr>
<tr class="separator:aff209afc1dc598da399e3e78617ce016"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4dc0adc6737b5944e7671bee71788407"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407">BoostLogSeverityMapping</a> { <br />
&#160;&#160;<a class="el" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407a04a75036e9d520bb983c5ed03b8d0182">trace</a>,
<a class="el" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407aad42f6697b035b7580e4fef93be20b4d">debug</a>,
<a class="el" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>,
<a class="el" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407a7b83d3f08fa392b79e3f553b585971cd">warning</a>,
<br />
&#160;&#160;<a class="el" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acb5e100e5a9a3e7f6d1fd97512215282">error</a>,
<a class="el" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407adf6402fd9ecc60f5a2159fdf45711cd4">fatal</a>
<br />
}</td></tr>
<tr class="separator:a4dc0adc6737b5944e7671bee71788407"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0fc99721e27eb20ecd0ea85a3cc8b488"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a0fc99721e27eb20ecd0ea85a3cc8b488">MemorySource</a> { <a class="el" href="namespacearmnn.html#a0fc99721e27eb20ecd0ea85a3cc8b488aec0fc0100c4fc1ce4eea230c3dc10360">Undefined</a> = 0,
<a class="el" href="namespacearmnn.html#a0fc99721e27eb20ecd0ea85a3cc8b488a1131a914388fac73e5f07b0ba0aad523">Malloc</a> = 1,
<a class="el" href="namespacearmnn.html#a0fc99721e27eb20ecd0ea85a3cc8b488a966e13d8aabbff3966a5cd28d67b4846">DmaBuf</a> = 2,
<a class="el" href="namespacearmnn.html#a0fc99721e27eb20ecd0ea85a3cc8b488a7f9067c59dd34aca0ad09a7f283ed1f8">DmaBufProtected</a> = 4
}</td></tr>
<tr class="separator:a0fc99721e27eb20ecd0ea85a3cc8b488"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a67a0db04d321a74b7e7fcfd3f1a3f70b"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a67a0db04d321a74b7e7fcfd3f1a3f70b">Status</a> { <a class="el" href="namespacearmnn.html#a67a0db04d321a74b7e7fcfd3f1a3f70ba505a83f220c02df2f85c3810cd9ceb38">Success</a> = 0,
<a class="el" href="namespacearmnn.html#a67a0db04d321a74b7e7fcfd3f1a3f70bae139a585510a502bbf1841cf589f5086">Failure</a> = 1
}</td></tr>
<tr class="separator:a67a0db04d321a74b7e7fcfd3f1a3f70b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad8ed01ff3ff33333d8e19db4d2818bb6"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a> { <br />
&#160;&#160;<a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a26e6ed77470c6f2f830ecf874e6c0d55">Float16</a> = 0,
<a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">Float32</a> = 1,
<a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a0a3f57c876f5a230244c38e1453a8a6e">QAsymmU8</a> = 2,
<a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6accedffbc6e5308e33d3843e8bdc0dad7">Signed32</a> = 3,
<br />
&#160;&#160;<a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a27226c864bac7454a8504f8edb15d95b">Boolean</a> = 4,
<a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7">QSymmS16</a> = 5,
<a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a34346ec9593088efe3a29c0dad92166d">QuantizedSymm8PerAxis</a> = 6,
<a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a9945327825b115e93a3b89f4302e76db">QSymmS8</a> = 7,
<br />
&#160;&#160;<a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a9d02ea768c081d4bdb2b7cab0b3f510d">QAsymmS8</a> = 8,
<a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a09238d8d078e53edec6700d0f74ce91c">QuantisedAsymm8</a> = QAsymmU8,
<a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a80292d3a80d2993040e48c32b7fa7f82">QuantisedSymm16</a> = QSymmS16
<br />
}</td></tr>
<tr class="separator:ad8ed01ff3ff33333d8e19db4d2818bb6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad1d5cce2d9e9a5d61c243e5c989112e0"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0">DataLayout</a> { <a class="el" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0a6b99f356fe3b30a2a850b5ea897c289f">NCHW</a> = 1,
<a class="el" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0ad066db54b89b0912e7e7c6da51e2da51">NHWC</a> = 2
}</td></tr>
<tr class="separator:ad1d5cce2d9e9a5d61c243e5c989112e0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a56297e0f7b215eea46c818cb7528d9ea"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a56297e0f7b215eea46c818cb7528d9ea">ActivationFunction</a> { <br />
&#160;&#160;<a class="el" href="namespacearmnn.html#a56297e0f7b215eea46c818cb7528d9eaa21eebb164e4b8b9bcf64fdb4d8d5dff4">Sigmoid</a> = 0,
<a class="el" href="namespacearmnn.html#a56297e0f7b215eea46c818cb7528d9eaa23b68da1de2b77d74da9da2635722a3e">TanH</a> = 1,
<a class="el" href="namespacearmnn.html#a56297e0f7b215eea46c818cb7528d9eaa32a843da6ea40ab3b17a3421ccdf671b">Linear</a> = 2,
<a class="el" href="namespacearmnn.html#a56297e0f7b215eea46c818cb7528d9eaa3d90c0a5ab3fcf8e6f6608cb3d3a1559">ReLu</a> = 3,
<br />
&#160;&#160;<a class="el" href="namespacearmnn.html#a56297e0f7b215eea46c818cb7528d9eaabc5a0f0d6e7cf7fca73299dcd46c0f0d">BoundedReLu</a> = 4,
<a class="el" href="namespacearmnn.html#a56297e0f7b215eea46c818cb7528d9eaa6bba7052636d1740303b1b2ef3b53fef">SoftReLu</a> = 5,
<a class="el" href="namespacearmnn.html#a56297e0f7b215eea46c818cb7528d9eaacb7667f5ec2f6e8a5943b781ba6c2735">LeakyReLu</a> = 6,
<a class="el" href="namespacearmnn.html#a56297e0f7b215eea46c818cb7528d9eaa1e34af023adeb7d5f484f8eb4b9826b6">Abs</a> = 7,
<br />
&#160;&#160;<a class="el" href="namespacearmnn.html#a56297e0f7b215eea46c818cb7528d9eaaae77f3ad25595e35b327334d89410054">Sqrt</a> = 8,
<a class="el" href="namespacearmnn.html#a56297e0f7b215eea46c818cb7528d9eaaceb46ca115d05c51aa5a16a8867c3304">Square</a> = 9
<br />
}</td></tr>
<tr class="separator:a56297e0f7b215eea46c818cb7528d9ea"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae7e8cbf71db6a490789ca6dcaa8deeae"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#ae7e8cbf71db6a490789ca6dcaa8deeae">ArgMinMaxFunction</a> { <a class="el" href="namespacearmnn.html#ae7e8cbf71db6a490789ca6dcaa8deeaea78d811e98514cd165dda532286610fd2">Min</a> = 0,
<a class="el" href="namespacearmnn.html#ae7e8cbf71db6a490789ca6dcaa8deeaea6a061313d22e51e0f25b7cd4dc065233">Max</a> = 1
}</td></tr>
<tr class="separator:ae7e8cbf71db6a490789ca6dcaa8deeae"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2d299363c9fc33334c571fa29ca4f58c"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a2d299363c9fc33334c571fa29ca4f58c">ComparisonOperation</a> { <br />
&#160;&#160;<a class="el" href="namespacearmnn.html#a2d299363c9fc33334c571fa29ca4f58caf5f286e73bda105e538310b3190f75c5">Equal</a> = 0,
<a class="el" href="namespacearmnn.html#a2d299363c9fc33334c571fa29ca4f58ca8768a6821cd735aea4f5b0df88c1fc6a">Greater</a> = 1,
<a class="el" href="namespacearmnn.html#a2d299363c9fc33334c571fa29ca4f58ca6f2f0aefb3d22da0f3839453add5f937">GreaterOrEqual</a> = 2,
<a class="el" href="namespacearmnn.html#a2d299363c9fc33334c571fa29ca4f58ca1cfdf0e8d0c87a228c1f40d9bee7888b">Less</a> = 3,
<br />
&#160;&#160;<a class="el" href="namespacearmnn.html#a2d299363c9fc33334c571fa29ca4f58caa4cbdbb6070a5abb35fc95ecf1e22c14">LessOrEqual</a> = 4,
<a class="el" href="namespacearmnn.html#a2d299363c9fc33334c571fa29ca4f58ca19bb0af2c3c530538cb41aff7f235b96">NotEqual</a> = 5
<br />
}</td></tr>
<tr class="separator:a2d299363c9fc33334c571fa29ca4f58c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1cfaa710db2a54673b21d2ea2da757c8"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a1cfaa710db2a54673b21d2ea2da757c8">UnaryOperation</a> { <br />
&#160;&#160;<a class="el" href="namespacearmnn.html#a1cfaa710db2a54673b21d2ea2da757c8a1e34af023adeb7d5f484f8eb4b9826b6">Abs</a> = 0,
<a class="el" href="namespacearmnn.html#a1cfaa710db2a54673b21d2ea2da757c8acad39a154bffb61175f674d6eefaf6d0">Exp</a> = 1,
<a class="el" href="namespacearmnn.html#a1cfaa710db2a54673b21d2ea2da757c8aae77f3ad25595e35b327334d89410054">Sqrt</a> = 2,
<a class="el" href="namespacearmnn.html#a1cfaa710db2a54673b21d2ea2da757c8a09bb7f6e2118c85a6a55bd4bf2beeca4">Rsqrt</a> = 3,
<br />
&#160;&#160;<a class="el" href="namespacearmnn.html#a1cfaa710db2a54673b21d2ea2da757c8afb278fa5defd7e699fcbc930c3e76ccd">Neg</a> = 4
<br />
}</td></tr>
<tr class="separator:a1cfaa710db2a54673b21d2ea2da757c8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a961bbfe1db71a848eff5a1f0ab775718"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a961bbfe1db71a848eff5a1f0ab775718">PoolingAlgorithm</a> { <a class="el" href="namespacearmnn.html#a961bbfe1db71a848eff5a1f0ab775718a6a061313d22e51e0f25b7cd4dc065233">Max</a> = 0,
<a class="el" href="namespacearmnn.html#a961bbfe1db71a848eff5a1f0ab775718ab1897515d548a960afe49ecf66a29021">Average</a> = 1,
<a class="el" href="namespacearmnn.html#a961bbfe1db71a848eff5a1f0ab775718a7e6aa2d53f6ee2b1a34b017fa403cb76">L2</a> = 2
}</td></tr>
<tr class="separator:a961bbfe1db71a848eff5a1f0ab775718"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9a2af2f8c4af4f9efa8e79417d505ac4"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a9a2af2f8c4af4f9efa8e79417d505ac4">ResizeMethod</a> { <a class="el" href="namespacearmnn.html#a9a2af2f8c4af4f9efa8e79417d505ac4aaf17c98bbd83c27d6426d2ff3fa81d7f">Bilinear</a> = 0,
<a class="el" href="namespacearmnn.html#a9a2af2f8c4af4f9efa8e79417d505ac4aaa020331bb30d2fa2ecf7c3a0777823f">NearestNeighbor</a> = 1
}</td></tr>
<tr class="separator:a9a2af2f8c4af4f9efa8e79417d505ac4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3888429b6ebc79f9a7df549e5e4d9a2f"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a3888429b6ebc79f9a7df549e5e4d9a2f">PaddingMethod</a> { <a class="el" href="namespacearmnn.html#a3888429b6ebc79f9a7df549e5e4d9a2faad301514192636ad34210adce598a45a">IgnoreValue</a> = 0,
<a class="el" href="namespacearmnn.html#a3888429b6ebc79f9a7df549e5e4d9a2fa843f2812f595e7ec7c5036e89fde02d6">Exclude</a> = 1
}</td></tr>
<tr class="separator:a3888429b6ebc79f9a7df549e5e4d9a2f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abe18a5033f2ab9c0de82c676b48f5437"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#abe18a5033f2ab9c0de82c676b48f5437">NormalizationAlgorithmChannel</a> { <a class="el" href="namespacearmnn.html#abe18a5033f2ab9c0de82c676b48f5437a810f43f3996922151c39b76143faeecc">Across</a> = 0,
<a class="el" href="namespacearmnn.html#abe18a5033f2ab9c0de82c676b48f5437a37bac6dce4f46277d89bfa3003e2e39b">Within</a> = 1
}</td></tr>
<tr class="separator:abe18a5033f2ab9c0de82c676b48f5437"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad605d1661fa0d8c7fea651d82fbe11c9"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#ad605d1661fa0d8c7fea651d82fbe11c9">NormalizationAlgorithmMethod</a> { <a class="el" href="namespacearmnn.html#ad605d1661fa0d8c7fea651d82fbe11c9ac65d2e51c610dd3853a3c777aa8bfe9d">LocalBrightness</a> = 0,
<a class="el" href="namespacearmnn.html#ad605d1661fa0d8c7fea651d82fbe11c9aa94d2fcabc6b001015aeddfa19266e6f">LocalContrast</a> = 1
}</td></tr>
<tr class="separator:ad605d1661fa0d8c7fea651d82fbe11c9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:adf2e5515c4c36a3e7e46bb8b83c6754e"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#adf2e5515c4c36a3e7e46bb8b83c6754e">OutputShapeRounding</a> { <a class="el" href="namespacearmnn.html#adf2e5515c4c36a3e7e46bb8b83c6754eaf3f6d0343d56ce88ce7958170ed05cb3">Floor</a> = 0,
<a class="el" href="namespacearmnn.html#adf2e5515c4c36a3e7e46bb8b83c6754ea3237fbc8204064c106cb9080088a17cb">Ceiling</a> = 1
}</td></tr>
<tr class="separator:adf2e5515c4c36a3e7e46bb8b83c6754e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a93a3ba385cad27c4774e5fe64c025d3d"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a93a3ba385cad27c4774e5fe64c025d3d">LogSeverity</a> { <br />
&#160;&#160;<a class="el" href="namespacearmnn.html#a93a3ba385cad27c4774e5fe64c025d3dadd4ec0ac4e58f7c32a01244ae91150b1">Trace</a>,
<a class="el" href="namespacearmnn.html#a93a3ba385cad27c4774e5fe64c025d3daa603905470e2a5b8c13e96b579ef0dba">Debug</a>,
<a class="el" href="namespacearmnn.html#a93a3ba385cad27c4774e5fe64c025d3da4059b0251f66a18cb56f544728796875">Info</a>,
<a class="el" href="namespacearmnn.html#a93a3ba385cad27c4774e5fe64c025d3da0eaadb4fcb48a0a0ed7bc9868be9fbaa">Warning</a>,
<br />
&#160;&#160;<a class="el" href="namespacearmnn.html#a93a3ba385cad27c4774e5fe64c025d3da902b0d55fddef6f8d651fe1035b7d4bd">Error</a>,
<a class="el" href="namespacearmnn.html#a93a3ba385cad27c4774e5fe64c025d3da882384ec38ce8d9582b57e70861730e4">Fatal</a>
<br />
}</td></tr>
<tr class="separator:a93a3ba385cad27c4774e5fe64c025d3d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a34eaed09302a4d7bfe930c13a7673e0b"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a34eaed09302a4d7bfe930c13a7673e0b">GraphEvent</a> { <a class="el" href="namespacearmnn.html#a34eaed09302a4d7bfe930c13a7673e0ba23c3efdd3f80798660ecf0b9af6dd5dd">LayerAdded</a>,
<a class="el" href="namespacearmnn.html#a34eaed09302a4d7bfe930c13a7673e0bad6e393dc30fd33cbcb5f6ab199093528">LayerErased</a>
}</td></tr>
<tr class="separator:a34eaed09302a4d7bfe930c13a7673e0b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a56943a0946e5f15e5e58054b8e7a04a4"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a> { <br />
&#160;&#160;<a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4ae66a93a31fb93839c8369265cd44695c">FirstLayer</a>,
<a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4aa9a62e70841c4d06dd16306a85700d36">Activation</a> = FirstLayer,
<a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4a7c5531bbefed0945814f874baf9e0e0f">Addition</a>,
<a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4a2139684546b147c106b329f41547640c">ArgMinMax</a>,
<br />
&#160;&#160;<a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4ae4743c3ec15d1d84169b17264634692e">BatchNormalization</a>,
<a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4a6ee06c6045d0c5b6565a247955ef0fc2">BatchToSpaceNd</a>,
<a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4af6c0e3a1c3cfabd32ae8d3ae741fcf0a">Comparison</a>,
<a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4ae20f0f2826a6549809f050b86274567f">Concat</a>,
<br />
&#160;&#160;<a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4acb17869fe51048b5a5c4c6106551a255">Constant</a>,
<a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4a912a4b4d73726c282e3f79aa2c390d6c">ConvertFp16ToFp32</a>,
<a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4addf4f83b056acd5549949fc0350e9aad">ConvertFp32ToFp16</a>,
<a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4adb033d2f81b68f9a17e8f62de69fed4a">Convolution2d</a>,
<br />
&#160;&#160;<a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4aa603905470e2a5b8c13e96b579ef0dba">Debug</a>,
<a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4a731729ad1b2c0eb9399b62c770b3482d">DepthToSpace</a>,
<a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4af97adbfc88b7012a0243215b1076e7e7">DepthwiseConvolution2d</a>,
<a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4a9bc35e069257a508e14ed82965a8661d">Dequantize</a>,
<br />
&#160;&#160;<a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4a1db19222ac424bd7162142ddf929fd2a">DetectionPostProcess</a>,
<a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4a3025cdaab2deb0bb2cd642449e570833">Division</a>,
<a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4abcd30d7ea97ad20c2cddc0f47e6b70c7">ElementwiseUnary</a>,
<a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4a3489c7b05e180496cb2ce8ac73887f48">FakeQuantization</a>,
<br />
&#160;&#160;<a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4af3f6d0343d56ce88ce7958170ed05cb3">Floor</a>,
<a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4acab78faff25393e9defd1911cb58133e">FullyConnected</a>,
<a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4aad22c799930d644e8468fe44c0312d53">Gather</a>,
<a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4a324118a6721dd6b8a9b9f4e327df2bf5">Input</a>,
<br />
&#160;&#160;<a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4a21baa4498161d195f5bb2e3627344ba4">InstanceNormalization</a>,
<a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4a1189467870bc421ae59277e750263eb2">L2Normalization</a>,
<a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4ac21dbda57d88c21ec9857f5d1522c488">LogSoftmax</a>,
<a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4a06b091bc9aea697ba473c71f0bb55925">Lstm</a>,
<br />
&#160;&#160;<a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4a8321e79c278ec510f63675c040594892">Maximum</a>,
<a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4a3d6c9ac08ada31c184094bbc67afe00d">Mean</a>,
<a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4a4dd48794eb3305a0f5aece88b111a97b">MemCopy</a>,
<a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4a115bfc5d633eae55c67f9588acdd2bf9">MemImport</a>,
<br />
&#160;&#160;<a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4a68be4837f6c739877233e527a996dd00">Merge</a>,
<a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4aa1d0ec6d56f8833a078b5a7ac4caf2d4">Minimum</a>,
<a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4a27d1a1f7b7c2180e5b20ce9e3d00e2dd">Multiplication</a>,
<a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4aac61f2e17250a818dee4d12b112aa88f">Normalization</a>,
<br />
&#160;&#160;<a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4a29c2c02a361c9d7028472e5d92cd4a54">Output</a>,
<a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4ade43468adaf6acb2c38ebc0c1176f82f">Pad</a>,
<a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4afa662c6eb71caef475b2b981ce8eccd7">Permute</a>,
<a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4ad662867a41bfb30b9f75dda2b5849001">Pooling2d</a>,
<br />
&#160;&#160;<a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4a1ba143ebe524d46181a4b53470693278">PreCompiled</a>,
<a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4a0c5967f09e0669c840ebb1ed0da85e32">Prelu</a>,
<a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4aca39930e22f40d10155a57dba32240bb">Quantize</a>,
<a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4a890a37ff3bfe123414ba7e6f052b49f3">QuantizedLstm</a>,
<br />
&#160;&#160;<a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4aa7c59ccedc6a3bd90c17f3b990afefad">Reshape</a>,
<a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4a9d723d04c40bfd81835c0766a698cf63">Resize</a>,
<a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4ad140d37ad98c12ccd8e1c432f548bcdb">Slice</a>,
<a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4a31d953b9d49a6b4378f45097047976d0">Softmax</a>,
<br />
&#160;&#160;<a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4a337c392144dca0d18290c6b4711a2279">SpaceToBatchNd</a>,
<a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4a5e7ff12da912dc79e7e547281823fa4a">SpaceToDepth</a>,
<a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4a41cb9b797ebc6f6f6314e3ded935f4cf">Splitter</a>,
<a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4a2187e1021a911b3807cc1bea2eb1a9ca">Stack</a>,
<br />
&#160;&#160;<a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4a93bca63ecbb003649425dd0e4ba79a99">StandIn</a>,
<a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4aa31904f2b3479b5a00137fd985974b4d">StridedSlice</a>,
<a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4a6eb8b8b560161603402c0238b3a7d8b0">Subtraction</a>,
<a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4abbc155fb2b111bf61c4f5ff892915e6b">Switch</a>,
<br />
&#160;&#160;<a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4a33cae35d37c1b558ecd35dd5e37dd80f">LastLayer</a>,
<a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4a71b23d26c0f5d20416d6c77754f9806a">TransposeConvolution2d</a> = LastLayer
<br />
}</td></tr>
<tr class="separator:a56943a0946e5f15e5e58054b8e7a04a4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4e2dd387ba6f0dc5164b4cdf8de3262a"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a4e2dd387ba6f0dc5164b4cdf8de3262a">JsonObjectType</a> { <a class="el" href="namespacearmnn.html#a4e2dd387ba6f0dc5164b4cdf8de3262aa911842b19d8b2f9bbed8cfe909d52975">Measurement</a>,
<a class="el" href="namespacearmnn.html#a4e2dd387ba6f0dc5164b4cdf8de3262aaa4ecfc70574394990cf17bd83df499f7">Event</a>
}</td></tr>
<tr class="separator:a4e2dd387ba6f0dc5164b4cdf8de3262a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a707090747256af276c389e0cf1cb0a9a"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a707090747256af276c389e0cf1cb0a9a">TuningLevel</a> { <a class="el" href="namespacearmnn.html#a707090747256af276c389e0cf1cb0a9aa6adf97f83acf6453d4a6a4b1070f3754">None</a>,
<a class="el" href="namespacearmnn.html#a707090747256af276c389e0cf1cb0a9aab571ef5b2664270d25bea4f4b61ffe68">Rapid</a>,
<a class="el" href="namespacearmnn.html#a707090747256af276c389e0cf1cb0a9aa960b44c579bc2f6818d2daaf9e4c16f0">Normal</a>,
<a class="el" href="namespacearmnn.html#a707090747256af276c389e0cf1cb0a9aafaf34f09ea1e93bfbf591e19dc0dfb9f">Exhaustive</a>
}</td></tr>
<tr class="separator:a707090747256af276c389e0cf1cb0a9a"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:a5974a183710829851dbd98a4a919cd50"><td class="memItemLeft" align="right" valign="top">std::shared_ptr&lt; <a class="el" href="classarmnn_1_1_i_layer_support.html">ILayerSupport</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a5974a183710829851dbd98a4a919cd50">GetILayerSupportByBackendId</a> (const <a class="el" href="classarmnn_1_1_backend_id.html">armnn::BackendId</a> &amp;backend)</td></tr>
<tr class="memdesc:a5974a183710829851dbd98a4a919cd50"><td class="mdescLeft">&#160;</td><td class="mdescRight">Convenience function to retrieve the <a class="el" href="classarmnn_1_1_i_layer_support.html">ILayerSupport</a> for a backend. <a href="#a5974a183710829851dbd98a4a919cd50">More...</a><br /></td></tr>
<tr class="separator:a5974a183710829851dbd98a4a919cd50"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6bab17bfd45c2fa4592c431bc25ad10e"><td class="memItemLeft" align="right" valign="top">constexpr char const *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a6bab17bfd45c2fa4592c431bc25ad10e">GetComputeDeviceAsCString</a> (<a class="el" href="namespacearmnn.html#ae2f04a162585c0a5222a537efd5456ae">Compute</a> compute)</td></tr>
<tr class="separator:a6bab17bfd45c2fa4592c431bc25ad10e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5b0313cb554380d6e4dfb24c31f9e605"><td class="memItemLeft" align="right" valign="top">std::ostream &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a5b0313cb554380d6e4dfb24c31f9e605">operator&lt;&lt;</a> (std::ostream &amp;os, const std::vector&lt; <a class="el" href="namespacearmnn.html#ae2f04a162585c0a5222a537efd5456ae">Compute</a> &gt; &amp;compute)</td></tr>
<tr class="separator:a5b0313cb554380d6e4dfb24c31f9e605"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a127a59fdf5e6d2fa74f87f9265de958b"><td class="memItemLeft" align="right" valign="top">std::ostream &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a127a59fdf5e6d2fa74f87f9265de958b">operator&lt;&lt;</a> (std::ostream &amp;os, const std::set&lt; <a class="el" href="namespacearmnn.html#ae2f04a162585c0a5222a537efd5456ae">Compute</a> &gt; &amp;compute)</td></tr>
<tr class="separator:a127a59fdf5e6d2fa74f87f9265de958b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a345acf4e0dc087eee3f9688029ee6328"><td class="memItemLeft" align="right" valign="top">std::ostream &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a345acf4e0dc087eee3f9688029ee6328">operator&lt;&lt;</a> (std::ostream &amp;os, const <a class="el" href="namespacearmnn.html#ae2f04a162585c0a5222a537efd5456ae">Compute</a> &amp;compute)</td></tr>
<tr class="separator:a345acf4e0dc087eee3f9688029ee6328"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afc46634e26857d037ee80bb5a74ef28a"><td class="memItemLeft" align="right" valign="top">std::ostream &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#afc46634e26857d037ee80bb5a74ef28a">operator&lt;&lt;</a> (std::ostream &amp;os, const <a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a> &amp;id)</td></tr>
<tr class="separator:afc46634e26857d037ee80bb5a74ef28a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a62a9e8c87b9b9f504726746ba4a000a6"><td class="memTemplParams" colspan="2">template&lt;template&lt; typename... &gt; class TContainer, typename... TContainerTemplateArgs&gt; </td></tr>
<tr class="memitem:a62a9e8c87b9b9f504726746ba4a000a6"><td class="memTemplItemLeft" align="right" valign="top">std::ostream &amp;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a62a9e8c87b9b9f504726746ba4a000a6">operator&lt;&lt;</a> (std::ostream &amp;os, const <a class="el" href="namespacearmnn.html#a9eb69ebdaf4ceb8014e7c8a540266100">TContainer</a>&lt; <a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a>, TContainerTemplateArgs... &gt; &amp;ids)</td></tr>
<tr class="separator:a62a9e8c87b9b9f504726746ba4a000a6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac2807505b850738bc8a1991ce669dd47"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classarmnn_1_1_backend_registry.html">BackendRegistry</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#ac2807505b850738bc8a1991ce669dd47">BackendRegistryInstance</a> ()</td></tr>
<tr class="separator:ac2807505b850738bc8a1991ce669dd47"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a14de37f4c695ac066f999aa75b7cb136"><td class="memItemLeft" align="right" valign="top">std::ostream &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a14de37f4c695ac066f999aa75b7cb136">operator&lt;&lt;</a> (std::ostream &amp;os, const <a class="el" href="structarmnn_1_1_backend_version.html">BackendVersion</a> &amp;backendVersion)</td></tr>
<tr class="separator:a14de37f4c695ac066f999aa75b7cb136"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2fe587812a8dd3e7d7419cbb84a7f4ff"><td class="memTemplParams" colspan="2">template&lt;typename TensorShapeIt &gt; </td></tr>
<tr class="memitem:a2fe587812a8dd3e7d7419cbb84a7f4ff"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="structarmnn_1_1_origins_descriptor.html">OriginsDescriptor</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a2fe587812a8dd3e7d7419cbb84a7f4ff">CreateMergerDescriptorForConcatenation</a> (TensorShapeIt first, TensorShapeIt last, unsigned int concatenationDimension)</td></tr>
<tr class="separator:a2fe587812a8dd3e7d7419cbb84a7f4ff"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a733ae6b70d0bfa43433c3e7606992328"><td class="memTemplParams" colspan="2">template&lt;typename TensorShapeIt &gt; </td></tr>
<tr class="memitem:a733ae6b70d0bfa43433c3e7606992328"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="structarmnn_1_1_origins_descriptor.html">OriginsDescriptor</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a733ae6b70d0bfa43433c3e7606992328">CreateDescriptorForConcatenation</a> (TensorShapeIt first, TensorShapeIt last, unsigned int concatenationDimension)</td></tr>
<tr class="memdesc:a733ae6b70d0bfa43433c3e7606992328"><td class="mdescLeft">&#160;</td><td class="mdescRight">Convenience template to create an <a class="el" href="structarmnn_1_1_origins_descriptor.html" title="An OriginsDescriptor for the ConcatLayer. Descriptor to configure the concatenation process...">OriginsDescriptor</a> to use when creating a <a class="el" href="classarmnn_1_1_concat_layer.html" title="This layer represents a merge operation. ">ConcatLayer</a> for performing concatenation of a number of input tensors. <a href="#a733ae6b70d0bfa43433c3e7606992328">More...</a><br /></td></tr>
<tr class="separator:a733ae6b70d0bfa43433c3e7606992328"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae4ab3bf0697ad13316a6bcba0a8fade5"><td class="memTemplParams" colspan="2">template&lt;typename ExceptionType &gt; </td></tr>
<tr class="memitem:ae4ab3bf0697ad13316a6bcba0a8fade5"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#ae4ab3bf0697ad13316a6bcba0a8fade5">ConditionalThrow</a> (bool condition, const std::string &amp;message)</td></tr>
<tr class="separator:ae4ab3bf0697ad13316a6bcba0a8fade5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae57b7f9e2cb7080bf10b28d1f72b558e"><td class="memTemplParams" colspan="2">template&lt;typename ExceptionType , typename ComparedType &gt; </td></tr>
<tr class="memitem:ae57b7f9e2cb7080bf10b28d1f72b558e"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#ae57b7f9e2cb7080bf10b28d1f72b558e">ConditionalThrowIfNotEqual</a> (const std::string &amp;message, const ComparedType &amp;leftHandSide, const ComparedType &amp;rightHandSide)</td></tr>
<tr class="separator:ae57b7f9e2cb7080bf10b28d1f72b558e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a82e98ef05fd67036d1195ba17174d685"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespacearmnn.html#a674efcf6cbdb9e831d653ff0e821fb38">IOptimizedNetworkPtr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a82e98ef05fd67036d1195ba17174d685">Optimize</a> (const <a class="el" href="classarmnn_1_1_i_network.html">INetwork</a> &amp;network, const std::vector&lt; <a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a> &gt; &amp;backendPreferences, const <a class="el" href="classarmnn_1_1_i_device_spec.html">IDeviceSpec</a> &amp;deviceSpec, const <a class="el" href="structarmnn_1_1_optimizer_options.html">OptimizerOptions</a> &amp;<a class="el" href="_file_only_profiling_decorator_tests_8cpp.html#a6560146509197f3e197d8d36f76c1347">options</a>=<a class="el" href="structarmnn_1_1_optimizer_options.html">OptimizerOptions</a>(), <a class="el" href="classarmnn_1_1_optional.html">Optional</a>&lt; std::vector&lt; std::string &gt; &amp;&gt; messages=<a class="el" href="structarmnn_1_1_empty_optional.html">EmptyOptional</a>())</td></tr>
<tr class="separator:a82e98ef05fd67036d1195ba17174d685"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a58bfb9626d373249745d78b95543116e"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a58bfb9626d373249745d78b95543116e">IsActivationSupported</a> (const <a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a> &amp;backend, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output, const <a class="el" href="structarmnn_1_1_activation_descriptor.html">ActivationDescriptor</a> &amp;descriptor, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</td></tr>
<tr class="memdesc:a58bfb9626d373249745d78b95543116e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.html" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.html">ILayerSupport</a> interfaces. <a href="#a58bfb9626d373249745d78b95543116e">More...</a><br /></td></tr>
<tr class="separator:a58bfb9626d373249745d78b95543116e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1b01771dc5a057d09f8cd82492154a1f"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a1b01771dc5a057d09f8cd82492154a1f">IsAdditionSupported</a> (const <a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a> &amp;backend, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input0, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input1, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</td></tr>
<tr class="memdesc:a1b01771dc5a057d09f8cd82492154a1f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.html" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.html">ILayerSupport</a> interfaces. <a href="#a1b01771dc5a057d09f8cd82492154a1f">More...</a><br /></td></tr>
<tr class="separator:a1b01771dc5a057d09f8cd82492154a1f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7d18d6613bb865b66b05d4d6e0391934"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a7d18d6613bb865b66b05d4d6e0391934">IsBatchNormalizationSupported</a> (const <a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a> &amp;backend, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;mean, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;var, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;beta, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;gamma, const <a class="el" href="structarmnn_1_1_batch_normalization_descriptor.html">BatchNormalizationDescriptor</a> &amp;descriptor, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</td></tr>
<tr class="memdesc:a7d18d6613bb865b66b05d4d6e0391934"><td class="mdescLeft">&#160;</td><td class="mdescRight">Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.html" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.html">ILayerSupport</a> interfaces. <a href="#a7d18d6613bb865b66b05d4d6e0391934">More...</a><br /></td></tr>
<tr class="separator:a7d18d6613bb865b66b05d4d6e0391934"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2399052d9cbb2b88720b07511a2e362f"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a2399052d9cbb2b88720b07511a2e362f">IsBatchToSpaceNdSupported</a> (const <a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a> &amp;backend, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output, const <a class="el" href="structarmnn_1_1_batch_to_space_nd_descriptor.html">BatchToSpaceNdDescriptor</a> &amp;descriptor, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</td></tr>
<tr class="memdesc:a2399052d9cbb2b88720b07511a2e362f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.html" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.html">ILayerSupport</a> interfaces. <a href="#a2399052d9cbb2b88720b07511a2e362f">More...</a><br /></td></tr>
<tr class="separator:a2399052d9cbb2b88720b07511a2e362f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a757df85e956e425c1a082d35a98ca4a9"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a757df85e956e425c1a082d35a98ca4a9">IsConcatSupported</a> (const <a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a> &amp;backend, const std::vector&lt; const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> *&gt; inputs, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output, const <a class="el" href="structarmnn_1_1_origins_descriptor.html">OriginsDescriptor</a> &amp;descriptor, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</td></tr>
<tr class="memdesc:a757df85e956e425c1a082d35a98ca4a9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.html" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.html">ILayerSupport</a> interfaces. <a href="#a757df85e956e425c1a082d35a98ca4a9">More...</a><br /></td></tr>
<tr class="separator:a757df85e956e425c1a082d35a98ca4a9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:acc76cdec78906a3457a9c2293a453869"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#acc76cdec78906a3457a9c2293a453869">IsConstantSupported</a> (const <a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a> &amp;backend, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</td></tr>
<tr class="memdesc:acc76cdec78906a3457a9c2293a453869"><td class="mdescLeft">&#160;</td><td class="mdescRight">Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.html" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.html">ILayerSupport</a> interfaces. <a href="#acc76cdec78906a3457a9c2293a453869">More...</a><br /></td></tr>
<tr class="separator:acc76cdec78906a3457a9c2293a453869"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aaa152f86599af5189c9d637fe7ade6d0"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#aaa152f86599af5189c9d637fe7ade6d0">IsConvertFp16ToFp32Supported</a> (const <a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a> &amp;backend, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</td></tr>
<tr class="memdesc:aaa152f86599af5189c9d637fe7ade6d0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.html" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.html">ILayerSupport</a> interfaces. <a href="#aaa152f86599af5189c9d637fe7ade6d0">More...</a><br /></td></tr>
<tr class="separator:aaa152f86599af5189c9d637fe7ade6d0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a98994026cec1578ceb7aa74c834b00d9"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a98994026cec1578ceb7aa74c834b00d9">IsConvertFp32ToFp16Supported</a> (const <a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a> &amp;backend, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</td></tr>
<tr class="memdesc:a98994026cec1578ceb7aa74c834b00d9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.html" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.html">ILayerSupport</a> interfaces. <a href="#a98994026cec1578ceb7aa74c834b00d9">More...</a><br /></td></tr>
<tr class="separator:a98994026cec1578ceb7aa74c834b00d9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af22d4421773ce95e0f2324fc1a66c0d9"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#af22d4421773ce95e0f2324fc1a66c0d9">IsConvolution2dSupported</a> (const <a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a> &amp;backend, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output, const <a class="el" href="structarmnn_1_1_convolution2d_descriptor.html">Convolution2dDescriptor</a> &amp;descriptor, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;weights, const <a class="el" href="classarmnn_1_1_optional.html">Optional</a>&lt; <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &gt; &amp;biases, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</td></tr>
<tr class="memdesc:af22d4421773ce95e0f2324fc1a66c0d9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.html" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.html">ILayerSupport</a> interfaces. <a href="#af22d4421773ce95e0f2324fc1a66c0d9">More...</a><br /></td></tr>
<tr class="separator:af22d4421773ce95e0f2324fc1a66c0d9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8b96de58aae24091d0ad761f27360630"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a8b96de58aae24091d0ad761f27360630">IsDebugSupported</a> (const <a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a> &amp;backend, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</td></tr>
<tr class="memdesc:a8b96de58aae24091d0ad761f27360630"><td class="mdescLeft">&#160;</td><td class="mdescRight">Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.html" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.html">ILayerSupport</a> interfaces. <a href="#a8b96de58aae24091d0ad761f27360630">More...</a><br /></td></tr>
<tr class="separator:a8b96de58aae24091d0ad761f27360630"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a399d38872500c6ac84ae031673176ef3"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a399d38872500c6ac84ae031673176ef3">IsDepthwiseConvolutionSupported</a> (const <a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a> &amp;backend, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output, const <a class="el" href="structarmnn_1_1_depthwise_convolution2d_descriptor.html">DepthwiseConvolution2dDescriptor</a> &amp;descriptor, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;weights, const <a class="el" href="classarmnn_1_1_optional.html">Optional</a>&lt; <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &gt; &amp;biases, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</td></tr>
<tr class="memdesc:a399d38872500c6ac84ae031673176ef3"><td class="mdescLeft">&#160;</td><td class="mdescRight">Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.html" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.html">ILayerSupport</a> interfaces. <a href="#a399d38872500c6ac84ae031673176ef3">More...</a><br /></td></tr>
<tr class="separator:a399d38872500c6ac84ae031673176ef3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac92dceabfbc1e46fe74f699f733886a8"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#ac92dceabfbc1e46fe74f699f733886a8">IsDequantizeSupported</a> (const <a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a> &amp;backend, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</td></tr>
<tr class="memdesc:ac92dceabfbc1e46fe74f699f733886a8"><td class="mdescLeft">&#160;</td><td class="mdescRight">Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.html" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.html">ILayerSupport</a> interfaces. <a href="#ac92dceabfbc1e46fe74f699f733886a8">More...</a><br /></td></tr>
<tr class="separator:ac92dceabfbc1e46fe74f699f733886a8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a29b4b6b364a31632597970d0bad3d78f"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a29b4b6b364a31632597970d0bad3d78f">IsDivisionSupported</a> (const <a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a> &amp;backend, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input0, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input1, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</td></tr>
<tr class="memdesc:a29b4b6b364a31632597970d0bad3d78f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.html" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.html">ILayerSupport</a> interfaces. <a href="#a29b4b6b364a31632597970d0bad3d78f">More...</a><br /></td></tr>
<tr class="separator:a29b4b6b364a31632597970d0bad3d78f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0e3cdea6143299b258a9c34b596bad4d"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a0e3cdea6143299b258a9c34b596bad4d">IsEqualSupported</a> (const <a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a> &amp;backend, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input0, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input1, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</td></tr>
<tr class="memdesc:a0e3cdea6143299b258a9c34b596bad4d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.html" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.html">ILayerSupport</a> interfaces. <a href="#a0e3cdea6143299b258a9c34b596bad4d">More...</a><br /></td></tr>
<tr class="separator:a0e3cdea6143299b258a9c34b596bad4d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afe39427f8974f064b838df5c7f0ebebc"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#afe39427f8974f064b838df5c7f0ebebc">IsFakeQuantizationSupported</a> (const <a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a> &amp;backend, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input, const <a class="el" href="structarmnn_1_1_fake_quantization_descriptor.html">FakeQuantizationDescriptor</a> &amp;descriptor, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</td></tr>
<tr class="memdesc:afe39427f8974f064b838df5c7f0ebebc"><td class="mdescLeft">&#160;</td><td class="mdescRight">Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.html" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.html">ILayerSupport</a> interfaces. <a href="#afe39427f8974f064b838df5c7f0ebebc">More...</a><br /></td></tr>
<tr class="separator:afe39427f8974f064b838df5c7f0ebebc"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a89e9c52419c572f05bf9737a7a60b267"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a89e9c52419c572f05bf9737a7a60b267">IsFloorSupported</a> (const <a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a> &amp;backend, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</td></tr>
<tr class="memdesc:a89e9c52419c572f05bf9737a7a60b267"><td class="mdescLeft">&#160;</td><td class="mdescRight">Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.html" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.html">ILayerSupport</a> interfaces. <a href="#a89e9c52419c572f05bf9737a7a60b267">More...</a><br /></td></tr>
<tr class="separator:a89e9c52419c572f05bf9737a7a60b267"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa2f4e75d4a4f61b24de0dfe150952c80"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#aa2f4e75d4a4f61b24de0dfe150952c80">IsFullyConnectedSupported</a> (const <a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a> &amp;backend, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;weights, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;biases, const <a class="el" href="structarmnn_1_1_fully_connected_descriptor.html">FullyConnectedDescriptor</a> &amp;descriptor, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</td></tr>
<tr class="memdesc:aa2f4e75d4a4f61b24de0dfe150952c80"><td class="mdescLeft">&#160;</td><td class="mdescRight">Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.html" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.html">ILayerSupport</a> interfaces. <a href="#aa2f4e75d4a4f61b24de0dfe150952c80">More...</a><br /></td></tr>
<tr class="separator:aa2f4e75d4a4f61b24de0dfe150952c80"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:adffa596b4bdecd54ca460853cd1439e2"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#adffa596b4bdecd54ca460853cd1439e2">IsGreaterSupported</a> (const <a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a> &amp;backend, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input0, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input1, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</td></tr>
<tr class="memdesc:adffa596b4bdecd54ca460853cd1439e2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.html" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.html">ILayerSupport</a> interfaces. <a href="#adffa596b4bdecd54ca460853cd1439e2">More...</a><br /></td></tr>
<tr class="separator:adffa596b4bdecd54ca460853cd1439e2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a197a353aa963497d29a07796268ea5c1"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a197a353aa963497d29a07796268ea5c1">IsInputSupported</a> (const <a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a> &amp;backend, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</td></tr>
<tr class="memdesc:a197a353aa963497d29a07796268ea5c1"><td class="mdescLeft">&#160;</td><td class="mdescRight">Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.html" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.html">ILayerSupport</a> interfaces. <a href="#a197a353aa963497d29a07796268ea5c1">More...</a><br /></td></tr>
<tr class="separator:a197a353aa963497d29a07796268ea5c1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0906736b90464c0eb3ce5a87e05ebeee"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a0906736b90464c0eb3ce5a87e05ebeee">IsL2NormalizationSupported</a> (const <a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a> &amp;backend, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output, const <a class="el" href="structarmnn_1_1_l2_normalization_descriptor.html">L2NormalizationDescriptor</a> &amp;descriptor, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</td></tr>
<tr class="memdesc:a0906736b90464c0eb3ce5a87e05ebeee"><td class="mdescLeft">&#160;</td><td class="mdescRight">Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.html" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.html">ILayerSupport</a> interfaces. <a href="#a0906736b90464c0eb3ce5a87e05ebeee">More...</a><br /></td></tr>
<tr class="separator:a0906736b90464c0eb3ce5a87e05ebeee"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3e8b3af7771ffb37ede50aa2d9cc3af6"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a3e8b3af7771ffb37ede50aa2d9cc3af6">IsLstmSupported</a> (const <a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a> &amp;backend, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;outputStateIn, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;cellStateIn, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;scratchBuffer, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;outputStateOut, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;cellStateOut, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output, const <a class="el" href="structarmnn_1_1_lstm_descriptor.html">LstmDescriptor</a> &amp;descriptor, const <a class="el" href="structarmnn_1_1_lstm_input_params_info.html">LstmInputParamsInfo</a> &amp;paramsInfo, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</td></tr>
<tr class="memdesc:a3e8b3af7771ffb37ede50aa2d9cc3af6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.html" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.html">ILayerSupport</a> interfaces. <a href="#a3e8b3af7771ffb37ede50aa2d9cc3af6">More...</a><br /></td></tr>
<tr class="separator:a3e8b3af7771ffb37ede50aa2d9cc3af6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3b85a270baf98ea6b040bd395c2d700a"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a3b85a270baf98ea6b040bd395c2d700a">IsMaximumSupported</a> (const <a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a> &amp;backend, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input0, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input1, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output, char *reasonIfUnSupported=nullptr, size_t reasonIfUnSupportedMaxLength=0)</td></tr>
<tr class="memdesc:a3b85a270baf98ea6b040bd395c2d700a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.html" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.html">ILayerSupport</a> interfaces. <a href="#a3b85a270baf98ea6b040bd395c2d700a">More...</a><br /></td></tr>
<tr class="separator:a3b85a270baf98ea6b040bd395c2d700a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0cdc60b4988b2193b97590e35f34a07e"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a0cdc60b4988b2193b97590e35f34a07e">IsMeanSupported</a> (const <a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a> &amp;backend, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output, const <a class="el" href="structarmnn_1_1_mean_descriptor.html">MeanDescriptor</a> &amp;descriptor, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</td></tr>
<tr class="memdesc:a0cdc60b4988b2193b97590e35f34a07e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.html" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.html">ILayerSupport</a> interfaces. <a href="#a0cdc60b4988b2193b97590e35f34a07e">More...</a><br /></td></tr>
<tr class="separator:a0cdc60b4988b2193b97590e35f34a07e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a87ac712443e46c0deb38ab0eaf637e70"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a87ac712443e46c0deb38ab0eaf637e70">IsMemCopySupported</a> (const <a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a> &amp;backend, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</td></tr>
<tr class="memdesc:a87ac712443e46c0deb38ab0eaf637e70"><td class="mdescLeft">&#160;</td><td class="mdescRight">Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.html" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.html">ILayerSupport</a> interfaces. <a href="#a87ac712443e46c0deb38ab0eaf637e70">More...</a><br /></td></tr>
<tr class="separator:a87ac712443e46c0deb38ab0eaf637e70"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7f518a73b9f7e41c5584c1f49bca8568"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a7f518a73b9f7e41c5584c1f49bca8568">IsMergeSupported</a> (const <a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a> &amp;backend, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input0, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input1, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</td></tr>
<tr class="memdesc:a7f518a73b9f7e41c5584c1f49bca8568"><td class="mdescLeft">&#160;</td><td class="mdescRight">Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.html" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.html">ILayerSupport</a> interfaces. <a href="#a7f518a73b9f7e41c5584c1f49bca8568">More...</a><br /></td></tr>
<tr class="separator:a7f518a73b9f7e41c5584c1f49bca8568"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6e2c7ec2b8d47bde2bc9fa04bb2091f6"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a6e2c7ec2b8d47bde2bc9fa04bb2091f6">IsMergerSupported</a> (const <a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a> &amp;backend, const std::vector&lt; const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> *&gt; inputs, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output, const <a class="el" href="structarmnn_1_1_origins_descriptor.html">OriginsDescriptor</a> &amp;descriptor, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</td></tr>
<tr class="memdesc:a6e2c7ec2b8d47bde2bc9fa04bb2091f6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.html" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.html">ILayerSupport</a> interfaces. <a href="#a6e2c7ec2b8d47bde2bc9fa04bb2091f6">More...</a><br /></td></tr>
<tr class="separator:a6e2c7ec2b8d47bde2bc9fa04bb2091f6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab99d3d944b80f47bd1be70f63cc60abb"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#ab99d3d944b80f47bd1be70f63cc60abb">IsMinimumSupported</a> (const <a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a> &amp;backend, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input0, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input1, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</td></tr>
<tr class="memdesc:ab99d3d944b80f47bd1be70f63cc60abb"><td class="mdescLeft">&#160;</td><td class="mdescRight">Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.html" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.html">ILayerSupport</a> interfaces. <a href="#ab99d3d944b80f47bd1be70f63cc60abb">More...</a><br /></td></tr>
<tr class="separator:ab99d3d944b80f47bd1be70f63cc60abb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a56ff60c2946bf0b7e772007acce0d7ec"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a56ff60c2946bf0b7e772007acce0d7ec">IsMultiplicationSupported</a> (const <a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a> &amp;backend, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input0, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input1, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</td></tr>
<tr class="memdesc:a56ff60c2946bf0b7e772007acce0d7ec"><td class="mdescLeft">&#160;</td><td class="mdescRight">Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.html" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.html">ILayerSupport</a> interfaces. <a href="#a56ff60c2946bf0b7e772007acce0d7ec">More...</a><br /></td></tr>
<tr class="separator:a56ff60c2946bf0b7e772007acce0d7ec"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a754b0ac19fd6341ce2b5f480c3b35e8e"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a754b0ac19fd6341ce2b5f480c3b35e8e">IsNormalizationSupported</a> (const <a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a> &amp;backend, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output, const <a class="el" href="structarmnn_1_1_normalization_descriptor.html">NormalizationDescriptor</a> &amp;descriptor, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</td></tr>
<tr class="memdesc:a754b0ac19fd6341ce2b5f480c3b35e8e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.html" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.html">ILayerSupport</a> interfaces. <a href="#a754b0ac19fd6341ce2b5f480c3b35e8e">More...</a><br /></td></tr>
<tr class="separator:a754b0ac19fd6341ce2b5f480c3b35e8e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a701cecec7714cf8bc9dca804f473610d"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a701cecec7714cf8bc9dca804f473610d">IsOutputSupported</a> (const <a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a> &amp;backend, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</td></tr>
<tr class="memdesc:a701cecec7714cf8bc9dca804f473610d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.html" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.html">ILayerSupport</a> interfaces. <a href="#a701cecec7714cf8bc9dca804f473610d">More...</a><br /></td></tr>
<tr class="separator:a701cecec7714cf8bc9dca804f473610d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a515e8a98d7ef9ecda64a2e1e5298461a"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a515e8a98d7ef9ecda64a2e1e5298461a">IsPadSupported</a> (const <a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a> &amp;backend, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output, const <a class="el" href="structarmnn_1_1_pad_descriptor.html">PadDescriptor</a> &amp;descriptor, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</td></tr>
<tr class="memdesc:a515e8a98d7ef9ecda64a2e1e5298461a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.html" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.html">ILayerSupport</a> interfaces. <a href="#a515e8a98d7ef9ecda64a2e1e5298461a">More...</a><br /></td></tr>
<tr class="separator:a515e8a98d7ef9ecda64a2e1e5298461a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa3a1bea3b3cd5611f13c06020dababc4"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#aa3a1bea3b3cd5611f13c06020dababc4">IsPermuteSupported</a> (const <a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a> &amp;backend, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output, const <a class="el" href="structarmnn_1_1_permute_descriptor.html">PermuteDescriptor</a> &amp;descriptor, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</td></tr>
<tr class="memdesc:aa3a1bea3b3cd5611f13c06020dababc4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.html" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.html">ILayerSupport</a> interfaces. <a href="#aa3a1bea3b3cd5611f13c06020dababc4">More...</a><br /></td></tr>
<tr class="separator:aa3a1bea3b3cd5611f13c06020dababc4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3b4773564c3fd8c88e697ffe0afbe10d"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a3b4773564c3fd8c88e697ffe0afbe10d">IsPreCompiledSupported</a> (const <a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a> &amp;backend, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</td></tr>
<tr class="memdesc:a3b4773564c3fd8c88e697ffe0afbe10d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.html" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.html">ILayerSupport</a> interfaces. <a href="#a3b4773564c3fd8c88e697ffe0afbe10d">More...</a><br /></td></tr>
<tr class="separator:a3b4773564c3fd8c88e697ffe0afbe10d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5a0c1871f7e4822adb8b15e8ae76bca0"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a5a0c1871f7e4822adb8b15e8ae76bca0">IsPreluSupported</a> (const <a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a> &amp;backend, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;alpha, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</td></tr>
<tr class="memdesc:a5a0c1871f7e4822adb8b15e8ae76bca0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.html" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.html">ILayerSupport</a> interfaces. <a href="#a5a0c1871f7e4822adb8b15e8ae76bca0">More...</a><br /></td></tr>
<tr class="separator:a5a0c1871f7e4822adb8b15e8ae76bca0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aea548aa1485adbeeb3e393a13bb6bff8"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#aea548aa1485adbeeb3e393a13bb6bff8">IsPooling2dSupported</a> (const <a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a> &amp;backend, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output, const <a class="el" href="structarmnn_1_1_pooling2d_descriptor.html">Pooling2dDescriptor</a> &amp;descriptor, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</td></tr>
<tr class="memdesc:aea548aa1485adbeeb3e393a13bb6bff8"><td class="mdescLeft">&#160;</td><td class="mdescRight">Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.html" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.html">ILayerSupport</a> interfaces. <a href="#aea548aa1485adbeeb3e393a13bb6bff8">More...</a><br /></td></tr>
<tr class="separator:aea548aa1485adbeeb3e393a13bb6bff8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4069381c4737d57fc7fd299a61ad9ca1"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a4069381c4737d57fc7fd299a61ad9ca1">IsQuantizedLstmSupported</a> (const <a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a> &amp;backend, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;previousCellStateIn, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;previousOutputIn, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;cellStateOut, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output, const <a class="el" href="structarmnn_1_1_quantized_lstm_input_params_info.html">QuantizedLstmInputParamsInfo</a> &amp;paramsInfo, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</td></tr>
<tr class="memdesc:a4069381c4737d57fc7fd299a61ad9ca1"><td class="mdescLeft">&#160;</td><td class="mdescRight">Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.html" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.html">ILayerSupport</a> interfaces. <a href="#a4069381c4737d57fc7fd299a61ad9ca1">More...</a><br /></td></tr>
<tr class="separator:a4069381c4737d57fc7fd299a61ad9ca1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af5014cbc003abcf201d4372b0012734c"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#af5014cbc003abcf201d4372b0012734c">IsReshapeSupported</a> (const <a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a> &amp;backend, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input, const <a class="el" href="structarmnn_1_1_reshape_descriptor.html">ReshapeDescriptor</a> &amp;descriptor, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</td></tr>
<tr class="memdesc:af5014cbc003abcf201d4372b0012734c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.html" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.html">ILayerSupport</a> interfaces. <a href="#af5014cbc003abcf201d4372b0012734c">More...</a><br /></td></tr>
<tr class="separator:af5014cbc003abcf201d4372b0012734c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a936d3f949a334668f839fb0bdd170b72"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a936d3f949a334668f839fb0bdd170b72">IsResizeBilinearSupported</a> (const <a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a> &amp;backend, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</td></tr>
<tr class="memdesc:a936d3f949a334668f839fb0bdd170b72"><td class="mdescLeft">&#160;</td><td class="mdescRight">Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.html" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.html">ILayerSupport</a> interfaces. <a href="#a936d3f949a334668f839fb0bdd170b72">More...</a><br /></td></tr>
<tr class="separator:a936d3f949a334668f839fb0bdd170b72"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a90a1aadb53c7537f225252afd681ff22"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a90a1aadb53c7537f225252afd681ff22">IsResizeSupported</a> (const <a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a> &amp;backend, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output, const <a class="el" href="structarmnn_1_1_resize_descriptor.html">ResizeDescriptor</a> &amp;descriptor, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</td></tr>
<tr class="memdesc:a90a1aadb53c7537f225252afd681ff22"><td class="mdescLeft">&#160;</td><td class="mdescRight">Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.html" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.html">ILayerSupport</a> interfaces. <a href="#a90a1aadb53c7537f225252afd681ff22">More...</a><br /></td></tr>
<tr class="separator:a90a1aadb53c7537f225252afd681ff22"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:accc42ba9679a474e75b43cdf1efa9422"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#accc42ba9679a474e75b43cdf1efa9422">IsRsqrtSupported</a> (const <a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a> &amp;backend, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</td></tr>
<tr class="memdesc:accc42ba9679a474e75b43cdf1efa9422"><td class="mdescLeft">&#160;</td><td class="mdescRight">Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.html" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.html">ILayerSupport</a> interfaces. <a href="#accc42ba9679a474e75b43cdf1efa9422">More...</a><br /></td></tr>
<tr class="separator:accc42ba9679a474e75b43cdf1efa9422"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a477695b3df8c0abd2efcf02051f61065"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a477695b3df8c0abd2efcf02051f61065">IsSoftmaxSupported</a> (const <a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a> &amp;backend, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output, const <a class="el" href="structarmnn_1_1_softmax_descriptor.html">SoftmaxDescriptor</a> &amp;descriptor, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</td></tr>
<tr class="memdesc:a477695b3df8c0abd2efcf02051f61065"><td class="mdescLeft">&#160;</td><td class="mdescRight">Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.html" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.html">ILayerSupport</a> interfaces. <a href="#a477695b3df8c0abd2efcf02051f61065">More...</a><br /></td></tr>
<tr class="separator:a477695b3df8c0abd2efcf02051f61065"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4b3a41e24d4b9e2b4cb431dc90c48970"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a4b3a41e24d4b9e2b4cb431dc90c48970">IsSpaceToBatchNdSupported</a> (const <a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a> &amp;backend, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output, const <a class="el" href="structarmnn_1_1_space_to_batch_nd_descriptor.html">SpaceToBatchNdDescriptor</a> &amp;descriptor, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</td></tr>
<tr class="memdesc:a4b3a41e24d4b9e2b4cb431dc90c48970"><td class="mdescLeft">&#160;</td><td class="mdescRight">Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.html" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.html">ILayerSupport</a> interfaces. <a href="#a4b3a41e24d4b9e2b4cb431dc90c48970">More...</a><br /></td></tr>
<tr class="separator:a4b3a41e24d4b9e2b4cb431dc90c48970"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:addffaddb4bdb6ec506fe08debcce9b75"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#addffaddb4bdb6ec506fe08debcce9b75">IsSpaceToDepthSupported</a> (const <a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a> &amp;backend, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output, const <a class="el" href="structarmnn_1_1_space_to_depth_descriptor.html">SpaceToDepthDescriptor</a> &amp;descriptor, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</td></tr>
<tr class="memdesc:addffaddb4bdb6ec506fe08debcce9b75"><td class="mdescLeft">&#160;</td><td class="mdescRight">Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.html" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.html">ILayerSupport</a> interfaces. <a href="#addffaddb4bdb6ec506fe08debcce9b75">More...</a><br /></td></tr>
<tr class="separator:addffaddb4bdb6ec506fe08debcce9b75"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7ce5f7168bf0d1e7efe269d59ed564ba"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a7ce5f7168bf0d1e7efe269d59ed564ba">IsSplitterSupported</a> (const <a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a> &amp;backend, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input, const <a class="el" href="structarmnn_1_1_views_descriptor.html">ViewsDescriptor</a> &amp;descriptor, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</td></tr>
<tr class="separator:a7ce5f7168bf0d1e7efe269d59ed564ba"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6487e532e0cb72a210096185e31e2bd6"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a6487e532e0cb72a210096185e31e2bd6">IsSplitterSupported</a> (const <a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a> &amp;backend, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input, const std::vector&lt; std::reference_wrapper&lt; <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &gt;&gt; &amp;outputs, const <a class="el" href="structarmnn_1_1_views_descriptor.html">ViewsDescriptor</a> &amp;descriptor, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</td></tr>
<tr class="memdesc:a6487e532e0cb72a210096185e31e2bd6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.html" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.html">ILayerSupport</a> interfaces. <a href="#a6487e532e0cb72a210096185e31e2bd6">More...</a><br /></td></tr>
<tr class="separator:a6487e532e0cb72a210096185e31e2bd6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a10e8442be2b8596afd5770e98b904caa"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a10e8442be2b8596afd5770e98b904caa">IsStackSupported</a> (const <a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a> &amp;backend, const std::vector&lt; const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> *&gt; inputs, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output, const <a class="el" href="structarmnn_1_1_stack_descriptor.html">StackDescriptor</a> &amp;descriptor, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</td></tr>
<tr class="memdesc:a10e8442be2b8596afd5770e98b904caa"><td class="mdescLeft">&#160;</td><td class="mdescRight">Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.html" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.html">ILayerSupport</a> interfaces. <a href="#a10e8442be2b8596afd5770e98b904caa">More...</a><br /></td></tr>
<tr class="separator:a10e8442be2b8596afd5770e98b904caa"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aebe3dc6730e1b29aee9c9f33b8f94121"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#aebe3dc6730e1b29aee9c9f33b8f94121">IsStridedSliceSupported</a> (const <a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a> &amp;backend, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output, const <a class="el" href="structarmnn_1_1_strided_slice_descriptor.html">StridedSliceDescriptor</a> &amp;descriptor, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</td></tr>
<tr class="memdesc:aebe3dc6730e1b29aee9c9f33b8f94121"><td class="mdescLeft">&#160;</td><td class="mdescRight">Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.html" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.html">ILayerSupport</a> interfaces. <a href="#aebe3dc6730e1b29aee9c9f33b8f94121">More...</a><br /></td></tr>
<tr class="separator:aebe3dc6730e1b29aee9c9f33b8f94121"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afbf752a51fa513e0a54e343be130d962"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#afbf752a51fa513e0a54e343be130d962">IsSubtractionSupported</a> (const <a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a> &amp;backend, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input0, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input1, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</td></tr>
<tr class="memdesc:afbf752a51fa513e0a54e343be130d962"><td class="mdescLeft">&#160;</td><td class="mdescRight">Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.html" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.html">ILayerSupport</a> interfaces. <a href="#afbf752a51fa513e0a54e343be130d962">More...</a><br /></td></tr>
<tr class="separator:afbf752a51fa513e0a54e343be130d962"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a85fcfea412723413a05f0743c84053aa"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a85fcfea412723413a05f0743c84053aa">IsSwitchSupported</a> (const <a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a> &amp;backend, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input0, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input1, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output0, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output1, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</td></tr>
<tr class="memdesc:a85fcfea412723413a05f0743c84053aa"><td class="mdescLeft">&#160;</td><td class="mdescRight">Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.html" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.html">ILayerSupport</a> interfaces. <a href="#a85fcfea412723413a05f0743c84053aa">More...</a><br /></td></tr>
<tr class="separator:a85fcfea412723413a05f0743c84053aa"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac6cc8e0bd35d229486fe6d844d88e0d4"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#ac6cc8e0bd35d229486fe6d844d88e0d4">IsTransposeConvolution2dSupported</a> (const <a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a> &amp;backend, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output, const <a class="el" href="structarmnn_1_1_transpose_convolution2d_descriptor.html">TransposeConvolution2dDescriptor</a> &amp;descriptor, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;weights, const <a class="el" href="classarmnn_1_1_optional.html">Optional</a>&lt; <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &gt; &amp;biases, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</td></tr>
<tr class="memdesc:ac6cc8e0bd35d229486fe6d844d88e0d4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.html" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.html">ILayerSupport</a> interfaces. <a href="#ac6cc8e0bd35d229486fe6d844d88e0d4">More...</a><br /></td></tr>
<tr class="separator:ac6cc8e0bd35d229486fe6d844d88e0d4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a71f2cc06b097cb5c4f0a1f48130a823b"><td class="memItemLeft" align="right" valign="top">std::string&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a71f2cc06b097cb5c4f0a1f48130a823b">LevelToString</a> (<a class="el" href="namespacearmnn.html#a93a3ba385cad27c4774e5fe64c025d3d">LogSeverity</a> level)</td></tr>
<tr class="separator:a71f2cc06b097cb5c4f0a1f48130a823b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac9aad76a34137b6359a867b282ea7cfb"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#ac9aad76a34137b6359a867b282ea7cfb">SetLogFilter</a> (<a class="el" href="namespacearmnn.html#a93a3ba385cad27c4774e5fe64c025d3d">LogSeverity</a> level)</td></tr>
<tr class="separator:ac9aad76a34137b6359a867b282ea7cfb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7f8325a4bc02f2f687ba1968b595ec0a"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a7f8325a4bc02f2f687ba1968b595ec0a">SetAllLoggingSinks</a> (bool standardOut, bool debugOut, bool coloured)</td></tr>
<tr class="separator:a7f8325a4bc02f2f687ba1968b595ec0a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9cdee30c21f3dd630b4e460527105b74"><td class="memItemLeft" align="right" valign="top">constexpr <a class="el" href="namespacearmnn.html#a93a3ba385cad27c4774e5fe64c025d3d">LogSeverity</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a9cdee30c21f3dd630b4e460527105b74">ConvertLogSeverity</a> (<a class="el" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407">BoostLogSeverityMapping</a> severity)</td></tr>
<tr class="separator:a9cdee30c21f3dd630b4e460527105b74"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5d94c2125c725df5b619d16db9d4a8e9"><td class="memTemplParams" colspan="2">template&lt;typename Arg , typename std::enable_if&lt; IsMemorySource&lt; Arg &gt;::value &gt;::type * = nullptr&gt; </td></tr>
<tr class="memitem:a5d94c2125c725df5b619d16db9d4a8e9"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="namespacearmnn.html#a5b05f3b7208ec7cea3338e30057c0bac">MemorySourceFlags</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a5d94c2125c725df5b619d16db9d4a8e9">Combine</a> (Arg sourceA, Arg sourceB)</td></tr>
<tr class="separator:a5d94c2125c725df5b619d16db9d4a8e9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae91e1849e95350c8e50912a217999eac"><td class="memTemplParams" colspan="2">template&lt;typename Arg , typename ... Args, typename std::enable_if&lt; IsMemorySource&lt; Arg &gt;::value &gt;::type * = nullptr&gt; </td></tr>
<tr class="memitem:ae91e1849e95350c8e50912a217999eac"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="namespacearmnn.html#a5b05f3b7208ec7cea3338e30057c0bac">MemorySourceFlags</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#ae91e1849e95350c8e50912a217999eac">Combine</a> (Arg source, Args... rest)</td></tr>
<tr class="separator:ae91e1849e95350c8e50912a217999eac"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a84f86b4de5adf0b164e811c87051a0ee"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a84f86b4de5adf0b164e811c87051a0ee">CheckFlag</a> (<a class="el" href="namespacearmnn.html#a5b05f3b7208ec7cea3338e30057c0bac">MemorySourceFlags</a> flags, <a class="el" href="namespacearmnn.html#a0fc99721e27eb20ecd0ea85a3cc8b488">MemorySource</a> source)</td></tr>
<tr class="separator:a84f86b4de5adf0b164e811c87051a0ee"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a77780137c47f528921f6537447060f05"><td class="memTemplParams" colspan="2">template&lt;typename T , class... Args&gt; </td></tr>
<tr class="memitem:a77780137c47f528921f6537447060f05"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classarmnn_1_1_optional.html">Optional</a>&lt; T &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a77780137c47f528921f6537447060f05">MakeOptional</a> (Args &amp;&amp;... args)</td></tr>
<tr class="separator:a77780137c47f528921f6537447060f05"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a19a90c41ca2f46ab29918fef1a6ad72e"><td class="memItemLeft" align="right" valign="top">constexpr char const *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a19a90c41ca2f46ab29918fef1a6ad72e">GetStatusAsCString</a> (<a class="el" href="namespacearmnn.html#a67a0db04d321a74b7e7fcfd3f1a3f70b">Status</a> status)</td></tr>
<tr class="separator:a19a90c41ca2f46ab29918fef1a6ad72e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa093207ea7c4e7a9c9abe40d2f57995b"><td class="memItemLeft" align="right" valign="top">constexpr char const *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#aa093207ea7c4e7a9c9abe40d2f57995b">GetActivationFunctionAsCString</a> (<a class="el" href="namespacearmnn.html#a56297e0f7b215eea46c818cb7528d9ea">ActivationFunction</a> activation)</td></tr>
<tr class="separator:aa093207ea7c4e7a9c9abe40d2f57995b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5cda3502382f06a64c3cbeb1829bd850"><td class="memItemLeft" align="right" valign="top">constexpr char const *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a5cda3502382f06a64c3cbeb1829bd850">GetArgMinMaxFunctionAsCString</a> (<a class="el" href="namespacearmnn.html#ae7e8cbf71db6a490789ca6dcaa8deeae">ArgMinMaxFunction</a> function)</td></tr>
<tr class="separator:a5cda3502382f06a64c3cbeb1829bd850"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aabb76a77e95921785f576bb29b495cd8"><td class="memItemLeft" align="right" valign="top">constexpr char const *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#aabb76a77e95921785f576bb29b495cd8">GetComparisonOperationAsCString</a> (<a class="el" href="namespacearmnn.html#a2d299363c9fc33334c571fa29ca4f58c">ComparisonOperation</a> operation)</td></tr>
<tr class="separator:aabb76a77e95921785f576bb29b495cd8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6dac966f265381903c8ef4f392becced"><td class="memItemLeft" align="right" valign="top">constexpr char const *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a6dac966f265381903c8ef4f392becced">GetUnaryOperationAsCString</a> (<a class="el" href="namespacearmnn.html#a1cfaa710db2a54673b21d2ea2da757c8">UnaryOperation</a> operation)</td></tr>
<tr class="separator:a6dac966f265381903c8ef4f392becced"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a517314c21ac5309b90408da162212f9d"><td class="memItemLeft" align="right" valign="top">constexpr char const *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a517314c21ac5309b90408da162212f9d">GetPoolingAlgorithmAsCString</a> (<a class="el" href="namespacearmnn.html#a961bbfe1db71a848eff5a1f0ab775718">PoolingAlgorithm</a> pooling)</td></tr>
<tr class="separator:a517314c21ac5309b90408da162212f9d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a67d7ce2e14ebd328f423322db88279c3"><td class="memItemLeft" align="right" valign="top">constexpr char const *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a67d7ce2e14ebd328f423322db88279c3">GetOutputShapeRoundingAsCString</a> (<a class="el" href="namespacearmnn.html#adf2e5515c4c36a3e7e46bb8b83c6754e">OutputShapeRounding</a> rounding)</td></tr>
<tr class="separator:a67d7ce2e14ebd328f423322db88279c3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a129bde68152f5892e6abdedcb62aa983"><td class="memItemLeft" align="right" valign="top">constexpr char const *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a129bde68152f5892e6abdedcb62aa983">GetPaddingMethodAsCString</a> (<a class="el" href="namespacearmnn.html#a3888429b6ebc79f9a7df549e5e4d9a2f">PaddingMethod</a> method)</td></tr>
<tr class="separator:a129bde68152f5892e6abdedcb62aa983"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa02b9e06fb20fa3c13da0427e6ee5ab2"><td class="memItemLeft" align="right" valign="top">constexpr unsigned int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#aa02b9e06fb20fa3c13da0427e6ee5ab2">GetDataTypeSize</a> (<a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a> dataType)</td></tr>
<tr class="separator:aa02b9e06fb20fa3c13da0427e6ee5ab2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a637fea04314a9870c1dc4355c1bed429"><td class="memTemplParams" colspan="2">template&lt;unsigned N&gt; </td></tr>
<tr class="memitem:a637fea04314a9870c1dc4355c1bed429"><td class="memTemplItemLeft" align="right" valign="top">constexpr bool&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a637fea04314a9870c1dc4355c1bed429">StrEqual</a> (const char *strA, const char(&amp;strB)[N])</td></tr>
<tr class="separator:a637fea04314a9870c1dc4355c1bed429"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a65645fa03bf8cddfb9d8a9f83beeb6e8"><td class="memItemLeft" align="right" valign="top">constexpr <a class="el" href="namespacearmnn.html#ae2f04a162585c0a5222a537efd5456ae">armnn::Compute</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a65645fa03bf8cddfb9d8a9f83beeb6e8">ParseComputeDevice</a> (const char *str)</td></tr>
<tr class="separator:a65645fa03bf8cddfb9d8a9f83beeb6e8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a81b5ff8545adad19a1c9d4ca076d552c"><td class="memItemLeft" align="right" valign="top">constexpr const char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a81b5ff8545adad19a1c9d4ca076d552c">GetDataTypeName</a> (<a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a> dataType)</td></tr>
<tr class="separator:a81b5ff8545adad19a1c9d4ca076d552c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aeef70b7611ae71e97ab55c75ef72b210"><td class="memItemLeft" align="right" valign="top">constexpr const char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#aeef70b7611ae71e97ab55c75ef72b210">GetDataLayoutName</a> (<a class="el" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0">DataLayout</a> dataLayout)</td></tr>
<tr class="separator:aeef70b7611ae71e97ab55c75ef72b210"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aeadd602e128a2be97161345b48533417"><td class="memItemLeft" align="right" valign="top">constexpr const char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#aeadd602e128a2be97161345b48533417">GetNormalizationAlgorithmChannelAsCString</a> (<a class="el" href="namespacearmnn.html#abe18a5033f2ab9c0de82c676b48f5437">NormalizationAlgorithmChannel</a> channel)</td></tr>
<tr class="separator:aeadd602e128a2be97161345b48533417"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad57460ea53cd0b519a3b3547eaf1db7c"><td class="memItemLeft" align="right" valign="top">constexpr const char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#ad57460ea53cd0b519a3b3547eaf1db7c">GetNormalizationAlgorithmMethodAsCString</a> (<a class="el" href="namespacearmnn.html#ad605d1661fa0d8c7fea651d82fbe11c9">NormalizationAlgorithmMethod</a> method)</td></tr>
<tr class="separator:ad57460ea53cd0b519a3b3547eaf1db7c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aded981a42027bd3302b9c0f09d988659"><td class="memItemLeft" align="right" valign="top">constexpr const char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#aded981a42027bd3302b9c0f09d988659">GetResizeMethodAsCString</a> (<a class="el" href="namespacearmnn.html#a9a2af2f8c4af4f9efa8e79417d505ac4">ResizeMethod</a> method)</td></tr>
<tr class="separator:aded981a42027bd3302b9c0f09d988659"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad44c007f21af2d0375e3ef9400a1b275"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
<tr class="memitem:ad44c007f21af2d0375e3ef9400a1b275"><td class="memTemplItemLeft" align="right" valign="top">constexpr bool&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#ad44c007f21af2d0375e3ef9400a1b275">IsQuantizedType</a> ()</td></tr>
<tr class="separator:ad44c007f21af2d0375e3ef9400a1b275"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad91bc7bfe29186f5d78c28386c6c5309"><td class="memItemLeft" align="right" valign="top">constexpr bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#ad91bc7bfe29186f5d78c28386c6c5309">IsQuantized8BitType</a> (<a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a> dataType)</td></tr>
<tr class="separator:ad91bc7bfe29186f5d78c28386c6c5309"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa172264d7075abf828e0b6894996a561"><td class="memItemLeft" align="right" valign="top">constexpr bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#aa172264d7075abf828e0b6894996a561">IsQuantizedType</a> (<a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a> dataType)</td></tr>
<tr class="separator:aa172264d7075abf828e0b6894996a561"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aaa5b68f3f5bb73b1d3c85d895547a372"><td class="memItemLeft" align="right" valign="top">std::ostream &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#aaa5b68f3f5bb73b1d3c85d895547a372">operator&lt;&lt;</a> (std::ostream &amp;os, <a class="el" href="namespacearmnn.html#a67a0db04d321a74b7e7fcfd3f1a3f70b">Status</a> stat)</td></tr>
<tr class="separator:aaa5b68f3f5bb73b1d3c85d895547a372"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa6d7532e14af97577c054f96d0cf23b3"><td class="memItemLeft" align="right" valign="top">std::ostream &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#aa6d7532e14af97577c054f96d0cf23b3">operator&lt;&lt;</a> (std::ostream &amp;os, const <a class="el" href="classarmnn_1_1_tensor_shape.html">armnn::TensorShape</a> &amp;shape)</td></tr>
<tr class="separator:aa6d7532e14af97577c054f96d0cf23b3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad773a034fb9983e15f3094b4c5c7c30c"><td class="memTemplParams" colspan="2">template&lt;typename QuantizedType &gt; </td></tr>
<tr class="memitem:ad773a034fb9983e15f3094b4c5c7c30c"><td class="memTemplItemLeft" align="right" valign="top">QuantizedType&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#ad773a034fb9983e15f3094b4c5c7c30c">Quantize</a> (float value, float scale, int32_t offset)</td></tr>
<tr class="memdesc:ad773a034fb9983e15f3094b4c5c7c30c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Explicit specialization of Quantize for int8_t. <a href="#ad773a034fb9983e15f3094b4c5c7c30c">More...</a><br /></td></tr>
<tr class="separator:ad773a034fb9983e15f3094b4c5c7c30c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a855293b1be0581fb61ef6a1c5b027d0f"><td class="memTemplParams" colspan="2">template&lt;typename QuantizedType &gt; </td></tr>
<tr class="memitem:a855293b1be0581fb61ef6a1c5b027d0f"><td class="memTemplItemLeft" align="right" valign="top">float&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a855293b1be0581fb61ef6a1c5b027d0f">Dequantize</a> (QuantizedType value, float scale, int32_t offset)</td></tr>
<tr class="separator:a855293b1be0581fb61ef6a1c5b027d0f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9667bea652e3a5ef81fea59b71513ced"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a9667bea652e3a5ef81fea59b71513ced">VerifyTensorInfoDataType</a> (const <a class="el" href="classarmnn_1_1_tensor_info.html">armnn::TensorInfo</a> &amp;info, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6">armnn::DataType</a> dataType)</td></tr>
<tr class="separator:a9667bea652e3a5ef81fea59b71513ced"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa59f7a819c3e29d10ffc41e5c0616872"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#aa59f7a819c3e29d10ffc41e5c0616872">ConfigureLogging</a> (bool printToStandardOutput, bool printToDebugOutput, <a class="el" href="namespacearmnn.html#a93a3ba385cad27c4774e5fe64c025d3d">LogSeverity</a> severity)</td></tr>
<tr class="separator:aa59f7a819c3e29d10ffc41e5c0616872"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a238a74871f634b778176e5dc8391888a"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
<tr class="memitem:a238a74871f634b778176e5dc8391888a"><td class="memTemplItemLeft" align="right" valign="top">bool&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a238a74871f634b778176e5dc8391888a">CompatibleTypes</a> (<a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a>)</td></tr>
<tr class="separator:a238a74871f634b778176e5dc8391888a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7296af8a86f22ef7f144dc02c4c94324"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
<tr class="memitem:a7296af8a86f22ef7f144dc02c4c94324"><td class="memTemplItemLeft" align="right" valign="top">bool&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a7296af8a86f22ef7f144dc02c4c94324">CompatibleTypes&lt; float &gt;</a> (<a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a> dataType)</td></tr>
<tr class="separator:a7296af8a86f22ef7f144dc02c4c94324"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7b224e4c135fa1fdb3e54dfe945e07f8"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
<tr class="memitem:a7b224e4c135fa1fdb3e54dfe945e07f8"><td class="memTemplItemLeft" align="right" valign="top">bool&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a7b224e4c135fa1fdb3e54dfe945e07f8">CompatibleTypes&lt; Half &gt;</a> (<a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a> dataType)</td></tr>
<tr class="separator:a7b224e4c135fa1fdb3e54dfe945e07f8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad23bcbfd1876f1ae11c926d0e3e8c3e5"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
<tr class="memitem:ad23bcbfd1876f1ae11c926d0e3e8c3e5"><td class="memTemplItemLeft" align="right" valign="top">bool&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#ad23bcbfd1876f1ae11c926d0e3e8c3e5">CompatibleTypes&lt; uint8_t &gt;</a> (<a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a> dataType)</td></tr>
<tr class="separator:ad23bcbfd1876f1ae11c926d0e3e8c3e5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2bcd446605a7ee354be1038983358e04"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
<tr class="memitem:a2bcd446605a7ee354be1038983358e04"><td class="memTemplItemLeft" align="right" valign="top">bool&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a2bcd446605a7ee354be1038983358e04">CompatibleTypes&lt; int8_t &gt;</a> (<a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a> dataType)</td></tr>
<tr class="separator:a2bcd446605a7ee354be1038983358e04"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6a0a86fe227d22c1cf7381798ad8550f"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
<tr class="memitem:a6a0a86fe227d22c1cf7381798ad8550f"><td class="memTemplItemLeft" align="right" valign="top">bool&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a6a0a86fe227d22c1cf7381798ad8550f">CompatibleTypes&lt; int16_t &gt;</a> (<a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a> dataType)</td></tr>
<tr class="separator:a6a0a86fe227d22c1cf7381798ad8550f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a000bb59f20fa937e2acff1c2aaba7944"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
<tr class="memitem:a000bb59f20fa937e2acff1c2aaba7944"><td class="memTemplItemLeft" align="right" valign="top">bool&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a000bb59f20fa937e2acff1c2aaba7944">CompatibleTypes&lt; int32_t &gt;</a> (<a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a> dataType)</td></tr>
<tr class="separator:a000bb59f20fa937e2acff1c2aaba7944"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a14d7f180bf51e86850305965c3707e07"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a14d7f180bf51e86850305965c3707e07">swap</a> (<a class="el" href="structarmnn_1_1_origins_descriptor.html">OriginsDescriptor</a> &amp;first, <a class="el" href="structarmnn_1_1_origins_descriptor.html">OriginsDescriptor</a> &amp;second)</td></tr>
<tr class="separator:a14d7f180bf51e86850305965c3707e07"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a686b8288a04b3ffff67d560eea53f6be"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a686b8288a04b3ffff67d560eea53f6be">swap</a> (<a class="el" href="structarmnn_1_1_views_descriptor.html">ViewsDescriptor</a> &amp;first, <a class="el" href="structarmnn_1_1_views_descriptor.html">ViewsDescriptor</a> &amp;second)</td></tr>
<tr class="separator:a686b8288a04b3ffff67d560eea53f6be"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9da573d7a1fc03726fd41f2130cbcf92"><td class="memItemLeft" align="right" valign="top">char const *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a9da573d7a1fc03726fd41f2130cbcf92">GetLayerTypeAsCString</a> (<a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a> type)</td></tr>
<tr class="separator:a9da573d7a1fc03726fd41f2130cbcf92"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac4fb1513cf6f4f3f40ab3d6559ec4067"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
<tr class="memitem:ac4fb1513cf6f4f3f40ab3d6559ec4067"><td class="memTemplItemLeft" align="right" valign="top">constexpr <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#ac4fb1513cf6f4f3f40ab3d6559ec4067">LayerEnumOf</a> (const T *=nullptr)</td></tr>
<tr class="separator:ac4fb1513cf6f4f3f40ab3d6559ec4067"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afb1e69829289fb07cc349c0884f27abd"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
<tr class="memitem:afb1e69829289fb07cc349c0884f27abd"><td class="memTemplItemLeft" align="right" valign="top">constexpr <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#afb1e69829289fb07cc349c0884f27abd">LayerEnumOf</a> (const <a class="el" href="classarmnn_1_1_activation_layer.html">ActivationLayer</a> *)</td></tr>
<tr class="separator:afb1e69829289fb07cc349c0884f27abd"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:acc630e11a5baa28ad5723568a7a60109"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
<tr class="memitem:acc630e11a5baa28ad5723568a7a60109"><td class="memTemplItemLeft" align="right" valign="top">constexpr <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#acc630e11a5baa28ad5723568a7a60109">LayerEnumOf</a> (const <a class="el" href="classarmnn_1_1_addition_layer.html">AdditionLayer</a> *)</td></tr>
<tr class="separator:acc630e11a5baa28ad5723568a7a60109"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a324e860c347972fce7a1c07531bed06e"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
<tr class="memitem:a324e860c347972fce7a1c07531bed06e"><td class="memTemplItemLeft" align="right" valign="top">constexpr <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a324e860c347972fce7a1c07531bed06e">LayerEnumOf</a> (const <a class="el" href="classarmnn_1_1_arg_min_max_layer.html">ArgMinMaxLayer</a> *)</td></tr>
<tr class="separator:a324e860c347972fce7a1c07531bed06e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae22db3ab5196edbb2e4e5244adc512e3"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
<tr class="memitem:ae22db3ab5196edbb2e4e5244adc512e3"><td class="memTemplItemLeft" align="right" valign="top">constexpr <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#ae22db3ab5196edbb2e4e5244adc512e3">LayerEnumOf</a> (const <a class="el" href="classarmnn_1_1_batch_normalization_layer.html">BatchNormalizationLayer</a> *)</td></tr>
<tr class="separator:ae22db3ab5196edbb2e4e5244adc512e3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a87ffe3fb58ec36989d343e53e23fb0f8"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
<tr class="memitem:a87ffe3fb58ec36989d343e53e23fb0f8"><td class="memTemplItemLeft" align="right" valign="top">constexpr <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a87ffe3fb58ec36989d343e53e23fb0f8">LayerEnumOf</a> (const <a class="el" href="classarmnn_1_1_batch_to_space_nd_layer.html">BatchToSpaceNdLayer</a> *)</td></tr>
<tr class="separator:a87ffe3fb58ec36989d343e53e23fb0f8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a43b8024cb70c07116be132ca28b12a21"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
<tr class="memitem:a43b8024cb70c07116be132ca28b12a21"><td class="memTemplItemLeft" align="right" valign="top">constexpr <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a43b8024cb70c07116be132ca28b12a21">LayerEnumOf</a> (const <a class="el" href="classarmnn_1_1_comparison_layer.html">ComparisonLayer</a> *)</td></tr>
<tr class="separator:a43b8024cb70c07116be132ca28b12a21"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a300c356944bb1e9d2dff6191d1c3501c"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
<tr class="memitem:a300c356944bb1e9d2dff6191d1c3501c"><td class="memTemplItemLeft" align="right" valign="top">constexpr <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a300c356944bb1e9d2dff6191d1c3501c">LayerEnumOf</a> (const <a class="el" href="classarmnn_1_1_concat_layer.html">ConcatLayer</a> *)</td></tr>
<tr class="separator:a300c356944bb1e9d2dff6191d1c3501c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a307007c2249288fe158bfdfaf9e1c413"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
<tr class="memitem:a307007c2249288fe158bfdfaf9e1c413"><td class="memTemplItemLeft" align="right" valign="top">constexpr <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a307007c2249288fe158bfdfaf9e1c413">LayerEnumOf</a> (const <a class="el" href="classarmnn_1_1_constant_layer.html">ConstantLayer</a> *)</td></tr>
<tr class="separator:a307007c2249288fe158bfdfaf9e1c413"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4471d39d8390fc550c1f8688639e66f5"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
<tr class="memitem:a4471d39d8390fc550c1f8688639e66f5"><td class="memTemplItemLeft" align="right" valign="top">constexpr <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a4471d39d8390fc550c1f8688639e66f5">LayerEnumOf</a> (const <a class="el" href="classarmnn_1_1_convert_fp16_to_fp32_layer.html">ConvertFp16ToFp32Layer</a> *)</td></tr>
<tr class="separator:a4471d39d8390fc550c1f8688639e66f5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af8df06bed5f1257864645e45948afa5c"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
<tr class="memitem:af8df06bed5f1257864645e45948afa5c"><td class="memTemplItemLeft" align="right" valign="top">constexpr <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#af8df06bed5f1257864645e45948afa5c">LayerEnumOf</a> (const <a class="el" href="classarmnn_1_1_convert_fp32_to_fp16_layer.html">ConvertFp32ToFp16Layer</a> *)</td></tr>
<tr class="separator:af8df06bed5f1257864645e45948afa5c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab2f52d0c728933e36f581a07676d9fe9"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
<tr class="memitem:ab2f52d0c728933e36f581a07676d9fe9"><td class="memTemplItemLeft" align="right" valign="top">constexpr <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#ab2f52d0c728933e36f581a07676d9fe9">LayerEnumOf</a> (const <a class="el" href="classarmnn_1_1_convolution2d_layer.html">Convolution2dLayer</a> *)</td></tr>
<tr class="separator:ab2f52d0c728933e36f581a07676d9fe9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad596268fcd03c87a4b6fde86f4732546"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
<tr class="memitem:ad596268fcd03c87a4b6fde86f4732546"><td class="memTemplItemLeft" align="right" valign="top">constexpr <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#ad596268fcd03c87a4b6fde86f4732546">LayerEnumOf</a> (const <a class="el" href="classarmnn_1_1_debug_layer.html">DebugLayer</a> *)</td></tr>
<tr class="separator:ad596268fcd03c87a4b6fde86f4732546"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a939154289f544a02baec0735b27b8894"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
<tr class="memitem:a939154289f544a02baec0735b27b8894"><td class="memTemplItemLeft" align="right" valign="top">constexpr <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a939154289f544a02baec0735b27b8894">LayerEnumOf</a> (const <a class="el" href="classarmnn_1_1_depth_to_space_layer.html">DepthToSpaceLayer</a> *)</td></tr>
<tr class="separator:a939154289f544a02baec0735b27b8894"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a26a46c27bca08b5bd26abba341f1d795"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
<tr class="memitem:a26a46c27bca08b5bd26abba341f1d795"><td class="memTemplItemLeft" align="right" valign="top">constexpr <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a26a46c27bca08b5bd26abba341f1d795">LayerEnumOf</a> (const <a class="el" href="classarmnn_1_1_depthwise_convolution2d_layer.html">DepthwiseConvolution2dLayer</a> *)</td></tr>
<tr class="separator:a26a46c27bca08b5bd26abba341f1d795"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a95e2d190d7483017b4f4841dd07776e5"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
<tr class="memitem:a95e2d190d7483017b4f4841dd07776e5"><td class="memTemplItemLeft" align="right" valign="top">constexpr <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a95e2d190d7483017b4f4841dd07776e5">LayerEnumOf</a> (const <a class="el" href="classarmnn_1_1_dequantize_layer.html">DequantizeLayer</a> *)</td></tr>
<tr class="separator:a95e2d190d7483017b4f4841dd07776e5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a22772d461066f995cd72d13066b0f46d"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
<tr class="memitem:a22772d461066f995cd72d13066b0f46d"><td class="memTemplItemLeft" align="right" valign="top">constexpr <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a22772d461066f995cd72d13066b0f46d">LayerEnumOf</a> (const <a class="el" href="classarmnn_1_1_detection_post_process_layer.html">DetectionPostProcessLayer</a> *)</td></tr>
<tr class="separator:a22772d461066f995cd72d13066b0f46d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a955b1001b8c57c60ce443a1e31468f20"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
<tr class="memitem:a955b1001b8c57c60ce443a1e31468f20"><td class="memTemplItemLeft" align="right" valign="top">constexpr <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a955b1001b8c57c60ce443a1e31468f20">LayerEnumOf</a> (const <a class="el" href="classarmnn_1_1_division_layer.html">DivisionLayer</a> *)</td></tr>
<tr class="separator:a955b1001b8c57c60ce443a1e31468f20"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a72f7601d11f32c8d9ccb49a80fcf662a"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
<tr class="memitem:a72f7601d11f32c8d9ccb49a80fcf662a"><td class="memTemplItemLeft" align="right" valign="top">constexpr <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a72f7601d11f32c8d9ccb49a80fcf662a">LayerEnumOf</a> (const <a class="el" href="classarmnn_1_1_elementwise_unary_layer.html">ElementwiseUnaryLayer</a> *)</td></tr>
<tr class="separator:a72f7601d11f32c8d9ccb49a80fcf662a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4acae0cdcdfab8e941af5c4e42e58cb3"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
<tr class="memitem:a4acae0cdcdfab8e941af5c4e42e58cb3"><td class="memTemplItemLeft" align="right" valign="top">constexpr <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a4acae0cdcdfab8e941af5c4e42e58cb3">LayerEnumOf</a> (const <a class="el" href="classarmnn_1_1_fake_quantization_layer.html">FakeQuantizationLayer</a> *)</td></tr>
<tr class="separator:a4acae0cdcdfab8e941af5c4e42e58cb3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a575f5487e62465b6b9edbc447a26f32f"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
<tr class="memitem:a575f5487e62465b6b9edbc447a26f32f"><td class="memTemplItemLeft" align="right" valign="top">constexpr <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a575f5487e62465b6b9edbc447a26f32f">LayerEnumOf</a> (const <a class="el" href="classarmnn_1_1_floor_layer.html">FloorLayer</a> *)</td></tr>
<tr class="separator:a575f5487e62465b6b9edbc447a26f32f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa689e4a3aa77e9d9e5851f566c5eb8b3"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
<tr class="memitem:aa689e4a3aa77e9d9e5851f566c5eb8b3"><td class="memTemplItemLeft" align="right" valign="top">constexpr <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#aa689e4a3aa77e9d9e5851f566c5eb8b3">LayerEnumOf</a> (const <a class="el" href="classarmnn_1_1_fully_connected_layer.html">FullyConnectedLayer</a> *)</td></tr>
<tr class="separator:aa689e4a3aa77e9d9e5851f566c5eb8b3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a548fb17a9bff172e751ae4bd3add62b5"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
<tr class="memitem:a548fb17a9bff172e751ae4bd3add62b5"><td class="memTemplItemLeft" align="right" valign="top">constexpr <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a548fb17a9bff172e751ae4bd3add62b5">LayerEnumOf</a> (const <a class="el" href="classarmnn_1_1_gather_layer.html">GatherLayer</a> *)</td></tr>
<tr class="separator:a548fb17a9bff172e751ae4bd3add62b5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:adef1c8c63daa9d348a29e74eac33a054"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
<tr class="memitem:adef1c8c63daa9d348a29e74eac33a054"><td class="memTemplItemLeft" align="right" valign="top">constexpr <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#adef1c8c63daa9d348a29e74eac33a054">LayerEnumOf</a> (const <a class="el" href="classarmnn_1_1_input_layer.html">InputLayer</a> *)</td></tr>
<tr class="separator:adef1c8c63daa9d348a29e74eac33a054"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a57bcf309be7adcc91001834979f87bde"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
<tr class="memitem:a57bcf309be7adcc91001834979f87bde"><td class="memTemplItemLeft" align="right" valign="top">constexpr <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a57bcf309be7adcc91001834979f87bde">LayerEnumOf</a> (const <a class="el" href="classarmnn_1_1_instance_normalization_layer.html">InstanceNormalizationLayer</a> *)</td></tr>
<tr class="separator:a57bcf309be7adcc91001834979f87bde"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a36f16b97bcb662caaa4eae24ea16cccf"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
<tr class="memitem:a36f16b97bcb662caaa4eae24ea16cccf"><td class="memTemplItemLeft" align="right" valign="top">constexpr <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a36f16b97bcb662caaa4eae24ea16cccf">LayerEnumOf</a> (const <a class="el" href="classarmnn_1_1_l2_normalization_layer.html">L2NormalizationLayer</a> *)</td></tr>
<tr class="separator:a36f16b97bcb662caaa4eae24ea16cccf"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afb6f9bd4f43118749a0336074bed7b35"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
<tr class="memitem:afb6f9bd4f43118749a0336074bed7b35"><td class="memTemplItemLeft" align="right" valign="top">constexpr <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#afb6f9bd4f43118749a0336074bed7b35">LayerEnumOf</a> (const <a class="el" href="classarmnn_1_1_log_softmax_layer.html">LogSoftmaxLayer</a> *)</td></tr>
<tr class="separator:afb6f9bd4f43118749a0336074bed7b35"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0d08fb555c6d1cba705fd73b71797a28"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
<tr class="memitem:a0d08fb555c6d1cba705fd73b71797a28"><td class="memTemplItemLeft" align="right" valign="top">constexpr <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a0d08fb555c6d1cba705fd73b71797a28">LayerEnumOf</a> (const <a class="el" href="classarmnn_1_1_lstm_layer.html">LstmLayer</a> *)</td></tr>
<tr class="separator:a0d08fb555c6d1cba705fd73b71797a28"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6b231c8a547d4030d9a4a1618810c20b"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
<tr class="memitem:a6b231c8a547d4030d9a4a1618810c20b"><td class="memTemplItemLeft" align="right" valign="top">constexpr <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a6b231c8a547d4030d9a4a1618810c20b">LayerEnumOf</a> (const <a class="el" href="classarmnn_1_1_maximum_layer.html">MaximumLayer</a> *)</td></tr>
<tr class="separator:a6b231c8a547d4030d9a4a1618810c20b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af079ba32db74f53aba1ad19193cd2a4b"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
<tr class="memitem:af079ba32db74f53aba1ad19193cd2a4b"><td class="memTemplItemLeft" align="right" valign="top">constexpr <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#af079ba32db74f53aba1ad19193cd2a4b">LayerEnumOf</a> (const <a class="el" href="classarmnn_1_1_mean_layer.html">MeanLayer</a> *)</td></tr>
<tr class="separator:af079ba32db74f53aba1ad19193cd2a4b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa17969606f64ea581c28431f2395e653"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
<tr class="memitem:aa17969606f64ea581c28431f2395e653"><td class="memTemplItemLeft" align="right" valign="top">constexpr <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#aa17969606f64ea581c28431f2395e653">LayerEnumOf</a> (const <a class="el" href="classarmnn_1_1_mem_copy_layer.html">MemCopyLayer</a> *)</td></tr>
<tr class="separator:aa17969606f64ea581c28431f2395e653"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a70f3d83f6d1e3918eab895c8083058fa"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
<tr class="memitem:a70f3d83f6d1e3918eab895c8083058fa"><td class="memTemplItemLeft" align="right" valign="top">constexpr <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a70f3d83f6d1e3918eab895c8083058fa">LayerEnumOf</a> (const <a class="el" href="classarmnn_1_1_mem_import_layer.html">MemImportLayer</a> *)</td></tr>
<tr class="separator:a70f3d83f6d1e3918eab895c8083058fa"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9e8199bdc39f928f694591a41d7aa0c0"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
<tr class="memitem:a9e8199bdc39f928f694591a41d7aa0c0"><td class="memTemplItemLeft" align="right" valign="top">constexpr <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a9e8199bdc39f928f694591a41d7aa0c0">LayerEnumOf</a> (const <a class="el" href="classarmnn_1_1_merge_layer.html">MergeLayer</a> *)</td></tr>
<tr class="separator:a9e8199bdc39f928f694591a41d7aa0c0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad32a13408ace1c1fa520ed64a2cbe70f"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
<tr class="memitem:ad32a13408ace1c1fa520ed64a2cbe70f"><td class="memTemplItemLeft" align="right" valign="top">constexpr <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#ad32a13408ace1c1fa520ed64a2cbe70f">LayerEnumOf</a> (const <a class="el" href="classarmnn_1_1_minimum_layer.html">MinimumLayer</a> *)</td></tr>
<tr class="separator:ad32a13408ace1c1fa520ed64a2cbe70f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a40f1546c0fa69f318eeab4b29cc64b70"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
<tr class="memitem:a40f1546c0fa69f318eeab4b29cc64b70"><td class="memTemplItemLeft" align="right" valign="top">constexpr <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a40f1546c0fa69f318eeab4b29cc64b70">LayerEnumOf</a> (const <a class="el" href="classarmnn_1_1_multiplication_layer.html">MultiplicationLayer</a> *)</td></tr>
<tr class="separator:a40f1546c0fa69f318eeab4b29cc64b70"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a140713619ee498a149854a5376b8d072"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
<tr class="memitem:a140713619ee498a149854a5376b8d072"><td class="memTemplItemLeft" align="right" valign="top">constexpr <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a140713619ee498a149854a5376b8d072">LayerEnumOf</a> (const <a class="el" href="classarmnn_1_1_normalization_layer.html">NormalizationLayer</a> *)</td></tr>
<tr class="separator:a140713619ee498a149854a5376b8d072"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7a6e68f66d1d3819640b0f2d46a55fd1"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
<tr class="memitem:a7a6e68f66d1d3819640b0f2d46a55fd1"><td class="memTemplItemLeft" align="right" valign="top">constexpr <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a7a6e68f66d1d3819640b0f2d46a55fd1">LayerEnumOf</a> (const <a class="el" href="classarmnn_1_1_output_layer.html">OutputLayer</a> *)</td></tr>
<tr class="separator:a7a6e68f66d1d3819640b0f2d46a55fd1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab6f1994db909dcc399cb1f8bc50c2d3d"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
<tr class="memitem:ab6f1994db909dcc399cb1f8bc50c2d3d"><td class="memTemplItemLeft" align="right" valign="top">constexpr <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#ab6f1994db909dcc399cb1f8bc50c2d3d">LayerEnumOf</a> (const <a class="el" href="classarmnn_1_1_pad_layer.html">PadLayer</a> *)</td></tr>
<tr class="separator:ab6f1994db909dcc399cb1f8bc50c2d3d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1e6b17606926b8f69dbeda7f7ff1df95"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
<tr class="memitem:a1e6b17606926b8f69dbeda7f7ff1df95"><td class="memTemplItemLeft" align="right" valign="top">constexpr <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a1e6b17606926b8f69dbeda7f7ff1df95">LayerEnumOf</a> (const <a class="el" href="classarmnn_1_1_permute_layer.html">PermuteLayer</a> *)</td></tr>
<tr class="separator:a1e6b17606926b8f69dbeda7f7ff1df95"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ade84059b48b38da3a233bed287864c5b"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
<tr class="memitem:ade84059b48b38da3a233bed287864c5b"><td class="memTemplItemLeft" align="right" valign="top">constexpr <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#ade84059b48b38da3a233bed287864c5b">LayerEnumOf</a> (const <a class="el" href="classarmnn_1_1_pooling2d_layer.html">Pooling2dLayer</a> *)</td></tr>
<tr class="separator:ade84059b48b38da3a233bed287864c5b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6e5eaa19ff232f11daa9a1c6caccf7fe"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
<tr class="memitem:a6e5eaa19ff232f11daa9a1c6caccf7fe"><td class="memTemplItemLeft" align="right" valign="top">constexpr <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a6e5eaa19ff232f11daa9a1c6caccf7fe">LayerEnumOf</a> (const <a class="el" href="classarmnn_1_1_pre_compiled_layer.html">PreCompiledLayer</a> *)</td></tr>
<tr class="separator:a6e5eaa19ff232f11daa9a1c6caccf7fe"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a58a5defa35b12773a97760efadffef4f"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
<tr class="memitem:a58a5defa35b12773a97760efadffef4f"><td class="memTemplItemLeft" align="right" valign="top">constexpr <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a58a5defa35b12773a97760efadffef4f">LayerEnumOf</a> (const <a class="el" href="classarmnn_1_1_prelu_layer.html">PreluLayer</a> *)</td></tr>
<tr class="separator:a58a5defa35b12773a97760efadffef4f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aaaaf64c0888ab25bfae770bd4c2ec34b"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
<tr class="memitem:aaaaf64c0888ab25bfae770bd4c2ec34b"><td class="memTemplItemLeft" align="right" valign="top">constexpr <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#aaaaf64c0888ab25bfae770bd4c2ec34b">LayerEnumOf</a> (const <a class="el" href="classarmnn_1_1_quantize_layer.html">QuantizeLayer</a> *)</td></tr>
<tr class="separator:aaaaf64c0888ab25bfae770bd4c2ec34b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a31bcd6f755df954a4d7b020a09499105"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
<tr class="memitem:a31bcd6f755df954a4d7b020a09499105"><td class="memTemplItemLeft" align="right" valign="top">constexpr <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a31bcd6f755df954a4d7b020a09499105">LayerEnumOf</a> (const <a class="el" href="classarmnn_1_1_quantized_lstm_layer.html">QuantizedLstmLayer</a> *)</td></tr>
<tr class="separator:a31bcd6f755df954a4d7b020a09499105"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6a17f58da2071720e3003a56a092aab3"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
<tr class="memitem:a6a17f58da2071720e3003a56a092aab3"><td class="memTemplItemLeft" align="right" valign="top">constexpr <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a6a17f58da2071720e3003a56a092aab3">LayerEnumOf</a> (const <a class="el" href="classarmnn_1_1_reshape_layer.html">ReshapeLayer</a> *)</td></tr>
<tr class="separator:a6a17f58da2071720e3003a56a092aab3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aafc370ea363f0565c3a8bced1e37c79e"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
<tr class="memitem:aafc370ea363f0565c3a8bced1e37c79e"><td class="memTemplItemLeft" align="right" valign="top">constexpr <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#aafc370ea363f0565c3a8bced1e37c79e">LayerEnumOf</a> (const <a class="el" href="classarmnn_1_1_resize_layer.html">ResizeLayer</a> *)</td></tr>
<tr class="separator:aafc370ea363f0565c3a8bced1e37c79e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3cbbb4e00618b072ace46751e660a295"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
<tr class="memitem:a3cbbb4e00618b072ace46751e660a295"><td class="memTemplItemLeft" align="right" valign="top">constexpr <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a3cbbb4e00618b072ace46751e660a295">LayerEnumOf</a> (const <a class="el" href="classarmnn_1_1_slice_layer.html">SliceLayer</a> *)</td></tr>
<tr class="separator:a3cbbb4e00618b072ace46751e660a295"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af6af4b51e08d3e811620811ab5e0cd2d"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
<tr class="memitem:af6af4b51e08d3e811620811ab5e0cd2d"><td class="memTemplItemLeft" align="right" valign="top">constexpr <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#af6af4b51e08d3e811620811ab5e0cd2d">LayerEnumOf</a> (const <a class="el" href="classarmnn_1_1_softmax_layer.html">SoftmaxLayer</a> *)</td></tr>
<tr class="separator:af6af4b51e08d3e811620811ab5e0cd2d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac2d31ced5505a9d05287f5b71d25e34a"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
<tr class="memitem:ac2d31ced5505a9d05287f5b71d25e34a"><td class="memTemplItemLeft" align="right" valign="top">constexpr <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#ac2d31ced5505a9d05287f5b71d25e34a">LayerEnumOf</a> (const <a class="el" href="classarmnn_1_1_space_to_batch_nd_layer.html">SpaceToBatchNdLayer</a> *)</td></tr>
<tr class="separator:ac2d31ced5505a9d05287f5b71d25e34a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a81c31de4f532a95ab85ed6d999029332"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
<tr class="memitem:a81c31de4f532a95ab85ed6d999029332"><td class="memTemplItemLeft" align="right" valign="top">constexpr <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a81c31de4f532a95ab85ed6d999029332">LayerEnumOf</a> (const <a class="el" href="classarmnn_1_1_space_to_depth_layer.html">SpaceToDepthLayer</a> *)</td></tr>
<tr class="separator:a81c31de4f532a95ab85ed6d999029332"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a24d3abbfc1ed81df673452c7148aa0cc"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
<tr class="memitem:a24d3abbfc1ed81df673452c7148aa0cc"><td class="memTemplItemLeft" align="right" valign="top">constexpr <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a24d3abbfc1ed81df673452c7148aa0cc">LayerEnumOf</a> (const <a class="el" href="classarmnn_1_1_splitter_layer.html">SplitterLayer</a> *)</td></tr>
<tr class="separator:a24d3abbfc1ed81df673452c7148aa0cc"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab676aab9119d1417764849099a099ecf"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
<tr class="memitem:ab676aab9119d1417764849099a099ecf"><td class="memTemplItemLeft" align="right" valign="top">constexpr <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#ab676aab9119d1417764849099a099ecf">LayerEnumOf</a> (const <a class="el" href="classarmnn_1_1_stack_layer.html">StackLayer</a> *)</td></tr>
<tr class="separator:ab676aab9119d1417764849099a099ecf"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1b5ff142f1d4420a8d83d9bcff1bfff4"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
<tr class="memitem:a1b5ff142f1d4420a8d83d9bcff1bfff4"><td class="memTemplItemLeft" align="right" valign="top">constexpr <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a1b5ff142f1d4420a8d83d9bcff1bfff4">LayerEnumOf</a> (const <a class="el" href="classarmnn_1_1_stand_in_layer.html">StandInLayer</a> *)</td></tr>
<tr class="separator:a1b5ff142f1d4420a8d83d9bcff1bfff4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad640080ff4ea3e4f9ff05823e32ce15f"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
<tr class="memitem:ad640080ff4ea3e4f9ff05823e32ce15f"><td class="memTemplItemLeft" align="right" valign="top">constexpr <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#ad640080ff4ea3e4f9ff05823e32ce15f">LayerEnumOf</a> (const <a class="el" href="classarmnn_1_1_strided_slice_layer.html">StridedSliceLayer</a> *)</td></tr>
<tr class="separator:ad640080ff4ea3e4f9ff05823e32ce15f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9cc235c8c5e2ef3d2788cd558d676b0a"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
<tr class="memitem:a9cc235c8c5e2ef3d2788cd558d676b0a"><td class="memTemplItemLeft" align="right" valign="top">constexpr <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a9cc235c8c5e2ef3d2788cd558d676b0a">LayerEnumOf</a> (const <a class="el" href="classarmnn_1_1_subtraction_layer.html">SubtractionLayer</a> *)</td></tr>
<tr class="separator:a9cc235c8c5e2ef3d2788cd558d676b0a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a110b9fdf7f17a1d065cd59ebc4bb76f7"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
<tr class="memitem:a110b9fdf7f17a1d065cd59ebc4bb76f7"><td class="memTemplItemLeft" align="right" valign="top">constexpr <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a110b9fdf7f17a1d065cd59ebc4bb76f7">LayerEnumOf</a> (const <a class="el" href="classarmnn_1_1_switch_layer.html">SwitchLayer</a> *)</td></tr>
<tr class="separator:a110b9fdf7f17a1d065cd59ebc4bb76f7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a60af5a86cf0261d0bdf4312736ab4461"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
<tr class="memitem:a60af5a86cf0261d0bdf4312736ab4461"><td class="memTemplItemLeft" align="right" valign="top">constexpr <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a60af5a86cf0261d0bdf4312736ab4461">LayerEnumOf</a> (const <a class="el" href="classarmnn_1_1_transpose_convolution2d_layer.html">TransposeConvolution2dLayer</a> *)</td></tr>
<tr class="separator:a60af5a86cf0261d0bdf4312736ab4461"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac7cce6c8c3c53b2feeba6548fc3fb00c"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#ac7cce6c8c3c53b2feeba6548fc3fb00c">CheckTensorDataTypesEqual</a> (const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input0, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input1)</td></tr>
<tr class="separator:ac7cce6c8c3c53b2feeba6548fc3fb00c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa8d5d17d1edd51d899fe699eb6156b58"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#aa8d5d17d1edd51d899fe699eb6156b58">IsArgMinMaxSupported</a> (const <a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a> &amp;backend, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output, const <a class="el" href="structarmnn_1_1_arg_min_max_descriptor.html">ArgMinMaxDescriptor</a> &amp;descriptor, char *reasonIfUnsupported, size_t reasonIfUnsupportedMaxLength)</td></tr>
<tr class="separator:aa8d5d17d1edd51d899fe699eb6156b58"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae1fc9dbaad02fff7f7227cc10536e1ee"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#ae1fc9dbaad02fff7f7227cc10536e1ee">IsConcatSupported</a> (const <a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a> &amp;backend, std::vector&lt; const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> *&gt; inputs, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output, const <a class="el" href="structarmnn_1_1_origins_descriptor.html">OriginsDescriptor</a> &amp;descriptor, char *reasonIfUnsupported, size_t reasonIfUnsupportedMaxLength)</td></tr>
<tr class="separator:ae1fc9dbaad02fff7f7227cc10536e1ee"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa9da770c93f812b264861f98cfdd650c"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#aa9da770c93f812b264861f98cfdd650c">IsDetectionPostProcessSupported</a> (const <a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a> &amp;backend, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input0, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input1, const <a class="el" href="structarmnn_1_1_detection_post_process_descriptor.html">DetectionPostProcessDescriptor</a> &amp;descriptor, char *reasonIfUnsupported, size_t reasonIfUnsupportedMaxLength)</td></tr>
<tr class="separator:aa9da770c93f812b264861f98cfdd650c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a658eea4e746b1e664796c48d7eaf19f0"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a658eea4e746b1e664796c48d7eaf19f0">IsGatherSupported</a> (const <a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a> &amp;backend, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input0, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input1, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output, char *reasonIfUnsupported, size_t reasonIfUnsupportedMaxLength)</td></tr>
<tr class="separator:a658eea4e746b1e664796c48d7eaf19f0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a99260bf94e4f8d0c8a527970cd52ce93"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a99260bf94e4f8d0c8a527970cd52ce93">IsMemImportSupported</a> (const <a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a> &amp;backend, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output, char *reasonIfUnsupported, size_t reasonIfUnsupportedMaxLength)</td></tr>
<tr class="separator:a99260bf94e4f8d0c8a527970cd52ce93"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:adf5de1faf58e2eea99a932883edc3ed0"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#adf5de1faf58e2eea99a932883edc3ed0">IsMergerSupported</a> (const <a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a> &amp;backend, std::vector&lt; const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> *&gt; inputs, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output, const <a class="el" href="structarmnn_1_1_origins_descriptor.html">OriginsDescriptor</a> &amp;descriptor, char *reasonIfUnsupported, size_t reasonIfUnsupportedMaxLength)</td></tr>
<tr class="separator:adf5de1faf58e2eea99a932883edc3ed0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a599a95f708fa0b6a6230dc6c9e73ea3e"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a599a95f708fa0b6a6230dc6c9e73ea3e">IsQuantizeSupported</a> (const <a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a> &amp;backend, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output, char *reasonIfUnsupported, size_t reasonIfUnsupportedMaxLength)</td></tr>
<tr class="separator:a599a95f708fa0b6a6230dc6c9e73ea3e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4bb384bc41a94bc7c3b4f543cd3fd437"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a4bb384bc41a94bc7c3b4f543cd3fd437">IsReshapeSupported</a> (const <a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a> &amp;backend, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output, const <a class="el" href="structarmnn_1_1_reshape_descriptor.html">ReshapeDescriptor</a> &amp;descriptor, char *reasonIfUnsupported, size_t reasonIfUnsupportedMaxLength)</td></tr>
<tr class="separator:a4bb384bc41a94bc7c3b4f543cd3fd437"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a13c7d751e4d37f65a6d40c3c6e50d2b8"><td class="memTemplParams" colspan="2">template&lt;typename T , typename V &gt; </td></tr>
<tr class="memitem:a13c7d751e4d37f65a6d40c3c6e50d2b8"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a13c7d751e4d37f65a6d40c3c6e50d2b8">SetValueChecked</a> (<a class="el" href="classarmnn_1_1_optional.html">Optional</a>&lt; T &amp;&gt; optionalRef, V &amp;&amp;val)</td></tr>
<tr class="separator:a13c7d751e4d37f65a6d40c3c6e50d2b8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af6dbe371ec651a8e0063624fdf32afc0"><td class="memTemplParams" colspan="2">template&lt;typename Float16Func , typename Float32Func , typename Uint8Func , typename Int32Func , typename BooleanFunc , typename ... Params&gt; </td></tr>
<tr class="memitem:af6dbe371ec651a8e0063624fdf32afc0"><td class="memTemplItemLeft" align="right" valign="top">bool&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#af6dbe371ec651a8e0063624fdf32afc0">IsSupportedForDataTypeGeneric</a> (<a class="el" href="classarmnn_1_1_optional.html">Optional</a>&lt; std::string &amp;&gt; reasonIfUnsupported, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a> dataType, Float16Func float16FuncPtr, Float32Func float32FuncPtr, Uint8Func uint8FuncPtr, Int32Func int32FuncPtr, BooleanFunc booleanFuncPtr, Params &amp;&amp;... params)</td></tr>
<tr class="separator:af6dbe371ec651a8e0063624fdf32afc0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aeaee60c3c6c67a7cf37bbef45b89fc0a"><td class="memTemplParams" colspan="2">template&lt;typename ... Params&gt; </td></tr>
<tr class="memitem:aeaee60c3c6c67a7cf37bbef45b89fc0a"><td class="memTemplItemLeft" align="right" valign="top">bool&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#aeaee60c3c6c67a7cf37bbef45b89fc0a">TrueFunc</a> (<a class="el" href="classarmnn_1_1_optional.html">Optional</a>&lt; std::string &amp;&gt; reasonIfUnsupported, Params &amp;&amp;... params)</td></tr>
<tr class="separator:aeaee60c3c6c67a7cf37bbef45b89fc0a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6e64aab48baba12883c73e90bfd07e77"><td class="memTemplParams" colspan="2">template&lt;typename ... Params&gt; </td></tr>
<tr class="memitem:a6e64aab48baba12883c73e90bfd07e77"><td class="memTemplItemLeft" align="right" valign="top">bool&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a6e64aab48baba12883c73e90bfd07e77">FalseFunc</a> (<a class="el" href="classarmnn_1_1_optional.html">Optional</a>&lt; std::string &amp;&gt; reasonIfUnsupported, Params &amp;&amp;... params)</td></tr>
<tr class="separator:a6e64aab48baba12883c73e90bfd07e77"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a621c8ffe11bba3d7ab304a9ad3feec2f"><td class="memTemplParams" colspan="2">template&lt;typename ... Params&gt; </td></tr>
<tr class="memitem:a621c8ffe11bba3d7ab304a9ad3feec2f"><td class="memTemplItemLeft" align="right" valign="top">bool&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a621c8ffe11bba3d7ab304a9ad3feec2f">FalseFuncF16</a> (<a class="el" href="classarmnn_1_1_optional.html">Optional</a>&lt; std::string &amp;&gt; reasonIfUnsupported, Params &amp;&amp;... params)</td></tr>
<tr class="separator:a621c8ffe11bba3d7ab304a9ad3feec2f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a02d627e25da543b79ee8a59a1193a426"><td class="memTemplParams" colspan="2">template&lt;typename ... Params&gt; </td></tr>
<tr class="memitem:a02d627e25da543b79ee8a59a1193a426"><td class="memTemplItemLeft" align="right" valign="top">bool&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a02d627e25da543b79ee8a59a1193a426">FalseFuncF32</a> (<a class="el" href="classarmnn_1_1_optional.html">Optional</a>&lt; std::string &amp;&gt; reasonIfUnsupported, Params &amp;&amp;... params)</td></tr>
<tr class="separator:a02d627e25da543b79ee8a59a1193a426"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4e4802d0916cb8b7da508ab03ce1f163"><td class="memTemplParams" colspan="2">template&lt;typename ... Params&gt; </td></tr>
<tr class="memitem:a4e4802d0916cb8b7da508ab03ce1f163"><td class="memTemplItemLeft" align="right" valign="top">bool&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a4e4802d0916cb8b7da508ab03ce1f163">FalseFuncU8</a> (<a class="el" href="classarmnn_1_1_optional.html">Optional</a>&lt; std::string &amp;&gt; reasonIfUnsupported, Params &amp;&amp;... params)</td></tr>
<tr class="separator:a4e4802d0916cb8b7da508ab03ce1f163"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a07ae80b502ab664f1aaf7d6c00725982"><td class="memTemplParams" colspan="2">template&lt;typename ... Params&gt; </td></tr>
<tr class="memitem:a07ae80b502ab664f1aaf7d6c00725982"><td class="memTemplItemLeft" align="right" valign="top">bool&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a07ae80b502ab664f1aaf7d6c00725982">FalseFuncI32</a> (<a class="el" href="classarmnn_1_1_optional.html">Optional</a>&lt; std::string &amp;&gt; reasonIfUnsupported, Params &amp;&amp;... params)</td></tr>
<tr class="separator:a07ae80b502ab664f1aaf7d6c00725982"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0b55e509dd7e3bfea233a389a18c21e6"><td class="memTemplParams" colspan="2">template&lt;typename ... Params&gt; </td></tr>
<tr class="memitem:a0b55e509dd7e3bfea233a389a18c21e6"><td class="memTemplItemLeft" align="right" valign="top">bool&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a0b55e509dd7e3bfea233a389a18c21e6">FalseInputFuncF32</a> (<a class="el" href="classarmnn_1_1_optional.html">Optional</a>&lt; std::string &amp;&gt; reasonIfUnsupported, Params &amp;&amp;... params)</td></tr>
<tr class="separator:a0b55e509dd7e3bfea233a389a18c21e6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a216969fbba54df95de3e68435b8074d7"><td class="memTemplParams" colspan="2">template&lt;typename ... Params&gt; </td></tr>
<tr class="memitem:a216969fbba54df95de3e68435b8074d7"><td class="memTemplItemLeft" align="right" valign="top">bool&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a216969fbba54df95de3e68435b8074d7">FalseInputFuncF16</a> (<a class="el" href="classarmnn_1_1_optional.html">Optional</a>&lt; std::string &amp;&gt; reasonIfUnsupported, Params &amp;&amp;... params)</td></tr>
<tr class="separator:a216969fbba54df95de3e68435b8074d7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad3d0087e2533d808debd5c959fb3901f"><td class="memTemplParams" colspan="2">template&lt;typename ... Params&gt; </td></tr>
<tr class="memitem:ad3d0087e2533d808debd5c959fb3901f"><td class="memTemplItemLeft" align="right" valign="top">bool&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#ad3d0087e2533d808debd5c959fb3901f">FalseOutputFuncF32</a> (<a class="el" href="classarmnn_1_1_optional.html">Optional</a>&lt; std::string &amp;&gt; reasonIfUnsupported, Params &amp;&amp;... params)</td></tr>
<tr class="separator:ad3d0087e2533d808debd5c959fb3901f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2febf8d85a92b69e4a677a7c632418ee"><td class="memTemplParams" colspan="2">template&lt;typename ... Params&gt; </td></tr>
<tr class="memitem:a2febf8d85a92b69e4a677a7c632418ee"><td class="memTemplItemLeft" align="right" valign="top">bool&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a2febf8d85a92b69e4a677a7c632418ee">FalseOutputFuncF16</a> (<a class="el" href="classarmnn_1_1_optional.html">Optional</a>&lt; std::string &amp;&gt; reasonIfUnsupported, Params &amp;&amp;... params)</td></tr>
<tr class="separator:a2febf8d85a92b69e4a677a7c632418ee"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5f523aee1752323aeaf899085649320b"><td class="memTemplParams" colspan="2">template&lt;LogSeverity Level&gt; </td></tr>
<tr class="memitem:a5f523aee1752323aeaf899085649320b"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a5f523aee1752323aeaf899085649320b">SetLoggingSinks</a> (bool standardOut, bool debugOut, bool coloured)</td></tr>
<tr class="separator:a5f523aee1752323aeaf899085649320b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7658f93d899c8646515a29370e6aa994"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a7658f93d899c8646515a29370e6aa994">ReportError</a> (const std::string &amp;errorMessage, <a class="el" href="classarmnn_1_1_optional.html">Optional</a>&lt; std::vector&lt; std::string &gt; &amp;&gt; errorMessages)</td></tr>
<tr class="separator:a7658f93d899c8646515a29370e6aa994"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a38e626422579decc13e3ee37da1a84c9"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a38e626422579decc13e3ee37da1a84c9">ReportWarning</a> (const std::string &amp;warningMessage, <a class="el" href="classarmnn_1_1_optional.html">Optional</a>&lt; std::vector&lt; std::string &gt; &amp;&gt; warningMessages)</td></tr>
<tr class="separator:a38e626422579decc13e3ee37da1a84c9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af002111f64aee648e3258247075cae36"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#af002111f64aee648e3258247075cae36">CheckScaleSetOnQuantizedType</a> (<a class="el" href="classarmnn_1_1_layer.html">Layer</a> *layer, <a class="el" href="classarmnn_1_1_optional.html">Optional</a>&lt; std::vector&lt; std::string &gt; &amp;&gt; errMessages)</td></tr>
<tr class="separator:af002111f64aee648e3258247075cae36"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aad4c29b429ad2d6c9224921cfdc5b271"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structarmnn_1_1_optimization_result.html">OptimizationResult</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#aad4c29b429ad2d6c9224921cfdc5b271">AssignBackends</a> (<a class="el" href="classarmnn_1_1_optimized_network.html">OptimizedNetwork</a> *optNetObjPtr, <a class="el" href="structarmnn_1_1_backend_settings.html">BackendSettings</a> &amp;backendSettings, <a class="el" href="classarmnn_1_1_graph.html#acc25db0641c1c22faf95af3bb49080c9">Graph::Iterator</a> &amp;firstLayer, <a class="el" href="classarmnn_1_1_graph.html#acc25db0641c1c22faf95af3bb49080c9">Graph::Iterator</a> &amp;lastLayer, <a class="el" href="classarmnn_1_1_optional.html">Optional</a>&lt; std::vector&lt; std::string &gt; &amp;&gt; errMessages)</td></tr>
<tr class="separator:aad4c29b429ad2d6c9224921cfdc5b271"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a76dca645d0d0665f74e171bbc1901469"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structarmnn_1_1_optimization_result.html">OptimizationResult</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a76dca645d0d0665f74e171bbc1901469">AssignBackends</a> (<a class="el" href="classarmnn_1_1_optimized_network.html">OptimizedNetwork</a> *optNetObjPtr, <a class="el" href="structarmnn_1_1_backend_settings.html">BackendSettings</a> &amp;backendSettings, <a class="el" href="classarmnn_1_1_subgraph_view.html">SubgraphView</a> &amp;subgraph, <a class="el" href="classarmnn_1_1_optional.html">Optional</a>&lt; std::vector&lt; std::string &gt; &amp;&gt; errMessages)</td></tr>
<tr class="separator:a76dca645d0d0665f74e171bbc1901469"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1ec6b4c20ed294a96cf94c33c24caaf5"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespacearmnn.html#a9173495a61a0092b5f38b855f02c3585">BackendsMap</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a1ec6b4c20ed294a96cf94c33c24caaf5">CreateSupportedBackends</a> (<a class="el" href="classarmnn_1_1_tensor_handle_factory_registry.html">TensorHandleFactoryRegistry</a> &amp;handleFactoryRegistry, <a class="el" href="structarmnn_1_1_backend_settings.html">BackendSettings</a> &amp;backendSettings)</td></tr>
<tr class="separator:a1ec6b4c20ed294a96cf94c33c24caaf5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae97734279fd10b4c754cc15bc8ed9dad"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structarmnn_1_1_optimization_result.html">OptimizationResult</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#ae97734279fd10b4c754cc15bc8ed9dad">ApplyBackendOptimizations</a> (<a class="el" href="classarmnn_1_1_optimized_network.html">OptimizedNetwork</a> *optNetObjPtr, <a class="el" href="structarmnn_1_1_backend_settings.html">BackendSettings</a> &amp;backendSettings, <a class="el" href="namespacearmnn.html#a9173495a61a0092b5f38b855f02c3585">BackendsMap</a> &amp;backends, <a class="el" href="classarmnn_1_1_optional.html">Optional</a>&lt; std::vector&lt; std::string &gt; &amp;&gt; errMessages)</td></tr>
<tr class="separator:ae97734279fd10b4c754cc15bc8ed9dad"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5ee4a1cca55f69b31e625c786655ed1a"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a5ee4a1cca55f69b31e625c786655ed1a">RequiresCopy</a> (<a class="el" href="classarmnn_1_1_i_tensor_handle_factory.html#a32f4aa6a7089d877af08928139c2c277">ITensorHandleFactory::FactoryId</a> src, <a class="el" href="classarmnn_1_1_i_tensor_handle_factory.html#a32f4aa6a7089d877af08928139c2c277">ITensorHandleFactory::FactoryId</a> dst, <a class="el" href="classarmnn_1_1_tensor_handle_factory_registry.html">TensorHandleFactoryRegistry</a> &amp;registry)</td></tr>
<tr class="separator:a5ee4a1cca55f69b31e625c786655ed1a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:accb1637c58e1523f740025e0d0e7c6dd"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classarmnn_1_1_i_tensor_handle_factory.html#a32f4aa6a7089d877af08928139c2c277">ITensorHandleFactory::FactoryId</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#accb1637c58e1523f740025e0d0e7c6dd">CalculateSlotOptionForInput</a> (<a class="el" href="namespacearmnn.html#a9173495a61a0092b5f38b855f02c3585">BackendsMap</a> &amp;backends, <a class="el" href="classarmnn_1_1_output_slot.html">OutputSlot</a> &amp;slot, <a class="el" href="classarmnn_1_1_tensor_handle_factory_registry.html">TensorHandleFactoryRegistry</a> &amp;registry)</td></tr>
<tr class="separator:accb1637c58e1523f740025e0d0e7c6dd"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab46c7f5f4736d550ab0e5e05a0fff4a9"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classarmnn_1_1_i_tensor_handle_factory.html#a32f4aa6a7089d877af08928139c2c277">ITensorHandleFactory::FactoryId</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#ab46c7f5f4736d550ab0e5e05a0fff4a9">CalculateSlotOptionForOutput</a> (<a class="el" href="namespacearmnn.html#a9173495a61a0092b5f38b855f02c3585">BackendsMap</a> &amp;backends, <a class="el" href="classarmnn_1_1_output_slot.html">OutputSlot</a> &amp;slot, <a class="el" href="classarmnn_1_1_tensor_handle_factory_registry.html">TensorHandleFactoryRegistry</a> &amp;registry)</td></tr>
<tr class="separator:ab46c7f5f4736d550ab0e5e05a0fff4a9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8d9f52bbb69750456acca06988beabda"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classarmnn_1_1_i_tensor_handle_factory.html#a32f4aa6a7089d877af08928139c2c277">ITensorHandleFactory::FactoryId</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a8d9f52bbb69750456acca06988beabda">CalculateSlotOption</a> (<a class="el" href="namespacearmnn.html#a9173495a61a0092b5f38b855f02c3585">BackendsMap</a> &amp;backends, <a class="el" href="classarmnn_1_1_output_slot.html">OutputSlot</a> &amp;outputSlot, <a class="el" href="classarmnn_1_1_tensor_handle_factory_registry.html">TensorHandleFactoryRegistry</a> &amp;registry)</td></tr>
<tr class="separator:a8d9f52bbb69750456acca06988beabda"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab6ed577caec49def150e231c63af0d12"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespacearmnn.html#aff209afc1dc598da399e3e78617ce016">EdgeStrategy</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#ab6ed577caec49def150e231c63af0d12">CalculateEdgeStrategy</a> (<a class="el" href="namespacearmnn.html#a9173495a61a0092b5f38b855f02c3585">BackendsMap</a> &amp;backends, <a class="el" href="classarmnn_1_1_i_tensor_handle_factory.html#a32f4aa6a7089d877af08928139c2c277">ITensorHandleFactory::FactoryId</a> srcFactoryId, const <a class="el" href="classarmnn_1_1_layer.html">Layer</a> &amp;layer, const <a class="el" href="classarmnn_1_1_layer.html">Layer</a> &amp;connectedLayer, <a class="el" href="classarmnn_1_1_tensor_handle_factory_registry.html">TensorHandleFactoryRegistry</a> &amp;registry)</td></tr>
<tr class="separator:ab6ed577caec49def150e231c63af0d12"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5d3468fb5880eb444cd25b55a86220ff"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structarmnn_1_1_optimization_result.html">OptimizationResult</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a5d3468fb5880eb444cd25b55a86220ff">SelectTensorHandleStrategy</a> (<a class="el" href="classarmnn_1_1_graph.html">Graph</a> &amp;optGraph, <a class="el" href="namespacearmnn.html#a9173495a61a0092b5f38b855f02c3585">BackendsMap</a> &amp;backends, <a class="el" href="classarmnn_1_1_tensor_handle_factory_registry.html">TensorHandleFactoryRegistry</a> &amp;registry, <a class="el" href="classarmnn_1_1_optional.html">Optional</a>&lt; std::vector&lt; std::string &gt; &amp;&gt; errMessages)</td></tr>
<tr class="separator:a5d3468fb5880eb444cd25b55a86220ff"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a310dd804fd70eadb1e8854325e63f0bd"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classarmnn_1_1_const_tensor.html">ConstTensor</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a310dd804fd70eadb1e8854325e63f0bd">CreateQuantizedConst</a> (const <a class="el" href="classarmnn_1_1_const_tensor.html">ConstTensor</a> &amp;tensor, std::vector&lt; uint8_t &gt; &amp;backing)</td></tr>
<tr class="separator:a310dd804fd70eadb1e8854325e63f0bd"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0e2bce68a1f7eff47ead4d9a2804eb91"><td class="memTemplParams" colspan="2">template&lt;typename srcType &gt; </td></tr>
<tr class="memitem:a0e2bce68a1f7eff47ead4d9a2804eb91"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a0e2bce68a1f7eff47ead4d9a2804eb91">QuantizeConstant</a> (const srcType *src, uint8_t *dst, size_t numElements, float &amp;scale, int &amp;offset)</td></tr>
<tr class="separator:a0e2bce68a1f7eff47ead4d9a2804eb91"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9835ef753dda5b5a2fe827680e41fda7"><td class="memTemplParams" colspan="2">template&lt;typename LayerContainer &gt; </td></tr>
<tr class="memitem:a9835ef753dda5b5a2fe827680e41fda7"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a9835ef753dda5b5a2fe827680e41fda7">VisitLayers</a> (const LayerContainer &amp;layerContainer, <a class="el" href="classarmnn_1_1_i_layer_visitor.html">ILayerVisitor</a> &amp;visitor)</td></tr>
<tr class="separator:a9835ef753dda5b5a2fe827680e41fda7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad31c56533e4f9f9f51719599fbfcf7bb"><td class="memItemLeft" align="right" valign="top">std::vector&lt; <a class="el" href="classarmnn_1_1_convert_fp16_to_fp32_layer.html">ConvertFp16ToFp32Layer</a> * &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#ad31c56533e4f9f9f51719599fbfcf7bb">InsertConvertFp16ToFp32LayersBefore</a> (<a class="el" href="classarmnn_1_1_graph.html">Graph</a> &amp;graph, <a class="el" href="classarmnn_1_1_layer.html">Layer</a> &amp;layer, bool expectCorrectInputType)</td></tr>
<tr class="separator:ad31c56533e4f9f9f51719599fbfcf7bb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abf625e50a5eaeafce5b39580dc95a9d3"><td class="memItemLeft" align="right" valign="top">std::vector&lt; <a class="el" href="classarmnn_1_1_convert_fp32_to_fp16_layer.html">ConvertFp32ToFp16Layer</a> * &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#abf625e50a5eaeafce5b39580dc95a9d3">InsertConvertFp32ToFp16LayersAfter</a> (<a class="el" href="classarmnn_1_1_graph.html">Graph</a> &amp;graph, <a class="el" href="classarmnn_1_1_layer.html">Layer</a> &amp;layer)</td></tr>
<tr class="separator:abf625e50a5eaeafce5b39580dc95a9d3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2616ffdae2db993af5c08019fb61860a"><td class="memItemLeft" align="right" valign="top">std::vector&lt; <a class="el" href="classarmnn_1_1_debug_layer.html">DebugLayer</a> * &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a2616ffdae2db993af5c08019fb61860a">InsertDebugLayerAfter</a> (<a class="el" href="classarmnn_1_1_graph.html">Graph</a> &amp;graph, <a class="el" href="classarmnn_1_1_layer.html">Layer</a> &amp;layer)</td></tr>
<tr class="separator:a2616ffdae2db993af5c08019fb61860a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4907f6b88c3e72be6b8ae876de355e0a"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
<tr class="memitem:a4907f6b88c3e72be6b8ae876de355e0a"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a4907f6b88c3e72be6b8ae876de355e0a">Append</a> (<a class="el" href="classarmnn_1_1_optimizer.html#ad1794808004025d6e06c176507197b24">Optimizer::Optimizations</a> &amp;optimizations, T &amp;&amp;optimization)</td></tr>
<tr class="separator:a4907f6b88c3e72be6b8ae876de355e0a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0c8a28b71e49c04596289ff281e58f1a"><td class="memTemplParams" colspan="2">template&lt;typename Front , typename... Others&gt; </td></tr>
<tr class="memitem:a0c8a28b71e49c04596289ff281e58f1a"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a0c8a28b71e49c04596289ff281e58f1a">Append</a> (<a class="el" href="classarmnn_1_1_optimizer.html#ad1794808004025d6e06c176507197b24">Optimizer::Optimizations</a> &amp;optimizations, Front &amp;&amp;front, Others &amp;&amp;... others)</td></tr>
<tr class="separator:a0c8a28b71e49c04596289ff281e58f1a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa7427025a851113a492de0b68b23d22a"><td class="memTemplParams" colspan="2">template&lt;typename... Args&gt; </td></tr>
<tr class="memitem:aa7427025a851113a492de0b68b23d22a"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classarmnn_1_1_optimizer.html#ad1794808004025d6e06c176507197b24">Optimizer::Optimizations</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#aa7427025a851113a492de0b68b23d22a">MakeOptimizations</a> (Args &amp;&amp;... args)</td></tr>
<tr class="separator:aa7427025a851113a492de0b68b23d22a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a12d3ffe11b54c0aaa59bdd8415701c36"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structarmnn_1_1_measurement.html">Measurement</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a12d3ffe11b54c0aaa59bdd8415701c36">FindMeasurement</a> (const std::string &amp;name, const <a class="el" href="classarmnn_1_1_event.html">Event</a> *event)</td></tr>
<tr class="separator:a12d3ffe11b54c0aaa59bdd8415701c36"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1b90db39f6a9ebd11591e76fa364b06f"><td class="memItemLeft" align="right" valign="top">std::vector&lt; <a class="el" href="structarmnn_1_1_measurement.html">Measurement</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a1b90db39f6a9ebd11591e76fa364b06f">FindKernelMeasurements</a> (const <a class="el" href="classarmnn_1_1_event.html">Event</a> *event)</td></tr>
<tr class="separator:a1b90db39f6a9ebd11591e76fa364b06f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab03dcfb3b4019d8f58a67c41681951ae"><td class="memItemLeft" align="right" valign="top">const <a class="el" href="classarmnn_1_1_event.html">Event</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#ab03dcfb3b4019d8f58a67c41681951ae">GetEventPtr</a> (const <a class="el" href="classarmnn_1_1_event.html">Event</a> *ptr)</td></tr>
<tr class="separator:ab03dcfb3b4019d8f58a67c41681951ae"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4b1e2158af2aedd3f00d2121c45b0f93"><td class="memItemLeft" align="right" valign="top">const <a class="el" href="classarmnn_1_1_event.html">Event</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a4b1e2158af2aedd3f00d2121c45b0f93">GetEventPtr</a> (const std::unique_ptr&lt; <a class="el" href="classarmnn_1_1_event.html">Event</a> &gt; &amp;ptr)</td></tr>
<tr class="separator:a4b1e2158af2aedd3f00d2121c45b0f93"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a20f74b679d59b52e9fae3bbef8f10ffb"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a20f74b679d59b52e9fae3bbef8f10ffb">CalcLevel</a> (const <a class="el" href="classarmnn_1_1_event.html">Event</a> *eventPtr)</td></tr>
<tr class="separator:a20f74b679d59b52e9fae3bbef8f10ffb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a50805c29c35b9903c2dea301d8091711"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a50805c29c35b9903c2dea301d8091711">ExtractJsonObjects</a> (unsigned int inferenceIndex, const <a class="el" href="classarmnn_1_1_event.html">Event</a> *parentEvent, <a class="el" href="structarmnn_1_1_json_child_object.html">JsonChildObject</a> &amp;parentObject, std::map&lt; const <a class="el" href="classarmnn_1_1_event.html">Event</a> *, std::vector&lt; const <a class="el" href="classarmnn_1_1_event.html">Event</a> *&gt;&gt; descendantsMap)</td></tr>
<tr class="separator:a50805c29c35b9903c2dea301d8091711"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afce94270d9c4a51cd0c4ac6a58af4e26"><td class="memTemplParams" colspan="2">template&lt;typename Delegate &gt; </td></tr>
<tr class="memitem:afce94270d9c4a51cd0c4ac6a58af4e26"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#afce94270d9c4a51cd0c4ac6a58af4e26">ForEachLayerInput</a> (LayerSelectionInfo::LayerInfoContainer &amp;layerInfos, LayerSelectionInfo &amp;layerInfo, Delegate function)</td></tr>
<tr class="separator:afce94270d9c4a51cd0c4ac6a58af4e26"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a49538fa883b70c944e437d65d6628eec"><td class="memTemplParams" colspan="2">template&lt;typename Delegate &gt; </td></tr>
<tr class="memitem:a49538fa883b70c944e437d65d6628eec"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a49538fa883b70c944e437d65d6628eec">ForEachLayerOutput</a> (LayerSelectionInfo::LayerInfoContainer &amp;layerInfos, LayerSelectionInfo &amp;layerInfo, Delegate function)</td></tr>
<tr class="separator:a49538fa883b70c944e437d65d6628eec"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a09ff1f6670d27d3b41e5b5d35a6c9f37"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a09ff1f6670d27d3b41e5b5d35a6c9f37">AssignSplitId</a> (LayerSelectionInfo::LayerInfoContainer &amp;layerInfos, LayerSelectionInfo &amp;layerInfo)</td></tr>
<tr class="separator:a09ff1f6670d27d3b41e5b5d35a6c9f37"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6b10dc0d12c7f4a52ad01b9975dbe908"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a6b10dc0d12c7f4a52ad01b9975dbe908">IsReadyForSplitAssignment</a> (LayerSelectionInfo::LayerInfoContainer &amp;layerInfos, LayerSelectionInfo &amp;layerInfo)</td></tr>
<tr class="separator:a6b10dc0d12c7f4a52ad01b9975dbe908"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a10d15f3df1ab52b3b915a4be1dbf386b"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a10d15f3df1ab52b3b915a4be1dbf386b">BOOST_AUTO_TEST_CASE</a> (CheckConvolution2dLayer)</td></tr>
<tr class="separator:a10d15f3df1ab52b3b915a4be1dbf386b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a62448ee306fc41cc7980c4b7eac3ebb6"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a62448ee306fc41cc7980c4b7eac3ebb6">BOOST_AUTO_TEST_CASE</a> (CheckNamedConvolution2dLayer)</td></tr>
<tr class="separator:a62448ee306fc41cc7980c4b7eac3ebb6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a66e9fcc01969d6afa35dfaa212ded223"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a66e9fcc01969d6afa35dfaa212ded223">BOOST_AUTO_TEST_CASE</a> (CheckConvolution2dLayerWithBiases)</td></tr>
<tr class="separator:a66e9fcc01969d6afa35dfaa212ded223"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a154c5a01df05412929d89e06fc4d0d6d"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a154c5a01df05412929d89e06fc4d0d6d">BOOST_AUTO_TEST_CASE</a> (CheckNamedConvolution2dLayerWithBiases)</td></tr>
<tr class="separator:a154c5a01df05412929d89e06fc4d0d6d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6eadb1671955b1bf7cdd8b29fd34aa33"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a6eadb1671955b1bf7cdd8b29fd34aa33">BOOST_AUTO_TEST_CASE</a> (CheckDepthwiseConvolution2dLayer)</td></tr>
<tr class="separator:a6eadb1671955b1bf7cdd8b29fd34aa33"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac36bd2336c0e3caefecde40bc07e2bf3"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#ac36bd2336c0e3caefecde40bc07e2bf3">BOOST_AUTO_TEST_CASE</a> (CheckNamedDepthwiseConvolution2dLayer)</td></tr>
<tr class="separator:ac36bd2336c0e3caefecde40bc07e2bf3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a14bcc6125921389dceb27e432bc7a489"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a14bcc6125921389dceb27e432bc7a489">BOOST_AUTO_TEST_CASE</a> (CheckDepthwiseConvolution2dLayerWithBiases)</td></tr>
<tr class="separator:a14bcc6125921389dceb27e432bc7a489"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aaeafd5f3786a0bd215468714c1e743b1"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#aaeafd5f3786a0bd215468714c1e743b1">BOOST_AUTO_TEST_CASE</a> (CheckNamedDepthwiseConvolution2dLayerWithBiases)</td></tr>
<tr class="separator:aaeafd5f3786a0bd215468714c1e743b1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3425db69ef4e4927a82e99025c16294a"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a3425db69ef4e4927a82e99025c16294a">BOOST_AUTO_TEST_CASE</a> (CheckFullyConnectedLayer)</td></tr>
<tr class="separator:a3425db69ef4e4927a82e99025c16294a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a631f8c0c9bceff4bef761eb7fd865686"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a631f8c0c9bceff4bef761eb7fd865686">BOOST_AUTO_TEST_CASE</a> (CheckNamedFullyConnectedLayer)</td></tr>
<tr class="separator:a631f8c0c9bceff4bef761eb7fd865686"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7b017a692367333d1035e276f252f46c"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a7b017a692367333d1035e276f252f46c">BOOST_AUTO_TEST_CASE</a> (CheckFullyConnectedLayerWithBiases)</td></tr>
<tr class="separator:a7b017a692367333d1035e276f252f46c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5f3e4faca1d063ad73764571f898dc2d"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a5f3e4faca1d063ad73764571f898dc2d">BOOST_AUTO_TEST_CASE</a> (CheckNamedFullyConnectedLayerWithBiases)</td></tr>
<tr class="separator:a5f3e4faca1d063ad73764571f898dc2d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a199581e11ebd49e1322b090484f3dd29"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a199581e11ebd49e1322b090484f3dd29">BOOST_AUTO_TEST_CASE</a> (CheckBatchNormalizationLayer)</td></tr>
<tr class="separator:a199581e11ebd49e1322b090484f3dd29"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af1eda3afe49e91bf04d6e34a0e3be8ef"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#af1eda3afe49e91bf04d6e34a0e3be8ef">BOOST_AUTO_TEST_CASE</a> (CheckNamedBatchNormalizationLayer)</td></tr>
<tr class="separator:af1eda3afe49e91bf04d6e34a0e3be8ef"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1a8221833cf3d29cd6435aed632dfcce"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a1a8221833cf3d29cd6435aed632dfcce">BOOST_AUTO_TEST_CASE</a> (CheckConstLayer)</td></tr>
<tr class="separator:a1a8221833cf3d29cd6435aed632dfcce"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9da3b50de4d108b81264a22c5adacf05"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a9da3b50de4d108b81264a22c5adacf05">BOOST_AUTO_TEST_CASE</a> (CheckNamedConstLayer)</td></tr>
<tr class="separator:a9da3b50de4d108b81264a22c5adacf05"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afefeb492b3446d34e413556a805210b6"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#afefeb492b3446d34e413556a805210b6">BOOST_AUTO_TEST_CASE</a> (CheckLstmLayerBasic)</td></tr>
<tr class="separator:afefeb492b3446d34e413556a805210b6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8f6ad27911e2e711f665ae69c5b2cd1d"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a8f6ad27911e2e711f665ae69c5b2cd1d">BOOST_AUTO_TEST_CASE</a> (CheckNamedLstmLayerBasic)</td></tr>
<tr class="separator:a8f6ad27911e2e711f665ae69c5b2cd1d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5400bc09082eab59bdfdbd61a06578f5"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a5400bc09082eab59bdfdbd61a06578f5">BOOST_AUTO_TEST_CASE</a> (CheckLstmLayerCifgDisabled)</td></tr>
<tr class="separator:a5400bc09082eab59bdfdbd61a06578f5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad956f3db79c93a658cbccb41714e1542"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#ad956f3db79c93a658cbccb41714e1542">BOOST_AUTO_TEST_CASE</a> (CheckNamedLstmLayerCifgDisabled)</td></tr>
<tr class="separator:ad956f3db79c93a658cbccb41714e1542"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa524f33d3d2b294847c3929237947b20"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#aa524f33d3d2b294847c3929237947b20">BOOST_AUTO_TEST_CASE</a> (CheckLstmLayerPeephole)</td></tr>
<tr class="separator:aa524f33d3d2b294847c3929237947b20"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0f1dc6ab5dccc96c5a4df37cc5bcb923"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a0f1dc6ab5dccc96c5a4df37cc5bcb923">BOOST_AUTO_TEST_CASE</a> (CheckNamedLstmLayerPeephole)</td></tr>
<tr class="separator:a0f1dc6ab5dccc96c5a4df37cc5bcb923"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0d00c75b42e46b3a7dd78f9a40324c33"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a0d00c75b42e46b3a7dd78f9a40324c33">BOOST_AUTO_TEST_CASE</a> (CheckLstmLayerProjection)</td></tr>
<tr class="separator:a0d00c75b42e46b3a7dd78f9a40324c33"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3a3105d08231d5f2e53511bab46224c9"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a3a3105d08231d5f2e53511bab46224c9">BOOST_AUTO_TEST_CASE</a> (CheckNamedLstmLayerProjection)</td></tr>
<tr class="separator:a3a3105d08231d5f2e53511bab46224c9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a84e5356296be66aa930ec53118f5ef6b"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a84e5356296be66aa930ec53118f5ef6b">BOOST_AUTO_TEST_CASE</a> (CheckQuantizedLstmLayer)</td></tr>
<tr class="separator:a84e5356296be66aa930ec53118f5ef6b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a492fae0605d06684297540bb9af319dc"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a492fae0605d06684297540bb9af319dc">BOOST_AUTO_TEST_CASE</a> (CheckNamedQuantizedLstmLayer)</td></tr>
<tr class="separator:a492fae0605d06684297540bb9af319dc"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a49a398090bc1044038300ce246821a1f"><td class="memItemLeft" align="right" valign="top">size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a49a398090bc1044038300ce246821a1f">GetProfilerEventSequenceSize</a> (<a class="el" href="classarmnn_1_1_profiler.html">armnn::Profiler</a> *profiler)</td></tr>
<tr class="separator:a49a398090bc1044038300ce246821a1f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6482907b4c57873e197324f5cb66fd4d"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a> (const <a class="el" href="classarmnn_1_1_i_network.html">INetwork</a> *inputNetwork, <a class="el" href="classarmnn_1_1_i_layer_visitor.html">ILayerVisitor</a> &amp;visitor)</td></tr>
<tr class="separator:a6482907b4c57873e197324f5cb66fd4d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8baf97065d802063eb9bcdd1a066dc86"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a8baf97065d802063eb9bcdd1a066dc86">BOOST_AUTO_TEST_CASE</a> (QuantizeAddition)</td></tr>
<tr class="separator:a8baf97065d802063eb9bcdd1a066dc86"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5fbc1479db5f4ff70a750cf02d58971b"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a5fbc1479db5f4ff70a750cf02d58971b">CreateNetworkWithActivationLayer</a> (const <a class="el" href="structarmnn_1_1_activation_descriptor.html">ActivationDescriptor</a> &amp;descriptor, const <a class="el" href="classarmnn_1_1_tensor_shape.html">TensorShape</a> &amp;shape)</td></tr>
<tr class="separator:a5fbc1479db5f4ff70a750cf02d58971b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa9c6c1a7b5380a99a536f4740f87dd59"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#aa9c6c1a7b5380a99a536f4740f87dd59">CreateNetworkWithInputOutputLayers</a> ()</td></tr>
<tr class="separator:aa9c6c1a7b5380a99a536f4740f87dd59"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae52296dff1f4879854f320d59f92574e"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#ae52296dff1f4879854f320d59f92574e">GetInputTensorInfo</a> (const <a class="el" href="classarmnn_1_1_network.html">Network</a> *network)</td></tr>
<tr class="separator:ae52296dff1f4879854f320d59f92574e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9cec088786b209989fe9e04e1be9636d"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a9cec088786b209989fe9e04e1be9636d">BOOST_AUTO_TEST_CASE</a> (InputOutputLayerDynamicQuant)</td></tr>
<tr class="separator:a9cec088786b209989fe9e04e1be9636d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7db6a78bb6eedbea7f0525f1fe59de28"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a7db6a78bb6eedbea7f0525f1fe59de28">BOOST_AUTO_TEST_CASE</a> (QuantizeAbsActivation)</td></tr>
<tr class="separator:a7db6a78bb6eedbea7f0525f1fe59de28"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2df3b432de50a9b9e8b486aa53e11cc5"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a2df3b432de50a9b9e8b486aa53e11cc5">BOOST_AUTO_TEST_CASE</a> (QuantizeLinearActivation)</td></tr>
<tr class="separator:a2df3b432de50a9b9e8b486aa53e11cc5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3dd219b394b8186d1849ee595193268d"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a3dd219b394b8186d1849ee595193268d">BOOST_AUTO_TEST_CASE</a> (QuantizeReLuActivation)</td></tr>
<tr class="separator:a3dd219b394b8186d1849ee595193268d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a52e948b4bffc16a3933d812dbc384833"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a52e948b4bffc16a3933d812dbc384833">BOOST_AUTO_TEST_CASE</a> (QuantizeSoftReLuActivation)</td></tr>
<tr class="separator:a52e948b4bffc16a3933d812dbc384833"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abf109580225cb949565c8223bceadd5d"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#abf109580225cb949565c8223bceadd5d">BOOST_AUTO_TEST_CASE</a> (QuantizeBoundedReluActivation)</td></tr>
<tr class="separator:abf109580225cb949565c8223bceadd5d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:acbf871a6ec0726bfe2746e761a278108"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#acbf871a6ec0726bfe2746e761a278108">BOOST_AUTO_TEST_CASE</a> (QuantizeTanHActivation)</td></tr>
<tr class="separator:acbf871a6ec0726bfe2746e761a278108"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a32068047cc7b37f1bed1830508891526"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a32068047cc7b37f1bed1830508891526">BOOST_AUTO_TEST_CASE</a> (QuantizeLeakyReLuActivation)</td></tr>
<tr class="separator:a32068047cc7b37f1bed1830508891526"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:adf59f87645d301e9b56dd70aed350e54"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#adf59f87645d301e9b56dd70aed350e54">BOOST_AUTO_TEST_CASE</a> (QuantizeBatchNorm)</td></tr>
<tr class="separator:adf59f87645d301e9b56dd70aed350e54"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae91bc23bf56bb5f9c2e0ddb1fc7be75e"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#ae91bc23bf56bb5f9c2e0ddb1fc7be75e">BOOST_AUTO_TEST_CASE</a> (QuantizeDepthToSpace)</td></tr>
<tr class="separator:ae91bc23bf56bb5f9c2e0ddb1fc7be75e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa6281ed3090b74167170c8f692688de5"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#aa6281ed3090b74167170c8f692688de5">BOOST_AUTO_TEST_CASE</a> (OverrideInputRangeEmptyNetwork)</td></tr>
<tr class="separator:aa6281ed3090b74167170c8f692688de5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad432424d97021ae6c81e38130b1ec5d6"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#ad432424d97021ae6c81e38130b1ec5d6">BOOST_AUTO_TEST_CASE</a> (OverrideInputRangeNoInputLayers)</td></tr>
<tr class="separator:ad432424d97021ae6c81e38130b1ec5d6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6e97e093453fc053a5c82386927a0d6c"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a6e97e093453fc053a5c82386927a0d6c">BOOST_AUTO_TEST_CASE</a> (OverrideInputRangeInputLayers)</td></tr>
<tr class="separator:a6e97e093453fc053a5c82386927a0d6c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aad4b8cb9a4d882a48bc21510f0d1a938"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#aad4b8cb9a4d882a48bc21510f0d1a938">CreateNetworkWithFullyConnectedLayer</a> (const bool biasEnabled, const <a class="el" href="classarmnn_1_1_tensor_shape.html">TensorShape</a> &amp;inputShape, const <a class="el" href="classarmnn_1_1_tensor_shape.html">TensorShape</a> &amp;outputShape)</td></tr>
<tr class="separator:aad4b8cb9a4d882a48bc21510f0d1a938"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a245661fc96c9c4a9b898e1d98c8c6962"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a245661fc96c9c4a9b898e1d98c8c6962">ValidateFullyConnectedLayer</a> (const bool biasEnabled)</td></tr>
<tr class="separator:a245661fc96c9c4a9b898e1d98c8c6962"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a881ab05533f917737509402730668e4a"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a881ab05533f917737509402730668e4a">BOOST_AUTO_TEST_CASE</a> (QuantizeFullyConnected)</td></tr>
<tr class="separator:a881ab05533f917737509402730668e4a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a69dd8c7608ff0935a247f3aa07f98212"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a69dd8c7608ff0935a247f3aa07f98212">BOOST_AUTO_TEST_CASE</a> (QuantizeFullyConnectedBiasEnabled)</td></tr>
<tr class="separator:a69dd8c7608ff0935a247f3aa07f98212"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a14cfd39cfc30682fa821ade3dd298426"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a14cfd39cfc30682fa821ade3dd298426">TestQuantizeConvolution2d</a> (bool useBiases)</td></tr>
<tr class="separator:a14cfd39cfc30682fa821ade3dd298426"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa117e0112fdc02a7a011cfb39dc596ab"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#aa117e0112fdc02a7a011cfb39dc596ab">BOOST_AUTO_TEST_CASE</a> (QuantizeConvolution2d)</td></tr>
<tr class="separator:aa117e0112fdc02a7a011cfb39dc596ab"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9827adb2cf787460578999e0484568fa"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a9827adb2cf787460578999e0484568fa">BOOST_AUTO_TEST_CASE</a> (QuantizeConvolution2dWithBiases)</td></tr>
<tr class="separator:a9827adb2cf787460578999e0484568fa"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5abbe8a9ee003c1379a921dbe2745b81"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a5abbe8a9ee003c1379a921dbe2745b81">TestQuantizeDepthwiseConvolution2d</a> (bool useBiases)</td></tr>
<tr class="separator:a5abbe8a9ee003c1379a921dbe2745b81"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1db5d836b83fc71602a7993616de5b42"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a1db5d836b83fc71602a7993616de5b42">BOOST_AUTO_TEST_CASE</a> (QuantizeDepthwiseConvolution2d)</td></tr>
<tr class="separator:a1db5d836b83fc71602a7993616de5b42"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a891abdb9079715cbcf85792e2b450652"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a891abdb9079715cbcf85792e2b450652">BOOST_AUTO_TEST_CASE</a> (QuantizeDepthwiseConvolution2dWithBiases)</td></tr>
<tr class="separator:a891abdb9079715cbcf85792e2b450652"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abd033569519fec65077ea983f6c75a9d"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#abd033569519fec65077ea983f6c75a9d">BOOST_AUTO_TEST_CASE</a> (QuantizeInstanceNormalization)</td></tr>
<tr class="separator:abd033569519fec65077ea983f6c75a9d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a46d045b35ad6b8c2ffe0c04684f97779"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a46d045b35ad6b8c2ffe0c04684f97779">BOOST_AUTO_TEST_CASE</a> (QuantizeLogSoftmax)</td></tr>
<tr class="separator:a46d045b35ad6b8c2ffe0c04684f97779"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9c91b774c3089c55df77cc3a42da72de"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a9c91b774c3089c55df77cc3a42da72de">CreateNetworkWithSoftmaxLayer</a> (const <a class="el" href="structarmnn_1_1_softmax_descriptor.html">SoftmaxDescriptor</a> &amp;descriptor, const <a class="el" href="classarmnn_1_1_tensor_shape.html">TensorShape</a> &amp;shape)</td></tr>
<tr class="separator:a9c91b774c3089c55df77cc3a42da72de"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7e94e9ab356805c498f5fc2fba87e4e6"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a7e94e9ab356805c498f5fc2fba87e4e6">BOOST_AUTO_TEST_CASE</a> (QuantizeSoftmax)</td></tr>
<tr class="separator:a7e94e9ab356805c498f5fc2fba87e4e6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4734542212b5811d0511ea6b16f35168"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a4734542212b5811d0511ea6b16f35168">BOOST_AUTO_TEST_CASE</a> (QuantizeStandIn)</td></tr>
<tr class="separator:a4734542212b5811d0511ea6b16f35168"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a120c131df35d78b3a56cb0f07decaf35"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classarmnn_1_1_i_connectable_layer.html">IConnectableLayer</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a120c131df35d78b3a56cb0f07decaf35">CreateStartOfLeakyReluNetwork</a> (<a class="el" href="classarmnn_1_1_i_network.html">INetwork</a> *network, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;info)</td></tr>
<tr class="separator:a120c131df35d78b3a56cb0f07decaf35"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6fff4b4b1b5d4d37c9cf53d0e31c05dd"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a6fff4b4b1b5d4d37c9cf53d0e31c05dd">CompleteLeakyReluNetwork</a> (<a class="el" href="classarmnn_1_1_i_network.html">INetwork</a> *network, <a class="el" href="classarmnn_1_1_i_connectable_layer.html">IConnectableLayer</a> *activation, <a class="el" href="classarmnn_1_1_i_connectable_layer.html">IConnectableLayer</a> *layerUnderTest, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;info)</td></tr>
<tr class="separator:a6fff4b4b1b5d4d37c9cf53d0e31c05dd"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:add22da50dd35a100548dde4c57ae89d1"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#add22da50dd35a100548dde4c57ae89d1">BOOST_AUTO_TEST_CASE</a> (QuantizePermute)</td></tr>
<tr class="separator:add22da50dd35a100548dde4c57ae89d1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9a6bc66017eb7c132fd6e13ff0dcb540"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a9a6bc66017eb7c132fd6e13ff0dcb540">BOOST_AUTO_TEST_CASE</a> (QuantizeSpaceToBatch)</td></tr>
<tr class="separator:a9a6bc66017eb7c132fd6e13ff0dcb540"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa78ce2bbe65cae8f3d60839467dbfc83"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#aa78ce2bbe65cae8f3d60839467dbfc83">BOOST_AUTO_TEST_CASE</a> (QuantizeSpaceToDepth)</td></tr>
<tr class="separator:aa78ce2bbe65cae8f3d60839467dbfc83"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aaa86b6903e41d2d2828e00b32f872375"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#aaa86b6903e41d2d2828e00b32f872375">BOOST_AUTO_TEST_CASE</a> (QuantizePooling2d)</td></tr>
<tr class="separator:aaa86b6903e41d2d2828e00b32f872375"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a369051e180246c66b20c93de5fecee8c"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a369051e180246c66b20c93de5fecee8c">BOOST_AUTO_TEST_CASE</a> (<a class="el" href="namespacearmnn.html#a0e2bce68a1f7eff47ead4d9a2804eb91">QuantizeConstant</a>)</td></tr>
<tr class="separator:a369051e180246c66b20c93de5fecee8c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae3af95ea62252012cf93a98167afef64"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#ae3af95ea62252012cf93a98167afef64">BOOST_AUTO_TEST_CASE</a> (QuantizeArgMinMax)</td></tr>
<tr class="separator:ae3af95ea62252012cf93a98167afef64"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab83f837cdd5bfcff537dae72a96d6fc8"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#ab83f837cdd5bfcff537dae72a96d6fc8">BOOST_AUTO_TEST_CASE</a> (QuantizeComparison)</td></tr>
<tr class="separator:ab83f837cdd5bfcff537dae72a96d6fc8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:add47ebcd4a59304a25c71996aea2b38b"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#add47ebcd4a59304a25c71996aea2b38b">BOOST_AUTO_TEST_CASE</a> (QuantizeConcat)</td></tr>
<tr class="separator:add47ebcd4a59304a25c71996aea2b38b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9258afcd4c6d8443c9130d8c9bf26442"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a9258afcd4c6d8443c9130d8c9bf26442">BOOST_AUTO_TEST_CASE</a> (QuantizeReshape)</td></tr>
<tr class="separator:a9258afcd4c6d8443c9130d8c9bf26442"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a23a4f3c387a2a3a035e97764e34277c6"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a23a4f3c387a2a3a035e97764e34277c6">BOOST_AUTO_TEST_CASE</a> (QuantizeSplitter)</td></tr>
<tr class="separator:a23a4f3c387a2a3a035e97764e34277c6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a102f37a09de1b0d4d78740a3c12902bf"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a102f37a09de1b0d4d78740a3c12902bf">BOOST_AUTO_TEST_CASE</a> (QuantizeResize)</td></tr>
<tr class="separator:a102f37a09de1b0d4d78740a3c12902bf"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5f9c6094ae666c8e14907307d0481fac"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a5f9c6094ae666c8e14907307d0481fac">BOOST_AUTO_TEST_CASE</a> (QuantizeStridedSlice)</td></tr>
<tr class="separator:a5f9c6094ae666c8e14907307d0481fac"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aec7cf8e3927ee7d24f8b19d206ce3e84"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#aec7cf8e3927ee7d24f8b19d206ce3e84">BOOST_AUTO_TEST_CASE</a> (QuantizeBatchToSpace)</td></tr>
<tr class="separator:aec7cf8e3927ee7d24f8b19d206ce3e84"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a733ef16d4eaaf8cce338320fa042f526"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a733ef16d4eaaf8cce338320fa042f526">BOOST_AUTO_TEST_CASE</a> (QuantizePrelu)</td></tr>
<tr class="separator:a733ef16d4eaaf8cce338320fa042f526"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afa7a0a639e2772ff2ced67d77be810c0"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#afa7a0a639e2772ff2ced67d77be810c0">TestQuantizeTransposeConvolution2d</a> (bool useBiases)</td></tr>
<tr class="separator:afa7a0a639e2772ff2ced67d77be810c0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5e66fe270ca921faeecd26735192d08b"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a5e66fe270ca921faeecd26735192d08b">BOOST_AUTO_TEST_CASE</a> (QuantizeTransposeConvolution2d)</td></tr>
<tr class="separator:a5e66fe270ca921faeecd26735192d08b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aec82007c45313f59d24b304e35b3db6c"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#aec82007c45313f59d24b304e35b3db6c">BOOST_AUTO_TEST_CASE</a> (QuantizeTransposeConvolution2dWithBiases)</td></tr>
<tr class="separator:aec82007c45313f59d24b304e35b3db6c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a77cba79eef903eb3d758b4edbcc626ef"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a77cba79eef903eb3d758b4edbcc626ef">BOOST_AUTO_TEST_CASE</a> (QuantizeStack)</td></tr>
<tr class="separator:a77cba79eef903eb3d758b4edbcc626ef"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a46f313720b601ca97a9c2a5158814bff"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a46f313720b601ca97a9c2a5158814bff">BOOST_AUTO_TEST_CASE</a> (QuantizeSlice)</td></tr>
<tr class="separator:a46f313720b601ca97a9c2a5158814bff"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a52cbff9d344ba4a1fe01d4da2c1f7ba2"><td class="memItemLeft" align="right" valign="top">std::vector&lt; uint8_t &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a52cbff9d344ba4a1fe01d4da2c1f7ba2">SetupQuantize</a> (float value)</td></tr>
<tr class="separator:a52cbff9d344ba4a1fe01d4da2c1f7ba2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a728153b62fa66e6ed1243e09144bfe8c"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a728153b62fa66e6ed1243e09144bfe8c">BOOST_AUTO_TEST_CASE</a> (QuantizeInf)</td></tr>
<tr class="separator:a728153b62fa66e6ed1243e09144bfe8c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a898305dc4cdb78a5fbed481250f6cd35"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a898305dc4cdb78a5fbed481250f6cd35">BOOST_AUTO_TEST_CASE</a> (QuantizeNegativeInf)</td></tr>
<tr class="separator:a898305dc4cdb78a5fbed481250f6cd35"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abe34cf42d7c8515ecd15d11f4aeb399c"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#abe34cf42d7c8515ecd15d11f4aeb399c">PreserveTypeTestImpl</a> (const <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a> &amp;dataType)</td></tr>
<tr class="separator:abe34cf42d7c8515ecd15d11f4aeb399c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a94eb3bdf0e1c8c748c2e29dce048ace4"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a94eb3bdf0e1c8c748c2e29dce048ace4">BOOST_AUTO_TEST_CASE</a> (PreserveTypeFloat32)</td></tr>
<tr class="separator:a94eb3bdf0e1c8c748c2e29dce048ace4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab242670b85e047e79bb297cdb192cc93"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#ab242670b85e047e79bb297cdb192cc93">BOOST_AUTO_TEST_CASE</a> (PreserveTypeQAsymmU8)</td></tr>
<tr class="separator:ab242670b85e047e79bb297cdb192cc93"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a061891029598224370aae4cd18b78406"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a061891029598224370aae4cd18b78406">BOOST_AUTO_TEST_CASE</a> (PreserveTypeQsymm8)</td></tr>
<tr class="separator:a061891029598224370aae4cd18b78406"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4d4386cbb19dbc551e423992ecdd0d61"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a4d4386cbb19dbc551e423992ecdd0d61">BOOST_AUTO_TEST_CASE</a> (PreserveTypeQsymm16)</td></tr>
<tr class="separator:a4d4386cbb19dbc551e423992ecdd0d61"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8c09fbb75d2c2dea48926a540fc5cce9"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a8c09fbb75d2c2dea48926a540fc5cce9">BOOST_AUTO_TEST_CASE</a> (TestConnectionPreservationAfterDynamicQuant)</td></tr>
<tr class="separator:a8c09fbb75d2c2dea48926a540fc5cce9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a01fa2d4db2c1b4ee5269a31e514f37ec"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a01fa2d4db2c1b4ee5269a31e514f37ec">RuntimeLoadedNetworksReserve</a> (<a class="el" href="classarmnn_1_1_runtime.html">armnn::Runtime</a> *runtime)</td></tr>
<tr class="separator:a01fa2d4db2c1b4ee5269a31e514f37ec"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abe311824d11bad4e6f93c8f94a721052"><td class="memItemLeft" align="right" valign="top">std::ostream &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#abe311824d11bad4e6f93c8f94a721052">boost_test_print_type</a> (std::ostream &amp;ostr, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;right)</td></tr>
<tr class="separator:abe311824d11bad4e6f93c8f94a721052"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af676ec7e9534bd6e6ac3072a2c0403f4"><td class="memItemLeft" align="right" valign="top">std::ostream &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#af676ec7e9534bd6e6ac3072a2c0403f4">boost_test_print_type</a> (std::ostream &amp;ostr, const <a class="el" href="classarmnn_1_1_tensor_shape.html">TensorShape</a> &amp;shape)</td></tr>
<tr class="separator:af676ec7e9534bd6e6ac3072a2c0403f4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad3d9cbf26cb5894fd6d9169dbe743417"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#ad3d9cbf26cb5894fd6d9169dbe743417">BOOST_AUTO_TEST_CASE</a> (CheckInputLayerVisitorBindingIdAndName)</td></tr>
<tr class="separator:ad3d9cbf26cb5894fd6d9169dbe743417"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac7ce83f024515592cffac13ae5220f1e"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#ac7ce83f024515592cffac13ae5220f1e">BOOST_AUTO_TEST_CASE</a> (CheckInputLayerVisitorBindingIdAndNameNull)</td></tr>
<tr class="separator:ac7ce83f024515592cffac13ae5220f1e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac28b0a4861e6eab3e7621a7ed4eb5f62"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#ac28b0a4861e6eab3e7621a7ed4eb5f62">BOOST_AUTO_TEST_CASE</a> (CheckOutputLayerVisitorBindingIdAndName)</td></tr>
<tr class="separator:ac28b0a4861e6eab3e7621a7ed4eb5f62"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9a7475b081b431ffa9915aac51c2d338"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a9a7475b081b431ffa9915aac51c2d338">BOOST_AUTO_TEST_CASE</a> (CheckOutputLayerVisitorBindingIdAndNameNull)</td></tr>
<tr class="separator:a9a7475b081b431ffa9915aac51c2d338"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5a38bd982292180692711b0ae296bb34"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a5a38bd982292180692711b0ae296bb34">CheckLayerBindingId</a> (<a class="el" href="namespacearmnn.html#ab8cf8f9fb6792e654c2d8d8382f6f01b">LayerBindingId</a> visitorId, <a class="el" href="namespacearmnn.html#ab8cf8f9fb6792e654c2d8d8382f6f01b">LayerBindingId</a> id)</td></tr>
<tr class="separator:a5a38bd982292180692711b0ae296bb34"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5e783a951642781b9e7b55db06a514b7"><td class="memItemLeft" align="right" valign="top">arm_compute::NormalizationLayerInfo&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a5e783a951642781b9e7b55db06a514b7">CreateAclNormalizationLayerInfoForL2Normalization</a> (const <a class="el" href="classarmnn_1_1_tensor_info.html">armnn::TensorInfo</a> &amp;tensorInfo, <a class="el" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0">armnn::DataLayout</a> dataLayout)</td></tr>
<tr class="separator:a5e783a951642781b9e7b55db06a514b7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afdba36f125621d775d471f0daf613df2"><td class="memItemLeft" align="right" valign="top">arm_compute::ActivationLayerInfo::ActivationFunction&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#afdba36f125621d775d471f0daf613df2">ConvertActivationFunctionToAclActivationFunction</a> (<a class="el" href="namespacearmnn.html#a56297e0f7b215eea46c818cb7528d9ea">ActivationFunction</a> armnnFunction)</td></tr>
<tr class="separator:afdba36f125621d775d471f0daf613df2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad701d0d29baa4266ab4d33b090aa661c"><td class="memItemLeft" align="right" valign="top">arm_compute::ActivationLayerInfo&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#ad701d0d29baa4266ab4d33b090aa661c">ConvertActivationDescriptorToAclActivationLayerInfo</a> (const <a class="el" href="structarmnn_1_1_activation_descriptor.html">ActivationDescriptor</a> &amp;actDesc)</td></tr>
<tr class="separator:ad701d0d29baa4266ab4d33b090aa661c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad256fcf8c7f4d5a240fa47f0b56d50af"><td class="memItemLeft" align="right" valign="top">arm_compute::PoolingType&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#ad256fcf8c7f4d5a240fa47f0b56d50af">ConvertPoolingAlgorithmToAclPoolingType</a> (<a class="el" href="namespacearmnn.html#a961bbfe1db71a848eff5a1f0ab775718">PoolingAlgorithm</a> poolingAlgorithm)</td></tr>
<tr class="separator:ad256fcf8c7f4d5a240fa47f0b56d50af"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8f3bfacadfd6d2146d6ccd299dabc7aa"><td class="memItemLeft" align="right" valign="top">arm_compute::DimensionRoundingType&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a8f3bfacadfd6d2146d6ccd299dabc7aa">ConvertOutputShapeRoundingToAclDimensionRoundingType</a> (<a class="el" href="namespacearmnn.html#adf2e5515c4c36a3e7e46bb8b83c6754e">OutputShapeRounding</a> rounding)</td></tr>
<tr class="separator:a8f3bfacadfd6d2146d6ccd299dabc7aa"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa5baabb8e3a4aa6cbdcab419d743e747"><td class="memItemLeft" align="right" valign="top">arm_compute::NormType&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#aa5baabb8e3a4aa6cbdcab419d743e747">ConvertNormalizationAlgorithmChannelToAclNormType</a> (<a class="el" href="namespacearmnn.html#abe18a5033f2ab9c0de82c676b48f5437">NormalizationAlgorithmChannel</a> channelType)</td></tr>
<tr class="separator:aa5baabb8e3a4aa6cbdcab419d743e747"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abccab9266ab13dbd806445af31ddbba7"><td class="memItemLeft" align="right" valign="top">arm_compute::FullyConnectedLayerInfo&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#abccab9266ab13dbd806445af31ddbba7">ConvertFullyConnectedDescriptorToAclFullyConnectedLayerInfo</a> (const <a class="el" href="structarmnn_1_1_fully_connected_descriptor.html">FullyConnectedDescriptor</a> &amp;fullyConnectedDesc)</td></tr>
<tr class="separator:abccab9266ab13dbd806445af31ddbba7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae9bdcb8ac91731109dc423d6ed476204"><td class="memItemLeft" align="right" valign="top">arm_compute::InterpolationPolicy&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#ae9bdcb8ac91731109dc423d6ed476204">ConvertResizeMethodToAclInterpolationPolicy</a> (<a class="el" href="namespacearmnn.html#a9a2af2f8c4af4f9efa8e79417d505ac4">ResizeMethod</a> resizeMethod)</td></tr>
<tr class="separator:ae9bdcb8ac91731109dc423d6ed476204"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa70ebe7b7898fe69ce24db803caa373e"><td class="memItemLeft" align="right" valign="top">unsigned int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#aa70ebe7b7898fe69ce24db803caa373e">ComputeSoftmaxAclAxis</a> (const <a class="el" href="structarmnn_1_1_softmax_descriptor.html">SoftmaxDescriptor</a> &amp;softmaxDesc, const <a class="el" href="classarmnn_1_1_tensor_info.html">armnn::TensorInfo</a> &amp;tensor)</td></tr>
<tr class="separator:aa70ebe7b7898fe69ce24db803caa373e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8cbabc875597b3bed0ccdc0adb289fde"><td class="memItemLeft" align="right" valign="top">std::set&lt; unsigned int &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a8cbabc875597b3bed0ccdc0adb289fde">ComputeSplitAxis</a> (const <a class="el" href="namespacearmnn.html#a60291543fe872b795e71e05bcd835fd1">armnn::SplitterDescriptor</a> &amp;desc, const <a class="el" href="classarmnn_1_1_tensor_shape.html">TensorShape</a> &amp;input)</td></tr>
<tr class="separator:a8cbabc875597b3bed0ccdc0adb289fde"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a36e8f52330a21eeab3cc7c4e030f3583"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classarmnn_1_1_tensor_shape.html">TensorShape</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a36e8f52330a21eeab3cc7c4e030f3583">GetUnpaddedTensorStrides</a> (const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;tensorInfo)</td></tr>
<tr class="separator:a36e8f52330a21eeab3cc7c4e030f3583"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a83c4a275acf59f62b8387f389d0929d5"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classarmnn_1_1_optional.html">armnn::Optional</a>&lt; <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6">armnn::DataType</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a83c4a275acf59f62b8387f389d0929d5">GetBiasTypeFromWeightsType</a> (<a class="el" href="classarmnn_1_1_optional.html">armnn::Optional</a>&lt; <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6">armnn::DataType</a> &gt; weightsType)</td></tr>
<tr class="separator:a83c4a275acf59f62b8387f389d0929d5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:acea2d8c53b441e24b6d60b090fda37c9"><td class="memTemplParams" colspan="2">template&lt;typename F &gt; </td></tr>
<tr class="memitem:acea2d8c53b441e24b6d60b090fda37c9"><td class="memTemplItemLeft" align="right" valign="top">bool&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#acea2d8c53b441e24b6d60b090fda37c9">CheckSupportRule</a> (F rule, <a class="el" href="classarmnn_1_1_optional.html">Optional</a>&lt; std::string &amp;&gt; reasonIfUnsupported, const char *reason)</td></tr>
<tr class="separator:acea2d8c53b441e24b6d60b090fda37c9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5980f7b42f4df041efebdc6ae242f686"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
<tr class="memitem:a5980f7b42f4df041efebdc6ae242f686"><td class="memTemplItemLeft" align="right" valign="top">bool&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a5980f7b42f4df041efebdc6ae242f686">AllTypesAreEqualImpl</a> (T)</td></tr>
<tr class="separator:a5980f7b42f4df041efebdc6ae242f686"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2a0bcfb4df0a03357b4cbb8d9e89a3da"><td class="memTemplParams" colspan="2">template&lt;typename T , typename... Rest&gt; </td></tr>
<tr class="memitem:a2a0bcfb4df0a03357b4cbb8d9e89a3da"><td class="memTemplItemLeft" align="right" valign="top">bool&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a2a0bcfb4df0a03357b4cbb8d9e89a3da">AllTypesAreEqualImpl</a> (T t1, T t2, Rest... rest)</td></tr>
<tr class="separator:a2a0bcfb4df0a03357b4cbb8d9e89a3da"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a17955517b0d148f7ffdbffe8b46e41e0"><td class="memItemLeft" align="right" valign="top">constexpr const char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a17955517b0d148f7ffdbffe8b46e41e0">MockBackendId</a> ()</td></tr>
<tr class="separator:a17955517b0d148f7ffdbffe8b46e41e0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a872803f5667392efc3c8e5607bd453ad"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a872803f5667392efc3c8e5607bd453ad">GetBiasDataType</a> (<a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a> inputDataType)</td></tr>
<tr class="separator:a872803f5667392efc3c8e5607bd453ad"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2a9ac8ebb69307ad4ec894ffa0523dbf"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classarmnn_1_1_const_tensor.html">armnn::ConstTensor</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a2a9ac8ebb69307ad4ec894ffa0523dbf">PermuteTensor</a> (const <a class="el" href="classarmnn_1_1_const_cpu_tensor_handle.html">ConstCpuTensorHandle</a> *tensor, const <a class="el" href="classarmnn_1_1_permutation_vector.html">PermutationVector</a> &amp;permutationVector, void *permuteBuffer)</td></tr>
<tr class="separator:a2a9ac8ebb69307ad4ec894ffa0523dbf"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3170fdd696155a247ecd81d445c0e2e1"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a3170fdd696155a247ecd81d445c0e2e1">ReshapeWeightsForAcl</a> (<a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;weightInfo, <a class="el" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0">DataLayout</a> dataLayout)</td></tr>
<tr class="separator:a3170fdd696155a247ecd81d445c0e2e1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a52b301fd3adce20b51c4482cb52f1a38"><td class="memTemplParams" colspan="2">template&lt;typename DataType &gt; </td></tr>
<tr class="memitem:a52b301fd3adce20b51c4482cb52f1a38"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classarmnn_1_1_const_tensor.html">ConstTensor</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a52b301fd3adce20b51c4482cb52f1a38">ReorderWeightChannelsForAcl</a> (const <a class="el" href="classarmnn_1_1_const_tensor.html">ConstTensor</a> &amp;weightHandle, <a class="el" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0">DataLayout</a> dataLayout, void *permuteBuffer)</td></tr>
<tr class="separator:a52b301fd3adce20b51c4482cb52f1a38"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1e8288eac7e909fdb58b6113d816763a"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a1e8288eac7e909fdb58b6113d816763a">ConvertWeightTensorInfoFromArmnnToAcl</a> (const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;weightInfo, <a class="el" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0">DataLayout</a> dataLayout)</td></tr>
<tr class="separator:a1e8288eac7e909fdb58b6113d816763a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a51e8b95a429e11678ffa8b9fdc88351b"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classarmnn_1_1_const_tensor.html">armnn::ConstTensor</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a51e8b95a429e11678ffa8b9fdc88351b">ConvertWeightTensorFromArmnnToAcl</a> (const <a class="el" href="classarmnn_1_1_const_cpu_tensor_handle.html">ConstCpuTensorHandle</a> *weightTensor, <a class="el" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0">DataLayout</a> dataLayout, void *permuteBuffer)</td></tr>
<tr class="separator:a51e8b95a429e11678ffa8b9fdc88351b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad69ffa576a596b9eb20ab6a41420c541"><td class="memItemLeft" align="right" valign="top">int32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#ad69ffa576a596b9eb20ab6a41420c541">ConvertMaskToACLFormat</a> (int32_t mask, int32_t numDim)</td></tr>
<tr class="separator:ad69ffa576a596b9eb20ab6a41420c541"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a92c91193007aa49f4732d6dba5397f8d"><td class="memTemplParams" colspan="2">template&lt;typename CopyFunc &gt; </td></tr>
<tr class="memitem:a92c91193007aa49f4732d6dba5397f8d"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a92c91193007aa49f4732d6dba5397f8d">CopyTensorContentsGeneric</a> (const <a class="el" href="classarmnn_1_1_i_tensor_handle.html">ITensorHandle</a> *srcTensor, <a class="el" href="classarmnn_1_1_i_tensor_handle.html">ITensorHandle</a> *dstTensor, CopyFunc copy)</td></tr>
<tr class="separator:a92c91193007aa49f4732d6dba5397f8d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afb5b53a8b0c01d4f27830bef0f25ca09"><td class="memTemplParams" colspan="2">template&lt;typename SrcTensorHandleType , typename DstTensorHandleType , typename DescriptorType &gt; </td></tr>
<tr class="memitem:afb5b53a8b0c01d4f27830bef0f25ca09"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#afb5b53a8b0c01d4f27830bef0f25ca09">GatherTensorHandlePairs</a> (const DescriptorType &amp;descriptor, std::vector&lt; std::pair&lt; SrcTensorHandleType *, DstTensorHandleType *&gt;&gt; &amp;tensorHandlePairs)</td></tr>
<tr class="separator:afb5b53a8b0c01d4f27830bef0f25ca09"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a27ecdfeeea12de313f2b97d309a35d9d"><td class="memItemLeft" align="right" valign="top">std::string&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a27ecdfeeea12de313f2b97d309a35d9d">LowerString</a> (std::string value)</td></tr>
<tr class="separator:a27ecdfeeea12de313f2b97d309a35d9d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3ca05ac77af0a0444ff34c1319094f6d"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespacearmnn.html#a707090747256af276c389e0cf1cb0a9a">TuningLevel</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a3ca05ac77af0a0444ff34c1319094f6d">ParseTuningLevel</a> (const <a class="el" href="classarmnn_1_1_backend_options_1_1_var.html">BackendOptions::Var</a> &amp;value, <a class="el" href="namespacearmnn.html#a707090747256af276c389e0cf1cb0a9a">TuningLevel</a> defaultValue)</td></tr>
<tr class="separator:a3ca05ac77af0a0444ff34c1319094f6d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af464d406b22309a891ed0aa3008a7953"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#af464d406b22309a891ed0aa3008a7953">ParseBoolean</a> (const <a class="el" href="classarmnn_1_1_backend_options_1_1_var.html">BackendOptions::Var</a> &amp;value, bool defaultValue)</td></tr>
<tr class="separator:af464d406b22309a891ed0aa3008a7953"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4e9a59f936f3d2050a17597d22825f53"><td class="memItemLeft" align="right" valign="top">std::string&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a4e9a59f936f3d2050a17597d22825f53">ParseFile</a> (const <a class="el" href="classarmnn_1_1_backend_options_1_1_var.html">BackendOptions::Var</a> &amp;value, std::string defaultValue)</td></tr>
<tr class="separator:a4e9a59f936f3d2050a17597d22825f53"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af457790132251cde6545072d879c7684"><td class="memTemplParams" colspan="2">template&lt;typename F &gt; </td></tr>
<tr class="memitem:af457790132251cde6545072d879c7684"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#af457790132251cde6545072d879c7684">ParseOptions</a> (const std::vector&lt; <a class="el" href="structarmnn_1_1_backend_options.html">BackendOptions</a> &gt; &amp;<a class="el" href="_file_only_profiling_decorator_tests_8cpp.html#a6560146509197f3e197d8d36f76c1347">options</a>, <a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a> backend, F f)</td></tr>
<tr class="separator:af457790132251cde6545072d879c7684"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab562537b5c1ef1e6cde9db9f5fa322bd"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#ab562537b5c1ef1e6cde9db9f5fa322bd">ConfigureTuner</a> (arm_compute::CLTuner &amp;tuner, <a class="el" href="namespacearmnn.html#a707090747256af276c389e0cf1cb0a9a">TuningLevel</a> level)</td></tr>
<tr class="separator:ab562537b5c1ef1e6cde9db9f5fa322bd"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:adfe10e7086e3e3b98927cf84aee03dd0"><td class="memItemLeft" align="right" valign="top">constexpr const char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#adfe10e7086e3e3b98927cf84aee03dd0">ClBackendId</a> ()</td></tr>
<tr class="separator:adfe10e7086e3e3b98927cf84aee03dd0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac86fc56b9a27576bfe930a7012a402d5"><td class="memItemLeft" align="right" valign="top">constexpr const char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#ac86fc56b9a27576bfe930a7012a402d5">ClTensorHandleFactoryId</a> ()</td></tr>
<tr class="separator:ac86fc56b9a27576bfe930a7012a402d5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1391582cd6e145b67c98f3410667968e"><td class="memItemLeft" align="right" valign="top">arm_compute::Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a1391582cd6e145b67c98f3410667968e">ClAbsWorkloadValidate</a> (const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output)</td></tr>
<tr class="separator:a1391582cd6e145b67c98f3410667968e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a42ef3cee193102dc7755193579209cca"><td class="memItemLeft" align="right" valign="top">arm_compute::Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a42ef3cee193102dc7755193579209cca">ClActivationWorkloadValidate</a> (const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output, const <a class="el" href="structarmnn_1_1_activation_descriptor.html">ActivationDescriptor</a> &amp;descriptor)</td></tr>
<tr class="separator:a42ef3cee193102dc7755193579209cca"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aefc82adf365ff14b0095dafdd2df6afc"><td class="memItemLeft" align="right" valign="top">arm_compute::Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#aefc82adf365ff14b0095dafdd2df6afc">ClAdditionValidate</a> (const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input0, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input1, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output)</td></tr>
<tr class="separator:aefc82adf365ff14b0095dafdd2df6afc"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab80423b306d8e0436b9a316922911d4d"><td class="memItemLeft" align="right" valign="top">arm_compute::Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#ab80423b306d8e0436b9a316922911d4d">ClArgMinMaxWorkloadValidate</a> (const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output, const <a class="el" href="structarmnn_1_1_arg_min_max_descriptor.html">ArgMinMaxDescriptor</a> &amp;descriptor)</td></tr>
<tr class="separator:ab80423b306d8e0436b9a316922911d4d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad6cb42ca5150bb96c151e4a4e6557d70"><td class="memItemLeft" align="right" valign="top">arm_compute::Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#ad6cb42ca5150bb96c151e4a4e6557d70">ClBatchNormalizationValidate</a> (const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;mean, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;var, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;beta, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;gamma, const <a class="el" href="structarmnn_1_1_batch_normalization_descriptor.html">BatchNormalizationDescriptor</a> &amp;desc)</td></tr>
<tr class="separator:ad6cb42ca5150bb96c151e4a4e6557d70"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a67957983877fb2c720a2ad7f88c45a3c"><td class="memItemLeft" align="right" valign="top">arm_compute::Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a67957983877fb2c720a2ad7f88c45a3c">ClBatchToSpaceNdWorkloadValidate</a> (const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output, const <a class="el" href="structarmnn_1_1_batch_to_space_nd_descriptor.html">BatchToSpaceNdDescriptor</a> &amp;desc)</td></tr>
<tr class="separator:a67957983877fb2c720a2ad7f88c45a3c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7782f0809076f14363eacb4a38964b9f"><td class="memItemLeft" align="right" valign="top">arm_compute::Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a7782f0809076f14363eacb4a38964b9f">ClConcatWorkloadValidate</a> (const std::vector&lt; const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> *&gt; &amp;inputs, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output, const <a class="el" href="structarmnn_1_1_origins_descriptor.html">OriginsDescriptor</a> &amp;descriptor)</td></tr>
<tr class="separator:a7782f0809076f14363eacb4a38964b9f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a46efae0191388fd33db4e95c5d79e2be"><td class="memItemLeft" align="right" valign="top">arm_compute::Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a46efae0191388fd33db4e95c5d79e2be">ClConvertFp16ToFp32WorkloadValidate</a> (const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output)</td></tr>
<tr class="separator:a46efae0191388fd33db4e95c5d79e2be"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a37f6946bfb7a9c7d64881b7a2e13945f"><td class="memItemLeft" align="right" valign="top">arm_compute::Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a37f6946bfb7a9c7d64881b7a2e13945f">ClConvertFp32ToFp16WorkloadValidate</a> (const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output)</td></tr>
<tr class="separator:a37f6946bfb7a9c7d64881b7a2e13945f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:acd1146eb56f1473a0bf4561bcc1d1529"><td class="memItemLeft" align="right" valign="top">arm_compute::Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#acd1146eb56f1473a0bf4561bcc1d1529">ClConvolution2dWorkloadValidate</a> (const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output, const <a class="el" href="structarmnn_1_1_convolution2d_descriptor.html">Convolution2dDescriptor</a> &amp;descriptor, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;weights, const <a class="el" href="classarmnn_1_1_optional.html">Optional</a>&lt; <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &gt; &amp;biases)</td></tr>
<tr class="separator:acd1146eb56f1473a0bf4561bcc1d1529"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5634af98b603236c6748adb5ac92e766"><td class="memItemLeft" align="right" valign="top">arm_compute::Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a5634af98b603236c6748adb5ac92e766">ClDepthToSpaceWorkloadValidate</a> (const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output, const <a class="el" href="namespacearmnn.html#a3647f60510bc8ddaced01c51b0ee8714">DepthToSpaceDescriptor</a> &amp;desc)</td></tr>
<tr class="separator:a5634af98b603236c6748adb5ac92e766"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4ec5dfcb3e419ddce1fcb3b799f312e1"><td class="memItemLeft" align="right" valign="top">arm_compute::Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a4ec5dfcb3e419ddce1fcb3b799f312e1">ClDepthwiseConvolutionWorkloadValidate</a> (const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output, const <a class="el" href="structarmnn_1_1_depthwise_convolution2d_descriptor.html">DepthwiseConvolution2dDescriptor</a> &amp;descriptor, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;weights, const <a class="el" href="classarmnn_1_1_optional.html">Optional</a>&lt; <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &gt; &amp;biases)</td></tr>
<tr class="separator:a4ec5dfcb3e419ddce1fcb3b799f312e1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a75045734c29d7d6635342c05adbc151b"><td class="memItemLeft" align="right" valign="top">arm_compute::Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a75045734c29d7d6635342c05adbc151b">ClDequantizeWorkloadValidate</a> (const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output)</td></tr>
<tr class="separator:a75045734c29d7d6635342c05adbc151b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6a0edac987d58b405636df2eb2ee525d"><td class="memItemLeft" align="right" valign="top">arm_compute::Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a6a0edac987d58b405636df2eb2ee525d">ClDivisionWorkloadValidate</a> (const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input0, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input1, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output)</td></tr>
<tr class="separator:a6a0edac987d58b405636df2eb2ee525d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8874961260f35da85229554f92e16ca9"><td class="memItemLeft" align="right" valign="top">arm_compute::Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a8874961260f35da85229554f92e16ca9">ClFloorWorkloadValidate</a> (const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output)</td></tr>
<tr class="separator:a8874961260f35da85229554f92e16ca9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a00ef2c55913f952924a3e23556655285"><td class="memItemLeft" align="right" valign="top">arm_compute::Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a00ef2c55913f952924a3e23556655285">ClFullyConnectedWorkloadValidate</a> (const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;weights, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;biases, const <a class="el" href="structarmnn_1_1_fully_connected_descriptor.html">FullyConnectedDescriptor</a> &amp;descriptor)</td></tr>
<tr class="separator:a00ef2c55913f952924a3e23556655285"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:acf69869c2242e5e3741c4f9252099393"><td class="memItemLeft" align="right" valign="top">arm_compute::Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#acf69869c2242e5e3741c4f9252099393">ClGreaterWorkloadValidate</a> (const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input0, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input1, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output)</td></tr>
<tr class="separator:acf69869c2242e5e3741c4f9252099393"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a79d362f0c6e04d51807e0d81b5b05f3a"><td class="memItemLeft" align="right" valign="top">arm_compute::Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a79d362f0c6e04d51807e0d81b5b05f3a">ClInstanceNormalizationWorkloadValidate</a> (const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output, const <a class="el" href="structarmnn_1_1_instance_normalization_descriptor.html">InstanceNormalizationDescriptor</a> &amp;descriptor)</td></tr>
<tr class="separator:a79d362f0c6e04d51807e0d81b5b05f3a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aef334cdb24000c330f4d2e5f1b384784"><td class="memItemLeft" align="right" valign="top">arm_compute::Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#aef334cdb24000c330f4d2e5f1b384784">ClL2NormalizationWorkloadValidate</a> (const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output, const <a class="el" href="structarmnn_1_1_l2_normalization_descriptor.html">L2NormalizationDescriptor</a> &amp;descriptor)</td></tr>
<tr class="separator:aef334cdb24000c330f4d2e5f1b384784"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a90ab88fe4c7aa9466c4653404a6b2213"><td class="memItemLeft" align="right" valign="top">arm_compute::Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a90ab88fe4c7aa9466c4653404a6b2213">ClLstmFloatWorkloadValidate</a> (const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;outputStateIn, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;cellStateIn, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;scratchBuffer, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;outputStateOut, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;cellStateOut, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output, const <a class="el" href="structarmnn_1_1_lstm_descriptor.html">LstmDescriptor</a> &amp;descriptor, const <a class="el" href="structarmnn_1_1_lstm_input_params_info.html">LstmInputParamsInfo</a> &amp;paramsInfo)</td></tr>
<tr class="separator:a90ab88fe4c7aa9466c4653404a6b2213"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a553706c6338ffc52b0d916859f642587"><td class="memItemLeft" align="right" valign="top">arm_compute::Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a553706c6338ffc52b0d916859f642587">ClMaximumWorkloadValidate</a> (const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input0, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input1, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output)</td></tr>
<tr class="separator:a553706c6338ffc52b0d916859f642587"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa1fff3c5bdebee27ad33aacc6d110d32"><td class="memItemLeft" align="right" valign="top">arm_compute::Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#aa1fff3c5bdebee27ad33aacc6d110d32">ClMeanValidate</a> (const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output, const <a class="el" href="structarmnn_1_1_mean_descriptor.html">MeanDescriptor</a> &amp;desc)</td></tr>
<tr class="separator:aa1fff3c5bdebee27ad33aacc6d110d32"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8c04c8e796a4fbec706df42ed9c27e4e"><td class="memItemLeft" align="right" valign="top">arm_compute::Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a8c04c8e796a4fbec706df42ed9c27e4e">ClMinimumWorkloadValidate</a> (const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input0, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input1, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output)</td></tr>
<tr class="separator:a8c04c8e796a4fbec706df42ed9c27e4e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a674a280a55c3760374a05ee24e9e3e74"><td class="memItemLeft" align="right" valign="top">arm_compute::Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a674a280a55c3760374a05ee24e9e3e74">ClMultiplicationWorkloadValidate</a> (const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input0, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input1, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output)</td></tr>
<tr class="separator:a674a280a55c3760374a05ee24e9e3e74"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a144c2e243a255715f309999077ed1792"><td class="memItemLeft" align="right" valign="top">arm_compute::Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a144c2e243a255715f309999077ed1792">ClNormalizationWorkloadValidate</a> (const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output, const <a class="el" href="structarmnn_1_1_normalization_descriptor.html">NormalizationDescriptor</a> &amp;descriptor)</td></tr>
<tr class="separator:a144c2e243a255715f309999077ed1792"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:adcf7b7d939bac1cfaeb333c7b3175bb8"><td class="memItemLeft" align="right" valign="top">arm_compute::Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#adcf7b7d939bac1cfaeb333c7b3175bb8">ClPadValidate</a> (const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output, const <a class="el" href="structarmnn_1_1_pad_descriptor.html">PadDescriptor</a> &amp;descriptor)</td></tr>
<tr class="separator:adcf7b7d939bac1cfaeb333c7b3175bb8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a26c25df9e2271333ab4d4ef71db41dca"><td class="memItemLeft" align="right" valign="top">arm_compute::Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a26c25df9e2271333ab4d4ef71db41dca">ClPermuteWorkloadValidate</a> (const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output, const <a class="el" href="structarmnn_1_1_permute_descriptor.html">PermuteDescriptor</a> &amp;descriptor)</td></tr>
<tr class="separator:a26c25df9e2271333ab4d4ef71db41dca"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8a21bb33f7f054ce7b48a8c7df9e6d4a"><td class="memItemLeft" align="right" valign="top">arm_compute::Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a8a21bb33f7f054ce7b48a8c7df9e6d4a">ClPooling2dWorkloadValidate</a> (const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output, const <a class="el" href="structarmnn_1_1_pooling2d_descriptor.html">Pooling2dDescriptor</a> &amp;descriptor)</td></tr>
<tr class="separator:a8a21bb33f7f054ce7b48a8c7df9e6d4a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae58d1f4437a779274037bc86efac9e26"><td class="memItemLeft" align="right" valign="top">arm_compute::Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#ae58d1f4437a779274037bc86efac9e26">ClPreluWorkloadValidate</a> (const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;alpha, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output)</td></tr>
<tr class="separator:ae58d1f4437a779274037bc86efac9e26"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5fb7fe07abfb2373103d842b47a24726"><td class="memItemLeft" align="right" valign="top">arm_compute::Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a5fb7fe07abfb2373103d842b47a24726">ClQuantizedLstmWorkloadValidate</a> (const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;previousCellStateIn, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;previousOutputIn, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;cellStateOut, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output, const <a class="el" href="structarmnn_1_1_quantized_lstm_input_params_info.html">QuantizedLstmInputParamsInfo</a> &amp;paramsInfo)</td></tr>
<tr class="separator:a5fb7fe07abfb2373103d842b47a24726"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9c1b478e30a1e8a4ecac874cf15f13d4"><td class="memItemLeft" align="right" valign="top">arm_compute::Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a9c1b478e30a1e8a4ecac874cf15f13d4">ClQuantizeWorkloadValidate</a> (const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output)</td></tr>
<tr class="separator:a9c1b478e30a1e8a4ecac874cf15f13d4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af5bb7a834a74983cbbc249785d0c392b"><td class="memItemLeft" align="right" valign="top">arm_compute::Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#af5bb7a834a74983cbbc249785d0c392b">ClReshapeWorkloadValidate</a> (const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output)</td></tr>
<tr class="separator:af5bb7a834a74983cbbc249785d0c392b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a95b187d3c6b7b46f4fbdc60be69fc02c"><td class="memItemLeft" align="right" valign="top">arm_compute::Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a95b187d3c6b7b46f4fbdc60be69fc02c">ClResizeWorkloadValidate</a> (const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output, const <a class="el" href="structarmnn_1_1_resize_descriptor.html">ResizeDescriptor</a> &amp;descriptor)</td></tr>
<tr class="separator:a95b187d3c6b7b46f4fbdc60be69fc02c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3f6f9f0d3567ae04b49ea88727845900"><td class="memItemLeft" align="right" valign="top">arm_compute::Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a3f6f9f0d3567ae04b49ea88727845900">ClRsqrtWorkloadValidate</a> (const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output)</td></tr>
<tr class="separator:a3f6f9f0d3567ae04b49ea88727845900"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6d85d2806d0a90140832ad8113c1d350"><td class="memItemLeft" align="right" valign="top">arm_compute::Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a6d85d2806d0a90140832ad8113c1d350">ClSliceWorkloadValidate</a> (const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output, const <a class="el" href="structarmnn_1_1_slice_descriptor.html">SliceDescriptor</a> &amp;descriptor)</td></tr>
<tr class="separator:a6d85d2806d0a90140832ad8113c1d350"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abc6f7e5fe77e5aed3f7842755dd34073"><td class="memItemLeft" align="right" valign="top">arm_compute::Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#abc6f7e5fe77e5aed3f7842755dd34073">ClSoftmaxWorkloadValidate</a> (const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output, const <a class="el" href="structarmnn_1_1_softmax_descriptor.html">SoftmaxDescriptor</a> &amp;descriptor)</td></tr>
<tr class="separator:abc6f7e5fe77e5aed3f7842755dd34073"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a534b28fd4b345bbc938d055ff5b8970f"><td class="memItemLeft" align="right" valign="top">arm_compute::Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a534b28fd4b345bbc938d055ff5b8970f">ClSpaceToBatchNdWorkloadValidate</a> (const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output, const <a class="el" href="structarmnn_1_1_space_to_batch_nd_descriptor.html">SpaceToBatchNdDescriptor</a> &amp;descriptor)</td></tr>
<tr class="separator:a534b28fd4b345bbc938d055ff5b8970f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5f81bc4e5533cfe99932865bd102735c"><td class="memItemLeft" align="right" valign="top">arm_compute::Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a5f81bc4e5533cfe99932865bd102735c">ClSpaceToDepthWorkloadValidate</a> (const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output, const <a class="el" href="structarmnn_1_1_space_to_depth_descriptor.html">SpaceToDepthDescriptor</a> &amp;desc)</td></tr>
<tr class="separator:a5f81bc4e5533cfe99932865bd102735c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3ac8a60f837b19b20987e4fd238ce0cd"><td class="memItemLeft" align="right" valign="top">arm_compute::Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a3ac8a60f837b19b20987e4fd238ce0cd">ClSplitterWorkloadValidate</a> (const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input, const std::vector&lt; std::reference_wrapper&lt; <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &gt;&gt; &amp;outputs, unsigned int splitAxis)</td></tr>
<tr class="separator:a3ac8a60f837b19b20987e4fd238ce0cd"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8c9fec997dbb5db4cdb433c36d075782"><td class="memItemLeft" align="right" valign="top">arm_compute::Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a8c9fec997dbb5db4cdb433c36d075782">ClStackWorkloadValidate</a> (const std::vector&lt; const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> *&gt; &amp;inputs, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output, const <a class="el" href="structarmnn_1_1_stack_descriptor.html">StackDescriptor</a> &amp;descriptor)</td></tr>
<tr class="separator:a8c9fec997dbb5db4cdb433c36d075782"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a157e0508f6d6d08e3ca4cf6c661242e6"><td class="memItemLeft" align="right" valign="top">arm_compute::Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a157e0508f6d6d08e3ca4cf6c661242e6">ClStridedSliceWorkloadValidate</a> (const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output, const <a class="el" href="structarmnn_1_1_strided_slice_descriptor.html">StridedSliceDescriptor</a> &amp;descriptor)</td></tr>
<tr class="separator:a157e0508f6d6d08e3ca4cf6c661242e6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3bbbf958387c788549b0d8481232875f"><td class="memItemLeft" align="right" valign="top">arm_compute::Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a3bbbf958387c788549b0d8481232875f">ClSubtractionValidate</a> (const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input0, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input1, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output)</td></tr>
<tr class="separator:a3bbbf958387c788549b0d8481232875f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a719ea81939d6a25f8636b52c59165d66"><td class="memItemLeft" align="right" valign="top">arm_compute::Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a719ea81939d6a25f8636b52c59165d66">ClTransposeConvolution2dWorkloadValidate</a> (const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output, const <a class="el" href="structarmnn_1_1_transpose_convolution2d_descriptor.html">TransposeConvolution2dDescriptor</a> &amp;descriptor, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;weights, const <a class="el" href="classarmnn_1_1_optional.html">Optional</a>&lt; <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &gt; &amp;biases)</td></tr>
<tr class="separator:a719ea81939d6a25f8636b52c59165d66"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a73447f827b995cf90d4029151514b4ba"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
<tr class="memitem:a73447f827b995cf90d4029151514b4ba"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a73447f827b995cf90d4029151514b4ba">CopyArmComputeClTensorData</a> (arm_compute::CLTensor &amp;dstTensor, const T *srcData)</td></tr>
<tr class="separator:a73447f827b995cf90d4029151514b4ba"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6d4bdf4368a1422943f8f2b1740ec491"><td class="memItemLeft" align="right" valign="top">auto&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a6d4bdf4368a1422943f8f2b1740ec491">SetClStridedSliceData</a> (const std::vector&lt; int &gt; &amp;m_begin, const std::vector&lt; int &gt; &amp;m_end, const std::vector&lt; int &gt; &amp;m_stride)</td></tr>
<tr class="separator:a6d4bdf4368a1422943f8f2b1740ec491"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a460e01ad4cd0bfa6bde4eccaf0e77220"><td class="memItemLeft" align="right" valign="top">auto&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a460e01ad4cd0bfa6bde4eccaf0e77220">SetClSliceData</a> (const std::vector&lt; unsigned int &gt; &amp;m_begin, const std::vector&lt; unsigned int &gt; &amp;m_size)</td></tr>
<tr class="separator:a460e01ad4cd0bfa6bde4eccaf0e77220"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a46747c3d0b99968be0b37d74bc9687dd"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a46747c3d0b99968be0b37d74bc9687dd">InitializeArmComputeClTensorData</a> (arm_compute::CLTensor &amp;clTensor, const <a class="el" href="classarmnn_1_1_const_cpu_tensor_handle.html">ConstCpuTensorHandle</a> *handle)</td></tr>
<tr class="separator:a46747c3d0b99968be0b37d74bc9687dd"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2192b5ff59aacdb27f8b0238323915dc"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classarmnn_1_1_runtime_exception.html">RuntimeException</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a2192b5ff59aacdb27f8b0238323915dc">WrapClError</a> (const <a class="el" href="namespacearmnn.html#a93a3ba385cad27c4774e5fe64c025d3da902b0d55fddef6f8d651fe1035b7d4bd">cl::Error</a> &amp;clError, const <a class="el" href="structarmnn_1_1_check_location.html">CheckLocation</a> &amp;location)</td></tr>
<tr class="separator:a2192b5ff59aacdb27f8b0238323915dc"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aff5bee79757341daf750c7dd7c123a15"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#aff5bee79757341daf750c7dd7c123a15">RunClFunction</a> (arm_compute::IFunction &amp;function, const <a class="el" href="structarmnn_1_1_check_location.html">CheckLocation</a> &amp;location)</td></tr>
<tr class="separator:aff5bee79757341daf750c7dd7c123a15"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3a34a305e5187f3a3c67030d3bebbdb0"><td class="memItemLeft" align="right" valign="top">constexpr const char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a3a34a305e5187f3a3c67030d3bebbdb0">NeonBackendId</a> ()</td></tr>
<tr class="separator:a3a34a305e5187f3a3c67030d3bebbdb0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aad5d4888304a57fb22c4608dc5d94dc1"><td class="memItemLeft" align="right" valign="top">constexpr const char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#aad5d4888304a57fb22c4608dc5d94dc1">NeonTensorHandleFactoryId</a> ()</td></tr>
<tr class="separator:aad5d4888304a57fb22c4608dc5d94dc1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afc773aec6f845adc0cc547ce475dfe3f"><td class="memItemLeft" align="right" valign="top">arm_compute::Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#afc773aec6f845adc0cc547ce475dfe3f">NeonAbsWorkloadValidate</a> (const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output)</td></tr>
<tr class="separator:afc773aec6f845adc0cc547ce475dfe3f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a46495807633a01d826851e1cb498f071"><td class="memItemLeft" align="right" valign="top">arm_compute::Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a46495807633a01d826851e1cb498f071">NeonActivationWorkloadValidate</a> (const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output, const <a class="el" href="structarmnn_1_1_activation_descriptor.html">ActivationDescriptor</a> &amp;descriptor)</td></tr>
<tr class="separator:a46495807633a01d826851e1cb498f071"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afc541536011ccfb06853c45bfaba2dfd"><td class="memItemLeft" align="right" valign="top">arm_compute::Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#afc541536011ccfb06853c45bfaba2dfd">NeonAdditionWorkloadValidate</a> (const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input0, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input1, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output)</td></tr>
<tr class="separator:afc541536011ccfb06853c45bfaba2dfd"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a61d1f39297fec6e3062e4047dc5f236e"><td class="memItemLeft" align="right" valign="top">arm_compute::Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a61d1f39297fec6e3062e4047dc5f236e">NeonArgMinMaxWorkloadValidate</a> (const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output, const <a class="el" href="structarmnn_1_1_arg_min_max_descriptor.html">ArgMinMaxDescriptor</a> &amp;descriptor)</td></tr>
<tr class="separator:a61d1f39297fec6e3062e4047dc5f236e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6c856ceba1828fe201b2b6c032d70371"><td class="memItemLeft" align="right" valign="top">arm_compute::Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a6c856ceba1828fe201b2b6c032d70371">NeonBatchNormalizationValidate</a> (const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;mean, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;var, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;beta, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;gamma, const <a class="el" href="structarmnn_1_1_batch_normalization_descriptor.html">BatchNormalizationDescriptor</a> &amp;descriptor)</td></tr>
<tr class="separator:a6c856ceba1828fe201b2b6c032d70371"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a00623eeb8f77dac6dbbc1395b5270dbb"><td class="memItemLeft" align="right" valign="top">arm_compute::Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a00623eeb8f77dac6dbbc1395b5270dbb">NeonBatchToSpaceNdWorkloadValidate</a> (const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output, const <a class="el" href="structarmnn_1_1_batch_to_space_nd_descriptor.html">BatchToSpaceNdDescriptor</a> &amp;desc)</td></tr>
<tr class="separator:a00623eeb8f77dac6dbbc1395b5270dbb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8a219633e750d6daffcef3b641fa11f3"><td class="memItemLeft" align="right" valign="top">arm_compute::Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a8a219633e750d6daffcef3b641fa11f3">NeonConcatWorkloadValidate</a> (const std::vector&lt; const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> *&gt; &amp;inputs, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output, const <a class="el" href="structarmnn_1_1_origins_descriptor.html">OriginsDescriptor</a> &amp;descriptor)</td></tr>
<tr class="separator:a8a219633e750d6daffcef3b641fa11f3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af64bb043263ba7d09c98fd88da60726d"><td class="memItemLeft" align="right" valign="top">arm_compute::Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#af64bb043263ba7d09c98fd88da60726d">NeonConvolution2dWorkloadValidate</a> (const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output, const <a class="el" href="structarmnn_1_1_convolution2d_descriptor.html">Convolution2dDescriptor</a> &amp;descriptor, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;weights, const <a class="el" href="classarmnn_1_1_optional.html">Optional</a>&lt; <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &gt; &amp;biases)</td></tr>
<tr class="separator:af64bb043263ba7d09c98fd88da60726d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a116d88067bf98ce9858ab73e68f605f9"><td class="memItemLeft" align="right" valign="top">arm_compute::Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a116d88067bf98ce9858ab73e68f605f9">NeonDepthToSpaceWorkloadValidate</a> (const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output, const <a class="el" href="namespacearmnn.html#a3647f60510bc8ddaced01c51b0ee8714">DepthToSpaceDescriptor</a> &amp;descriptor)</td></tr>
<tr class="separator:a116d88067bf98ce9858ab73e68f605f9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a168ebb908e1ee4bac24cb7992510de73"><td class="memItemLeft" align="right" valign="top">arm_compute::Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a168ebb908e1ee4bac24cb7992510de73">NeonDepthwiseConvolutionWorkloadValidate</a> (const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output, const <a class="el" href="structarmnn_1_1_depthwise_convolution2d_descriptor.html">DepthwiseConvolution2dDescriptor</a> &amp;descriptor, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;weights, const <a class="el" href="classarmnn_1_1_optional.html">Optional</a>&lt; <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &gt; &amp;biases)</td></tr>
<tr class="separator:a168ebb908e1ee4bac24cb7992510de73"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:acefede7cc57c71ea4cfe1c888bb413e0"><td class="memItemLeft" align="right" valign="top">arm_compute::Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#acefede7cc57c71ea4cfe1c888bb413e0">NeonDequantizeWorkloadValidate</a> (const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output)</td></tr>
<tr class="separator:acefede7cc57c71ea4cfe1c888bb413e0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae0ae21bef03ed19f252c72c660e571a4"><td class="memItemLeft" align="right" valign="top">arm_compute::DetectionPostProcessLayerInfo&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#ae0ae21bef03ed19f252c72c660e571a4">MakeInfo</a> (const <a class="el" href="structarmnn_1_1_detection_post_process_descriptor.html">DetectionPostProcessDescriptor</a> &amp;desc)</td></tr>
<tr class="separator:ae0ae21bef03ed19f252c72c660e571a4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a304243ccb52986da06388dc57deae88f"><td class="memItemLeft" align="right" valign="top">arm_compute::Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a304243ccb52986da06388dc57deae88f">NeonDetectionPostProcessValidate</a> (const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;<a class="el" href="_neon_end_to_end_tests_8cpp.html#ada422a73ac4e68bcb1b1b1f0b44028d9">boxEncodings</a>, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;<a class="el" href="_neon_end_to_end_tests_8cpp.html#a0348e6bb67ace72535bd105219bb6237">scores</a>, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;<a class="el" href="_neon_end_to_end_tests_8cpp.html#ac0981848e4ae57729f14f72bd4caa9f8">anchors</a>, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;detectionBoxes, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;detectionClasses, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;detectionScores, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;numDetections, const <a class="el" href="structarmnn_1_1_detection_post_process_descriptor.html">DetectionPostProcessDescriptor</a> &amp;desc)</td></tr>
<tr class="separator:a304243ccb52986da06388dc57deae88f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3a62359fc5ebfe9628871c0ba79fb37c"><td class="memItemLeft" align="right" valign="top">arm_compute::Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a3a62359fc5ebfe9628871c0ba79fb37c">NeonDivisionWorkloadValidate</a> (const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input0, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input1, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output)</td></tr>
<tr class="separator:a3a62359fc5ebfe9628871c0ba79fb37c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0b7897a2a04016aa7fa24e2a1d10e944"><td class="memItemLeft" align="right" valign="top">arm_compute::Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a0b7897a2a04016aa7fa24e2a1d10e944">NeonFullyConnectedWorkloadValidate</a> (const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;weights, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;biases, const <a class="el" href="structarmnn_1_1_fully_connected_descriptor.html">FullyConnectedDescriptor</a> &amp;descriptor)</td></tr>
<tr class="separator:a0b7897a2a04016aa7fa24e2a1d10e944"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad536149438b0481b7278ad741e18fb5a"><td class="memItemLeft" align="right" valign="top">arm_compute::Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#ad536149438b0481b7278ad741e18fb5a">NeonGreaterWorkloadValidate</a> (const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input0, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input1, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output)</td></tr>
<tr class="separator:ad536149438b0481b7278ad741e18fb5a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aea722abe239545030f4c6fe4e083816f"><td class="memItemLeft" align="right" valign="top">arm_compute::Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#aea722abe239545030f4c6fe4e083816f">NeonInstanceNormalizationWorkloadValidate</a> (const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output, const <a class="el" href="structarmnn_1_1_instance_normalization_descriptor.html">InstanceNormalizationDescriptor</a> &amp;descriptor)</td></tr>
<tr class="separator:aea722abe239545030f4c6fe4e083816f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae838df3960d2b5d18d73ed2a07aee917"><td class="memItemLeft" align="right" valign="top">arm_compute::Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#ae838df3960d2b5d18d73ed2a07aee917">NeonL2NormalizationWorkloadValidate</a> (const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output, const <a class="el" href="structarmnn_1_1_l2_normalization_descriptor.html">L2NormalizationDescriptor</a> &amp;descriptor)</td></tr>
<tr class="separator:ae838df3960d2b5d18d73ed2a07aee917"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9e06cc2a2ac8b88fc72972695a17910f"><td class="memItemLeft" align="right" valign="top">arm_compute::Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a9e06cc2a2ac8b88fc72972695a17910f">NeonLstmFloatWorkloadValidate</a> (const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;outputStateIn, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;cellStateIn, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;scratchBuffer, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;outputStateOut, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;cellStateOut, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output, const <a class="el" href="structarmnn_1_1_lstm_descriptor.html">LstmDescriptor</a> &amp;descriptor, const <a class="el" href="structarmnn_1_1_lstm_input_params_info.html">LstmInputParamsInfo</a> &amp;paramsInfo)</td></tr>
<tr class="separator:a9e06cc2a2ac8b88fc72972695a17910f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8d2ea79addd8ef64be2ca0dad3408f00"><td class="memItemLeft" align="right" valign="top">arm_compute::Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a8d2ea79addd8ef64be2ca0dad3408f00">NeonMaximumWorkloadValidate</a> (const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input0, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input1, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output)</td></tr>
<tr class="separator:a8d2ea79addd8ef64be2ca0dad3408f00"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab81dd6d40850f8fea025ee7ce51f86d0"><td class="memItemLeft" align="right" valign="top">arm_compute::Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#ab81dd6d40850f8fea025ee7ce51f86d0">NeonMeanWorkloadValidate</a> (const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output, const <a class="el" href="structarmnn_1_1_mean_descriptor.html">MeanDescriptor</a> &amp;desc)</td></tr>
<tr class="separator:ab81dd6d40850f8fea025ee7ce51f86d0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab81159ebfa638af1b91fe1e8c5de1955"><td class="memItemLeft" align="right" valign="top">arm_compute::Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#ab81159ebfa638af1b91fe1e8c5de1955">NeonMinimumWorkloadValidate</a> (const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input0, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input1, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output)</td></tr>
<tr class="separator:ab81159ebfa638af1b91fe1e8c5de1955"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a38bdbed2a1e28ab15cac0cc0f42c3fa6"><td class="memItemLeft" align="right" valign="top">arm_compute::Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a38bdbed2a1e28ab15cac0cc0f42c3fa6">NeonMultiplicationWorkloadValidate</a> (const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input0, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input1, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output)</td></tr>
<tr class="separator:a38bdbed2a1e28ab15cac0cc0f42c3fa6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2ec6297db90d1d4c258c13d2d72b13d9"><td class="memItemLeft" align="right" valign="top">arm_compute::Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a2ec6297db90d1d4c258c13d2d72b13d9">NeonNormalizationWorkloadValidate</a> (const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output, const <a class="el" href="structarmnn_1_1_normalization_descriptor.html">NormalizationDescriptor</a> &amp;descriptor)</td></tr>
<tr class="separator:a2ec6297db90d1d4c258c13d2d72b13d9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a39209c0c078e83227222eb885317c2c5"><td class="memItemLeft" align="right" valign="top">arm_compute::Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a39209c0c078e83227222eb885317c2c5">NeonPadWorkloadValidate</a> (const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output, const <a class="el" href="structarmnn_1_1_pad_descriptor.html">PadDescriptor</a> &amp;descriptor)</td></tr>
<tr class="separator:a39209c0c078e83227222eb885317c2c5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a70650f6b1d3b8511fcdb989ca769cdbb"><td class="memItemLeft" align="right" valign="top">arm_compute::Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a70650f6b1d3b8511fcdb989ca769cdbb">NeonPermuteWorkloadValidate</a> (const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output, const <a class="el" href="structarmnn_1_1_permute_descriptor.html">PermuteDescriptor</a> &amp;descriptor)</td></tr>
<tr class="separator:a70650f6b1d3b8511fcdb989ca769cdbb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1f07655db8ad7f2738bb0d3d9e2316cc"><td class="memItemLeft" align="right" valign="top">arm_compute::Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a1f07655db8ad7f2738bb0d3d9e2316cc">NeonPooling2dWorkloadValidate</a> (const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output, const <a class="el" href="structarmnn_1_1_pooling2d_descriptor.html">Pooling2dDescriptor</a> &amp;descriptor)</td></tr>
<tr class="separator:a1f07655db8ad7f2738bb0d3d9e2316cc"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a188adc104b16db3dc23ed2c5ff06cbb8"><td class="memItemLeft" align="right" valign="top">arm_compute::Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a188adc104b16db3dc23ed2c5ff06cbb8">NeonPreluWorkloadValidate</a> (const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;alpha, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output)</td></tr>
<tr class="separator:a188adc104b16db3dc23ed2c5ff06cbb8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae83632e641892ad2de78f316376f6bd0"><td class="memItemLeft" align="right" valign="top">arm_compute::Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#ae83632e641892ad2de78f316376f6bd0">NeonQuantizedLstmWorkloadValidate</a> (const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;cellStateIn, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;outputStateIn, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;cellStateOut, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;outputStateOut, const <a class="el" href="structarmnn_1_1_quantized_lstm_input_params_info.html">QuantizedLstmInputParamsInfo</a> &amp;paramsInfo)</td></tr>
<tr class="separator:ae83632e641892ad2de78f316376f6bd0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4d1e35c8bbe48e99dd522ac0f75f77d7"><td class="memItemLeft" align="right" valign="top">arm_compute::Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a4d1e35c8bbe48e99dd522ac0f75f77d7">NeonQuantizeWorkloadValidate</a> (const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output)</td></tr>
<tr class="separator:a4d1e35c8bbe48e99dd522ac0f75f77d7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a430021076042c8157a926a3bb3a37152"><td class="memItemLeft" align="right" valign="top">arm_compute::Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a430021076042c8157a926a3bb3a37152">NeonReshapeWorkloadValidate</a> (const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output)</td></tr>
<tr class="separator:a430021076042c8157a926a3bb3a37152"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a552d65f4e0a6c9e7c7796e77590063e9"><td class="memItemLeft" align="right" valign="top">arm_compute::Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a552d65f4e0a6c9e7c7796e77590063e9">NeonResizeWorkloadValidate</a> (const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output, const <a class="el" href="structarmnn_1_1_resize_descriptor.html">ResizeDescriptor</a> &amp;descriptor)</td></tr>
<tr class="separator:a552d65f4e0a6c9e7c7796e77590063e9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa7d1b5e38aa8cb731519ff12e2a73350"><td class="memItemLeft" align="right" valign="top">arm_compute::Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#aa7d1b5e38aa8cb731519ff12e2a73350">NeonRsqrtWorkloadValidate</a> (const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output)</td></tr>
<tr class="separator:aa7d1b5e38aa8cb731519ff12e2a73350"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0a223c0997e3f7faa373ed55f954252b"><td class="memItemLeft" align="right" valign="top">arm_compute::Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a0a223c0997e3f7faa373ed55f954252b">NeonSliceWorkloadValidate</a> (const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output, const <a class="el" href="structarmnn_1_1_slice_descriptor.html">SliceDescriptor</a> &amp;descriptor)</td></tr>
<tr class="separator:a0a223c0997e3f7faa373ed55f954252b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4077a9771ba9c551f4ce61863f65e798"><td class="memItemLeft" align="right" valign="top">arm_compute::Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a4077a9771ba9c551f4ce61863f65e798">NeonSoftmaxWorkloadValidate</a> (const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output, const <a class="el" href="structarmnn_1_1_softmax_descriptor.html">SoftmaxDescriptor</a> &amp;descriptor)</td></tr>
<tr class="separator:a4077a9771ba9c551f4ce61863f65e798"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab29257da888af2c4971db1344d8a526c"><td class="memItemLeft" align="right" valign="top">arm_compute::Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#ab29257da888af2c4971db1344d8a526c">NeonSpaceToBatchNdWorkloadValidate</a> (const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output, const <a class="el" href="structarmnn_1_1_space_to_batch_nd_descriptor.html">SpaceToBatchNdDescriptor</a> &amp;descriptor)</td></tr>
<tr class="separator:ab29257da888af2c4971db1344d8a526c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af6d2d40482240def4614deb694933d1e"><td class="memItemLeft" align="right" valign="top">arm_compute::Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#af6d2d40482240def4614deb694933d1e">NeonSpaceToDepthWorkloadValidate</a> (const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output, const <a class="el" href="structarmnn_1_1_space_to_depth_descriptor.html">SpaceToDepthDescriptor</a> &amp;descriptor)</td></tr>
<tr class="separator:af6d2d40482240def4614deb694933d1e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aab5ea316b3decb05430323d847e3a773"><td class="memItemLeft" align="right" valign="top">arm_compute::Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#aab5ea316b3decb05430323d847e3a773">NeonSplitterWorkloadValidate</a> (const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input, const std::vector&lt; std::reference_wrapper&lt; <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &gt;&gt; &amp;outputs, unsigned int splitAxis)</td></tr>
<tr class="separator:aab5ea316b3decb05430323d847e3a773"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a65c83c74bdbd66cdd547d331998952eb"><td class="memItemLeft" align="right" valign="top">arm_compute::Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a65c83c74bdbd66cdd547d331998952eb">NeonStackWorkloadValidate</a> (const std::vector&lt; const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> *&gt; &amp;inputs, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output, const <a class="el" href="structarmnn_1_1_stack_descriptor.html">StackDescriptor</a> &amp;descriptor)</td></tr>
<tr class="separator:a65c83c74bdbd66cdd547d331998952eb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac71d08bf1257807c112b4d019802acc3"><td class="memItemLeft" align="right" valign="top">arm_compute::Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#ac71d08bf1257807c112b4d019802acc3">NeonStridedSliceWorkloadValidate</a> (const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output, const <a class="el" href="structarmnn_1_1_strided_slice_descriptor.html">StridedSliceDescriptor</a> &amp;descriptor)</td></tr>
<tr class="separator:ac71d08bf1257807c112b4d019802acc3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a73c15f02c46f64c1adf0fafb4c7c2cac"><td class="memItemLeft" align="right" valign="top">arm_compute::Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a73c15f02c46f64c1adf0fafb4c7c2cac">NeonSubtractionWorkloadValidate</a> (const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input0, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input1, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output)</td></tr>
<tr class="separator:a73c15f02c46f64c1adf0fafb4c7c2cac"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abc73c3c9a09f91c22c64d7c166e9be4d"><td class="memItemLeft" align="right" valign="top">arm_compute::Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#abc73c3c9a09f91c22c64d7c166e9be4d">NeonTransposeConvolution2dWorkloadValidate</a> (const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output, const <a class="el" href="structarmnn_1_1_transpose_convolution2d_descriptor.html">TransposeConvolution2dDescriptor</a> &amp;descriptor, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;weights, const <a class="el" href="classarmnn_1_1_optional.html">Optional</a>&lt; <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &gt; &amp;biases)</td></tr>
<tr class="separator:abc73c3c9a09f91c22c64d7c166e9be4d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1351e01f9fb983937caf79e353142b41"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
<tr class="memitem:a1351e01f9fb983937caf79e353142b41"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a1351e01f9fb983937caf79e353142b41">CopyArmComputeTensorData</a> (arm_compute::Tensor &amp;dstTensor, const T *srcData)</td></tr>
<tr class="separator:a1351e01f9fb983937caf79e353142b41"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad9aa8d49d42ada3f757290033af39857"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#ad9aa8d49d42ada3f757290033af39857">InitializeArmComputeTensorData</a> (arm_compute::Tensor &amp;tensor, const <a class="el" href="classarmnn_1_1_const_cpu_tensor_handle.html">ConstCpuTensorHandle</a> *handle)</td></tr>
<tr class="separator:ad9aa8d49d42ada3f757290033af39857"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a01d1e745f360ccd0b655214645bcef32"><td class="memItemLeft" align="right" valign="top">auto&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a01d1e745f360ccd0b655214645bcef32">SetNeonStridedSliceData</a> (const std::vector&lt; int &gt; &amp;m_begin, const std::vector&lt; int &gt; &amp;m_end, const std::vector&lt; int &gt; &amp;m_stride)</td></tr>
<tr class="separator:a01d1e745f360ccd0b655214645bcef32"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab40e30cea5a328a3c35aa32f9b7db1c1"><td class="memItemLeft" align="right" valign="top">auto&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#ab40e30cea5a328a3c35aa32f9b7db1c1">SetNeonSliceData</a> (const std::vector&lt; unsigned int &gt; &amp;m_begin, const std::vector&lt; unsigned int &gt; &amp;m_size)</td></tr>
<tr class="separator:ab40e30cea5a328a3c35aa32f9b7db1c1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae7d50846b2769f81521af24d063bc093"><td class="memItemLeft" align="right" valign="top">constexpr const char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#ae7d50846b2769f81521af24d063bc093">RefBackendId</a> ()</td></tr>
<tr class="separator:ae7d50846b2769f81521af24d063bc093"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5baedac4819656984488bc1fe5fe1505"><td class="memItemLeft" align="right" valign="top">constexpr const char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a5baedac4819656984488bc1fe5fe1505">RefTensorHandleFactoryId</a> ()</td></tr>
<tr class="separator:a5baedac4819656984488bc1fe5fe1505"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6a2e058d934e9d784eab57ee7121d69c"><td class="memTemplParams" colspan="2">template&lt;DataType ArmnnType&gt; </td></tr>
<tr class="memitem:a6a2e058d934e9d784eab57ee7121d69c"><td class="memTemplItemLeft" align="right" valign="top">bool&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a6a2e058d934e9d784eab57ee7121d69c">IsDataType</a> (const <a class="el" href="structarmnn_1_1_workload_info.html">WorkloadInfo</a> &amp;info)</td></tr>
<tr class="separator:a6a2e058d934e9d784eab57ee7121d69c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a87b99791ccf8793961db67ea19eb6fa4"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a87b99791ccf8793961db67ea19eb6fa4">IsSigned32</a> (const <a class="el" href="structarmnn_1_1_workload_info.html">WorkloadInfo</a> &amp;info)</td></tr>
<tr class="separator:a87b99791ccf8793961db67ea19eb6fa4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad78d822be14a8d585cd038cf0e73cd7e"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#ad78d822be14a8d585cd038cf0e73cd7e">IsFloat16</a> (const <a class="el" href="structarmnn_1_1_workload_info.html">WorkloadInfo</a> &amp;info)</td></tr>
<tr class="separator:ad78d822be14a8d585cd038cf0e73cd7e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abcd0d843d5736b78740ae73249b6b977"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#abcd0d843d5736b78740ae73249b6b977">IsQSymmS16</a> (const <a class="el" href="structarmnn_1_1_workload_info.html">WorkloadInfo</a> &amp;info)</td></tr>
<tr class="separator:abcd0d843d5736b78740ae73249b6b977"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a09a7cd515c3b495e61b2a5116bf6a335"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a09a7cd515c3b495e61b2a5116bf6a335">IsQSymmS8</a> (const <a class="el" href="structarmnn_1_1_workload_info.html">WorkloadInfo</a> &amp;info)</td></tr>
<tr class="separator:a09a7cd515c3b495e61b2a5116bf6a335"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a47d136a5519331dee24f5e01b206ae7c"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a47d136a5519331dee24f5e01b206ae7c">IsQAsymmS8</a> (const <a class="el" href="structarmnn_1_1_workload_info.html">WorkloadInfo</a> &amp;info)</td></tr>
<tr class="separator:a47d136a5519331dee24f5e01b206ae7c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a37c36bbf668cd8a0d7dcd731c9b591d7"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a37c36bbf668cd8a0d7dcd731c9b591d7">IsQAsymmU8</a> (const <a class="el" href="structarmnn_1_1_workload_info.html">WorkloadInfo</a> &amp;info)</td></tr>
<tr class="separator:a37c36bbf668cd8a0d7dcd731c9b591d7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad05c0670c947d35d39b3b0217e9975cf"><td class="memTemplParams" colspan="2">template&lt;typename QueueDescriptorType &gt; </td></tr>
<tr class="memitem:ad05c0670c947d35d39b3b0217e9975cf"><td class="memTemplItemLeft" align="right" valign="top">constexpr bool&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#ad05c0670c947d35d39b3b0217e9975cf">IsOperationQueueDescriptor</a> (const QueueDescriptorType &amp;)</td></tr>
<tr class="separator:ad05c0670c947d35d39b3b0217e9975cf"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a93e7b76d19b33076b2a4eae44014d5ea"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
<tr class="memitem:a93e7b76d19b33076b2a4eae44014d5ea"><td class="memTemplItemLeft" align="right" valign="top">constexpr bool&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a93e7b76d19b33076b2a4eae44014d5ea">IsOperationQueueDescriptor</a> (const <a class="el" href="structarmnn_1_1_mem_copy_queue_descriptor.html">MemCopyQueueDescriptor</a> &amp;)</td></tr>
<tr class="separator:a93e7b76d19b33076b2a4eae44014d5ea"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a05323af66b9f762e269a27562a2bbdd0"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
<tr class="memitem:a05323af66b9f762e269a27562a2bbdd0"><td class="memTemplItemLeft" align="right" valign="top">constexpr bool&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a05323af66b9f762e269a27562a2bbdd0">IsOperationQueueDescriptor</a> (const <a class="el" href="structarmnn_1_1_constant_queue_descriptor.html">ConstantQueueDescriptor</a> &amp;)</td></tr>
<tr class="separator:a05323af66b9f762e269a27562a2bbdd0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a91332212b6a2cc9c0ea32af03c600b4f"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
<tr class="memitem:a91332212b6a2cc9c0ea32af03c600b4f"><td class="memTemplItemLeft" align="right" valign="top">constexpr bool&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a91332212b6a2cc9c0ea32af03c600b4f">IsOperationQueueDescriptor</a> (const <a class="el" href="structarmnn_1_1_permute_queue_descriptor.html">PermuteQueueDescriptor</a> &amp;)</td></tr>
<tr class="separator:a91332212b6a2cc9c0ea32af03c600b4f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7636fbbc4f8ea2d0cf9f3ac2d12a4c62"><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a7636fbbc4f8ea2d0cf9f3ac2d12a4c62">Activation</a> (float in, <a class="el" href="namespacearmnn.html#a56297e0f7b215eea46c818cb7528d9ea">ActivationFunction</a> function, float a, float b)</td></tr>
<tr class="separator:a7636fbbc4f8ea2d0cf9f3ac2d12a4c62"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad10d72a6f8859949bbe6134c638ce171"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#ad10d72a6f8859949bbe6134c638ce171">Activation</a> (<a class="el" href="classarmnn_1_1_decoder.html">Decoder</a>&lt; float &gt; &amp;in, <a class="el" href="classarmnn_1_1_encoder.html">Encoder</a>&lt; float &gt; &amp;out, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;tensorInfo, <a class="el" href="namespacearmnn.html#a56297e0f7b215eea46c818cb7528d9ea">ActivationFunction</a> function, float a, float b)</td></tr>
<tr class="separator:ad10d72a6f8859949bbe6134c638ce171"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a374120de442fe42c26536bb4f1e2a5a1"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a374120de442fe42c26536bb4f1e2a5a1">ArgMinMax</a> (<a class="el" href="classarmnn_1_1_decoder.html">Decoder</a>&lt; float &gt; &amp;in, int32_t *out, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;inputTensorInfo, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;outputTensorInfo, <a class="el" href="namespacearmnn.html#ae7e8cbf71db6a490789ca6dcaa8deeae">ArgMinMaxFunction</a> function, int axis)</td></tr>
<tr class="separator:a374120de442fe42c26536bb4f1e2a5a1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:adc251e65d99405496d503811589e9a20"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#adc251e65d99405496d503811589e9a20">BatchNormImpl</a> (const <a class="el" href="structarmnn_1_1_batch_normalization_queue_descriptor.html">BatchNormalizationQueueDescriptor</a> &amp;data, <a class="el" href="classarmnn_1_1_decoder.html">Decoder</a>&lt; float &gt; &amp;meanDecoder, <a class="el" href="classarmnn_1_1_decoder.html">Decoder</a>&lt; float &gt; &amp;varianceDecoder, <a class="el" href="classarmnn_1_1_decoder.html">Decoder</a>&lt; float &gt; &amp;betaDecoder, <a class="el" href="classarmnn_1_1_decoder.html">Decoder</a>&lt; float &gt; &amp;gammaDecoder, <a class="el" href="classarmnn_1_1_decoder.html">Decoder</a>&lt; float &gt; &amp;inputDecoder, <a class="el" href="classarmnn_1_1_encoder.html">Encoder</a>&lt; float &gt; &amp;outputEncoder)</td></tr>
<tr class="separator:adc251e65d99405496d503811589e9a20"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac70a495c61526a0500b33b23db86ca27"><td class="memItemLeft" align="right" valign="top">unsigned int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#ac70a495c61526a0500b33b23db86ca27">Offset</a> (const <a class="el" href="classarmnn_1_1_tensor_shape.html">TensorShape</a> &amp;shape, unsigned int batch, unsigned int height, unsigned int width, unsigned int channels, const <a class="el" href="classarmnn_utils_1_1_data_layout_indexed.html">DataLayoutIndexed</a> &amp;dataLayout)</td></tr>
<tr class="separator:ac70a495c61526a0500b33b23db86ca27"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8746512fab5ec10c2c57800c66311ba7"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a8746512fab5ec10c2c57800c66311ba7">BatchToSpaceNd</a> (const <a class="el" href="classarmnn_utils_1_1_data_layout_indexed.html">DataLayoutIndexed</a> &amp;dataLayout, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;inputTensorInfo, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;outputTensorInfo, const std::vector&lt; unsigned int &gt; &amp;blockShape, const std::vector&lt; std::pair&lt; unsigned int, unsigned int &gt;&gt; &amp;cropsData, <a class="el" href="classarmnn_1_1_decoder.html">Decoder</a>&lt; float &gt; &amp;inputDecoder, <a class="el" href="classarmnn_1_1_encoder.html">Encoder</a>&lt; float &gt; &amp;outputEncoder)</td></tr>
<tr class="separator:a8746512fab5ec10c2c57800c66311ba7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1deafe1b2777bcaadefe2371b3ebbb27"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a1deafe1b2777bcaadefe2371b3ebbb27">Concatenate</a> (const <a class="el" href="structarmnn_1_1_concat_queue_descriptor.html">ConcatQueueDescriptor</a> &amp;data)</td></tr>
<tr class="separator:a1deafe1b2777bcaadefe2371b3ebbb27"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af98115cd07776d3fa8424434d2a7a897"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#af98115cd07776d3fa8424434d2a7a897">Convolve</a> (const <a class="el" href="classarmnn_1_1_tensor_shape.html">TensorShape</a> &amp;rInputShape, <a class="el" href="classarmnn_1_1_decoder.html">Decoder</a>&lt; float &gt; &amp;rInputDecoder, const <a class="el" href="classarmnn_1_1_tensor_shape.html">TensorShape</a> &amp;rOutputShape, <a class="el" href="classarmnn_1_1_encoder.html">Encoder</a>&lt; float &gt; &amp;rOutputEncoder, const <a class="el" href="classarmnn_1_1_tensor_shape.html">TensorShape</a> &amp;rFilterShape, <a class="el" href="classarmnn_1_1_decoder.html">Decoder</a>&lt; float &gt; &amp;rFilterDecoder, bool biasEnabled, <a class="el" href="classarmnn_1_1_decoder.html">Decoder</a>&lt; float &gt; *pBiasDecoder, <a class="el" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0">DataLayout</a> dataLayout, unsigned int paddingTop, unsigned int paddingLeft, unsigned int xStride, unsigned int yStride, unsigned int xDilation, unsigned int yDilation, bool depthwise)</td></tr>
<tr class="separator:af98115cd07776d3fa8424434d2a7a897"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5aae369ef847a00062925cea8e9be9c4"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
<tr class="memitem:a5aae369ef847a00062925cea8e9be9c4"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a5aae369ef847a00062925cea8e9be9c4">Debug</a> (const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;inputInfo, const T *inputData, <a class="el" href="namespacearmnn.html#afad4088a9a058114ee5f87246f87bf49">LayerGuid</a> guid, const std::string &amp;layerName, unsigned int slotIndex)</td></tr>
<tr class="separator:a5aae369ef847a00062925cea8e9be9c4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3b0ab9518e3fd6a0447c174df57a313c"><td class="memItemLeft" align="right" valign="top">template void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a3b0ab9518e3fd6a0447c174df57a313c">Debug&lt; Half &gt;</a> (const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;inputInfo, const <a class="el" href="namespacearmnn.html#a0f38fa92b2468d5378258a2b074c1a31">Half</a> *inputData, <a class="el" href="namespacearmnn.html#afad4088a9a058114ee5f87246f87bf49">LayerGuid</a> guid, const std::string &amp;layerName, unsigned int slotIndex)</td></tr>
<tr class="separator:a3b0ab9518e3fd6a0447c174df57a313c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a26abbe393a88835dd569523bec69719b"><td class="memItemLeft" align="right" valign="top">template void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a26abbe393a88835dd569523bec69719b">Debug&lt; float &gt;</a> (const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;inputInfo, const float *inputData, <a class="el" href="namespacearmnn.html#afad4088a9a058114ee5f87246f87bf49">LayerGuid</a> guid, const std::string &amp;layerName, unsigned int slotIndex)</td></tr>
<tr class="separator:a26abbe393a88835dd569523bec69719b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1121718a486db835afa99328650e7e89"><td class="memItemLeft" align="right" valign="top">template void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a1121718a486db835afa99328650e7e89">Debug&lt; uint8_t &gt;</a> (const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;inputInfo, const uint8_t *inputData, <a class="el" href="namespacearmnn.html#afad4088a9a058114ee5f87246f87bf49">LayerGuid</a> guid, const std::string &amp;layerName, unsigned int slotIndex)</td></tr>
<tr class="separator:a1121718a486db835afa99328650e7e89"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac2167b3a09fab7c9b58af461bd990c3b"><td class="memItemLeft" align="right" valign="top">template void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#ac2167b3a09fab7c9b58af461bd990c3b">Debug&lt; int8_t &gt;</a> (const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;inputInfo, const int8_t *inputData, <a class="el" href="namespacearmnn.html#afad4088a9a058114ee5f87246f87bf49">LayerGuid</a> guid, const std::string &amp;layerName, unsigned int slotIndex)</td></tr>
<tr class="separator:ac2167b3a09fab7c9b58af461bd990c3b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:acc771f233bb7884932260ba353118b46"><td class="memItemLeft" align="right" valign="top">template void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#acc771f233bb7884932260ba353118b46">Debug&lt; int16_t &gt;</a> (const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;inputInfo, const int16_t *inputData, <a class="el" href="namespacearmnn.html#afad4088a9a058114ee5f87246f87bf49">LayerGuid</a> guid, const std::string &amp;layerName, unsigned int slotIndex)</td></tr>
<tr class="separator:acc771f233bb7884932260ba353118b46"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7c1cb9cf0678f74b1dcfff310d1475fd"><td class="memItemLeft" align="right" valign="top">template void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a7c1cb9cf0678f74b1dcfff310d1475fd">Debug&lt; int32_t &gt;</a> (const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;inputInfo, const int32_t *inputData, <a class="el" href="namespacearmnn.html#afad4088a9a058114ee5f87246f87bf49">LayerGuid</a> guid, const std::string &amp;layerName, unsigned int slotIndex)</td></tr>
<tr class="separator:a7c1cb9cf0678f74b1dcfff310d1475fd"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1545cb162c5a64d75d9c0c05e8ea387c"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
<tr class="memitem:a1545cb162c5a64d75d9c0c05e8ea387c"><td class="memTemplItemLeft" align="right" valign="top">std::unique_ptr&lt; <a class="el" href="classarmnn_1_1_decoder.html">Decoder</a>&lt; T &gt; &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a1545cb162c5a64d75d9c0c05e8ea387c">MakeDecoder</a> (const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;info, const void *data=nullptr)</td></tr>
<tr class="separator:a1545cb162c5a64d75d9c0c05e8ea387c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:adb59a379c467b6d48874e946183b4d21"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
<tr class="memitem:adb59a379c467b6d48874e946183b4d21"><td class="memTemplItemLeft" align="right" valign="top">std::unique_ptr&lt; <a class="el" href="classarmnn_1_1_decoder.html">Decoder</a>&lt; float &gt; &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#adb59a379c467b6d48874e946183b4d21">MakeDecoder</a> (const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;info, const void *data)</td></tr>
<tr class="separator:adb59a379c467b6d48874e946183b4d21"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab023d9a7687e35c0f108458a094c1f56"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#ab023d9a7687e35c0f108458a094c1f56">DepthToSpace</a> (const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;inputInfo, const <a class="el" href="namespacearmnn.html#a3647f60510bc8ddaced01c51b0ee8714">DepthToSpaceDescriptor</a> &amp;descriptor, const void *inputData, void *outputData, unsigned int dataTypeSize)</td></tr>
<tr class="separator:ab023d9a7687e35c0f108458a094c1f56"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:acae7e910f899ae67340c9ce29e406a86"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#acae7e910f899ae67340c9ce29e406a86">Dequantize</a> (<a class="el" href="classarmnn_1_1_decoder.html">Decoder</a>&lt; float &gt; &amp;inputDecoder, <a class="el" href="classarmnn_1_1_encoder.html">Encoder</a>&lt; float &gt; &amp;outputEncoder, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;inputInfo, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;outputInfo)</td></tr>
<tr class="separator:acae7e910f899ae67340c9ce29e406a86"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae8ed5c640761fb6744aec0ee16388417"><td class="memItemLeft" align="right" valign="top">std::vector&lt; unsigned int &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#ae8ed5c640761fb6744aec0ee16388417">GenerateRangeK</a> (unsigned int k)</td></tr>
<tr class="separator:ae8ed5c640761fb6744aec0ee16388417"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2748f45e58b1c612d473043f711d1434"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a2748f45e58b1c612d473043f711d1434">TopKSort</a> (unsigned int k, unsigned int *indices, const float *values, unsigned int numElement)</td></tr>
<tr class="separator:a2748f45e58b1c612d473043f711d1434"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abf6aad7bc221f8ad22b4d99cd020373b"><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#abf6aad7bc221f8ad22b4d99cd020373b">IntersectionOverUnion</a> (const float *boxI, const float *boxJ)</td></tr>
<tr class="separator:abf6aad7bc221f8ad22b4d99cd020373b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac8c641d4a69c9a85c487cfbc7ea4d73c"><td class="memItemLeft" align="right" valign="top">std::vector&lt; unsigned int &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#ac8c641d4a69c9a85c487cfbc7ea4d73c">NonMaxSuppression</a> (unsigned int numBoxes, const std::vector&lt; float &gt; &amp;boxCorners, const std::vector&lt; float &gt; &amp;<a class="el" href="_neon_end_to_end_tests_8cpp.html#a0348e6bb67ace72535bd105219bb6237">scores</a>, float nmsScoreThreshold, unsigned int maxDetection, float nmsIouThreshold)</td></tr>
<tr class="separator:ac8c641d4a69c9a85c487cfbc7ea4d73c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae8dcbb74cf0c855724f12833a55a5684"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#ae8dcbb74cf0c855724f12833a55a5684">AllocateOutputData</a> (unsigned int numOutput, unsigned int numSelected, const std::vector&lt; float &gt; &amp;boxCorners, const std::vector&lt; unsigned int &gt; &amp;outputIndices, const std::vector&lt; unsigned int &gt; &amp;selectedBoxes, const std::vector&lt; unsigned int &gt; &amp;selectedClasses, const std::vector&lt; float &gt; &amp;selectedScores, float *detectionBoxes, float *detectionScores, float *detectionClasses, float *numDetections)</td></tr>
<tr class="separator:ae8dcbb74cf0c855724f12833a55a5684"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae76ce23fa9fc18e56448d52b37dd3f32"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#ae76ce23fa9fc18e56448d52b37dd3f32">DetectionPostProcess</a> (const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;boxEncodingsInfo, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;<a class="el" href="_neon_end_to_end_tests_8cpp.html#abfa50e55ee160bfc64d8c3bb3dc40cc4">scoresInfo</a>, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;<a class="el" href="_neon_end_to_end_tests_8cpp.html#afe48c20bc9f2e0b86d00806b5e17f2a4">anchorsInfo</a>, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;detectionBoxesInfo, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;detectionClassesInfo, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;detectionScoresInfo, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;numDetectionsInfo, const <a class="el" href="structarmnn_1_1_detection_post_process_descriptor.html">DetectionPostProcessDescriptor</a> &amp;desc, <a class="el" href="classarmnn_1_1_decoder.html">Decoder</a>&lt; float &gt; &amp;<a class="el" href="_neon_end_to_end_tests_8cpp.html#ada422a73ac4e68bcb1b1b1f0b44028d9">boxEncodings</a>, <a class="el" href="classarmnn_1_1_decoder.html">Decoder</a>&lt; float &gt; &amp;<a class="el" href="_neon_end_to_end_tests_8cpp.html#a0348e6bb67ace72535bd105219bb6237">scores</a>, <a class="el" href="classarmnn_1_1_decoder.html">Decoder</a>&lt; float &gt; &amp;<a class="el" href="_neon_end_to_end_tests_8cpp.html#ac0981848e4ae57729f14f72bd4caa9f8">anchors</a>, float *detectionBoxes, float *detectionClasses, float *detectionScores, float *numDetections)</td></tr>
<tr class="separator:ae76ce23fa9fc18e56448d52b37dd3f32"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a56867cc5245724ab56953604b1eec9ee"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
<tr class="memitem:a56867cc5245724ab56953604b1eec9ee"><td class="memTemplItemLeft" align="right" valign="top">std::unique_ptr&lt; <a class="el" href="classarmnn_1_1_encoder.html">Encoder</a>&lt; T &gt; &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a56867cc5245724ab56953604b1eec9ee">MakeEncoder</a> (const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;info, void *data=nullptr)</td></tr>
<tr class="separator:a56867cc5245724ab56953604b1eec9ee"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a363da7c8d642ea382e3bd2f1c6283d52"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
<tr class="memitem:a363da7c8d642ea382e3bd2f1c6283d52"><td class="memTemplItemLeft" align="right" valign="top">std::unique_ptr&lt; <a class="el" href="classarmnn_1_1_encoder.html">Encoder</a>&lt; float &gt; &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a363da7c8d642ea382e3bd2f1c6283d52">MakeEncoder</a> (const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;info, void *data)</td></tr>
<tr class="separator:a363da7c8d642ea382e3bd2f1c6283d52"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6fcd01a9cdee158d3022ad089c27c078"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
<tr class="memitem:a6fcd01a9cdee158d3022ad089c27c078"><td class="memTemplItemLeft" align="right" valign="top">std::unique_ptr&lt; <a class="el" href="classarmnn_1_1_encoder.html">Encoder</a>&lt; bool &gt; &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a6fcd01a9cdee158d3022ad089c27c078">MakeEncoder</a> (const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;info, void *data)</td></tr>
<tr class="separator:a6fcd01a9cdee158d3022ad089c27c078"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad34d1d5b1ca8f52dc296ecf52ba20c8a"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#ad34d1d5b1ca8f52dc296ecf52ba20c8a">FullyConnected</a> (const <a class="el" href="classarmnn_1_1_tensor_shape.html">TensorShape</a> &amp;rInputShape, <a class="el" href="classarmnn_1_1_decoder.html">Decoder</a>&lt; float &gt; &amp;rInputDecoder, const <a class="el" href="classarmnn_1_1_tensor_shape.html">TensorShape</a> &amp;rOutputShape, <a class="el" href="classarmnn_1_1_encoder.html">Encoder</a>&lt; float &gt; &amp;rOutputEncoder, <a class="el" href="classarmnn_1_1_decoder.html">Decoder</a>&lt; float &gt; &amp;rWeightDecoder, <a class="el" href="classarmnn_1_1_decoder.html">Decoder</a>&lt; float &gt; &amp;rBiasDecoder, bool biasEnabled, unsigned int K, bool transposeWeights)</td></tr>
<tr class="memdesc:ad34d1d5b1ca8f52dc296ecf52ba20c8a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Performs a matrix multiplication and optionally adds a bias. <a href="#ad34d1d5b1ca8f52dc296ecf52ba20c8a">More...</a><br /></td></tr>
<tr class="separator:ad34d1d5b1ca8f52dc296ecf52ba20c8a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a66004b2326f8ccb1faa71d5efa186633"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a66004b2326f8ccb1faa71d5efa186633">Gather</a> (const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;paramsInfo, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;indicesInfo, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;outputInfo, <a class="el" href="classarmnn_1_1_decoder.html">Decoder</a>&lt; float &gt; &amp;params, const int32_t *indices, <a class="el" href="classarmnn_1_1_encoder.html">Encoder</a>&lt; float &gt; &amp;output)</td></tr>
<tr class="separator:a66004b2326f8ccb1faa71d5efa186633"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac3d98d09064176b259e8a9038b06699d"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#ac3d98d09064176b259e8a9038b06699d">InstanceNorm</a> (const <a class="el" href="structarmnn_1_1_instance_normalization_queue_descriptor.html">InstanceNormalizationQueueDescriptor</a> &amp;data, <a class="el" href="classarmnn_1_1_decoder.html">Decoder</a>&lt; float &gt; &amp;inputDecoder, <a class="el" href="classarmnn_1_1_encoder.html">Encoder</a>&lt; float &gt; &amp;outputEncoder)</td></tr>
<tr class="separator:ac3d98d09064176b259e8a9038b06699d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac52e04c0e349e25bcdaa72c27395ef8f"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#ac52e04c0e349e25bcdaa72c27395ef8f">LogSoftmax</a> (<a class="el" href="classarmnn_1_1_decoder.html">Decoder</a>&lt; float &gt; &amp;input, <a class="el" href="classarmnn_1_1_encoder.html">Encoder</a>&lt; float &gt; &amp;output, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;inputInfo, const <a class="el" href="namespacearmnn.html#ac14705405cbcdd580df613de6766fe65">LogSoftmaxDescriptor</a> &amp;descriptor)</td></tr>
<tr class="separator:ac52e04c0e349e25bcdaa72c27395ef8f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a869f740e9c2fcb8642350c6e3d0b3742"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a869f740e9c2fcb8642350c6e3d0b3742">NextIndex</a> (const unsigned int numDims, const <a class="el" href="classarmnn_1_1_tensor_shape.html">armnn::TensorShape</a> &amp;dims, std::vector&lt; unsigned int &gt; &amp;current)</td></tr>
<tr class="separator:a869f740e9c2fcb8642350c6e3d0b3742"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae86f1ca23eaa764da9e589cc8e39a969"><td class="memItemLeft" align="right" valign="top">unsigned int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#ae86f1ca23eaa764da9e589cc8e39a969">ReducedOutputOffset</a> (const unsigned int numDims, const <a class="el" href="classarmnn_1_1_tensor_shape.html">armnn::TensorShape</a> &amp;dims, std::vector&lt; unsigned int &gt; &amp;index, const unsigned int numAxis, const std::vector&lt; unsigned int &gt; &amp;axis)</td></tr>
<tr class="separator:ae86f1ca23eaa764da9e589cc8e39a969"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a165ae372a7f67cad64ef3395d30122ce"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a165ae372a7f67cad64ef3395d30122ce">Mean</a> (const <a class="el" href="classarmnn_1_1_tensor_info.html">armnn::TensorInfo</a> &amp;inputInfo, const <a class="el" href="classarmnn_1_1_tensor_info.html">armnn::TensorInfo</a> &amp;outputInfo, const std::vector&lt; unsigned int &gt; &amp;axis, <a class="el" href="classarmnn_1_1_decoder.html">Decoder</a>&lt; float &gt; &amp;input, <a class="el" href="classarmnn_1_1_encoder.html">Encoder</a>&lt; float &gt; &amp;output)</td></tr>
<tr class="separator:a165ae372a7f67cad64ef3395d30122ce"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a28e115f5d28500324b53fae9e6c00b77"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
<tr class="memitem:a28e115f5d28500324b53fae9e6c00b77"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a28e115f5d28500324b53fae9e6c00b77">Pad</a> (const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;inputInfo, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;outputInfo, std::vector&lt; std::pair&lt; unsigned int, unsigned int &gt;&gt; m_padList, const T *inputData, T *outData, const float padValue)</td></tr>
<tr class="separator:a28e115f5d28500324b53fae9e6c00b77"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a09fc687543b371ddab280203dc989bd9"><td class="memItemLeft" align="right" valign="top">template void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a09fc687543b371ddab280203dc989bd9">Pad&lt; float &gt;</a> (const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;inputInfo, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;outputInfo, std::vector&lt; std::pair&lt; unsigned int, unsigned int &gt;&gt; m_PadList, const float *inputData, float *outData, const float padValue)</td></tr>
<tr class="separator:a09fc687543b371ddab280203dc989bd9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1b165f49b29968defb57e2d9b8628b9f"><td class="memItemLeft" align="right" valign="top">template void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a1b165f49b29968defb57e2d9b8628b9f">Pad&lt; Half &gt;</a> (const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;inputInfo, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;outputInfo, std::vector&lt; std::pair&lt; unsigned int, unsigned int &gt;&gt; m_PadList, const <a class="el" href="namespacearmnn.html#a0f38fa92b2468d5378258a2b074c1a31">Half</a> *inputData, <a class="el" href="namespacearmnn.html#a0f38fa92b2468d5378258a2b074c1a31">Half</a> *outData, const float padValue)</td></tr>
<tr class="separator:a1b165f49b29968defb57e2d9b8628b9f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7e27cbebab8cde65c84d7a00efa025cd"><td class="memItemLeft" align="right" valign="top">template void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a7e27cbebab8cde65c84d7a00efa025cd">Pad&lt; uint8_t &gt;</a> (const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;inputInfo, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;outputInfo, std::vector&lt; std::pair&lt; unsigned int, unsigned int &gt;&gt; m_PadList, const uint8_t *inputData, uint8_t *outData, const float padValue)</td></tr>
<tr class="separator:a7e27cbebab8cde65c84d7a00efa025cd"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a68b05cecb5ebbbc3b8d1fd94a66df4af"><td class="memItemLeft" align="right" valign="top">template void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a68b05cecb5ebbbc3b8d1fd94a66df4af">Pad&lt; int16_t &gt;</a> (const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;inputInfo, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;outputInfo, std::vector&lt; std::pair&lt; unsigned int, unsigned int &gt;&gt; m_PadList, const int16_t *inputData, int16_t *outData, const float padValue)</td></tr>
<tr class="separator:a68b05cecb5ebbbc3b8d1fd94a66df4af"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae2e93e304cf516841c521e3eaee025cd"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#ae2e93e304cf516841c521e3eaee025cd">Pooling2d</a> (<a class="el" href="classarmnn_1_1_decoder.html">Decoder</a>&lt; float &gt; &amp;rInputDecoder, <a class="el" href="classarmnn_1_1_encoder.html">Encoder</a>&lt; float &gt; &amp;rOutputEncoder, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;inputInfo, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;outputInfo, const <a class="el" href="structarmnn_1_1_pooling2d_descriptor.html">Pooling2dDescriptor</a> &amp;params)</td></tr>
<tr class="memdesc:ae2e93e304cf516841c521e3eaee025cd"><td class="mdescLeft">&#160;</td><td class="mdescRight">Computes the Pooling2d operation. <a href="#ae2e93e304cf516841c521e3eaee025cd">More...</a><br /></td></tr>
<tr class="separator:ae2e93e304cf516841c521e3eaee025cd"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa1ca65b3ba7f7c760eb3d5563c12864e"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#aa1ca65b3ba7f7c760eb3d5563c12864e">PreluImpl</a> (const <a class="el" href="structarmnn_1_1_prelu_queue_descriptor.html">PreluQueueDescriptor</a> &amp;data, <a class="el" href="classarmnn_1_1_decoder.html">Decoder</a>&lt; float &gt; &amp;inputData, <a class="el" href="classarmnn_1_1_decoder.html">Decoder</a>&lt; float &gt; &amp;alphaData, <a class="el" href="classarmnn_1_1_encoder.html">Encoder</a>&lt; float &gt; &amp;outputData)</td></tr>
<tr class="separator:aa1ca65b3ba7f7c760eb3d5563c12864e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab3c0b7e1a78b1b98c24934221f36a7c3"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#ab3c0b7e1a78b1b98c24934221f36a7c3">FakeQuantization</a> (const float *inputData, float *outputData, uint32_t numElements, float min, float max)</td></tr>
<tr class="separator:ab3c0b7e1a78b1b98c24934221f36a7c3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a93d269806f34407695dc10f510001c30"><td class="memItemLeft" align="right" valign="top">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a93d269806f34407695dc10f510001c30">GetTensorInfo</a> (const <a class="el" href="classarmnn_1_1_i_tensor_handle.html">ITensorHandle</a> *tensorHandle)</td></tr>
<tr class="memdesc:a93d269806f34407695dc10f510001c30"><td class="mdescLeft">&#160;</td><td class="mdescRight">float32 helpers <a href="#a93d269806f34407695dc10f510001c30">More...</a><br /></td></tr>
<tr class="separator:a93d269806f34407695dc10f510001c30"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2187ea15b1ae8c323a0cc5c211fc43d9"><td class="memTemplParams" colspan="2">template&lt;typename DataType , typename PayloadType &gt; </td></tr>
<tr class="memitem:a2187ea15b1ae8c323a0cc5c211fc43d9"><td class="memTemplItemLeft" align="right" valign="top">const <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a> *&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a2187ea15b1ae8c323a0cc5c211fc43d9">GetInputTensorData</a> (unsigned int idx, const PayloadType &amp;data)</td></tr>
<tr class="separator:a2187ea15b1ae8c323a0cc5c211fc43d9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2c0b2e5bd1b03aec10473a201f57f859"><td class="memTemplParams" colspan="2">template&lt;typename DataType , typename PayloadType &gt; </td></tr>
<tr class="memitem:a2c0b2e5bd1b03aec10473a201f57f859"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a> *&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a2c0b2e5bd1b03aec10473a201f57f859">GetOutputTensorData</a> (unsigned int idx, const PayloadType &amp;data)</td></tr>
<tr class="separator:a2c0b2e5bd1b03aec10473a201f57f859"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a691846a9eee59b0cd5b22fb5f674e007"><td class="memTemplParams" colspan="2">template&lt;typename PayloadType &gt; </td></tr>
<tr class="memitem:a691846a9eee59b0cd5b22fb5f674e007"><td class="memTemplItemLeft" align="right" valign="top">const float *&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a691846a9eee59b0cd5b22fb5f674e007">GetInputTensorDataFloat</a> (unsigned int idx, const PayloadType &amp;data)</td></tr>
<tr class="separator:a691846a9eee59b0cd5b22fb5f674e007"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab5f0afc1e37fd100843ecd55d8f284c1"><td class="memTemplParams" colspan="2">template&lt;typename PayloadType &gt; </td></tr>
<tr class="memitem:ab5f0afc1e37fd100843ecd55d8f284c1"><td class="memTemplItemLeft" align="right" valign="top">float *&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#ab5f0afc1e37fd100843ecd55d8f284c1">GetOutputTensorDataFloat</a> (unsigned int idx, const PayloadType &amp;data)</td></tr>
<tr class="separator:ab5f0afc1e37fd100843ecd55d8f284c1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a084b0ce273bef78aa314bd97fc574b84"><td class="memTemplParams" colspan="2">template&lt;typename PayloadType &gt; </td></tr>
<tr class="memitem:a084b0ce273bef78aa314bd97fc574b84"><td class="memTemplItemLeft" align="right" valign="top">const <a class="el" href="namespacearmnn.html#a0f38fa92b2468d5378258a2b074c1a31">Half</a> *&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a084b0ce273bef78aa314bd97fc574b84">GetInputTensorDataHalf</a> (unsigned int idx, const PayloadType &amp;data)</td></tr>
<tr class="separator:a084b0ce273bef78aa314bd97fc574b84"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab98e77207c3d676b0b9ffa67357dbc6a"><td class="memTemplParams" colspan="2">template&lt;typename PayloadType &gt; </td></tr>
<tr class="memitem:ab98e77207c3d676b0b9ffa67357dbc6a"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="namespacearmnn.html#a0f38fa92b2468d5378258a2b074c1a31">Half</a> *&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#ab98e77207c3d676b0b9ffa67357dbc6a">GetOutputTensorDataHalf</a> (unsigned int idx, const PayloadType &amp;data)</td></tr>
<tr class="separator:ab98e77207c3d676b0b9ffa67357dbc6a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4144d7535639c617fca0d095379493f0"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
<tr class="memitem:a4144d7535639c617fca0d095379493f0"><td class="memTemplItemLeft" align="right" valign="top">std::vector&lt; float &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a4144d7535639c617fca0d095379493f0">Dequantize</a> (const T *quant, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;info)</td></tr>
<tr class="memdesc:a4144d7535639c617fca0d095379493f0"><td class="mdescLeft">&#160;</td><td class="mdescRight">u8 helpers <a href="#a4144d7535639c617fca0d095379493f0">More...</a><br /></td></tr>
<tr class="separator:a4144d7535639c617fca0d095379493f0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1204727d8ce3ee1e60daf08079eb892e"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
<tr class="memitem:a1204727d8ce3ee1e60daf08079eb892e"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a1204727d8ce3ee1e60daf08079eb892e">Dequantize</a> (const T *inputData, float *outputData, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;info)</td></tr>
<tr class="separator:a1204727d8ce3ee1e60daf08079eb892e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abbbe4a59b72fba606f21e7c24dcbd8c0"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#abbbe4a59b72fba606f21e7c24dcbd8c0">Quantize</a> (uint8_t *quant, const float *dequant, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;info)</td></tr>
<tr class="separator:abbbe4a59b72fba606f21e7c24dcbd8c0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a25dc224be48103343302b5a6fd588fe7"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a25dc224be48103343302b5a6fd588fe7">Resize</a> (<a class="el" href="classarmnn_1_1_decoder.html">Decoder</a>&lt; float &gt; &amp;in, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;inputInfo, <a class="el" href="classarmnn_1_1_encoder.html">Encoder</a>&lt; float &gt; &amp;out, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;outputInfo, <a class="el" href="classarmnn_utils_1_1_data_layout_indexed.html">DataLayoutIndexed</a> dataLayout, <a class="el" href="namespacearmnn.html#a9a2af2f8c4af4f9efa8e79417d505ac4">armnn::ResizeMethod</a> resizeMethod, bool alignCorners)</td></tr>
<tr class="separator:a25dc224be48103343302b5a6fd588fe7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a044ea0cc993d4d1fbe4ec877b17b8d39"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a044ea0cc993d4d1fbe4ec877b17b8d39">Slice</a> (const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;inputInfo, const <a class="el" href="structarmnn_1_1_slice_descriptor.html">SliceDescriptor</a> &amp;descriptor, const void *inputData, void *outputData, unsigned int dataTypeSize)</td></tr>
<tr class="separator:a044ea0cc993d4d1fbe4ec877b17b8d39"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa999ff2585ad75b95954a9323f63c32b"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#aa999ff2585ad75b95954a9323f63c32b">Softmax</a> (<a class="el" href="classarmnn_1_1_decoder.html">Decoder</a>&lt; float &gt; &amp;in, <a class="el" href="classarmnn_1_1_encoder.html">Encoder</a>&lt; float &gt; &amp;out, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;inputTensorInfo, float beta, int axis)</td></tr>
<tr class="memdesc:aa999ff2585ad75b95954a9323f63c32b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Computes the softmax function on some inputs, into outputs, with a shape given by tensorInfo. <a href="#aa999ff2585ad75b95954a9323f63c32b">More...</a><br /></td></tr>
<tr class="separator:aa999ff2585ad75b95954a9323f63c32b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:adafb0fd0a3f6435c2bdf41f971761ecf"><td class="memItemLeft" align="right" valign="top">unsigned int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#adafb0fd0a3f6435c2bdf41f971761ecf">GetOffset</a> (const <a class="el" href="classarmnn_1_1_tensor_shape.html">TensorShape</a> &amp;shape, unsigned int b, unsigned int h, unsigned int w, unsigned int c, const <a class="el" href="classarmnn_utils_1_1_data_layout_indexed.html">DataLayoutIndexed</a> &amp;dataLayout)</td></tr>
<tr class="separator:adafb0fd0a3f6435c2bdf41f971761ecf"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4a180e425d4c19b2cdea4ce5760180e1"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a4a180e425d4c19b2cdea4ce5760180e1">SpaceToBatchNd</a> (const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;inputInfo, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;outputInfo, const <a class="el" href="structarmnn_1_1_space_to_batch_nd_descriptor.html">SpaceToBatchNdDescriptor</a> &amp;params, <a class="el" href="classarmnn_1_1_decoder.html">Decoder</a>&lt; float &gt; &amp;inputData, <a class="el" href="classarmnn_1_1_encoder.html">Encoder</a>&lt; float &gt; &amp;outputData)</td></tr>
<tr class="separator:a4a180e425d4c19b2cdea4ce5760180e1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5e1dc69443b64ad16b669388a6023f7a"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a5e1dc69443b64ad16b669388a6023f7a">SpaceToDepth</a> (const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;inputInfo, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;outputInfo, const <a class="el" href="structarmnn_1_1_space_to_depth_descriptor.html">SpaceToDepthDescriptor</a> &amp;params, <a class="el" href="classarmnn_1_1_decoder.html">Decoder</a>&lt; float &gt; &amp;inputData, <a class="el" href="classarmnn_1_1_encoder.html">Encoder</a>&lt; float &gt; &amp;outputData)</td></tr>
<tr class="separator:a5e1dc69443b64ad16b669388a6023f7a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac4d30f99e7fa46fe375e925a6ad537be"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#ac4d30f99e7fa46fe375e925a6ad537be">Split</a> (const <a class="el" href="structarmnn_1_1_splitter_queue_descriptor.html">SplitterQueueDescriptor</a> &amp;data)</td></tr>
<tr class="separator:ac4d30f99e7fa46fe375e925a6ad537be"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a427c3d26d05b518b1ace407035f5920e"><td class="memTemplParams" colspan="2">template&lt;typename DataType &gt; </td></tr>
<tr class="memitem:a427c3d26d05b518b1ace407035f5920e"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a427c3d26d05b518b1ace407035f5920e">Splitter</a> (const <a class="el" href="structarmnn_1_1_splitter_queue_descriptor.html">SplitterQueueDescriptor</a> &amp;data)</td></tr>
<tr class="separator:a427c3d26d05b518b1ace407035f5920e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6ef2dcac2ec0683d52df1b051404e7d6"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a6ef2dcac2ec0683d52df1b051404e7d6">Stack</a> (const <a class="el" href="structarmnn_1_1_stack_queue_descriptor.html">StackQueueDescriptor</a> &amp;data, std::vector&lt; std::unique_ptr&lt; <a class="el" href="classarmnn_1_1_decoder.html">Decoder</a>&lt; float &gt;&gt;&gt; &amp;inputs, <a class="el" href="classarmnn_1_1_encoder.html">Encoder</a>&lt; float &gt; &amp;output)</td></tr>
<tr class="separator:a6ef2dcac2ec0683d52df1b051404e7d6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a86d7a7168ac00b75b4971f9aad623698"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a86d7a7168ac00b75b4971f9aad623698">StridedSlice</a> (const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;inputInfo, const <a class="el" href="structarmnn_1_1_strided_slice_descriptor.html">StridedSliceDescriptor</a> &amp;params, const void *inputData, void *outputData, unsigned int dataTypeSize)</td></tr>
<tr class="separator:a86d7a7168ac00b75b4971f9aad623698"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:affec174d91f234497dfbceba5e251dee"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#affec174d91f234497dfbceba5e251dee">TransposeConvolution2dImpl</a> (const <a class="el" href="structarmnn_1_1_transpose_convolution2d_descriptor.html">TransposeConvolution2dDescriptor</a> &amp;descriptor, const <a class="el" href="classarmnn_1_1_tensor_shape.html">TensorShape</a> &amp;inputShape, <a class="el" href="classarmnn_1_1_decoder.html">Decoder</a>&lt; float &gt; &amp;inputDecoder, const <a class="el" href="classarmnn_1_1_tensor_shape.html">TensorShape</a> &amp;outputShape, <a class="el" href="classarmnn_1_1_encoder.html">Encoder</a>&lt; float &gt; &amp;outputEncoder, const <a class="el" href="classarmnn_1_1_tensor_shape.html">TensorShape</a> &amp;weightsShape, <a class="el" href="classarmnn_1_1_decoder.html">Decoder</a>&lt; float &gt; &amp;weightsDecoder, <a class="el" href="classarmnn_1_1_decoder.html">Decoder</a>&lt; float &gt; *biasesDecoder)</td></tr>
<tr class="separator:affec174d91f234497dfbceba5e251dee"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af487cc4568faf50403f12ed1c7a70a2d"><td class="memItemLeft" align="right" valign="top">const float *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#af487cc4568faf50403f12ed1c7a70a2d">GetInputTensorData</a> (unsigned int idx, const <a class="el" href="structarmnn_1_1_addition_queue_descriptor.html">AdditionQueueDescriptor</a> &amp;data)</td></tr>
<tr class="separator:af487cc4568faf50403f12ed1c7a70a2d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a932b4856d89c58865e1f39ec5ab6b841"><td class="memItemLeft" align="right" valign="top">float *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a932b4856d89c58865e1f39ec5ab6b841">GetOutputTensorData</a> (unsigned int idx, const <a class="el" href="structarmnn_1_1_addition_queue_descriptor.html">AdditionQueueDescriptor</a> &amp;data)</td></tr>
<tr class="separator:a932b4856d89c58865e1f39ec5ab6b841"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a40c8a268a9dc9dc910e348534d479f7a"><td class="memItemLeft" align="right" valign="top">constexpr const char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a40c8a268a9dc9dc910e348534d479f7a">SampleDynamicBackendId</a> ()</td></tr>
<tr class="separator:a40c8a268a9dc9dc910e348534d479f7a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8022a6869bffa6233fec784a471c1680"><td class="memItemLeft" align="right" valign="top">std::istream &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a8022a6869bffa6233fec784a471c1680">operator&gt;&gt;</a> (std::istream &amp;in, <a class="el" href="namespacearmnn.html#ae2f04a162585c0a5222a537efd5456ae">armnn::Compute</a> &amp;compute)</td></tr>
<tr class="separator:a8022a6869bffa6233fec784a471c1680"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3c51506c471a4513dcc3364514d75f39"><td class="memItemLeft" align="right" valign="top">std::istream &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a3c51506c471a4513dcc3364514d75f39">operator&gt;&gt;</a> (std::istream &amp;in, <a class="el" href="classarmnn_1_1_backend_id.html">armnn::BackendId</a> &amp;backend)</td></tr>
<tr class="separator:a3c51506c471a4513dcc3364514d75f39"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="var-members"></a>
Variables</h2></td></tr>
<tr class="memitem:abdcd184ed3bd648bb31d385040cafd5d"><td class="memItemLeft" align="right" valign="top">constexpr unsigned int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#abdcd184ed3bd648bb31d385040cafd5d">MaxNumOfTensorDimensions</a> = 5U</td></tr>
<tr class="separator:abdcd184ed3bd648bb31d385040cafd5d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a602ddc6408c3347ba4c1eba623003984"><td class="memItemLeft" align="right" valign="top">constexpr unsigned int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a602ddc6408c3347ba4c1eba623003984">LOWEST_CAPTURE_PERIOD</a> = 10000u</td></tr>
<tr class="separator:a602ddc6408c3347ba4c1eba623003984"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a43ecd194778b7653578044060ba8695e"><td class="memItemLeft" align="right" valign="top">constexpr std::size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a43ecd194778b7653578044060ba8695e">g_ProfilingEventCountHint</a> = 1024</td></tr>
<tr class="separator:a43ecd194778b7653578044060ba8695e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a41794552ff67b0dad16de60f9b8e7d7c"><td class="memItemLeft" align="right" valign="top">constexpr bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a41794552ff67b0dad16de60f9b8e7d7c">g_WriteProfilingEventSequence</a> = <a class="el" href="_ref_layer_tests_8cpp.html#a37f1c3ccc9fc906be85185350dd83d48">true</a></td></tr>
<tr class="separator:a41794552ff67b0dad16de60f9b8e7d7c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aacc0d11e271ebbfcff9d613dd17604aa"><td class="memItemLeft" align="right" valign="top">constexpr bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#aacc0d11e271ebbfcff9d613dd17604aa">g_AggregateProfilingEventsByInference</a> = <a class="el" href="_ref_layer_tests_8cpp.html#a37f1c3ccc9fc906be85185350dd83d48">true</a></td></tr>
<tr class="separator:aacc0d11e271ebbfcff9d613dd17604aa"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6ce7e56eb10e440463f09eee8f213adc"><td class="memItemLeft" align="right" valign="top">constexpr bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a6ce7e56eb10e440463f09eee8f213adc">g_WriteReportToStdOutOnProfilerDestruction</a> = <a class="el" href="_ref_layer_tests_8cpp.html#a67e2647a90dec71bb79c8b38872ba570">false</a></td></tr>
<tr class="separator:a6ce7e56eb10e440463f09eee8f213adc"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a680b729be51e88d93f2cbbdfeb5eaf4d"><td class="memItemLeft" align="right" valign="top">thread_local <a class="el" href="classarmnn_1_1_profiler.html">Profiler</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a680b729be51e88d93f2cbbdfeb5eaf4d">tl_Profiler</a> = nullptr</td></tr>
<tr class="separator:a680b729be51e88d93f2cbbdfeb5eaf4d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a19994153bdbd7710f0af3973403bc4cc"><td class="memItemLeft" align="right" valign="top">const float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a19994153bdbd7710f0af3973403bc4cc">g_AsymmU8QuantizationBase</a> = 255.0f</td></tr>
<tr class="separator:a19994153bdbd7710f0af3973403bc4cc"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a09bdfaa922d72ce0d9ec014dfa8f8c95"><td class="memItemLeft" align="right" valign="top">const float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a09bdfaa922d72ce0d9ec014dfa8f8c95">g_AsymmS8QuantizationBase</a> = 255.0f</td></tr>
<tr class="separator:a09bdfaa922d72ce0d9ec014dfa8f8c95"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:acd7f8820d124166a38c95bc8ad38811b"><td class="memItemLeft" align="right" valign="top">const float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#acd7f8820d124166a38c95bc8ad38811b">g_SymmS8QuantizationBase</a> = 127.0f</td></tr>
<tr class="separator:acd7f8820d124166a38c95bc8ad38811b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1465480794787d2278d3f0d2e6d887b4"><td class="memItemLeft" align="right" valign="top">const float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a1465480794787d2278d3f0d2e6d887b4">g_SymmS16QuantizationBase</a> = 32767.0f</td></tr>
<tr class="separator:a1465480794787d2278d3f0d2e6d887b4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1a9a6dea47de10df8e3c76dd45df56fb"><td class="memItemLeft" align="right" valign="top">const float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a1a9a6dea47de10df8e3c76dd45df56fb">g_TestTolerance</a> = 0.000001f</td></tr>
<tr class="separator:a1a9a6dea47de10df8e3c76dd45df56fb"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<h2 class="groupheader">Typedef Documentation</h2>
<a id="a1854d9cda81304325664363c1fd0fb27"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a1854d9cda81304325664363c1fd0fb27">&#9670;&nbsp;</a></span>BackendIdSet</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">using <a class="el" href="namespacearmnn.html#a1854d9cda81304325664363c1fd0fb27">BackendIdSet</a> = std::unordered_set&lt;<a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a>&gt;</td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_backend_id_8hpp_source.html#l00191">191</a> of file <a class="el" href="_backend_id_8hpp_source.html">BackendId.hpp</a>.</p>
</div>
</div>
<a id="ac858d91eedb7b4dba1bcd0aa760ab510"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ac858d91eedb7b4dba1bcd0aa760ab510">&#9670;&nbsp;</a></span>BackendIdVector</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">using <a class="el" href="namespacearmnn.html#ac858d91eedb7b4dba1bcd0aa760ab510">BackendIdVector</a> = std::vector&lt;<a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a>&gt;</td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_backend_id_8hpp_source.html#l00190">190</a> of file <a class="el" href="_backend_id_8hpp_source.html">BackendId.hpp</a>.</p>
</div>
</div>
<a id="a9173495a61a0092b5f38b855f02c3585"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a9173495a61a0092b5f38b855f02c3585">&#9670;&nbsp;</a></span>BackendsMap</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">using <a class="el" href="namespacearmnn.html#a9173495a61a0092b5f38b855f02c3585">BackendsMap</a> = std::map&lt;<a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a>, std::unique_ptr&lt;class <a class="el" href="classarmnn_1_1_i_backend_internal.html">IBackendInternal</a>&gt; &gt;</td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_network_8hpp_source.html#l00292">292</a> of file <a class="el" href="_network_8hpp_source.html">Network.hpp</a>.</p>
</div>
</div>
<a id="a20d2055c37fedf3f39db9facf2c8c697"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a20d2055c37fedf3f39db9facf2c8c697">&#9670;&nbsp;</a></span>BaseFloat32ComparisonWorkload</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">using <a class="el" href="namespacearmnn.html#a20d2055c37fedf3f39db9facf2c8c697">BaseFloat32ComparisonWorkload</a> = <a class="el" href="classarmnn_1_1_multi_typed_workload.html">MultiTypedWorkload</a>&lt;<a class="el" href="structarmnn_1_1_queue_descriptor.html">QueueDescriptor</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">armnn::DataType::Float32</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a27226c864bac7454a8504f8edb15d95b">armnn::DataType::Boolean</a>&gt;</td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_workload_8hpp_source.html#l00172">172</a> of file <a class="el" href="_workload_8hpp_source.html">Workload.hpp</a>.</p>
</div>
</div>
<a id="a9cbc0957cf0637cc3fd9702086117cc0"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a9cbc0957cf0637cc3fd9702086117cc0">&#9670;&nbsp;</a></span>BaseUint8ComparisonWorkload</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">using <a class="el" href="namespacearmnn.html#a9cbc0957cf0637cc3fd9702086117cc0">BaseUint8ComparisonWorkload</a> = <a class="el" href="classarmnn_1_1_multi_typed_workload.html">MultiTypedWorkload</a>&lt;<a class="el" href="structarmnn_1_1_queue_descriptor.html">QueueDescriptor</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a0a3f57c876f5a230244c38e1453a8a6e">armnn::DataType::QAsymmU8</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a27226c864bac7454a8504f8edb15d95b">armnn::DataType::Boolean</a>&gt;</td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_workload_8hpp_source.html#l00177">177</a> of file <a class="el" href="_workload_8hpp_source.html">Workload.hpp</a>.</p>
</div>
</div>
<a id="a280670a263dc4fd40491f6d0a2737f44"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a280670a263dc4fd40491f6d0a2737f44">&#9670;&nbsp;</a></span>BindingPointInfo</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">using <a class="el" href="namespacearmnn.html#a280670a263dc4fd40491f6d0a2737f44">BindingPointInfo</a> = std::pair&lt;<a class="el" href="namespacearmnn.html#ab8cf8f9fb6792e654c2d8d8382f6f01b">armnn::LayerBindingId</a>, <a class="el" href="classarmnn_1_1_tensor_info.html">armnn::TensorInfo</a>&gt;</td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_tensor_8hpp_source.html#l00146">146</a> of file <a class="el" href="_tensor_8hpp_source.html">Tensor.hpp</a>.</p>
</div>
</div>
<a id="ab539ef5a0c152536da71c8fcc065efb5"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab539ef5a0c152536da71c8fcc065efb5">&#9670;&nbsp;</a></span>BooleanWorkload</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">using <a class="el" href="namespacearmnn.html#ab539ef5a0c152536da71c8fcc065efb5">BooleanWorkload</a> = <a class="el" href="classarmnn_1_1_typed_workload.html">TypedWorkload</a>&lt;<a class="el" href="structarmnn_1_1_queue_descriptor.html">QueueDescriptor</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a27226c864bac7454a8504f8edb15d95b">armnn::DataType::Boolean</a>&gt;</td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_workload_8hpp_source.html#l00167">167</a> of file <a class="el" href="_workload_8hpp_source.html">Workload.hpp</a>.</p>
</div>
</div>
<a id="a77e1ccec3acbb3dadba3fd4939508b32"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a77e1ccec3acbb3dadba3fd4939508b32">&#9670;&nbsp;</a></span>ClGreaterFloat32Workload</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">using <a class="el" href="namespacearmnn.html#a77e1ccec3acbb3dadba3fd4939508b32">ClGreaterFloat32Workload</a> = <a class="el" href="classarmnn_1_1_cl_greater_workload.html">ClGreaterWorkload</a>&lt;<a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">DataType::Float32</a>&gt;</td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_cl_greater_workload_8hpp_source.html#l00031">31</a> of file <a class="el" href="_cl_greater_workload_8hpp_source.html">ClGreaterWorkload.hpp</a>.</p>
</div>
</div>
<a id="a569ba573145851e753623be817b98e9b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a569ba573145851e753623be817b98e9b">&#9670;&nbsp;</a></span>ClGreaterUint8Workload</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">using <a class="el" href="namespacearmnn.html#a569ba573145851e753623be817b98e9b">ClGreaterUint8Workload</a> = <a class="el" href="classarmnn_1_1_cl_greater_workload.html">ClGreaterWorkload</a>&lt;<a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a0a3f57c876f5a230244c38e1453a8a6e">DataType::QAsymmU8</a>&gt;</td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_cl_greater_workload_8hpp_source.html#l00032">32</a> of file <a class="el" href="_cl_greater_workload_8hpp_source.html">ClGreaterWorkload.hpp</a>.</p>
</div>
</div>
<a id="a689de00cadd81b4e35b7448e4fbbc034"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a689de00cadd81b4e35b7448e4fbbc034">&#9670;&nbsp;</a></span>CompiledBlobDeleter</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">using <a class="el" href="namespacearmnn.html#a689de00cadd81b4e35b7448e4fbbc034">CompiledBlobDeleter</a> = std::function&lt;void(const void*)&gt;</td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_i_subgraph_view_converter_8hpp_source.html#l00017">17</a> of file <a class="el" href="_i_subgraph_view_converter_8hpp_source.html">ISubgraphViewConverter.hpp</a>.</p>
</div>
</div>
<a id="a7b4ac337ed307e0739e628d5b9883856"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a7b4ac337ed307e0739e628d5b9883856">&#9670;&nbsp;</a></span>CompiledBlobPtr</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">using <a class="el" href="namespacearmnn.html#a7b4ac337ed307e0739e628d5b9883856">CompiledBlobPtr</a> = std::unique_ptr&lt;void, <a class="el" href="namespacearmnn.html#a689de00cadd81b4e35b7448e4fbbc034">CompiledBlobDeleter</a>&gt;</td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_i_subgraph_view_converter_8hpp_source.html#l00018">18</a> of file <a class="el" href="_i_subgraph_view_converter_8hpp_source.html">ISubgraphViewConverter.hpp</a>.</p>
</div>
</div>
<a id="a7863c179ff92feec660c48ab7b95ae55"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a7863c179ff92feec660c48ab7b95ae55">&#9670;&nbsp;</a></span>ConcatDescriptor</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">using <a class="el" href="namespacearmnn.html#a7863c179ff92feec660c48ab7b95ae55">ConcatDescriptor</a> = <a class="el" href="structarmnn_1_1_origins_descriptor.html">OriginsDescriptor</a></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_descriptors_fwd_8hpp_source.html#l00045">45</a> of file <a class="el" href="_descriptors_fwd_8hpp_source.html">DescriptorsFwd.hpp</a>.</p>
</div>
</div>
<a id="ac6e86c1def7f674d3c4cb7f577874aa6"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ac6e86c1def7f674d3c4cb7f577874aa6">&#9670;&nbsp;</a></span>Coordinates</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">using <a class="el" href="namespacearmnn.html#ac6e86c1def7f674d3c4cb7f577874aa6">Coordinates</a> = std::array&lt;unsigned int, <a class="el" href="namespacearmnn.html#abdcd184ed3bd648bb31d385040cafd5d">MaxNumOfTensorDimensions</a>&gt;</td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_internal_types_8hpp_source.html#l00079">79</a> of file <a class="el" href="_internal_types_8hpp_source.html">InternalTypes.hpp</a>.</p>
</div>
</div>
<a id="a15f3ad9b5e4e3d46b0a6dda246a7bc28"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a15f3ad9b5e4e3d46b0a6dda246a7bc28">&#9670;&nbsp;</a></span>DebugCallbackFunction</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">using <a class="el" href="namespacearmnn.html#a15f3ad9b5e4e3d46b0a6dda246a7bc28">DebugCallbackFunction</a> = std::function&lt;void(<a class="el" href="namespacearmnn.html#afad4088a9a058114ee5f87246f87bf49">LayerGuid</a> guid, unsigned int slotIndex, <a class="el" href="classarmnn_1_1_i_tensor_handle.html">ITensorHandle</a>* tensorHandle)&gt;</td>
</tr>
</table>
</div><div class="memdoc">
<p>Define the type of callback for the Debug layer to call </p><dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">guid</td><td>- guid of layer connected to the input of the Debug layer </td></tr>
<tr><td class="paramname">slotIndex</td><td>- index of the output slot connected to the input of the Debug layer </td></tr>
<tr><td class="paramname">tensorHandle</td><td>- TensorHandle for the input tensor to the Debug layer </td></tr>
</table>
</dd>
</dl>
<p class="definition">Definition at line <a class="el" href="_types_8hpp_source.html#l00241">241</a> of file <a class="el" href="_types_8hpp_source.html">Types.hpp</a>.</p>
</div>
</div>
<a id="a3647f60510bc8ddaced01c51b0ee8714"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a3647f60510bc8ddaced01c51b0ee8714">&#9670;&nbsp;</a></span>DepthToSpaceDescriptor</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">typedef <a class="el" href="structarmnn_1_1_space_to_depth_descriptor.html">SpaceToDepthDescriptor</a> <a class="el" href="namespacearmnn.html#a3647f60510bc8ddaced01c51b0ee8714">DepthToSpaceDescriptor</a></td>
</tr>
</table>
</div><div class="memdoc">
<p>A DepthToSpaceDescriptor for the <a class="el" href="classarmnn_1_1_depth_to_space_layer.html" title="This layer represents a DepthToSpace operation. ">DepthToSpaceLayer</a>. </p>
<p class="definition">Definition at line <a class="el" href="_descriptors_8hpp_source.html#l00834">834</a> of file <a class="el" href="_descriptors_8hpp_source.html">Descriptors.hpp</a>.</p>
</div>
</div>
<a id="a293695a94110c1a0eb77e29c22dce79a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a293695a94110c1a0eb77e29c22dce79a">&#9670;&nbsp;</a></span>Dimensions</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">using <a class="el" href="namespacearmnn.html#a293695a94110c1a0eb77e29c22dce79a">Dimensions</a> = std::array&lt;unsigned int, <a class="el" href="namespacearmnn.html#abdcd184ed3bd648bb31d385040cafd5d">MaxNumOfTensorDimensions</a>&gt;</td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_internal_types_8hpp_source.html#l00080">80</a> of file <a class="el" href="_internal_types_8hpp_source.html">InternalTypes.hpp</a>.</p>
</div>
</div>
<a id="a754d43dc24a0fe36ecb3044d8f13a413"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a754d43dc24a0fe36ecb3044d8f13a413">&#9670;&nbsp;</a></span>DynamicBackendPtr</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">using <a class="el" href="namespacearmnn.html#a754d43dc24a0fe36ecb3044d8f13a413">DynamicBackendPtr</a> = std::unique_ptr&lt;<a class="el" href="classarmnn_1_1_dynamic_backend.html">DynamicBackend</a>&gt;</td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="include_2armnn_2backends_2_dynamic_backend_8hpp_source.html#l00052">52</a> of file <a class="el" href="include_2armnn_2backends_2_dynamic_backend_8hpp_source.html">DynamicBackend.hpp</a>.</p>
</div>
</div>
<a id="a947e07902b1b5d98b57eeae34053146b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a947e07902b1b5d98b57eeae34053146b">&#9670;&nbsp;</a></span>FactoryId</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">typedef <a class="el" href="classarmnn_1_1_i_tensor_handle_factory.html#a32f4aa6a7089d877af08928139c2c277">ITensorHandleFactory::FactoryId</a> <a class="el" href="namespacearmnn.html#a947e07902b1b5d98b57eeae34053146b">FactoryId</a></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_cl_tensor_handle_factory_8cpp_source.html#l00020">20</a> of file <a class="el" href="_cl_tensor_handle_factory_8cpp_source.html">ClTensorHandleFactory.cpp</a>.</p>
</div>
</div>
<a id="a827d59b5a779a8089017802172817f3c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a827d59b5a779a8089017802172817f3c">&#9670;&nbsp;</a></span>Float16ToFloat32Workload</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">using <a class="el" href="namespacearmnn.html#a827d59b5a779a8089017802172817f3c">Float16ToFloat32Workload</a> = <a class="el" href="classarmnn_1_1_multi_typed_workload.html">MultiTypedWorkload</a>&lt;<a class="el" href="structarmnn_1_1_queue_descriptor.html">QueueDescriptor</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a26e6ed77470c6f2f830ecf874e6c0d55">armnn::DataType::Float16</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">armnn::DataType::Float32</a>&gt;</td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_workload_8hpp_source.html#l00182">182</a> of file <a class="el" href="_workload_8hpp_source.html">Workload.hpp</a>.</p>
</div>
</div>
<a id="a6486138451112140f98516c0bee18615"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a6486138451112140f98516c0bee18615">&#9670;&nbsp;</a></span>Float32ToFloat16Workload</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">using <a class="el" href="namespacearmnn.html#a6486138451112140f98516c0bee18615">Float32ToFloat16Workload</a> = <a class="el" href="classarmnn_1_1_multi_typed_workload.html">MultiTypedWorkload</a>&lt;<a class="el" href="structarmnn_1_1_queue_descriptor.html">QueueDescriptor</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">armnn::DataType::Float32</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a26e6ed77470c6f2f830ecf874e6c0d55">armnn::DataType::Float16</a>&gt;</td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_workload_8hpp_source.html#l00187">187</a> of file <a class="el" href="_workload_8hpp_source.html">Workload.hpp</a>.</p>
</div>
</div>
<a id="a0493144f15b35804a133c9aa0b63fcc9"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a0493144f15b35804a133c9aa0b63fcc9">&#9670;&nbsp;</a></span>Float32Workload</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">using <a class="el" href="namespacearmnn.html#a0493144f15b35804a133c9aa0b63fcc9">Float32Workload</a> = <a class="el" href="classarmnn_1_1_typed_workload.html">TypedWorkload</a>&lt;<a class="el" href="structarmnn_1_1_queue_descriptor.html">QueueDescriptor</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">armnn::DataType::Float32</a>&gt;</td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_workload_8hpp_source.html#l00158">158</a> of file <a class="el" href="_workload_8hpp_source.html">Workload.hpp</a>.</p>
</div>
</div>
<a id="abaedcfd0ae08790c03bfe8ba7586dd84"></a>
<h2 class="memtitle"><span class="permalink"><a href="#abaedcfd0ae08790c03bfe8ba7586dd84">&#9670;&nbsp;</a></span>FloatWorkload</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">using <a class="el" href="namespacearmnn.html#abaedcfd0ae08790c03bfe8ba7586dd84">FloatWorkload</a> = <a class="el" href="classarmnn_1_1_typed_workload.html">TypedWorkload</a>&lt;<a class="el" href="structarmnn_1_1_queue_descriptor.html">QueueDescriptor</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a26e6ed77470c6f2f830ecf874e6c0d55">armnn::DataType::Float16</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">armnn::DataType::Float32</a>&gt;</td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_workload_8hpp_source.html#l00155">155</a> of file <a class="el" href="_workload_8hpp_source.html">Workload.hpp</a>.</p>
</div>
</div>
<a id="a0f38fa92b2468d5378258a2b074c1a31"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a0f38fa92b2468d5378258a2b074c1a31">&#9670;&nbsp;</a></span>Half</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">using <a class="el" href="namespacearmnn.html#a0f38fa92b2468d5378258a2b074c1a31">Half</a> = half_float::half</td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_half_8hpp_source.html#l00016">16</a> of file <a class="el" href="_half_8hpp_source.html">Half.hpp</a>.</p>
</div>
</div>
<a id="a65a0ad0a7b807e70295481a7b9cb93ac"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a65a0ad0a7b807e70295481a7b9cb93ac">&#9670;&nbsp;</a></span>IBackendContextUniquePtr</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">using <a class="el" href="namespacearmnn.html#a65a0ad0a7b807e70295481a7b9cb93ac">IBackendContextUniquePtr</a> = std::unique_ptr&lt;<a class="el" href="classarmnn_1_1_i_backend_context.html">IBackendContext</a>&gt;</td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="include_2armnn_2backends_2_i_backend_context_8hpp_source.html#l00030">30</a> of file <a class="el" href="include_2armnn_2backends_2_i_backend_context_8hpp_source.html">IBackendContext.hpp</a>.</p>
</div>
</div>
<a id="ade0af9dacaa52cafdd701bef2e901c77"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ade0af9dacaa52cafdd701bef2e901c77">&#9670;&nbsp;</a></span>IBackendInternalUniquePtr</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">typedef std::unique_ptr&lt; <a class="el" href="classarmnn_1_1_i_backend_internal.html">IBackendInternal</a> &gt; <a class="el" href="namespacearmnn.html#ade0af9dacaa52cafdd701bef2e901c77">IBackendInternalUniquePtr</a></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_backend_registry_8hpp_source.html#l00018">18</a> of file <a class="el" href="_backend_registry_8hpp_source.html">BackendRegistry.hpp</a>.</p>
</div>
</div>
<a id="ae18caa7ee6287aa7f8c2a5ce6bc92382"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae18caa7ee6287aa7f8c2a5ce6bc92382">&#9670;&nbsp;</a></span>IBackendSharedPtr</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">using <a class="el" href="namespacearmnn.html#ae18caa7ee6287aa7f8c2a5ce6bc92382">IBackendSharedPtr</a> = std::shared_ptr&lt;<a class="el" href="classarmnn_1_1_i_backend.html">IBackend</a>&gt;</td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_types_8hpp_source.html#l00154">154</a> of file <a class="el" href="_types_8hpp_source.html">Types.hpp</a>.</p>
</div>
</div>
<a id="a5a665483e56a688e9f8180accdf72d80"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a5a665483e56a688e9f8180accdf72d80">&#9670;&nbsp;</a></span>IBackendUniquePtr</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">using <a class="el" href="namespacearmnn.html#a5a665483e56a688e9f8180accdf72d80">IBackendUniquePtr</a> = std::unique_ptr&lt;<a class="el" href="classarmnn_1_1_i_backend.html">IBackend</a>, void(*)(<a class="el" href="classarmnn_1_1_i_backend.html">IBackend</a>* backend)&gt;</td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_types_8hpp_source.html#l00155">155</a> of file <a class="el" href="_types_8hpp_source.html">Types.hpp</a>.</p>
</div>
</div>
<a id="a2d3a708a26ac6d77bf8f15506e89a25a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a2d3a708a26ac6d77bf8f15506e89a25a">&#9670;&nbsp;</a></span>IGpuAccTunedParametersPtr</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">using <a class="el" href="namespacearmnn.html#a2d3a708a26ac6d77bf8f15506e89a25a">IGpuAccTunedParametersPtr</a> = std::shared_ptr&lt;<a class="el" href="classarmnn_1_1_i_gpu_acc_tuned_parameters.html">IGpuAccTunedParameters</a>&gt;</td>
</tr>
</table>
</div><div class="memdoc">
<p>The following API is replaced by the backend options API. </p>
<p class="definition">Definition at line <a class="el" href="_i_runtime_8hpp_source.html#l00166">166</a> of file <a class="el" href="_i_runtime_8hpp_source.html">IRuntime.hpp</a>.</p>
</div>
</div>
<a id="a11fa919c11fe46aad613b2e960fcfe90"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a11fa919c11fe46aad613b2e960fcfe90">&#9670;&nbsp;</a></span>ILayerSupportSharedPtr</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">using <a class="el" href="namespacearmnn.html#a11fa919c11fe46aad613b2e960fcfe90">ILayerSupportSharedPtr</a> = std::shared_ptr&lt;<a class="el" href="classarmnn_1_1_i_layer_support.html">ILayerSupport</a>&gt;</td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_i_layer_support_8hpp_source.html#l00374">374</a> of file <a class="el" href="_i_layer_support_8hpp_source.html">ILayerSupport.hpp</a>.</p>
</div>
</div>
<a id="a12bff6d51d63dac1375c89bc8415dc46"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a12bff6d51d63dac1375c89bc8415dc46">&#9670;&nbsp;</a></span>IMemoryManagerUniquePtr</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">using <a class="el" href="namespacearmnn.html#a12bff6d51d63dac1375c89bc8415dc46">IMemoryManagerUniquePtr</a> = std::unique_ptr&lt;<a class="el" href="classarmnn_1_1_i_memory_manager.html">IMemoryManager</a>&gt;</td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="include_2armnn_2backends_2_i_memory_manager_8hpp_source.html#l00024">24</a> of file <a class="el" href="include_2armnn_2backends_2_i_memory_manager_8hpp_source.html">IMemoryManager.hpp</a>.</p>
</div>
</div>
<a id="ace74f6f9feb95a964a49d79458232703"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ace74f6f9feb95a964a49d79458232703">&#9670;&nbsp;</a></span>INetworkPtr</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">using <a class="el" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> = std::unique_ptr&lt;<a class="el" href="classarmnn_1_1_i_network.html">INetwork</a>, void(*)(<a class="el" href="classarmnn_1_1_i_network.html">INetwork</a>* network)&gt;</td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_i_network_8hpp_source.html#l00085">85</a> of file <a class="el" href="_i_network_8hpp_source.html">INetwork.hpp</a>.</p>
</div>
</div>
<a id="a41119e261eec9343888d2ceab1e4999a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a41119e261eec9343888d2ceab1e4999a">&#9670;&nbsp;</a></span>INetworkQuantizerPtr</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">using <a class="el" href="namespacearmnn.html#a41119e261eec9343888d2ceab1e4999a">INetworkQuantizerPtr</a> = std::unique_ptr&lt;class <a class="el" href="classarmnn_1_1_i_network_quantizer.html">INetworkQuantizer</a>, void(*)(<a class="el" href="classarmnn_1_1_i_network_quantizer.html">INetworkQuantizer</a>* quantizer)&gt;</td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_i_network_quantizer_8hpp_source.html#l00029">29</a> of file <a class="el" href="_i_network_quantizer_8hpp_source.html">INetworkQuantizer.hpp</a>.</p>
</div>
</div>
<a id="a2231ac018fe2c465f2d42fef597d67e7"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a2231ac018fe2c465f2d42fef597d67e7">&#9670;&nbsp;</a></span>InputQueueDescriptor</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">using <a class="el" href="namespacearmnn.html#a2231ac018fe2c465f2d42fef597d67e7">InputQueueDescriptor</a> = <a class="el" href="structarmnn_1_1_mem_copy_queue_descriptor.html">MemCopyQueueDescriptor</a></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_workload_data_8hpp_source.html#l00063">63</a> of file <a class="el" href="_workload_data_8hpp_source.html">WorkloadData.hpp</a>.</p>
</div>
</div>
<a id="aa01bce88f89975a5a031db4cc8861527"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa01bce88f89975a5a031db4cc8861527">&#9670;&nbsp;</a></span>InputTensors</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">using <a class="el" href="namespacearmnn.html#aa01bce88f89975a5a031db4cc8861527">InputTensors</a> = std::vector&lt;std::pair&lt;<a class="el" href="namespacearmnn.html#ab8cf8f9fb6792e654c2d8d8382f6f01b">LayerBindingId</a>, class <a class="el" href="classarmnn_1_1_const_tensor.html">ConstTensor</a>&gt; &gt;</td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_tensor_8hpp_source.html#l00225">225</a> of file <a class="el" href="_tensor_8hpp_source.html">Tensor.hpp</a>.</p>
</div>
</div>
<a id="a86e4b37c7c48cf5fbc5e99ccc6fd50b7"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a86e4b37c7c48cf5fbc5e99ccc6fd50b7">&#9670;&nbsp;</a></span>instead</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">using <a class="el" href="namespacearmnn.html#a86e4b37c7c48cf5fbc5e99ccc6fd50b7">instead</a> = <a class="el" href="classarmnn_1_1_subgraph_view.html">SubgraphView</a></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_subgraph_view_8hpp_source.html#l00102">102</a> of file <a class="el" href="_subgraph_view_8hpp_source.html">SubgraphView.hpp</a>.</p>
</div>
</div>
<a id="a3e4b88b993c90b274e0bd268c35d798e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a3e4b88b993c90b274e0bd268c35d798e">&#9670;&nbsp;</a></span>Int32Workload</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">using <a class="el" href="namespacearmnn.html#a3e4b88b993c90b274e0bd268c35d798e">Int32Workload</a> = <a class="el" href="classarmnn_1_1_typed_workload.html">TypedWorkload</a>&lt;<a class="el" href="structarmnn_1_1_queue_descriptor.html">QueueDescriptor</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6accedffbc6e5308e33d3843e8bdc0dad7">armnn::DataType::Signed32</a>&gt;</td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_workload_8hpp_source.html#l00164">164</a> of file <a class="el" href="_workload_8hpp_source.html">Workload.hpp</a>.</p>
</div>
</div>
<a id="a674efcf6cbdb9e831d653ff0e821fb38"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a674efcf6cbdb9e831d653ff0e821fb38">&#9670;&nbsp;</a></span>IOptimizedNetworkPtr</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">using <a class="el" href="namespacearmnn.html#a674efcf6cbdb9e831d653ff0e821fb38">IOptimizedNetworkPtr</a> = std::unique_ptr&lt;<a class="el" href="classarmnn_1_1_i_optimized_network.html">IOptimizedNetwork</a>, void(*)(<a class="el" href="classarmnn_1_1_i_optimized_network.html">IOptimizedNetwork</a>* network)&gt;</td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_i_network_8hpp_source.html#l00544">544</a> of file <a class="el" href="_i_network_8hpp_source.html">INetwork.hpp</a>.</p>
</div>
</div>
<a id="a150468a02bd7b2d2d061c4aaaee939f0"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a150468a02bd7b2d2d061c4aaaee939f0">&#9670;&nbsp;</a></span>IRuntimePtr</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">using <a class="el" href="namespacearmnn.html#a150468a02bd7b2d2d061c4aaaee939f0">IRuntimePtr</a> = std::unique_ptr&lt;<a class="el" href="classarmnn_1_1_i_runtime.html">IRuntime</a>, void(*)(<a class="el" href="classarmnn_1_1_i_runtime.html">IRuntime</a>* runtime)&gt;</td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_i_runtime_8hpp_source.html#l00024">24</a> of file <a class="el" href="_i_runtime_8hpp_source.html">IRuntime.hpp</a>.</p>
</div>
</div>
<a id="ab8cf8f9fb6792e654c2d8d8382f6f01b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab8cf8f9fb6792e654c2d8d8382f6f01b">&#9670;&nbsp;</a></span>LayerBindingId</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">using <a class="el" href="namespacearmnn.html#ab8cf8f9fb6792e654c2d8d8382f6f01b">LayerBindingId</a> = int</td>
</tr>
</table>
</div><div class="memdoc">
<p>Type of identifiers for bindable layers (inputs, outputs). </p>
<p class="definition">Definition at line <a class="el" href="_types_8hpp_source.html#l00168">168</a> of file <a class="el" href="_types_8hpp_source.html">Types.hpp</a>.</p>
</div>
</div>
<a id="afad4088a9a058114ee5f87246f87bf49"></a>
<h2 class="memtitle"><span class="permalink"><a href="#afad4088a9a058114ee5f87246f87bf49">&#9670;&nbsp;</a></span>LayerGuid</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">using <a class="el" href="namespacearmnn.html#afad4088a9a058114ee5f87246f87bf49">LayerGuid</a> = <a class="el" href="classarmnn_1_1profiling_1_1_profiling_guid.html">profiling::ProfilingGuid</a></td>
</tr>
</table>
</div><div class="memdoc">
<p>Define LayerGuid type. </p>
<p class="definition">Definition at line <a class="el" href="_types_8hpp_source.html#l00233">233</a> of file <a class="el" href="_types_8hpp_source.html">Types.hpp</a>.</p>
</div>
</div>
<a id="a419086ecb4dc9d0f9e5d8933c87e2ea2"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a419086ecb4dc9d0f9e5d8933c87e2ea2">&#9670;&nbsp;</a></span>LayerPriority</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">using <a class="el" href="namespacearmnn.html#a419086ecb4dc9d0f9e5d8933c87e2ea2">LayerPriority</a> = unsigned int</td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_layer_8hpp_source.html#l00207">207</a> of file <a class="el" href="_layer_8hpp_source.html">Layer.hpp</a>.</p>
</div>
</div>
<a id="a6b5db6cc9aad8ec0ac7b14f859aacdab"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a6b5db6cc9aad8ec0ac7b14f859aacdab">&#9670;&nbsp;</a></span>LayerTypeOf</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">using <a class="el" href="namespacearmnn.html#a6b5db6cc9aad8ec0ac7b14f859aacdab">LayerTypeOf</a> = typename <a class="el" href="structarmnn_1_1_layer_type_of_impl.html">LayerTypeOfImpl</a>&lt;Type&gt;::Type</td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_layers_fwd_8hpp_source.html#l00073">73</a> of file <a class="el" href="_layers_fwd_8hpp_source.html">LayersFwd.hpp</a>.</p>
</div>
</div>
<a id="ac14705405cbcdd580df613de6766fe65"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ac14705405cbcdd580df613de6766fe65">&#9670;&nbsp;</a></span>LogSoftmaxDescriptor</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">typedef <a class="el" href="structarmnn_1_1_softmax_descriptor.html">SoftmaxDescriptor</a> <a class="el" href="namespacearmnn.html#ac14705405cbcdd580df613de6766fe65">LogSoftmaxDescriptor</a></td>
</tr>
</table>
</div><div class="memdoc">
<p>A LogSoftmaxDescriptor for the <a class="el" href="classarmnn_1_1_log_softmax_layer.html" title="This layer represents a log softmax operation. ">LogSoftmaxLayer</a>. </p>
<p class="definition">Definition at line <a class="el" href="_descriptors_8hpp_source.html#l00142">142</a> of file <a class="el" href="_descriptors_8hpp_source.html">Descriptors.hpp</a>.</p>
</div>
</div>
<a id="a5b05f3b7208ec7cea3338e30057c0bac"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a5b05f3b7208ec7cea3338e30057c0bac">&#9670;&nbsp;</a></span>MemorySourceFlags</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">using <a class="el" href="namespacearmnn.html#a5b05f3b7208ec7cea3338e30057c0bac">MemorySourceFlags</a> = unsigned int</td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_memory_sources_8hpp_source.html#l00021">21</a> of file <a class="el" href="_memory_sources_8hpp_source.html">MemorySources.hpp</a>.</p>
</div>
</div>
<a id="a003d213dd28b0b8c0f26fbf268ccb975"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a003d213dd28b0b8c0f26fbf268ccb975">&#9670;&nbsp;</a></span>MergerDescriptor</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">using <a class="el" href="namespacearmnn.html#a003d213dd28b0b8c0f26fbf268ccb975">MergerDescriptor</a> = <a class="el" href="structarmnn_1_1_origins_descriptor.html">OriginsDescriptor</a></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_descriptors_fwd_8hpp_source.html#l00049">49</a> of file <a class="el" href="_descriptors_fwd_8hpp_source.html">DescriptorsFwd.hpp</a>.</p>
</div>
</div>
<a id="a308ba160745ba35e1de8d698d0139eb4"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a308ba160745ba35e1de8d698d0139eb4">&#9670;&nbsp;</a></span>MergerQueueDescriptor</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">using <a class="el" href="namespacearmnn.html#a308ba160745ba35e1de8d698d0139eb4">MergerQueueDescriptor</a> = <a class="el" href="structarmnn_1_1_concat_queue_descriptor.html">ConcatQueueDescriptor</a></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_workload_data_8hpp_source.html#l00121">121</a> of file <a class="el" href="_workload_data_8hpp_source.html">WorkloadData.hpp</a>.</p>
</div>
</div>
<a id="a997e96288bdb106c922202e3f33d5d7b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a997e96288bdb106c922202e3f33d5d7b">&#9670;&nbsp;</a></span>MinMaxRange</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">using <a class="el" href="namespacearmnn.html#a997e96288bdb106c922202e3f33d5d7b">MinMaxRange</a> = std::pair&lt;float, float&gt;</td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_quantizer_test_8cpp_source.html#l00029">29</a> of file <a class="el" href="_quantizer_test_8cpp_source.html">QuantizerTest.cpp</a>.</p>
</div>
</div>
<a id="a061aafb62b3769f55369845c3990ec7a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a061aafb62b3769f55369845c3990ec7a">&#9670;&nbsp;</a></span>MinMaxRangeMap</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">using <a class="el" href="namespacearmnn.html#a061aafb62b3769f55369845c3990ec7a">MinMaxRangeMap</a> = std::unordered_map&lt;<a class="el" href="namespacearmnn.html#afad4088a9a058114ee5f87246f87bf49">LayerGuid</a>, <a class="el" href="namespacearmnn.html#ac757baefa4b72b54c38f713f86418f8a">MinMaxRanges</a>&gt;</td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_quantizer_test_8cpp_source.html#l00031">31</a> of file <a class="el" href="_quantizer_test_8cpp_source.html">QuantizerTest.cpp</a>.</p>
</div>
</div>
<a id="ac757baefa4b72b54c38f713f86418f8a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ac757baefa4b72b54c38f713f86418f8a">&#9670;&nbsp;</a></span>MinMaxRanges</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">using <a class="el" href="namespacearmnn.html#ac757baefa4b72b54c38f713f86418f8a">MinMaxRanges</a> = std::vector&lt;<a class="el" href="namespacearmnn.html#a997e96288bdb106c922202e3f33d5d7b">MinMaxRange</a>&gt;</td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_quantizer_test_8cpp_source.html#l00030">30</a> of file <a class="el" href="_quantizer_test_8cpp_source.html">QuantizerTest.cpp</a>.</p>
</div>
</div>
<a id="a18b8b3bd9e39c84e36ab560978ab64c7"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a18b8b3bd9e39c84e36ab560978ab64c7">&#9670;&nbsp;</a></span>NeonGreaterFloat32Workload</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">using <a class="el" href="namespacearmnn.html#a18b8b3bd9e39c84e36ab560978ab64c7">NeonGreaterFloat32Workload</a> = <a class="el" href="classarmnn_1_1_neon_greater_workload.html">NeonGreaterWorkload</a>&lt;<a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">DataType::Float32</a>&gt;</td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_neon_greater_workload_8hpp_source.html#l00033">33</a> of file <a class="el" href="_neon_greater_workload_8hpp_source.html">NeonGreaterWorkload.hpp</a>.</p>
</div>
</div>
<a id="a9b0bb8592cd6e6cb693d305825fae448"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a9b0bb8592cd6e6cb693d305825fae448">&#9670;&nbsp;</a></span>NeonGreaterUint8Workload</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">using <a class="el" href="namespacearmnn.html#a9b0bb8592cd6e6cb693d305825fae448">NeonGreaterUint8Workload</a> = <a class="el" href="classarmnn_1_1_neon_greater_workload.html">NeonGreaterWorkload</a>&lt;<a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a0a3f57c876f5a230244c38e1453a8a6e">DataType::QAsymmU8</a>&gt;</td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_neon_greater_workload_8hpp_source.html#l00034">34</a> of file <a class="el" href="_neon_greater_workload_8hpp_source.html">NeonGreaterWorkload.hpp</a>.</p>
</div>
</div>
<a id="a83015160d8c67d5d77735eb0d4033d9a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a83015160d8c67d5d77735eb0d4033d9a">&#9670;&nbsp;</a></span>NetworkId</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">using <a class="el" href="namespacearmnn.html#a83015160d8c67d5d77735eb0d4033d9a">NetworkId</a> = int</td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_i_runtime_8hpp_source.html#l00019">19</a> of file <a class="el" href="_i_runtime_8hpp_source.html">IRuntime.hpp</a>.</p>
</div>
</div>
<a id="a9b8e5a95f8c061bbbcdb036915dcb61a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a9b8e5a95f8c061bbbcdb036915dcb61a">&#9670;&nbsp;</a></span>OffsetScalePair</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">using <a class="el" href="namespacearmnn.html#a9b8e5a95f8c061bbbcdb036915dcb61a">OffsetScalePair</a> = std::pair&lt;float, int&gt;</td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_network_quantization_scheme_8hpp_source.html#l00016">16</a> of file <a class="el" href="_network_quantization_scheme_8hpp_source.html">NetworkQuantizationScheme.hpp</a>.</p>
</div>
</div>
<a id="a37a1a6b381ccc76df203fee023234996"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a37a1a6b381ccc76df203fee023234996">&#9670;&nbsp;</a></span>OutputQueueDescriptor</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">using <a class="el" href="namespacearmnn.html#a37a1a6b381ccc76df203fee023234996">OutputQueueDescriptor</a> = <a class="el" href="structarmnn_1_1_mem_copy_queue_descriptor.html">MemCopyQueueDescriptor</a></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_workload_data_8hpp_source.html#l00064">64</a> of file <a class="el" href="_workload_data_8hpp_source.html">WorkloadData.hpp</a>.</p>
</div>
</div>
<a id="a8f091a512915d1cb29a4ebf13dfc53ea"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a8f091a512915d1cb29a4ebf13dfc53ea">&#9670;&nbsp;</a></span>OutputTensors</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">using <a class="el" href="namespacearmnn.html#a8f091a512915d1cb29a4ebf13dfc53ea">OutputTensors</a> = std::vector&lt;std::pair&lt;<a class="el" href="namespacearmnn.html#ab8cf8f9fb6792e654c2d8d8382f6f01b">LayerBindingId</a>, class <a class="el" href="classarmnn_1_1_tensor.html">Tensor</a>&gt; &gt;</td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_tensor_8hpp_source.html#l00226">226</a> of file <a class="el" href="_tensor_8hpp_source.html">Tensor.hpp</a>.</p>
</div>
</div>
<a id="a8c42c6647e31ebe525aeba878d133e45"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a8c42c6647e31ebe525aeba878d133e45">&#9670;&nbsp;</a></span>ParameterStringifyFunction</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">using <a class="el" href="namespacearmnn.html#a8c42c6647e31ebe525aeba878d133e45">ParameterStringifyFunction</a> = std::function&lt;void(const std::string&amp; name, const std::string&amp; value)&gt;</td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_serialize_layer_parameters_8hpp_source.html#l00014">14</a> of file <a class="el" href="_serialize_layer_parameters_8hpp_source.html">SerializeLayerParameters.hpp</a>.</p>
</div>
</div>
<a id="ae73bf7cb78cc552c5511431b0d583f14"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae73bf7cb78cc552c5511431b0d583f14">&#9670;&nbsp;</a></span>PreCompiledObjectDeleter</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">using <a class="el" href="namespacearmnn.html#ae73bf7cb78cc552c5511431b0d583f14">PreCompiledObjectDeleter</a> = std::function&lt;void(const void*)&gt;</td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_pre_compiled_layer_8hpp_source.html#l00019">19</a> of file <a class="el" href="_pre_compiled_layer_8hpp_source.html">PreCompiledLayer.hpp</a>.</p>
</div>
</div>
<a id="ae3bff3986cb5a50637c9b3238d821f54"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae3bff3986cb5a50637c9b3238d821f54">&#9670;&nbsp;</a></span>PreCompiledObjectPtr</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">using <a class="el" href="namespacearmnn.html#ae3bff3986cb5a50637c9b3238d821f54">PreCompiledObjectPtr</a> = std::unique_ptr&lt;void, <a class="el" href="namespacearmnn.html#ae73bf7cb78cc552c5511431b0d583f14">PreCompiledObjectDeleter</a>&gt;</td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_pre_compiled_layer_8hpp_source.html#l00020">20</a> of file <a class="el" href="_pre_compiled_layer_8hpp_source.html">PreCompiledLayer.hpp</a>.</p>
</div>
</div>
<a id="a7a9d365fbb868d53e67c4cdfdbf9cf7e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a7a9d365fbb868d53e67c4cdfdbf9cf7e">&#9670;&nbsp;</a></span>RefAdditionWorkload</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">using <a class="el" href="namespacearmnn.html#a7a9d365fbb868d53e67c4cdfdbf9cf7e">RefAdditionWorkload</a> = <a class="el" href="classarmnn_1_1_ref_elementwise_workload.html">RefElementwiseWorkload</a>&lt;std::plus&lt;float&gt;, <a class="el" href="structarmnn_1_1_addition_queue_descriptor.html">AdditionQueueDescriptor</a>, <a class="el" href="structarmnn_1_1_string_mapping.html#a4e7b349a05a558fa6792c71c11a6bf11a5b84f797c82a1ad494549330af517ad5">StringMapping::RefAdditionWorkload_Execute</a>&gt;</td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_ref_elementwise_workload_8hpp_source.html#l00041">41</a> of file <a class="el" href="_ref_elementwise_workload_8hpp_source.html">RefElementwiseWorkload.hpp</a>.</p>
</div>
</div>
<a id="ac8d7aa6e66fb59a839833b160f619228"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ac8d7aa6e66fb59a839833b160f619228">&#9670;&nbsp;</a></span>RefDebugFloat16Workload</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">using <a class="el" href="namespacearmnn.html#ac8d7aa6e66fb59a839833b160f619228">RefDebugFloat16Workload</a> = <a class="el" href="classarmnn_1_1_ref_debug_workload.html">RefDebugWorkload</a>&lt;<a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a26e6ed77470c6f2f830ecf874e6c0d55">DataType::Float16</a>&gt;</td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_ref_debug_workload_8hpp_source.html#l00040">40</a> of file <a class="el" href="_ref_debug_workload_8hpp_source.html">RefDebugWorkload.hpp</a>.</p>
</div>
</div>
<a id="ad194629946077375dcce05b2449334c8"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad194629946077375dcce05b2449334c8">&#9670;&nbsp;</a></span>RefDebugFloat32Workload</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">using <a class="el" href="namespacearmnn.html#ad194629946077375dcce05b2449334c8">RefDebugFloat32Workload</a> = <a class="el" href="classarmnn_1_1_ref_debug_workload.html">RefDebugWorkload</a>&lt;<a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">DataType::Float32</a>&gt;</td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_ref_debug_workload_8hpp_source.html#l00041">41</a> of file <a class="el" href="_ref_debug_workload_8hpp_source.html">RefDebugWorkload.hpp</a>.</p>
</div>
</div>
<a id="a44ab486f2a7728d75bbf52ffa1025ab5"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a44ab486f2a7728d75bbf52ffa1025ab5">&#9670;&nbsp;</a></span>RefDebugQAsymmS8Workload</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">using <a class="el" href="namespacearmnn.html#a44ab486f2a7728d75bbf52ffa1025ab5">RefDebugQAsymmS8Workload</a> = <a class="el" href="classarmnn_1_1_ref_debug_workload.html">RefDebugWorkload</a>&lt;<a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a9d02ea768c081d4bdb2b7cab0b3f510d">DataType::QAsymmS8</a>&gt;</td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_ref_debug_workload_8hpp_source.html#l00043">43</a> of file <a class="el" href="_ref_debug_workload_8hpp_source.html">RefDebugWorkload.hpp</a>.</p>
</div>
</div>
<a id="a0c1df21c99a094d2f078ca90047a73ff"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a0c1df21c99a094d2f078ca90047a73ff">&#9670;&nbsp;</a></span>RefDebugQAsymmU8Workload</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">using <a class="el" href="namespacearmnn.html#a0c1df21c99a094d2f078ca90047a73ff">RefDebugQAsymmU8Workload</a> = <a class="el" href="classarmnn_1_1_ref_debug_workload.html">RefDebugWorkload</a>&lt;<a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a0a3f57c876f5a230244c38e1453a8a6e">DataType::QAsymmU8</a>&gt;</td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_ref_debug_workload_8hpp_source.html#l00042">42</a> of file <a class="el" href="_ref_debug_workload_8hpp_source.html">RefDebugWorkload.hpp</a>.</p>
</div>
</div>
<a id="ae6d1d064ec7d33b2cc5bcc8afafbe193"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae6d1d064ec7d33b2cc5bcc8afafbe193">&#9670;&nbsp;</a></span>RefDebugQSymmS16Workload</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">using <a class="el" href="namespacearmnn.html#ae6d1d064ec7d33b2cc5bcc8afafbe193">RefDebugQSymmS16Workload</a> = <a class="el" href="classarmnn_1_1_ref_debug_workload.html">RefDebugWorkload</a>&lt;<a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7">DataType::QSymmS16</a>&gt;</td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_ref_debug_workload_8hpp_source.html#l00044">44</a> of file <a class="el" href="_ref_debug_workload_8hpp_source.html">RefDebugWorkload.hpp</a>.</p>
</div>
</div>
<a id="ad607a96fafba334ba5bde946947dd0af"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad607a96fafba334ba5bde946947dd0af">&#9670;&nbsp;</a></span>RefDebugQSymmS8Workload</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">using <a class="el" href="namespacearmnn.html#ad607a96fafba334ba5bde946947dd0af">RefDebugQSymmS8Workload</a> = <a class="el" href="classarmnn_1_1_ref_debug_workload.html">RefDebugWorkload</a>&lt;<a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a9945327825b115e93a3b89f4302e76db">DataType::QSymmS8</a>&gt;</td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_ref_debug_workload_8hpp_source.html#l00045">45</a> of file <a class="el" href="_ref_debug_workload_8hpp_source.html">RefDebugWorkload.hpp</a>.</p>
</div>
</div>
<a id="a2b2b0a60cbb51bf3eb9bd2899aee2c86"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a2b2b0a60cbb51bf3eb9bd2899aee2c86">&#9670;&nbsp;</a></span>RefDebugSigned32Workload</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">using <a class="el" href="namespacearmnn.html#a2b2b0a60cbb51bf3eb9bd2899aee2c86">RefDebugSigned32Workload</a> = <a class="el" href="classarmnn_1_1_ref_debug_workload.html">RefDebugWorkload</a>&lt;<a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6accedffbc6e5308e33d3843e8bdc0dad7">DataType::Signed32</a>&gt;</td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_ref_debug_workload_8hpp_source.html#l00046">46</a> of file <a class="el" href="_ref_debug_workload_8hpp_source.html">RefDebugWorkload.hpp</a>.</p>
</div>
</div>
<a id="a5c3a2aa3adc87d79164914b63f27dc25"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a5c3a2aa3adc87d79164914b63f27dc25">&#9670;&nbsp;</a></span>RefDivisionWorkload</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">using <a class="el" href="namespacearmnn.html#a5c3a2aa3adc87d79164914b63f27dc25">RefDivisionWorkload</a> = <a class="el" href="classarmnn_1_1_ref_elementwise_workload.html">RefElementwiseWorkload</a>&lt;std::divides&lt;float&gt;, <a class="el" href="structarmnn_1_1_division_queue_descriptor.html">DivisionQueueDescriptor</a>, <a class="el" href="structarmnn_1_1_string_mapping.html#a4e7b349a05a558fa6792c71c11a6bf11a69485fd6282ca5ed7d50589f8f759645">StringMapping::RefDivisionWorkload_Execute</a>&gt;</td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_ref_elementwise_workload_8hpp_source.html#l00056">56</a> of file <a class="el" href="_ref_elementwise_workload_8hpp_source.html">RefElementwiseWorkload.hpp</a>.</p>
</div>
</div>
<a id="a044df856403d0af13189f49bcfb209dd"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a044df856403d0af13189f49bcfb209dd">&#9670;&nbsp;</a></span>RefMaximumWorkload</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">using <a class="el" href="namespacearmnn.html#a044df856403d0af13189f49bcfb209dd">RefMaximumWorkload</a> = <a class="el" href="classarmnn_1_1_ref_elementwise_workload.html">RefElementwiseWorkload</a>&lt;<a class="el" href="structarmnn_1_1maximum.html">armnn::maximum</a>&lt;float&gt;, <a class="el" href="structarmnn_1_1_maximum_queue_descriptor.html">MaximumQueueDescriptor</a>, <a class="el" href="structarmnn_1_1_string_mapping.html#a4e7b349a05a558fa6792c71c11a6bf11aea93564675347f60a80cf699c177a80e">StringMapping::RefMaximumWorkload_Execute</a>&gt;</td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_ref_elementwise_workload_8hpp_source.html#l00061">61</a> of file <a class="el" href="_ref_elementwise_workload_8hpp_source.html">RefElementwiseWorkload.hpp</a>.</p>
</div>
</div>
<a id="aa8c69a3741eafef59e51564511403fb8"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa8c69a3741eafef59e51564511403fb8">&#9670;&nbsp;</a></span>RefMinimumWorkload</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">using <a class="el" href="namespacearmnn.html#aa8c69a3741eafef59e51564511403fb8">RefMinimumWorkload</a> = <a class="el" href="classarmnn_1_1_ref_elementwise_workload.html">RefElementwiseWorkload</a>&lt;<a class="el" href="structarmnn_1_1minimum.html">armnn::minimum</a>&lt;float&gt;, <a class="el" href="structarmnn_1_1_minimum_queue_descriptor.html">MinimumQueueDescriptor</a>, <a class="el" href="structarmnn_1_1_string_mapping.html#a4e7b349a05a558fa6792c71c11a6bf11a9bddcf9777d5ca3ab5e40b3a93559625">StringMapping::RefMinimumWorkload_Execute</a>&gt;</td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_ref_elementwise_workload_8hpp_source.html#l00066">66</a> of file <a class="el" href="_ref_elementwise_workload_8hpp_source.html">RefElementwiseWorkload.hpp</a>.</p>
</div>
</div>
<a id="aabff736a576814611f65ce1a14600a17"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aabff736a576814611f65ce1a14600a17">&#9670;&nbsp;</a></span>RefMultiplicationWorkload</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">using <a class="el" href="namespacearmnn.html#aabff736a576814611f65ce1a14600a17">RefMultiplicationWorkload</a> = <a class="el" href="classarmnn_1_1_ref_elementwise_workload.html">RefElementwiseWorkload</a>&lt;std::multiplies&lt;float&gt;, <a class="el" href="structarmnn_1_1_multiplication_queue_descriptor.html">MultiplicationQueueDescriptor</a>, <a class="el" href="structarmnn_1_1_string_mapping.html#a4e7b349a05a558fa6792c71c11a6bf11ab3eb648f0f29bf56db68d80624b9bb6c">StringMapping::RefMultiplicationWorkload_Execute</a>&gt;</td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_ref_elementwise_workload_8hpp_source.html#l00051">51</a> of file <a class="el" href="_ref_elementwise_workload_8hpp_source.html">RefElementwiseWorkload.hpp</a>.</p>
</div>
</div>
<a id="a9e2582f828ee36a6bce3e1abdd660bc5"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a9e2582f828ee36a6bce3e1abdd660bc5">&#9670;&nbsp;</a></span>RefPadFloat16Workload</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">using <a class="el" href="namespacearmnn.html#a9e2582f828ee36a6bce3e1abdd660bc5">RefPadFloat16Workload</a> = <a class="el" href="classarmnn_1_1_ref_pad_workload.html">RefPadWorkload</a>&lt;<a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a26e6ed77470c6f2f830ecf874e6c0d55">DataType::Float16</a>&gt;</td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_ref_pad_workload_8hpp_source.html#l00034">34</a> of file <a class="el" href="_ref_pad_workload_8hpp_source.html">RefPadWorkload.hpp</a>.</p>
</div>
</div>
<a id="aef8145fff0dca42e42786745414fec96"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aef8145fff0dca42e42786745414fec96">&#9670;&nbsp;</a></span>RefPadFloat32Workload</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">using <a class="el" href="namespacearmnn.html#aef8145fff0dca42e42786745414fec96">RefPadFloat32Workload</a> = <a class="el" href="classarmnn_1_1_ref_pad_workload.html">RefPadWorkload</a>&lt;<a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">DataType::Float32</a>&gt;</td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_ref_pad_workload_8hpp_source.html#l00033">33</a> of file <a class="el" href="_ref_pad_workload_8hpp_source.html">RefPadWorkload.hpp</a>.</p>
</div>
</div>
<a id="abc074517cf18f4e0827faca852df7bd9"></a>
<h2 class="memtitle"><span class="permalink"><a href="#abc074517cf18f4e0827faca852df7bd9">&#9670;&nbsp;</a></span>RefPadQAsymm8Workload</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">using <a class="el" href="namespacearmnn.html#abc074517cf18f4e0827faca852df7bd9">RefPadQAsymm8Workload</a> = <a class="el" href="classarmnn_1_1_ref_pad_workload.html">RefPadWorkload</a>&lt;<a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a0a3f57c876f5a230244c38e1453a8a6e">DataType::QAsymmU8</a>&gt;</td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_ref_pad_workload_8hpp_source.html#l00035">35</a> of file <a class="el" href="_ref_pad_workload_8hpp_source.html">RefPadWorkload.hpp</a>.</p>
</div>
</div>
<a id="acc8fc2b1c708fd1c7af0d04e004e8516"></a>
<h2 class="memtitle"><span class="permalink"><a href="#acc8fc2b1c708fd1c7af0d04e004e8516">&#9670;&nbsp;</a></span>RefPadQSymm16Workload</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">using <a class="el" href="namespacearmnn.html#acc8fc2b1c708fd1c7af0d04e004e8516">RefPadQSymm16Workload</a> = <a class="el" href="classarmnn_1_1_ref_pad_workload.html">RefPadWorkload</a>&lt;<a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7">DataType::QSymmS16</a>&gt;</td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_ref_pad_workload_8hpp_source.html#l00036">36</a> of file <a class="el" href="_ref_pad_workload_8hpp_source.html">RefPadWorkload.hpp</a>.</p>
</div>
</div>
<a id="ad1c0fb6bfa580b04574ab56971b6cbc6"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad1c0fb6bfa580b04574ab56971b6cbc6">&#9670;&nbsp;</a></span>RefPermuteFloat16Workload</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">using <a class="el" href="namespacearmnn.html#ad1c0fb6bfa580b04574ab56971b6cbc6">RefPermuteFloat16Workload</a> = <a class="el" href="classarmnn_1_1_ref_permute_workload.html">RefPermuteWorkload</a>&lt;<a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a26e6ed77470c6f2f830ecf874e6c0d55">DataType::Float16</a>&gt;</td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_ref_permute_workload_8hpp_source.html#l00030">30</a> of file <a class="el" href="_ref_permute_workload_8hpp_source.html">RefPermuteWorkload.hpp</a>.</p>
</div>
</div>
<a id="a54c3f7c7b9909e828a084f68dc78a031"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a54c3f7c7b9909e828a084f68dc78a031">&#9670;&nbsp;</a></span>RefPermuteFloat32Workload</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">using <a class="el" href="namespacearmnn.html#a54c3f7c7b9909e828a084f68dc78a031">RefPermuteFloat32Workload</a> = <a class="el" href="classarmnn_1_1_ref_permute_workload.html">RefPermuteWorkload</a>&lt;<a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">DataType::Float32</a>&gt;</td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_ref_permute_workload_8hpp_source.html#l00031">31</a> of file <a class="el" href="_ref_permute_workload_8hpp_source.html">RefPermuteWorkload.hpp</a>.</p>
</div>
</div>
<a id="a50ffe5068ecb2fbf7f73b30ef0d753f8"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a50ffe5068ecb2fbf7f73b30ef0d753f8">&#9670;&nbsp;</a></span>RefPermuteQAsymm8Workload</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">using <a class="el" href="namespacearmnn.html#a50ffe5068ecb2fbf7f73b30ef0d753f8">RefPermuteQAsymm8Workload</a> = <a class="el" href="classarmnn_1_1_ref_permute_workload.html">RefPermuteWorkload</a>&lt;<a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a0a3f57c876f5a230244c38e1453a8a6e">DataType::QAsymmU8</a>&gt;</td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_ref_permute_workload_8hpp_source.html#l00032">32</a> of file <a class="el" href="_ref_permute_workload_8hpp_source.html">RefPermuteWorkload.hpp</a>.</p>
</div>
</div>
<a id="a6ffed93fad525ce1d534cec2cdaee6bd"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a6ffed93fad525ce1d534cec2cdaee6bd">&#9670;&nbsp;</a></span>RefPermuteQSymm16Workload</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">using <a class="el" href="namespacearmnn.html#a6ffed93fad525ce1d534cec2cdaee6bd">RefPermuteQSymm16Workload</a> = <a class="el" href="classarmnn_1_1_ref_permute_workload.html">RefPermuteWorkload</a>&lt;<a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7">DataType::QSymmS16</a>&gt;</td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_ref_permute_workload_8hpp_source.html#l00033">33</a> of file <a class="el" href="_ref_permute_workload_8hpp_source.html">RefPermuteWorkload.hpp</a>.</p>
</div>
</div>
<a id="a01853f5d02495c04636016c1e3e7c144"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a01853f5d02495c04636016c1e3e7c144">&#9670;&nbsp;</a></span>RefSubtractionWorkload</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">using <a class="el" href="namespacearmnn.html#a01853f5d02495c04636016c1e3e7c144">RefSubtractionWorkload</a> = <a class="el" href="classarmnn_1_1_ref_elementwise_workload.html">RefElementwiseWorkload</a>&lt;std::minus&lt;float&gt;, <a class="el" href="structarmnn_1_1_subtraction_queue_descriptor.html">SubtractionQueueDescriptor</a>, <a class="el" href="structarmnn_1_1_string_mapping.html#a4e7b349a05a558fa6792c71c11a6bf11a3694ad0341ebb1fe50b78efe13672519">StringMapping::RefSubtractionWorkload_Execute</a>&gt;</td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_ref_elementwise_workload_8hpp_source.html#l00046">46</a> of file <a class="el" href="_ref_elementwise_workload_8hpp_source.html">RefElementwiseWorkload.hpp</a>.</p>
</div>
</div>
<a id="a0743ed5e860c316a20b68ca96301b411"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a0743ed5e860c316a20b68ca96301b411">&#9670;&nbsp;</a></span>ResolveType</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">using <a class="el" href="namespacearmnn.html#a0743ed5e860c316a20b68ca96301b411">ResolveType</a> = typename <a class="el" href="structarmnn_1_1_resolve_type_impl.html">ResolveTypeImpl</a>&lt;DT&gt;::Type</td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_resolve_type_8hpp_source.html#l00066">66</a> of file <a class="el" href="_resolve_type_8hpp_source.html">ResolveType.hpp</a>.</p>
</div>
</div>
<a id="a60291543fe872b795e71e05bcd835fd1"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a60291543fe872b795e71e05bcd835fd1">&#9670;&nbsp;</a></span>SplitterDescriptor</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">using <a class="el" href="namespacearmnn.html#a60291543fe872b795e71e05bcd835fd1">SplitterDescriptor</a> = <a class="el" href="structarmnn_1_1_views_descriptor.html">ViewsDescriptor</a></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_descriptors_fwd_8hpp_source.html#l00050">50</a> of file <a class="el" href="_descriptors_fwd_8hpp_source.html">DescriptorsFwd.hpp</a>.</p>
</div>
</div>
<a id="a02847c99a2acae3b267615479f93ab55"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a02847c99a2acae3b267615479f93ab55">&#9670;&nbsp;</a></span>supported</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">using <a class="el" href="namespacearmnn.html#a02847c99a2acae3b267615479f93ab55">supported</a> = <a class="el" href="classarmnn_1_1_i_subgraph_view_converter.html">ISubgraphViewConverter</a></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_i_subgraph_view_converter_8hpp_source.html#l00031">31</a> of file <a class="el" href="_i_subgraph_view_converter_8hpp_source.html">ISubgraphViewConverter.hpp</a>.</p>
</div>
</div>
<a id="a9eb69ebdaf4ceb8014e7c8a540266100"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a9eb69ebdaf4ceb8014e7c8a540266100">&#9670;&nbsp;</a></span>TContainer</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">using <a class="el" href="namespacearmnn.html#a9eb69ebdaf4ceb8014e7c8a540266100">TContainer</a> = boost::variant&lt;std::vector&lt;float&gt;, std::vector&lt;int&gt;, std::vector&lt;unsigned char&gt; &gt;</td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_network_quantizer_8cpp_source.html#l00033">33</a> of file <a class="el" href="_network_quantizer_8cpp_source.html">NetworkQuantizer.cpp</a>.</p>
</div>
</div>
<a id="a6d4fbf927a9d8e68cab1d7965c7dbc44"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a6d4fbf927a9d8e68cab1d7965c7dbc44">&#9670;&nbsp;</a></span>Uint8ToFloat32Workload</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">using <a class="el" href="namespacearmnn.html#a6d4fbf927a9d8e68cab1d7965c7dbc44">Uint8ToFloat32Workload</a> = <a class="el" href="classarmnn_1_1_multi_typed_workload.html">MultiTypedWorkload</a>&lt;<a class="el" href="structarmnn_1_1_queue_descriptor.html">QueueDescriptor</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a0a3f57c876f5a230244c38e1453a8a6e">armnn::DataType::QAsymmU8</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">armnn::DataType::Float32</a>&gt;</td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_workload_8hpp_source.html#l00192">192</a> of file <a class="el" href="_workload_8hpp_source.html">Workload.hpp</a>.</p>
</div>
</div>
<a id="ad4d53881107428c301d43b5aad16bfe0"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad4d53881107428c301d43b5aad16bfe0">&#9670;&nbsp;</a></span>Uint8Workload</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">using <a class="el" href="namespacearmnn.html#ad4d53881107428c301d43b5aad16bfe0">Uint8Workload</a> = <a class="el" href="classarmnn_1_1_typed_workload.html">TypedWorkload</a>&lt;<a class="el" href="structarmnn_1_1_queue_descriptor.html">QueueDescriptor</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a0a3f57c876f5a230244c38e1453a8a6e">armnn::DataType::QAsymmU8</a>&gt;</td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_workload_8hpp_source.html#l00161">161</a> of file <a class="el" href="_workload_8hpp_source.html">Workload.hpp</a>.</p>
</div>
</div>
<a id="a15f53f26b8495b51d0bba3d1bc4efc80"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a15f53f26b8495b51d0bba3d1bc4efc80">&#9670;&nbsp;</a></span>WorkloadQueue</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">using <a class="el" href="namespacearmnn.html#a15f53f26b8495b51d0bba3d1bc4efc80">WorkloadQueue</a> = std::vector&lt; std::unique_ptr&lt;<a class="el" href="classarmnn_1_1_i_workload.html">IWorkload</a>&gt; &gt;</td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_execution_frame_8hpp_source.html#l00013">13</a> of file <a class="el" href="_execution_frame_8hpp_source.html">ExecutionFrame.hpp</a>.</p>
</div>
</div>
<h2 class="groupheader">Enumeration Type Documentation</h2>
<a id="a56297e0f7b215eea46c818cb7528d9ea"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a56297e0f7b215eea46c818cb7528d9ea">&#9670;&nbsp;</a></span>ActivationFunction</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">enum <a class="el" href="namespacearmnn.html#a56297e0f7b215eea46c818cb7528d9ea">ActivationFunction</a></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">strong</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<table class="fieldtable">
<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a id="a56297e0f7b215eea46c818cb7528d9eaa21eebb164e4b8b9bcf64fdb4d8d5dff4"></a>Sigmoid&#160;</td><td class="fielddoc"></td></tr>
<tr><td class="fieldname"><a id="a56297e0f7b215eea46c818cb7528d9eaa23b68da1de2b77d74da9da2635722a3e"></a>TanH&#160;</td><td class="fielddoc"></td></tr>
<tr><td class="fieldname"><a id="a56297e0f7b215eea46c818cb7528d9eaa32a843da6ea40ab3b17a3421ccdf671b"></a>Linear&#160;</td><td class="fielddoc"></td></tr>
<tr><td class="fieldname"><a id="a56297e0f7b215eea46c818cb7528d9eaa3d90c0a5ab3fcf8e6f6608cb3d3a1559"></a>ReLu&#160;</td><td class="fielddoc"></td></tr>
<tr><td class="fieldname"><a id="a56297e0f7b215eea46c818cb7528d9eaabc5a0f0d6e7cf7fca73299dcd46c0f0d"></a>BoundedReLu&#160;</td><td class="fielddoc"><p>min(a, max(b, input)) </p>
</td></tr>
<tr><td class="fieldname"><a id="a56297e0f7b215eea46c818cb7528d9eaa6bba7052636d1740303b1b2ef3b53fef"></a>SoftReLu&#160;</td><td class="fielddoc"></td></tr>
<tr><td class="fieldname"><a id="a56297e0f7b215eea46c818cb7528d9eaacb7667f5ec2f6e8a5943b781ba6c2735"></a>LeakyReLu&#160;</td><td class="fielddoc"></td></tr>
<tr><td class="fieldname"><a id="a56297e0f7b215eea46c818cb7528d9eaa1e34af023adeb7d5f484f8eb4b9826b6"></a>Abs&#160;</td><td class="fielddoc"></td></tr>
<tr><td class="fieldname"><a id="a56297e0f7b215eea46c818cb7528d9eaaae77f3ad25595e35b327334d89410054"></a>Sqrt&#160;</td><td class="fielddoc"></td></tr>
<tr><td class="fieldname"><a id="a56297e0f7b215eea46c818cb7528d9eaaceb46ca115d05c51aa5a16a8867c3304"></a>Square&#160;</td><td class="fielddoc"></td></tr>
</table>
<p class="definition">Definition at line <a class="el" href="_types_8hpp_source.html#l00054">54</a> of file <a class="el" href="_types_8hpp_source.html">Types.hpp</a>.</p>
<div class="fragment"><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160;{</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; <a class="code" href="namespacearmnn.html#a56297e0f7b215eea46c818cb7528d9eaa21eebb164e4b8b9bcf64fdb4d8d5dff4">Sigmoid</a> = 0,</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; <a class="code" href="namespacearmnn.html#a56297e0f7b215eea46c818cb7528d9eaa23b68da1de2b77d74da9da2635722a3e">TanH</a> = 1,</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; <a class="code" href="namespacearmnn.html#a56297e0f7b215eea46c818cb7528d9eaa32a843da6ea40ab3b17a3421ccdf671b">Linear</a> = 2,</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; <a class="code" href="namespacearmnn.html#a56297e0f7b215eea46c818cb7528d9eaa3d90c0a5ab3fcf8e6f6608cb3d3a1559">ReLu</a> = 3,</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; <a class="code" href="namespacearmnn.html#a56297e0f7b215eea46c818cb7528d9eaabc5a0f0d6e7cf7fca73299dcd46c0f0d">BoundedReLu</a> = 4, </div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; <a class="code" href="namespacearmnn.html#a56297e0f7b215eea46c818cb7528d9eaa6bba7052636d1740303b1b2ef3b53fef">SoftReLu</a> = 5,</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; <a class="code" href="namespacearmnn.html#a56297e0f7b215eea46c818cb7528d9eaacb7667f5ec2f6e8a5943b781ba6c2735">LeakyReLu</a> = 6,</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; <a class="code" href="namespacearmnn.html#a56297e0f7b215eea46c818cb7528d9eaa1e34af023adeb7d5f484f8eb4b9826b6">Abs</a> = 7,</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; <a class="code" href="namespacearmnn.html#a56297e0f7b215eea46c818cb7528d9eaaae77f3ad25595e35b327334d89410054">Sqrt</a> = 8,</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; <a class="code" href="namespacearmnn.html#a56297e0f7b215eea46c818cb7528d9eaaceb46ca115d05c51aa5a16a8867c3304">Square</a> = 9</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160;};</div><div class="ttc" id="namespacearmnn_html_a56297e0f7b215eea46c818cb7528d9eaaae77f3ad25595e35b327334d89410054"><div class="ttname"><a href="namespacearmnn.html#a56297e0f7b215eea46c818cb7528d9eaaae77f3ad25595e35b327334d89410054">armnn::ActivationFunction::Sqrt</a></div></div>
<div class="ttc" id="namespacearmnn_html_a56297e0f7b215eea46c818cb7528d9eaacb7667f5ec2f6e8a5943b781ba6c2735"><div class="ttname"><a href="namespacearmnn.html#a56297e0f7b215eea46c818cb7528d9eaacb7667f5ec2f6e8a5943b781ba6c2735">armnn::ActivationFunction::LeakyReLu</a></div></div>
<div class="ttc" id="namespacearmnn_html_a56297e0f7b215eea46c818cb7528d9eaaceb46ca115d05c51aa5a16a8867c3304"><div class="ttname"><a href="namespacearmnn.html#a56297e0f7b215eea46c818cb7528d9eaaceb46ca115d05c51aa5a16a8867c3304">armnn::ActivationFunction::Square</a></div></div>
<div class="ttc" id="namespacearmnn_html_a56297e0f7b215eea46c818cb7528d9eaa3d90c0a5ab3fcf8e6f6608cb3d3a1559"><div class="ttname"><a href="namespacearmnn.html#a56297e0f7b215eea46c818cb7528d9eaa3d90c0a5ab3fcf8e6f6608cb3d3a1559">armnn::ActivationFunction::ReLu</a></div></div>
<div class="ttc" id="namespacearmnn_html_a56297e0f7b215eea46c818cb7528d9eaa1e34af023adeb7d5f484f8eb4b9826b6"><div class="ttname"><a href="namespacearmnn.html#a56297e0f7b215eea46c818cb7528d9eaa1e34af023adeb7d5f484f8eb4b9826b6">armnn::ActivationFunction::Abs</a></div></div>
<div class="ttc" id="namespacearmnn_html_a56297e0f7b215eea46c818cb7528d9eaa21eebb164e4b8b9bcf64fdb4d8d5dff4"><div class="ttname"><a href="namespacearmnn.html#a56297e0f7b215eea46c818cb7528d9eaa21eebb164e4b8b9bcf64fdb4d8d5dff4">armnn::ActivationFunction::Sigmoid</a></div></div>
<div class="ttc" id="namespacearmnn_html_a56297e0f7b215eea46c818cb7528d9eaa6bba7052636d1740303b1b2ef3b53fef"><div class="ttname"><a href="namespacearmnn.html#a56297e0f7b215eea46c818cb7528d9eaa6bba7052636d1740303b1b2ef3b53fef">armnn::ActivationFunction::SoftReLu</a></div></div>
<div class="ttc" id="namespacearmnn_html_a56297e0f7b215eea46c818cb7528d9eaabc5a0f0d6e7cf7fca73299dcd46c0f0d"><div class="ttname"><a href="namespacearmnn.html#a56297e0f7b215eea46c818cb7528d9eaabc5a0f0d6e7cf7fca73299dcd46c0f0d">armnn::ActivationFunction::BoundedReLu</a></div><div class="ttdoc">min(a, max(b, input)) </div></div>
<div class="ttc" id="namespacearmnn_html_a56297e0f7b215eea46c818cb7528d9eaa23b68da1de2b77d74da9da2635722a3e"><div class="ttname"><a href="namespacearmnn.html#a56297e0f7b215eea46c818cb7528d9eaa23b68da1de2b77d74da9da2635722a3e">armnn::ActivationFunction::TanH</a></div></div>
<div class="ttc" id="namespacearmnn_html_a56297e0f7b215eea46c818cb7528d9eaa32a843da6ea40ab3b17a3421ccdf671b"><div class="ttname"><a href="namespacearmnn.html#a56297e0f7b215eea46c818cb7528d9eaa32a843da6ea40ab3b17a3421ccdf671b">armnn::ActivationFunction::Linear</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="ae7e8cbf71db6a490789ca6dcaa8deeae"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae7e8cbf71db6a490789ca6dcaa8deeae">&#9670;&nbsp;</a></span>ArgMinMaxFunction</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">enum <a class="el" href="namespacearmnn.html#ae7e8cbf71db6a490789ca6dcaa8deeae">ArgMinMaxFunction</a></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">strong</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<table class="fieldtable">
<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a id="ae7e8cbf71db6a490789ca6dcaa8deeaea78d811e98514cd165dda532286610fd2"></a>Min&#160;</td><td class="fielddoc"></td></tr>
<tr><td class="fieldname"><a id="ae7e8cbf71db6a490789ca6dcaa8deeaea6a061313d22e51e0f25b7cd4dc065233"></a>Max&#160;</td><td class="fielddoc"></td></tr>
</table>
<p class="definition">Definition at line <a class="el" href="_types_8hpp_source.html#l00068">68</a> of file <a class="el" href="_types_8hpp_source.html">Types.hpp</a>.</p>
<div class="fragment"><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160;{</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; <a class="code" href="namespacearmnn.html#ae7e8cbf71db6a490789ca6dcaa8deeaea78d811e98514cd165dda532286610fd2">Min</a> = 0,</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; <a class="code" href="namespacearmnn.html#ae7e8cbf71db6a490789ca6dcaa8deeaea6a061313d22e51e0f25b7cd4dc065233">Max</a> = 1</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160;};</div><div class="ttc" id="namespacearmnn_html_ae7e8cbf71db6a490789ca6dcaa8deeaea6a061313d22e51e0f25b7cd4dc065233"><div class="ttname"><a href="namespacearmnn.html#ae7e8cbf71db6a490789ca6dcaa8deeaea6a061313d22e51e0f25b7cd4dc065233">armnn::ArgMinMaxFunction::Max</a></div></div>
<div class="ttc" id="namespacearmnn_html_ae7e8cbf71db6a490789ca6dcaa8deeaea78d811e98514cd165dda532286610fd2"><div class="ttname"><a href="namespacearmnn.html#ae7e8cbf71db6a490789ca6dcaa8deeaea78d811e98514cd165dda532286610fd2">armnn::ArgMinMaxFunction::Min</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a4dc0adc6737b5944e7671bee71788407"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a4dc0adc6737b5944e7671bee71788407">&#9670;&nbsp;</a></span>BoostLogSeverityMapping</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">enum <a class="el" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407">BoostLogSeverityMapping</a></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">strong</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<table class="fieldtable">
<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a id="a4dc0adc6737b5944e7671bee71788407a04a75036e9d520bb983c5ed03b8d0182"></a>trace&#160;</td><td class="fielddoc"></td></tr>
<tr><td class="fieldname"><a id="a4dc0adc6737b5944e7671bee71788407aad42f6697b035b7580e4fef93be20b4d"></a>debug&#160;</td><td class="fielddoc"></td></tr>
<tr><td class="fieldname"><a id="a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c"></a>info&#160;</td><td class="fielddoc"></td></tr>
<tr><td class="fieldname"><a id="a4dc0adc6737b5944e7671bee71788407a7b83d3f08fa392b79e3f553b585971cd"></a>warning&#160;</td><td class="fielddoc"></td></tr>
<tr><td class="fieldname"><a id="a4dc0adc6737b5944e7671bee71788407acb5e100e5a9a3e7f6d1fd97512215282"></a>error&#160;</td><td class="fielddoc"></td></tr>
<tr><td class="fieldname"><a id="a4dc0adc6737b5944e7671bee71788407adf6402fd9ecc60f5a2159fdf45711cd4"></a>fatal&#160;</td><td class="fielddoc"></td></tr>
</table>
<p class="definition">Definition at line <a class="el" href="_logging_8hpp_source.html#l00147">147</a> of file <a class="el" href="_logging_8hpp_source.html">Logging.hpp</a>.</p>
<div class="fragment"><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160;{</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; <a class="code" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407a04a75036e9d520bb983c5ed03b8d0182">trace</a>,</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; <a class="code" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407aad42f6697b035b7580e4fef93be20b4d">debug</a>,</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; <a class="code" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>,</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; <a class="code" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407a7b83d3f08fa392b79e3f553b585971cd">warning</a>,</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; <a class="code" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acb5e100e5a9a3e7f6d1fd97512215282">error</a>,</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; <a class="code" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407adf6402fd9ecc60f5a2159fdf45711cd4">fatal</a></div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160;};</div><div class="ttc" id="namespacearmnn_html_a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c"><div class="ttname"><a href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">armnn::BoostLogSeverityMapping::info</a></div></div>
<div class="ttc" id="namespacearmnn_html_a4dc0adc6737b5944e7671bee71788407aad42f6697b035b7580e4fef93be20b4d"><div class="ttname"><a href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407aad42f6697b035b7580e4fef93be20b4d">armnn::BoostLogSeverityMapping::debug</a></div></div>
<div class="ttc" id="namespacearmnn_html_a4dc0adc6737b5944e7671bee71788407acb5e100e5a9a3e7f6d1fd97512215282"><div class="ttname"><a href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acb5e100e5a9a3e7f6d1fd97512215282">armnn::BoostLogSeverityMapping::error</a></div></div>
<div class="ttc" id="namespacearmnn_html_a4dc0adc6737b5944e7671bee71788407a04a75036e9d520bb983c5ed03b8d0182"><div class="ttname"><a href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407a04a75036e9d520bb983c5ed03b8d0182">armnn::BoostLogSeverityMapping::trace</a></div></div>
<div class="ttc" id="namespacearmnn_html_a4dc0adc6737b5944e7671bee71788407a7b83d3f08fa392b79e3f553b585971cd"><div class="ttname"><a href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407a7b83d3f08fa392b79e3f553b585971cd">armnn::BoostLogSeverityMapping::warning</a></div></div>
<div class="ttc" id="namespacearmnn_html_a4dc0adc6737b5944e7671bee71788407adf6402fd9ecc60f5a2159fdf45711cd4"><div class="ttname"><a href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407adf6402fd9ecc60f5a2159fdf45711cd4">armnn::BoostLogSeverityMapping::fatal</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a2d299363c9fc33334c571fa29ca4f58c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a2d299363c9fc33334c571fa29ca4f58c">&#9670;&nbsp;</a></span>ComparisonOperation</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">enum <a class="el" href="namespacearmnn.html#a2d299363c9fc33334c571fa29ca4f58c">ComparisonOperation</a></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">strong</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<table class="fieldtable">
<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a id="a2d299363c9fc33334c571fa29ca4f58caf5f286e73bda105e538310b3190f75c5"></a>Equal&#160;</td><td class="fielddoc"></td></tr>
<tr><td class="fieldname"><a id="a2d299363c9fc33334c571fa29ca4f58ca8768a6821cd735aea4f5b0df88c1fc6a"></a>Greater&#160;</td><td class="fielddoc"></td></tr>
<tr><td class="fieldname"><a id="a2d299363c9fc33334c571fa29ca4f58ca6f2f0aefb3d22da0f3839453add5f937"></a>GreaterOrEqual&#160;</td><td class="fielddoc"></td></tr>
<tr><td class="fieldname"><a id="a2d299363c9fc33334c571fa29ca4f58ca1cfdf0e8d0c87a228c1f40d9bee7888b"></a>Less&#160;</td><td class="fielddoc"></td></tr>
<tr><td class="fieldname"><a id="a2d299363c9fc33334c571fa29ca4f58caa4cbdbb6070a5abb35fc95ecf1e22c14"></a>LessOrEqual&#160;</td><td class="fielddoc"></td></tr>
<tr><td class="fieldname"><a id="a2d299363c9fc33334c571fa29ca4f58ca19bb0af2c3c530538cb41aff7f235b96"></a>NotEqual&#160;</td><td class="fielddoc"></td></tr>
</table>
<p class="definition">Definition at line <a class="el" href="_types_8hpp_source.html#l00074">74</a> of file <a class="el" href="_types_8hpp_source.html">Types.hpp</a>.</p>
<div class="fragment"><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160;{</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; <a class="code" href="namespacearmnn.html#a2d299363c9fc33334c571fa29ca4f58caf5f286e73bda105e538310b3190f75c5">Equal</a> = 0,</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; <a class="code" href="namespacearmnn.html#a2d299363c9fc33334c571fa29ca4f58ca8768a6821cd735aea4f5b0df88c1fc6a">Greater</a> = 1,</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; <a class="code" href="namespacearmnn.html#a2d299363c9fc33334c571fa29ca4f58ca6f2f0aefb3d22da0f3839453add5f937">GreaterOrEqual</a> = 2,</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; <a class="code" href="namespacearmnn.html#a2d299363c9fc33334c571fa29ca4f58ca1cfdf0e8d0c87a228c1f40d9bee7888b">Less</a> = 3,</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; <a class="code" href="namespacearmnn.html#a2d299363c9fc33334c571fa29ca4f58caa4cbdbb6070a5abb35fc95ecf1e22c14">LessOrEqual</a> = 4,</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; <a class="code" href="namespacearmnn.html#a2d299363c9fc33334c571fa29ca4f58ca19bb0af2c3c530538cb41aff7f235b96">NotEqual</a> = 5</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160;};</div><div class="ttc" id="namespacearmnn_html_a2d299363c9fc33334c571fa29ca4f58ca19bb0af2c3c530538cb41aff7f235b96"><div class="ttname"><a href="namespacearmnn.html#a2d299363c9fc33334c571fa29ca4f58ca19bb0af2c3c530538cb41aff7f235b96">armnn::ComparisonOperation::NotEqual</a></div></div>
<div class="ttc" id="namespacearmnn_html_a2d299363c9fc33334c571fa29ca4f58ca8768a6821cd735aea4f5b0df88c1fc6a"><div class="ttname"><a href="namespacearmnn.html#a2d299363c9fc33334c571fa29ca4f58ca8768a6821cd735aea4f5b0df88c1fc6a">armnn::ComparisonOperation::Greater</a></div></div>
<div class="ttc" id="namespacearmnn_html_a2d299363c9fc33334c571fa29ca4f58caa4cbdbb6070a5abb35fc95ecf1e22c14"><div class="ttname"><a href="namespacearmnn.html#a2d299363c9fc33334c571fa29ca4f58caa4cbdbb6070a5abb35fc95ecf1e22c14">armnn::ComparisonOperation::LessOrEqual</a></div></div>
<div class="ttc" id="namespacearmnn_html_a2d299363c9fc33334c571fa29ca4f58caf5f286e73bda105e538310b3190f75c5"><div class="ttname"><a href="namespacearmnn.html#a2d299363c9fc33334c571fa29ca4f58caf5f286e73bda105e538310b3190f75c5">armnn::ComparisonOperation::Equal</a></div></div>
<div class="ttc" id="namespacearmnn_html_a2d299363c9fc33334c571fa29ca4f58ca1cfdf0e8d0c87a228c1f40d9bee7888b"><div class="ttname"><a href="namespacearmnn.html#a2d299363c9fc33334c571fa29ca4f58ca1cfdf0e8d0c87a228c1f40d9bee7888b">armnn::ComparisonOperation::Less</a></div></div>
<div class="ttc" id="namespacearmnn_html_a2d299363c9fc33334c571fa29ca4f58ca6f2f0aefb3d22da0f3839453add5f937"><div class="ttname"><a href="namespacearmnn.html#a2d299363c9fc33334c571fa29ca4f58ca6f2f0aefb3d22da0f3839453add5f937">armnn::ComparisonOperation::GreaterOrEqual</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="ae2f04a162585c0a5222a537efd5456ae"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae2f04a162585c0a5222a537efd5456ae">&#9670;&nbsp;</a></span>Compute</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">enum <a class="el" href="namespacearmnn.html#ae2f04a162585c0a5222a537efd5456ae">Compute</a></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">strong</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<table class="fieldtable">
<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a id="ae2f04a162585c0a5222a537efd5456aeaec0fc0100c4fc1ce4eea230c3dc10360"></a>Undefined&#160;</td><td class="fielddoc"></td></tr>
<tr><td class="fieldname"><a id="ae2f04a162585c0a5222a537efd5456aea83c2c4e9b658ccafbcbe6309c5d84c64"></a>CpuRef&#160;</td><td class="fielddoc"><p>CPU Execution: Reference C++ kernels. </p>
</td></tr>
<tr><td class="fieldname"><a id="ae2f04a162585c0a5222a537efd5456aea39f8662ca778258e9c6a14f26fec5ec1"></a>CpuAcc&#160;</td><td class="fielddoc"><p>CPU Execution: NEON: ArmCompute. </p>
</td></tr>
<tr><td class="fieldname"><a id="ae2f04a162585c0a5222a537efd5456aeafaa4524e3df19ada32643ce9a222362b"></a>GpuAcc&#160;</td><td class="fielddoc"><p>GPU Execution: OpenCL: ArmCompute. </p>
</td></tr>
</table>
<p class="definition">Definition at line <a class="el" href="_backend_id_8hpp_source.html#l00021">21</a> of file <a class="el" href="_backend_id_8hpp_source.html">BackendId.hpp</a>.</p>
<div class="fragment"><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;{</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160; <a class="code" href="namespacearmnn.html#ae2f04a162585c0a5222a537efd5456aeaec0fc0100c4fc1ce4eea230c3dc10360">Undefined</a> = 0,</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; <a class="code" href="namespacearmnn.html#ae2f04a162585c0a5222a537efd5456aea83c2c4e9b658ccafbcbe6309c5d84c64">CpuRef</a> = 1,</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; <a class="code" href="namespacearmnn.html#ae2f04a162585c0a5222a537efd5456aea39f8662ca778258e9c6a14f26fec5ec1">CpuAcc</a> = 2,</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; <a class="code" href="namespacearmnn.html#ae2f04a162585c0a5222a537efd5456aeafaa4524e3df19ada32643ce9a222362b">GpuAcc</a> = 3</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;};</div><div class="ttc" id="namespacearmnn_html_ae2f04a162585c0a5222a537efd5456aeaec0fc0100c4fc1ce4eea230c3dc10360"><div class="ttname"><a href="namespacearmnn.html#ae2f04a162585c0a5222a537efd5456aeaec0fc0100c4fc1ce4eea230c3dc10360">armnn::Compute::Undefined</a></div></div>
<div class="ttc" id="namespacearmnn_html_ae2f04a162585c0a5222a537efd5456aeafaa4524e3df19ada32643ce9a222362b"><div class="ttname"><a href="namespacearmnn.html#ae2f04a162585c0a5222a537efd5456aeafaa4524e3df19ada32643ce9a222362b">armnn::Compute::GpuAcc</a></div><div class="ttdoc">GPU Execution: OpenCL: ArmCompute. </div></div>
<div class="ttc" id="namespacearmnn_html_ae2f04a162585c0a5222a537efd5456aea83c2c4e9b658ccafbcbe6309c5d84c64"><div class="ttname"><a href="namespacearmnn.html#ae2f04a162585c0a5222a537efd5456aea83c2c4e9b658ccafbcbe6309c5d84c64">armnn::Compute::CpuRef</a></div><div class="ttdoc">CPU Execution: Reference C++ kernels. </div></div>
<div class="ttc" id="namespacearmnn_html_ae2f04a162585c0a5222a537efd5456aea39f8662ca778258e9c6a14f26fec5ec1"><div class="ttname"><a href="namespacearmnn.html#ae2f04a162585c0a5222a537efd5456aea39f8662ca778258e9c6a14f26fec5ec1">armnn::Compute::CpuAcc</a></div><div class="ttdoc">CPU Execution: NEON: ArmCompute. </div></div>
</div><!-- fragment -->
</div>
</div>
<a id="ad1d5cce2d9e9a5d61c243e5c989112e0"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad1d5cce2d9e9a5d61c243e5c989112e0">&#9670;&nbsp;</a></span>DataLayout</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">enum <a class="el" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0">DataLayout</a></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">strong</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<table class="fieldtable">
<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a id="ad1d5cce2d9e9a5d61c243e5c989112e0a6b99f356fe3b30a2a850b5ea897c289f"></a>NCHW&#160;</td><td class="fielddoc"></td></tr>
<tr><td class="fieldname"><a id="ad1d5cce2d9e9a5d61c243e5c989112e0ad066db54b89b0912e7e7c6da51e2da51"></a>NHWC&#160;</td><td class="fielddoc"></td></tr>
</table>
<p class="definition">Definition at line <a class="el" href="_types_8hpp_source.html#l00048">48</a> of file <a class="el" href="_types_8hpp_source.html">Types.hpp</a>.</p>
<div class="fragment"><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;{</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; <a class="code" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0a6b99f356fe3b30a2a850b5ea897c289f">NCHW</a> = 1,</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <a class="code" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0ad066db54b89b0912e7e7c6da51e2da51">NHWC</a> = 2</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160;};</div><div class="ttc" id="namespacearmnn_html_ad1d5cce2d9e9a5d61c243e5c989112e0a6b99f356fe3b30a2a850b5ea897c289f"><div class="ttname"><a href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0a6b99f356fe3b30a2a850b5ea897c289f">armnn::DataLayout::NCHW</a></div></div>
<div class="ttc" id="namespacearmnn_html_ad1d5cce2d9e9a5d61c243e5c989112e0ad066db54b89b0912e7e7c6da51e2da51"><div class="ttname"><a href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0ad066db54b89b0912e7e7c6da51e2da51">armnn::DataLayout::NHWC</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="ad8ed01ff3ff33333d8e19db4d2818bb6"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad8ed01ff3ff33333d8e19db4d2818bb6">&#9670;&nbsp;</a></span>DataType</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">enum <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">strong</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<table class="fieldtable">
<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a id="ad8ed01ff3ff33333d8e19db4d2818bb6a26e6ed77470c6f2f830ecf874e6c0d55"></a>Float16&#160;</td><td class="fielddoc"></td></tr>
<tr><td class="fieldname"><a id="ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204"></a>Float32&#160;</td><td class="fielddoc"></td></tr>
<tr><td class="fieldname"><a id="ad8ed01ff3ff33333d8e19db4d2818bb6a0a3f57c876f5a230244c38e1453a8a6e"></a>QAsymmU8&#160;</td><td class="fielddoc"></td></tr>
<tr><td class="fieldname"><a id="ad8ed01ff3ff33333d8e19db4d2818bb6accedffbc6e5308e33d3843e8bdc0dad7"></a>Signed32&#160;</td><td class="fielddoc"></td></tr>
<tr><td class="fieldname"><a id="ad8ed01ff3ff33333d8e19db4d2818bb6a27226c864bac7454a8504f8edb15d95b"></a>Boolean&#160;</td><td class="fielddoc"></td></tr>
<tr><td class="fieldname"><a id="ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7"></a>QSymmS16&#160;</td><td class="fielddoc"></td></tr>
<tr><td class="fieldname"><a id="ad8ed01ff3ff33333d8e19db4d2818bb6a34346ec9593088efe3a29c0dad92166d"></a>QuantizedSymm8PerAxis&#160;</td><td class="fielddoc"></td></tr>
<tr><td class="fieldname"><a id="ad8ed01ff3ff33333d8e19db4d2818bb6a9945327825b115e93a3b89f4302e76db"></a>QSymmS8&#160;</td><td class="fielddoc"></td></tr>
<tr><td class="fieldname"><a id="ad8ed01ff3ff33333d8e19db4d2818bb6a9d02ea768c081d4bdb2b7cab0b3f510d"></a>QAsymmS8&#160;</td><td class="fielddoc"></td></tr>
<tr><td class="fieldname"><a id="ad8ed01ff3ff33333d8e19db4d2818bb6a09238d8d078e53edec6700d0f74ce91c"></a>QuantisedAsymm8&#160;</td><td class="fielddoc"></td></tr>
<tr><td class="fieldname"><a id="ad8ed01ff3ff33333d8e19db4d2818bb6a80292d3a80d2993040e48c32b7fa7f82"></a>QuantisedSymm16&#160;</td><td class="fielddoc"></td></tr>
</table>
<p class="definition">Definition at line <a class="el" href="_types_8hpp_source.html#l00032">32</a> of file <a class="el" href="_types_8hpp_source.html">Types.hpp</a>.</p>
<div class="fragment"><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;{</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; <a class="code" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a26e6ed77470c6f2f830ecf874e6c0d55">Float16</a> = 0,</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; <a class="code" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">Float32</a> = 1,</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; <a class="code" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a0a3f57c876f5a230244c38e1453a8a6e">QAsymmU8</a> = 2,</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; <a class="code" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6accedffbc6e5308e33d3843e8bdc0dad7">Signed32</a> = 3,</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; <a class="code" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a27226c864bac7454a8504f8edb15d95b">Boolean</a> = 4,</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; <a class="code" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7">QSymmS16</a> = 5,</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; <a class="code" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a34346ec9593088efe3a29c0dad92166d">QuantizedSymm8PerAxis</a> <a class="code" href="_deprecated_8hpp.html#a086b9723704bff3477c44f0141652c9c">ARMNN_DEPRECATED_ENUM_MSG</a>(<span class="stringliteral">&quot;Per Axis property inferred by number of scales in TensorInfo&quot;</span>) = 6,</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; <a class="code" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a9945327825b115e93a3b89f4302e76db">QSymmS8</a> = 7,</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; <a class="code" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a9d02ea768c081d4bdb2b7cab0b3f510d">QAsymmS8</a> = 8,</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <a class="code" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a09238d8d078e53edec6700d0f74ce91c">QuantisedAsymm8</a> <a class="code" href="_deprecated_8hpp.html#a086b9723704bff3477c44f0141652c9c">ARMNN_DEPRECATED_ENUM_MSG</a>(<span class="stringliteral">&quot;Use DataType::QAsymmU8 instead.&quot;</span>) = <a class="code" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a0a3f57c876f5a230244c38e1453a8a6e">QAsymmU8</a>,</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <a class="code" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a80292d3a80d2993040e48c32b7fa7f82">QuantisedSymm16</a> <a class="code" href="_deprecated_8hpp.html#a086b9723704bff3477c44f0141652c9c">ARMNN_DEPRECATED_ENUM_MSG</a>(<span class="stringliteral">&quot;Use DataType::QSymmS16 instead.&quot;</span>) = <a class="code" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7">QSymmS16</a></div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;};</div><div class="ttc" id="namespacearmnn_html_ad8ed01ff3ff33333d8e19db4d2818bb6a9945327825b115e93a3b89f4302e76db"><div class="ttname"><a href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a9945327825b115e93a3b89f4302e76db">armnn::DataType::QSymmS8</a></div></div>
<div class="ttc" id="namespacearmnn_html_ad8ed01ff3ff33333d8e19db4d2818bb6a0a3f57c876f5a230244c38e1453a8a6e"><div class="ttname"><a href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a0a3f57c876f5a230244c38e1453a8a6e">armnn::DataType::QAsymmU8</a></div></div>
<div class="ttc" id="namespacearmnn_html_ad8ed01ff3ff33333d8e19db4d2818bb6a09238d8d078e53edec6700d0f74ce91c"><div class="ttname"><a href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a09238d8d078e53edec6700d0f74ce91c">armnn::DataType::QuantisedAsymm8</a></div></div>
<div class="ttc" id="namespacearmnn_html_ad8ed01ff3ff33333d8e19db4d2818bb6a27226c864bac7454a8504f8edb15d95b"><div class="ttname"><a href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a27226c864bac7454a8504f8edb15d95b">armnn::DataType::Boolean</a></div></div>
<div class="ttc" id="_deprecated_8hpp_html_a086b9723704bff3477c44f0141652c9c"><div class="ttname"><a href="_deprecated_8hpp.html#a086b9723704bff3477c44f0141652c9c">ARMNN_DEPRECATED_ENUM_MSG</a></div><div class="ttdeci">#define ARMNN_DEPRECATED_ENUM_MSG(message)</div><div class="ttdef"><b>Definition:</b> <a href="_deprecated_8hpp_source.html#l00050">Deprecated.hpp:50</a></div></div>
<div class="ttc" id="namespacearmnn_html_ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204"><div class="ttname"><a href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">armnn::DataType::Float32</a></div></div>
<div class="ttc" id="namespacearmnn_html_ad8ed01ff3ff33333d8e19db4d2818bb6a9d02ea768c081d4bdb2b7cab0b3f510d"><div class="ttname"><a href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a9d02ea768c081d4bdb2b7cab0b3f510d">armnn::DataType::QAsymmS8</a></div></div>
<div class="ttc" id="namespacearmnn_html_ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7"><div class="ttname"><a href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7">armnn::DataType::QSymmS16</a></div></div>
<div class="ttc" id="namespacearmnn_html_ad8ed01ff3ff33333d8e19db4d2818bb6a34346ec9593088efe3a29c0dad92166d"><div class="ttname"><a href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a34346ec9593088efe3a29c0dad92166d">armnn::DataType::QuantizedSymm8PerAxis</a></div></div>
<div class="ttc" id="namespacearmnn_html_ad8ed01ff3ff33333d8e19db4d2818bb6a80292d3a80d2993040e48c32b7fa7f82"><div class="ttname"><a href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a80292d3a80d2993040e48c32b7fa7f82">armnn::DataType::QuantisedSymm16</a></div></div>
<div class="ttc" id="namespacearmnn_html_ad8ed01ff3ff33333d8e19db4d2818bb6accedffbc6e5308e33d3843e8bdc0dad7"><div class="ttname"><a href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6accedffbc6e5308e33d3843e8bdc0dad7">armnn::DataType::Signed32</a></div></div>
<div class="ttc" id="namespacearmnn_html_ad8ed01ff3ff33333d8e19db4d2818bb6a26e6ed77470c6f2f830ecf874e6c0d55"><div class="ttname"><a href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a26e6ed77470c6f2f830ecf874e6c0d55">armnn::DataType::Float16</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="aff209afc1dc598da399e3e78617ce016"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aff209afc1dc598da399e3e78617ce016">&#9670;&nbsp;</a></span>EdgeStrategy</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">enum <a class="el" href="namespacearmnn.html#aff209afc1dc598da399e3e78617ce016">EdgeStrategy</a></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">strong</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<table class="fieldtable">
<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a id="aff209afc1dc598da399e3e78617ce016aec0fc0100c4fc1ce4eea230c3dc10360"></a>Undefined&#160;</td><td class="fielddoc"></td></tr>
<tr><td class="fieldname"><a id="aff209afc1dc598da399e3e78617ce016a78d1be0baa31e083ae8da99aaedaf650"></a>DirectCompatibility&#160;</td><td class="fielddoc"><p>No strategy has been defined. Used internally to verify integrity of optimizations. </p>
</td></tr>
<tr><td class="fieldname"><a id="aff209afc1dc598da399e3e78617ce016a46e8b7bfd6fd3c0cb34a100478a39189"></a>ExportToTarget&#160;</td><td class="fielddoc"><p>Destination backend can work directly with tensors on source backend. </p>
</td></tr>
<tr><td class="fieldname"><a id="aff209afc1dc598da399e3e78617ce016ac366da48cc11956ae377a77751936852"></a>CopyToTarget&#160;</td><td class="fielddoc"><p>Source backends tensor data can be exported to destination backend tensor without copy. </p>
<p>Copy contents from source backend tensor to destination backend tensor. </p>
</td></tr>
</table>
<p class="definition">Definition at line <a class="el" href="include_2armnn_2backends_2_i_tensor_handle_factory_8hpp_source.html#l00064">64</a> of file <a class="el" href="include_2armnn_2backends_2_i_tensor_handle_factory_8hpp_source.html">ITensorHandleFactory.hpp</a>.</p>
<div class="fragment"><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160;{</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; <a class="code" href="namespacearmnn.html#ae2f04a162585c0a5222a537efd5456aeaec0fc0100c4fc1ce4eea230c3dc10360">Undefined</a>, </div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; <a class="code" href="namespacearmnn.html#aff209afc1dc598da399e3e78617ce016a78d1be0baa31e083ae8da99aaedaf650">DirectCompatibility</a>, </div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; <a class="code" href="namespacearmnn.html#aff209afc1dc598da399e3e78617ce016a46e8b7bfd6fd3c0cb34a100478a39189">ExportToTarget</a>, </div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; <a class="code" href="namespacearmnn.html#aff209afc1dc598da399e3e78617ce016ac366da48cc11956ae377a77751936852">CopyToTarget</a> </div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160;};</div><div class="ttc" id="namespacearmnn_html_ae2f04a162585c0a5222a537efd5456aeaec0fc0100c4fc1ce4eea230c3dc10360"><div class="ttname"><a href="namespacearmnn.html#ae2f04a162585c0a5222a537efd5456aeaec0fc0100c4fc1ce4eea230c3dc10360">armnn::Compute::Undefined</a></div></div>
<div class="ttc" id="namespacearmnn_html_aff209afc1dc598da399e3e78617ce016a78d1be0baa31e083ae8da99aaedaf650"><div class="ttname"><a href="namespacearmnn.html#aff209afc1dc598da399e3e78617ce016a78d1be0baa31e083ae8da99aaedaf650">armnn::EdgeStrategy::DirectCompatibility</a></div><div class="ttdoc">No strategy has been defined. Used internally to verify integrity of optimizations. </div></div>
<div class="ttc" id="namespacearmnn_html_aff209afc1dc598da399e3e78617ce016ac366da48cc11956ae377a77751936852"><div class="ttname"><a href="namespacearmnn.html#aff209afc1dc598da399e3e78617ce016ac366da48cc11956ae377a77751936852">armnn::EdgeStrategy::CopyToTarget</a></div><div class="ttdoc">Source backends tensor data can be exported to destination backend tensor without copy...</div></div>
<div class="ttc" id="namespacearmnn_html_aff209afc1dc598da399e3e78617ce016a46e8b7bfd6fd3c0cb34a100478a39189"><div class="ttname"><a href="namespacearmnn.html#aff209afc1dc598da399e3e78617ce016a46e8b7bfd6fd3c0cb34a100478a39189">armnn::EdgeStrategy::ExportToTarget</a></div><div class="ttdoc">Destination backend can work directly with tensors on source backend. </div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a34eaed09302a4d7bfe930c13a7673e0b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a34eaed09302a4d7bfe930c13a7673e0b">&#9670;&nbsp;</a></span>GraphEvent</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">enum <a class="el" href="namespacearmnn.html#a34eaed09302a4d7bfe930c13a7673e0b">GraphEvent</a></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">strong</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<table class="fieldtable">
<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a id="a34eaed09302a4d7bfe930c13a7673e0ba23c3efdd3f80798660ecf0b9af6dd5dd"></a>LayerAdded&#160;</td><td class="fielddoc"></td></tr>
<tr><td class="fieldname"><a id="a34eaed09302a4d7bfe930c13a7673e0bad6e393dc30fd33cbcb5f6ab199093528"></a>LayerErased&#160;</td><td class="fielddoc"></td></tr>
</table>
<p class="definition">Definition at line <a class="el" href="_i_graph_observable_8hpp_source.html#l00012">12</a> of file <a class="el" href="_i_graph_observable_8hpp_source.html">IGraphObservable.hpp</a>.</p>
<div class="fragment"><div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;{</div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160; <a class="code" href="namespacearmnn.html#a34eaed09302a4d7bfe930c13a7673e0ba23c3efdd3f80798660ecf0b9af6dd5dd">LayerAdded</a>,</div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160; <a class="code" href="namespacearmnn.html#a34eaed09302a4d7bfe930c13a7673e0bad6e393dc30fd33cbcb5f6ab199093528">LayerErased</a></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;};</div><div class="ttc" id="namespacearmnn_html_a34eaed09302a4d7bfe930c13a7673e0bad6e393dc30fd33cbcb5f6ab199093528"><div class="ttname"><a href="namespacearmnn.html#a34eaed09302a4d7bfe930c13a7673e0bad6e393dc30fd33cbcb5f6ab199093528">armnn::GraphEvent::LayerErased</a></div></div>
<div class="ttc" id="namespacearmnn_html_a34eaed09302a4d7bfe930c13a7673e0ba23c3efdd3f80798660ecf0b9af6dd5dd"><div class="ttname"><a href="namespacearmnn.html#a34eaed09302a4d7bfe930c13a7673e0ba23c3efdd3f80798660ecf0b9af6dd5dd">armnn::GraphEvent::LayerAdded</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a4e2dd387ba6f0dc5164b4cdf8de3262a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a4e2dd387ba6f0dc5164b4cdf8de3262a">&#9670;&nbsp;</a></span>JsonObjectType</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">enum <a class="el" href="namespacearmnn.html#a4e2dd387ba6f0dc5164b4cdf8de3262a">JsonObjectType</a></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">strong</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<table class="fieldtable">
<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a id="a4e2dd387ba6f0dc5164b4cdf8de3262aa911842b19d8b2f9bbed8cfe909d52975"></a>Measurement&#160;</td><td class="fielddoc"></td></tr>
<tr><td class="fieldname"><a id="a4e2dd387ba6f0dc5164b4cdf8de3262aaa4ecfc70574394990cf17bd83df499f7"></a>Event&#160;</td><td class="fielddoc"></td></tr>
</table>
<p class="definition">Definition at line <a class="el" href="_json_printer_8hpp_source.html#l00018">18</a> of file <a class="el" href="_json_printer_8hpp_source.html">JsonPrinter.hpp</a>.</p>
<div class="fragment"><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;{</div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160; <a class="code" href="namespacearmnn.html#a4e2dd387ba6f0dc5164b4cdf8de3262aa911842b19d8b2f9bbed8cfe909d52975">Measurement</a>,</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160; <a class="code" href="struct_event.html">Event</a></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;};</div><div class="ttc" id="namespacearmnn_html_a4e2dd387ba6f0dc5164b4cdf8de3262aa911842b19d8b2f9bbed8cfe909d52975"><div class="ttname"><a href="namespacearmnn.html#a4e2dd387ba6f0dc5164b4cdf8de3262aa911842b19d8b2f9bbed8cfe909d52975">armnn::JsonObjectType::Measurement</a></div></div>
<div class="ttc" id="struct_event_html"><div class="ttname"><a href="struct_event.html">Event</a></div><div class="ttdef"><b>Definition:</b> <a href="_timeline_model_8h_source.html#l00035">TimelineModel.h:35</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a56943a0946e5f15e5e58054b8e7a04a4"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a56943a0946e5f15e5e58054b8e7a04a4">&#9670;&nbsp;</a></span>LayerType</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">enum <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">strong</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<table class="fieldtable">
<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a id="a56943a0946e5f15e5e58054b8e7a04a4ae66a93a31fb93839c8369265cd44695c"></a>FirstLayer&#160;</td><td class="fielddoc"></td></tr>
<tr><td class="fieldname"><a id="a56943a0946e5f15e5e58054b8e7a04a4aa9a62e70841c4d06dd16306a85700d36"></a>Activation&#160;</td><td class="fielddoc"></td></tr>
<tr><td class="fieldname"><a id="a56943a0946e5f15e5e58054b8e7a04a4a7c5531bbefed0945814f874baf9e0e0f"></a>Addition&#160;</td><td class="fielddoc"></td></tr>
<tr><td class="fieldname"><a id="a56943a0946e5f15e5e58054b8e7a04a4a2139684546b147c106b329f41547640c"></a>ArgMinMax&#160;</td><td class="fielddoc"></td></tr>
<tr><td class="fieldname"><a id="a56943a0946e5f15e5e58054b8e7a04a4ae4743c3ec15d1d84169b17264634692e"></a>BatchNormalization&#160;</td><td class="fielddoc"></td></tr>
<tr><td class="fieldname"><a id="a56943a0946e5f15e5e58054b8e7a04a4a6ee06c6045d0c5b6565a247955ef0fc2"></a>BatchToSpaceNd&#160;</td><td class="fielddoc"></td></tr>
<tr><td class="fieldname"><a id="a56943a0946e5f15e5e58054b8e7a04a4af6c0e3a1c3cfabd32ae8d3ae741fcf0a"></a>Comparison&#160;</td><td class="fielddoc"></td></tr>
<tr><td class="fieldname"><a id="a56943a0946e5f15e5e58054b8e7a04a4ae20f0f2826a6549809f050b86274567f"></a>Concat&#160;</td><td class="fielddoc"></td></tr>
<tr><td class="fieldname"><a id="a56943a0946e5f15e5e58054b8e7a04a4acb17869fe51048b5a5c4c6106551a255"></a>Constant&#160;</td><td class="fielddoc"></td></tr>
<tr><td class="fieldname"><a id="a56943a0946e5f15e5e58054b8e7a04a4a912a4b4d73726c282e3f79aa2c390d6c"></a>ConvertFp16ToFp32&#160;</td><td class="fielddoc"></td></tr>
<tr><td class="fieldname"><a id="a56943a0946e5f15e5e58054b8e7a04a4addf4f83b056acd5549949fc0350e9aad"></a>ConvertFp32ToFp16&#160;</td><td class="fielddoc"></td></tr>
<tr><td class="fieldname"><a id="a56943a0946e5f15e5e58054b8e7a04a4adb033d2f81b68f9a17e8f62de69fed4a"></a>Convolution2d&#160;</td><td class="fielddoc"></td></tr>
<tr><td class="fieldname"><a id="a56943a0946e5f15e5e58054b8e7a04a4aa603905470e2a5b8c13e96b579ef0dba"></a>Debug&#160;</td><td class="fielddoc"></td></tr>
<tr><td class="fieldname"><a id="a56943a0946e5f15e5e58054b8e7a04a4a731729ad1b2c0eb9399b62c770b3482d"></a>DepthToSpace&#160;</td><td class="fielddoc"></td></tr>
<tr><td class="fieldname"><a id="a56943a0946e5f15e5e58054b8e7a04a4af97adbfc88b7012a0243215b1076e7e7"></a>DepthwiseConvolution2d&#160;</td><td class="fielddoc"></td></tr>
<tr><td class="fieldname"><a id="a56943a0946e5f15e5e58054b8e7a04a4a9bc35e069257a508e14ed82965a8661d"></a>Dequantize&#160;</td><td class="fielddoc"></td></tr>
<tr><td class="fieldname"><a id="a56943a0946e5f15e5e58054b8e7a04a4a1db19222ac424bd7162142ddf929fd2a"></a>DetectionPostProcess&#160;</td><td class="fielddoc"></td></tr>
<tr><td class="fieldname"><a id="a56943a0946e5f15e5e58054b8e7a04a4a3025cdaab2deb0bb2cd642449e570833"></a>Division&#160;</td><td class="fielddoc"></td></tr>
<tr><td class="fieldname"><a id="a56943a0946e5f15e5e58054b8e7a04a4abcd30d7ea97ad20c2cddc0f47e6b70c7"></a>ElementwiseUnary&#160;</td><td class="fielddoc"></td></tr>
<tr><td class="fieldname"><a id="a56943a0946e5f15e5e58054b8e7a04a4a3489c7b05e180496cb2ce8ac73887f48"></a>FakeQuantization&#160;</td><td class="fielddoc"></td></tr>
<tr><td class="fieldname"><a id="a56943a0946e5f15e5e58054b8e7a04a4af3f6d0343d56ce88ce7958170ed05cb3"></a>Floor&#160;</td><td class="fielddoc"></td></tr>
<tr><td class="fieldname"><a id="a56943a0946e5f15e5e58054b8e7a04a4acab78faff25393e9defd1911cb58133e"></a>FullyConnected&#160;</td><td class="fielddoc"></td></tr>
<tr><td class="fieldname"><a id="a56943a0946e5f15e5e58054b8e7a04a4aad22c799930d644e8468fe44c0312d53"></a>Gather&#160;</td><td class="fielddoc"></td></tr>
<tr><td class="fieldname"><a id="a56943a0946e5f15e5e58054b8e7a04a4a324118a6721dd6b8a9b9f4e327df2bf5"></a>Input&#160;</td><td class="fielddoc"></td></tr>
<tr><td class="fieldname"><a id="a56943a0946e5f15e5e58054b8e7a04a4a21baa4498161d195f5bb2e3627344ba4"></a>InstanceNormalization&#160;</td><td class="fielddoc"></td></tr>
<tr><td class="fieldname"><a id="a56943a0946e5f15e5e58054b8e7a04a4a1189467870bc421ae59277e750263eb2"></a>L2Normalization&#160;</td><td class="fielddoc"></td></tr>
<tr><td class="fieldname"><a id="a56943a0946e5f15e5e58054b8e7a04a4ac21dbda57d88c21ec9857f5d1522c488"></a>LogSoftmax&#160;</td><td class="fielddoc"></td></tr>
<tr><td class="fieldname"><a id="a56943a0946e5f15e5e58054b8e7a04a4a06b091bc9aea697ba473c71f0bb55925"></a>Lstm&#160;</td><td class="fielddoc"></td></tr>
<tr><td class="fieldname"><a id="a56943a0946e5f15e5e58054b8e7a04a4a8321e79c278ec510f63675c040594892"></a>Maximum&#160;</td><td class="fielddoc"></td></tr>
<tr><td class="fieldname"><a id="a56943a0946e5f15e5e58054b8e7a04a4a3d6c9ac08ada31c184094bbc67afe00d"></a>Mean&#160;</td><td class="fielddoc"></td></tr>
<tr><td class="fieldname"><a id="a56943a0946e5f15e5e58054b8e7a04a4a4dd48794eb3305a0f5aece88b111a97b"></a>MemCopy&#160;</td><td class="fielddoc"></td></tr>
<tr><td class="fieldname"><a id="a56943a0946e5f15e5e58054b8e7a04a4a115bfc5d633eae55c67f9588acdd2bf9"></a>MemImport&#160;</td><td class="fielddoc"></td></tr>
<tr><td class="fieldname"><a id="a56943a0946e5f15e5e58054b8e7a04a4a68be4837f6c739877233e527a996dd00"></a>Merge&#160;</td><td class="fielddoc"></td></tr>
<tr><td class="fieldname"><a id="a56943a0946e5f15e5e58054b8e7a04a4aa1d0ec6d56f8833a078b5a7ac4caf2d4"></a>Minimum&#160;</td><td class="fielddoc"></td></tr>
<tr><td class="fieldname"><a id="a56943a0946e5f15e5e58054b8e7a04a4a27d1a1f7b7c2180e5b20ce9e3d00e2dd"></a>Multiplication&#160;</td><td class="fielddoc"></td></tr>
<tr><td class="fieldname"><a id="a56943a0946e5f15e5e58054b8e7a04a4aac61f2e17250a818dee4d12b112aa88f"></a>Normalization&#160;</td><td class="fielddoc"></td></tr>
<tr><td class="fieldname"><a id="a56943a0946e5f15e5e58054b8e7a04a4a29c2c02a361c9d7028472e5d92cd4a54"></a>Output&#160;</td><td class="fielddoc"></td></tr>
<tr><td class="fieldname"><a id="a56943a0946e5f15e5e58054b8e7a04a4ade43468adaf6acb2c38ebc0c1176f82f"></a>Pad&#160;</td><td class="fielddoc"></td></tr>
<tr><td class="fieldname"><a id="a56943a0946e5f15e5e58054b8e7a04a4afa662c6eb71caef475b2b981ce8eccd7"></a>Permute&#160;</td><td class="fielddoc"></td></tr>
<tr><td class="fieldname"><a id="a56943a0946e5f15e5e58054b8e7a04a4ad662867a41bfb30b9f75dda2b5849001"></a>Pooling2d&#160;</td><td class="fielddoc"></td></tr>
<tr><td class="fieldname"><a id="a56943a0946e5f15e5e58054b8e7a04a4a1ba143ebe524d46181a4b53470693278"></a>PreCompiled&#160;</td><td class="fielddoc"></td></tr>
<tr><td class="fieldname"><a id="a56943a0946e5f15e5e58054b8e7a04a4a0c5967f09e0669c840ebb1ed0da85e32"></a>Prelu&#160;</td><td class="fielddoc"></td></tr>
<tr><td class="fieldname"><a id="a56943a0946e5f15e5e58054b8e7a04a4aca39930e22f40d10155a57dba32240bb"></a>Quantize&#160;</td><td class="fielddoc"></td></tr>
<tr><td class="fieldname"><a id="a56943a0946e5f15e5e58054b8e7a04a4a890a37ff3bfe123414ba7e6f052b49f3"></a>QuantizedLstm&#160;</td><td class="fielddoc"></td></tr>
<tr><td class="fieldname"><a id="a56943a0946e5f15e5e58054b8e7a04a4aa7c59ccedc6a3bd90c17f3b990afefad"></a>Reshape&#160;</td><td class="fielddoc"></td></tr>
<tr><td class="fieldname"><a id="a56943a0946e5f15e5e58054b8e7a04a4a9d723d04c40bfd81835c0766a698cf63"></a>Resize&#160;</td><td class="fielddoc"></td></tr>
<tr><td class="fieldname"><a id="a56943a0946e5f15e5e58054b8e7a04a4ad140d37ad98c12ccd8e1c432f548bcdb"></a>Slice&#160;</td><td class="fielddoc"></td></tr>
<tr><td class="fieldname"><a id="a56943a0946e5f15e5e58054b8e7a04a4a31d953b9d49a6b4378f45097047976d0"></a>Softmax&#160;</td><td class="fielddoc"></td></tr>
<tr><td class="fieldname"><a id="a56943a0946e5f15e5e58054b8e7a04a4a337c392144dca0d18290c6b4711a2279"></a>SpaceToBatchNd&#160;</td><td class="fielddoc"></td></tr>
<tr><td class="fieldname"><a id="a56943a0946e5f15e5e58054b8e7a04a4a5e7ff12da912dc79e7e547281823fa4a"></a>SpaceToDepth&#160;</td><td class="fielddoc"></td></tr>
<tr><td class="fieldname"><a id="a56943a0946e5f15e5e58054b8e7a04a4a41cb9b797ebc6f6f6314e3ded935f4cf"></a>Splitter&#160;</td><td class="fielddoc"></td></tr>
<tr><td class="fieldname"><a id="a56943a0946e5f15e5e58054b8e7a04a4a2187e1021a911b3807cc1bea2eb1a9ca"></a>Stack&#160;</td><td class="fielddoc"></td></tr>
<tr><td class="fieldname"><a id="a56943a0946e5f15e5e58054b8e7a04a4a93bca63ecbb003649425dd0e4ba79a99"></a>StandIn&#160;</td><td class="fielddoc"></td></tr>
<tr><td class="fieldname"><a id="a56943a0946e5f15e5e58054b8e7a04a4aa31904f2b3479b5a00137fd985974b4d"></a>StridedSlice&#160;</td><td class="fielddoc"></td></tr>
<tr><td class="fieldname"><a id="a56943a0946e5f15e5e58054b8e7a04a4a6eb8b8b560161603402c0238b3a7d8b0"></a>Subtraction&#160;</td><td class="fielddoc"></td></tr>
<tr><td class="fieldname"><a id="a56943a0946e5f15e5e58054b8e7a04a4abbc155fb2b111bf61c4f5ff892915e6b"></a>Switch&#160;</td><td class="fielddoc"></td></tr>
<tr><td class="fieldname"><a id="a56943a0946e5f15e5e58054b8e7a04a4a33cae35d37c1b558ecd35dd5e37dd80f"></a>LastLayer&#160;</td><td class="fielddoc"></td></tr>
<tr><td class="fieldname"><a id="a56943a0946e5f15e5e58054b8e7a04a4a71b23d26c0f5d20416d6c77754f9806a"></a>TransposeConvolution2d&#160;</td><td class="fielddoc"></td></tr>
</table>
<p class="definition">Definition at line <a class="el" href="_internal_types_8hpp_source.html#l00014">14</a> of file <a class="el" href="_internal_types_8hpp_source.html">InternalTypes.hpp</a>.</p>
<div class="fragment"><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;{</div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160; <a class="code" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4ae66a93a31fb93839c8369265cd44695c">FirstLayer</a>,</div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160; <a class="code" href="namespacearmnn.html#a7636fbbc4f8ea2d0cf9f3ac2d12a4c62">Activation</a> = <a class="code" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4ae66a93a31fb93839c8369265cd44695c">FirstLayer</a>,</div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160; <a class="code" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4a7c5531bbefed0945814f874baf9e0e0f">Addition</a>,</div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160; <a class="code" href="namespacearmnn.html#a374120de442fe42c26536bb4f1e2a5a1">ArgMinMax</a>,</div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160; <a class="code" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4ae4743c3ec15d1d84169b17264634692e">BatchNormalization</a>,</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160; <a class="code" href="namespacearmnn.html#a8746512fab5ec10c2c57800c66311ba7">BatchToSpaceNd</a>,</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160; <a class="code" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4af6c0e3a1c3cfabd32ae8d3ae741fcf0a">Comparison</a>,</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160; <a class="code" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4ae20f0f2826a6549809f050b86274567f">Concat</a>,</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160; <a class="code" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4acb17869fe51048b5a5c4c6106551a255">Constant</a>,</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; <a class="code" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4a912a4b4d73726c282e3f79aa2c390d6c">ConvertFp16ToFp32</a>,</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; <a class="code" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4addf4f83b056acd5549949fc0350e9aad">ConvertFp32ToFp16</a>,</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; <a class="code" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4adb033d2f81b68f9a17e8f62de69fed4a">Convolution2d</a>,</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; <a class="code" href="namespacearmnn.html#a5aae369ef847a00062925cea8e9be9c4">Debug</a>,</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; <a class="code" href="namespacearmnn.html#ab023d9a7687e35c0f108458a094c1f56">DepthToSpace</a>,</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; <a class="code" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4af97adbfc88b7012a0243215b1076e7e7">DepthwiseConvolution2d</a>,</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; <a class="code" href="namespacearmnn.html#a855293b1be0581fb61ef6a1c5b027d0f">Dequantize</a>,</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; <a class="code" href="namespacearmnn.html#ae76ce23fa9fc18e56448d52b37dd3f32">DetectionPostProcess</a>,</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; <a class="code" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4a3025cdaab2deb0bb2cd642449e570833">Division</a>,</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; <a class="code" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4abcd30d7ea97ad20c2cddc0f47e6b70c7">ElementwiseUnary</a>,</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; <a class="code" href="namespacearmnn.html#ab3c0b7e1a78b1b98c24934221f36a7c3">FakeQuantization</a>,</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; <a class="code" href="namespacearmnn.html#adf2e5515c4c36a3e7e46bb8b83c6754eaf3f6d0343d56ce88ce7958170ed05cb3">Floor</a>,</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; <a class="code" href="namespacearmnn.html#ad34d1d5b1ca8f52dc296ecf52ba20c8a">FullyConnected</a>,</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; <a class="code" href="namespacearmnn.html#a66004b2326f8ccb1faa71d5efa186633">Gather</a>,</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; <a class="code" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4a324118a6721dd6b8a9b9f4e327df2bf5">Input</a>,</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; <a class="code" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4a21baa4498161d195f5bb2e3627344ba4">InstanceNormalization</a>,</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; <a class="code" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4a1189467870bc421ae59277e750263eb2">L2Normalization</a>,</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; <a class="code" href="namespacearmnn.html#ac52e04c0e349e25bcdaa72c27395ef8f">LogSoftmax</a>,</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; <a class="code" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4a06b091bc9aea697ba473c71f0bb55925">Lstm</a>,</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <a class="code" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4a8321e79c278ec510f63675c040594892">Maximum</a>,</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <a class="code" href="namespacearmnn.html#a165ae372a7f67cad64ef3395d30122ce">Mean</a>,</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; <a class="code" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4a4dd48794eb3305a0f5aece88b111a97b">MemCopy</a>,</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; <a class="code" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4a115bfc5d633eae55c67f9588acdd2bf9">MemImport</a>,</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; <a class="code" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4a68be4837f6c739877233e527a996dd00">Merge</a>,</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; <a class="code" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4aa1d0ec6d56f8833a078b5a7ac4caf2d4">Minimum</a>,</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; <a class="code" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4a27d1a1f7b7c2180e5b20ce9e3d00e2dd">Multiplication</a>,</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <a class="code" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4aac61f2e17250a818dee4d12b112aa88f">Normalization</a>,</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; <a class="code" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4a29c2c02a361c9d7028472e5d92cd4a54">Output</a>,</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; <a class="code" href="namespacearmnn.html#a28e115f5d28500324b53fae9e6c00b77">Pad</a>,</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; <a class="code" href="namespacearmnn_utils.html#af3c74017185773dd61d8ca6662d65d43">Permute</a>,</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; <a class="code" href="namespacearmnn.html#ae2e93e304cf516841c521e3eaee025cd">Pooling2d</a>,</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; <a class="code" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4a1ba143ebe524d46181a4b53470693278">PreCompiled</a>,</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; <a class="code" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4a0c5967f09e0669c840ebb1ed0da85e32">Prelu</a>,</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; <a class="code" href="namespacearmnn.html#ad773a034fb9983e15f3094b4c5c7c30c">Quantize</a>,</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; <a class="code" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4a890a37ff3bfe123414ba7e6f052b49f3">QuantizedLstm</a>,</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; <a class="code" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4aa7c59ccedc6a3bd90c17f3b990afefad">Reshape</a>,</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; <a class="code" href="namespacearmnn.html#a25dc224be48103343302b5a6fd588fe7">Resize</a>,</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; <a class="code" href="namespacearmnn.html#a044ea0cc993d4d1fbe4ec877b17b8d39">Slice</a>,</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; <a class="code" href="namespacearmnn.html#aa999ff2585ad75b95954a9323f63c32b">Softmax</a>,</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; <a class="code" href="namespacearmnn.html#a4a180e425d4c19b2cdea4ce5760180e1">SpaceToBatchNd</a>,</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; <a class="code" href="namespacearmnn.html#a5e1dc69443b64ad16b669388a6023f7a">SpaceToDepth</a>,</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; <a class="code" href="namespacearmnn.html#a427c3d26d05b518b1ace407035f5920e">Splitter</a>,</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; <a class="code" href="namespacearmnn.html#a6ef2dcac2ec0683d52df1b051404e7d6">Stack</a>,</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; <a class="code" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4a93bca63ecbb003649425dd0e4ba79a99">StandIn</a>,</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; <a class="code" href="namespacearmnn.html#a86d7a7168ac00b75b4971f9aad623698">StridedSlice</a>,</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; <a class="code" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4a6eb8b8b560161603402c0238b3a7d8b0">Subtraction</a>,</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; <a class="code" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4abbc155fb2b111bf61c4f5ff892915e6b">Switch</a>,</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; <span class="comment">// Last layer goes here.</span></div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; <a class="code" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4a33cae35d37c1b558ecd35dd5e37dd80f">LastLayer</a>,</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; <a class="code" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4a71b23d26c0f5d20416d6c77754f9806a">TransposeConvolution2d</a> = LastLayer</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160;};</div><div class="ttc" id="namespacearmnn_html_a8746512fab5ec10c2c57800c66311ba7"><div class="ttname"><a href="namespacearmnn.html#a8746512fab5ec10c2c57800c66311ba7">armnn::BatchToSpaceNd</a></div><div class="ttdeci">void BatchToSpaceNd(const DataLayoutIndexed &amp;dataLayout, const TensorInfo &amp;inputTensorInfo, const TensorInfo &amp;outputTensorInfo, const std::vector&lt; unsigned int &gt; &amp;blockShape, const std::vector&lt; std::pair&lt; unsigned int, unsigned int &gt;&gt; &amp;cropsData, Decoder&lt; float &gt; &amp;inputDecoder, Encoder&lt; float &gt; &amp;outputEncoder)</div><div class="ttdef"><b>Definition:</b> <a href="backends_2reference_2workloads_2_batch_to_space_n_d_8cpp_source.html#l00035">BatchToSpaceNd.cpp:35</a></div></div>
<div class="ttc" id="namespacearmnn_html_a56943a0946e5f15e5e58054b8e7a04a4abcd30d7ea97ad20c2cddc0f47e6b70c7"><div class="ttname"><a href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4abcd30d7ea97ad20c2cddc0f47e6b70c7">armnn::LayerType::ElementwiseUnary</a></div></div>
<div class="ttc" id="namespacearmnn_html_a56943a0946e5f15e5e58054b8e7a04a4a7c5531bbefed0945814f874baf9e0e0f"><div class="ttname"><a href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4a7c5531bbefed0945814f874baf9e0e0f">armnn::LayerType::Addition</a></div></div>
<div class="ttc" id="namespacearmnn_html_a56943a0946e5f15e5e58054b8e7a04a4a27d1a1f7b7c2180e5b20ce9e3d00e2dd"><div class="ttname"><a href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4a27d1a1f7b7c2180e5b20ce9e3d00e2dd">armnn::LayerType::Multiplication</a></div></div>
<div class="ttc" id="namespacearmnn_html_ae2e93e304cf516841c521e3eaee025cd"><div class="ttname"><a href="namespacearmnn.html#ae2e93e304cf516841c521e3eaee025cd">armnn::Pooling2d</a></div><div class="ttdeci">void Pooling2d(Decoder&lt; float &gt; &amp;rInputDecoder, Encoder&lt; float &gt; &amp;rOutputEncoder, const TensorInfo &amp;inputInfo, const TensorInfo &amp;outputInfo, const Pooling2dDescriptor &amp;params)</div><div class="ttdoc">Computes the Pooling2d operation. </div><div class="ttdef"><b>Definition:</b> <a href="_pooling2d_8cpp_source.html#l00143">Pooling2d.cpp:143</a></div></div>
<div class="ttc" id="namespacearmnn_utils_html_af3c74017185773dd61d8ca6662d65d43"><div class="ttname"><a href="namespacearmnn_utils.html#af3c74017185773dd61d8ca6662d65d43">armnnUtils::Permute</a></div><div class="ttdeci">void Permute(const armnn::TensorShape &amp;dstShape, const armnn::PermutationVector &amp;mappings, const void *src, void *dst, size_t dataTypeSize)</div><div class="ttdef"><b>Definition:</b> <a href="_permute_8cpp_source.html#l00121">Permute.cpp:121</a></div></div>
<div class="ttc" id="namespacearmnn_html_ab3c0b7e1a78b1b98c24934221f36a7c3"><div class="ttname"><a href="namespacearmnn.html#ab3c0b7e1a78b1b98c24934221f36a7c3">armnn::FakeQuantization</a></div><div class="ttdeci">void FakeQuantization(const float *inputData, float *outputData, uint32_t numElements, float min, float max)</div><div class="ttdef"><b>Definition:</b> <a href="_ref_fake_quantization_float32_workload_8cpp_source.html#l00017">RefFakeQuantizationFloat32Workload.cpp:17</a></div></div>
<div class="ttc" id="namespacearmnn_html_a56943a0946e5f15e5e58054b8e7a04a4af6c0e3a1c3cfabd32ae8d3ae741fcf0a"><div class="ttname"><a href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4af6c0e3a1c3cfabd32ae8d3ae741fcf0a">armnn::LayerType::Comparison</a></div></div>
<div class="ttc" id="namespacearmnn_html_a56943a0946e5f15e5e58054b8e7a04a4a912a4b4d73726c282e3f79aa2c390d6c"><div class="ttname"><a href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4a912a4b4d73726c282e3f79aa2c390d6c">armnn::LayerType::ConvertFp16ToFp32</a></div></div>
<div class="ttc" id="namespacearmnn_html_a5aae369ef847a00062925cea8e9be9c4"><div class="ttname"><a href="namespacearmnn.html#a5aae369ef847a00062925cea8e9be9c4">armnn::Debug</a></div><div class="ttdeci">void Debug(const TensorInfo &amp;inputInfo, const T *inputData, LayerGuid guid, const std::string &amp;layerName, unsigned int slotIndex)</div><div class="ttdef"><b>Definition:</b> <a href="_debug_8cpp_source.html#l00019">Debug.cpp:19</a></div></div>
<div class="ttc" id="namespacearmnn_html_a56943a0946e5f15e5e58054b8e7a04a4a68be4837f6c739877233e527a996dd00"><div class="ttname"><a href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4a68be4837f6c739877233e527a996dd00">armnn::LayerType::Merge</a></div></div>
<div class="ttc" id="namespacearmnn_html_ae76ce23fa9fc18e56448d52b37dd3f32"><div class="ttname"><a href="namespacearmnn.html#ae76ce23fa9fc18e56448d52b37dd3f32">armnn::DetectionPostProcess</a></div><div class="ttdeci">void DetectionPostProcess(const TensorInfo &amp;boxEncodingsInfo, const TensorInfo &amp;scoresInfo, const TensorInfo &amp;anchorsInfo, const TensorInfo &amp;detectionBoxesInfo, const TensorInfo &amp;detectionClassesInfo, const TensorInfo &amp;detectionScoresInfo, const TensorInfo &amp;numDetectionsInfo, const DetectionPostProcessDescriptor &amp;desc, Decoder&lt; float &gt; &amp;boxEncodings, Decoder&lt; float &gt; &amp;scores, Decoder&lt; float &gt; &amp;anchors, float *detectionBoxes, float *detectionClasses, float *detectionScores, float *numDetections)</div><div class="ttdef"><b>Definition:</b> <a href="backends_2reference_2workloads_2_detection_post_process_8cpp_source.html#l00141">DetectionPostProcess.cpp:141</a></div></div>
<div class="ttc" id="namespacearmnn_html_ad773a034fb9983e15f3094b4c5c7c30c"><div class="ttname"><a href="namespacearmnn.html#ad773a034fb9983e15f3094b4c5c7c30c">armnn::Quantize</a></div><div class="ttdeci">QuantizedType Quantize(float value, float scale, int32_t offset)</div><div class="ttdoc">Explicit specialization of Quantize for int8_t. </div><div class="ttdef"><b>Definition:</b> <a href="_types_utils_8cpp_source.html#l00031">TypesUtils.cpp:31</a></div></div>
<div class="ttc" id="namespacearmnn_html_a56943a0946e5f15e5e58054b8e7a04a4a890a37ff3bfe123414ba7e6f052b49f3"><div class="ttname"><a href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4a890a37ff3bfe123414ba7e6f052b49f3">armnn::LayerType::QuantizedLstm</a></div></div>
<div class="ttc" id="namespacearmnn_html_a56943a0946e5f15e5e58054b8e7a04a4a29c2c02a361c9d7028472e5d92cd4a54"><div class="ttname"><a href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4a29c2c02a361c9d7028472e5d92cd4a54">armnn::LayerType::Output</a></div></div>
<div class="ttc" id="namespacearmnn_html_a4a180e425d4c19b2cdea4ce5760180e1"><div class="ttname"><a href="namespacearmnn.html#a4a180e425d4c19b2cdea4ce5760180e1">armnn::SpaceToBatchNd</a></div><div class="ttdeci">void SpaceToBatchNd(const TensorInfo &amp;inputInfo, const TensorInfo &amp;outputInfo, const SpaceToBatchNdDescriptor &amp;params, Decoder&lt; float &gt; &amp;inputData, Encoder&lt; float &gt; &amp;outputData)</div><div class="ttdef"><b>Definition:</b> <a href="backends_2reference_2workloads_2_space_to_batch_n_d_8cpp_source.html#l00034">SpaceToBatchNd.cpp:34</a></div></div>
<div class="ttc" id="namespacearmnn_html_a66004b2326f8ccb1faa71d5efa186633"><div class="ttname"><a href="namespacearmnn.html#a66004b2326f8ccb1faa71d5efa186633">armnn::Gather</a></div><div class="ttdeci">void Gather(const TensorInfo &amp;paramsInfo, const TensorInfo &amp;indicesInfo, const TensorInfo &amp;outputInfo, Decoder&lt; float &gt; &amp;params, const int32_t *indices, Encoder&lt; float &gt; &amp;output)</div><div class="ttdef"><b>Definition:</b> <a href="backends_2reference_2workloads_2_gather_8cpp_source.html#l00018">Gather.cpp:18</a></div></div>
<div class="ttc" id="namespacearmnn_html_a56943a0946e5f15e5e58054b8e7a04a4a1189467870bc421ae59277e750263eb2"><div class="ttname"><a href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4a1189467870bc421ae59277e750263eb2">armnn::LayerType::L2Normalization</a></div></div>
<div class="ttc" id="namespacearmnn_html_a56943a0946e5f15e5e58054b8e7a04a4a93bca63ecbb003649425dd0e4ba79a99"><div class="ttname"><a href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4a93bca63ecbb003649425dd0e4ba79a99">armnn::LayerType::StandIn</a></div></div>
<div class="ttc" id="namespacearmnn_html_a855293b1be0581fb61ef6a1c5b027d0f"><div class="ttname"><a href="namespacearmnn.html#a855293b1be0581fb61ef6a1c5b027d0f">armnn::Dequantize</a></div><div class="ttdeci">float Dequantize(QuantizedType value, float scale, int32_t offset)</div><div class="ttdef"><b>Definition:</b> <a href="_types_utils_8cpp_source.html#l00047">TypesUtils.cpp:47</a></div></div>
<div class="ttc" id="namespacearmnn_html_a56943a0946e5f15e5e58054b8e7a04a4acb17869fe51048b5a5c4c6106551a255"><div class="ttname"><a href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4acb17869fe51048b5a5c4c6106551a255">armnn::LayerType::Constant</a></div></div>
<div class="ttc" id="namespacearmnn_html_a56943a0946e5f15e5e58054b8e7a04a4a8321e79c278ec510f63675c040594892"><div class="ttname"><a href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4a8321e79c278ec510f63675c040594892">armnn::LayerType::Maximum</a></div></div>
<div class="ttc" id="namespacearmnn_html_aa999ff2585ad75b95954a9323f63c32b"><div class="ttname"><a href="namespacearmnn.html#aa999ff2585ad75b95954a9323f63c32b">armnn::Softmax</a></div><div class="ttdeci">void Softmax(Decoder&lt; float &gt; &amp;in, Encoder&lt; float &gt; &amp;out, const TensorInfo &amp;inputTensorInfo, float beta, int axis)</div><div class="ttdoc">Computes the softmax function on some inputs, into outputs, with a shape given by tensorInfo...</div><div class="ttdef"><b>Definition:</b> <a href="backends_2reference_2workloads_2_softmax_8cpp_source.html#l00017">Softmax.cpp:17</a></div></div>
<div class="ttc" id="namespacearmnn_html_a56943a0946e5f15e5e58054b8e7a04a4a21baa4498161d195f5bb2e3627344ba4"><div class="ttname"><a href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4a21baa4498161d195f5bb2e3627344ba4">armnn::LayerType::InstanceNormalization</a></div></div>
<div class="ttc" id="namespacearmnn_html_a28e115f5d28500324b53fae9e6c00b77"><div class="ttname"><a href="namespacearmnn.html#a28e115f5d28500324b53fae9e6c00b77">armnn::Pad</a></div><div class="ttdeci">void Pad(const TensorInfo &amp;inputInfo, const TensorInfo &amp;outputInfo, std::vector&lt; std::pair&lt; unsigned int, unsigned int &gt;&gt; m_padList, const T *inputData, T *outData, const float padValue)</div><div class="ttdef"><b>Definition:</b> <a href="backends_2reference_2workloads_2_pad_8cpp_source.html#l00022">Pad.cpp:22</a></div></div>
<div class="ttc" id="namespacearmnn_html_a56943a0946e5f15e5e58054b8e7a04a4a115bfc5d633eae55c67f9588acdd2bf9"><div class="ttname"><a href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4a115bfc5d633eae55c67f9588acdd2bf9">armnn::LayerType::MemImport</a></div></div>
<div class="ttc" id="namespacearmnn_html_a56943a0946e5f15e5e58054b8e7a04a4aac61f2e17250a818dee4d12b112aa88f"><div class="ttname"><a href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4aac61f2e17250a818dee4d12b112aa88f">armnn::LayerType::Normalization</a></div></div>
<div class="ttc" id="namespacearmnn_html_a56943a0946e5f15e5e58054b8e7a04a4aa7c59ccedc6a3bd90c17f3b990afefad"><div class="ttname"><a href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4aa7c59ccedc6a3bd90c17f3b990afefad">armnn::LayerType::Reshape</a></div></div>
<div class="ttc" id="namespacearmnn_html_a374120de442fe42c26536bb4f1e2a5a1"><div class="ttname"><a href="namespacearmnn.html#a374120de442fe42c26536bb4f1e2a5a1">armnn::ArgMinMax</a></div><div class="ttdeci">void ArgMinMax(Decoder&lt; float &gt; &amp;in, int32_t *out, const TensorInfo &amp;inputTensorInfo, const TensorInfo &amp;outputTensorInfo, ArgMinMaxFunction function, int axis)</div><div class="ttdef"><b>Definition:</b> <a href="_arg_min_max_8cpp_source.html#l00015">ArgMinMax.cpp:15</a></div></div>
<div class="ttc" id="namespacearmnn_html_a165ae372a7f67cad64ef3395d30122ce"><div class="ttname"><a href="namespacearmnn.html#a165ae372a7f67cad64ef3395d30122ce">armnn::Mean</a></div><div class="ttdeci">void Mean(const armnn::TensorInfo &amp;inputInfo, const armnn::TensorInfo &amp;outputInfo, const std::vector&lt; unsigned int &gt; &amp;axis, Decoder&lt; float &gt; &amp;input, Encoder&lt; float &gt; &amp;output)</div><div class="ttdef"><b>Definition:</b> <a href="backends_2reference_2workloads_2_mean_8cpp_source.html#l00071">Mean.cpp:71</a></div></div>
<div class="ttc" id="namespacearmnn_html_ad34d1d5b1ca8f52dc296ecf52ba20c8a"><div class="ttname"><a href="namespacearmnn.html#ad34d1d5b1ca8f52dc296ecf52ba20c8a">armnn::FullyConnected</a></div><div class="ttdeci">void FullyConnected(const TensorShape &amp;rInputShape, Decoder&lt; float &gt; &amp;rInputDecoder, const TensorShape &amp;rOutputShape, Encoder&lt; float &gt; &amp;rOutputEncoder, Decoder&lt; float &gt; &amp;rWeightDecoder, Decoder&lt; float &gt; &amp;rBiasDecoder, const bool biasEnabled, const unsigned int K, const bool transposeWeights)</div><div class="ttdoc">Performs a matrix multiplication and optionally adds a bias. </div><div class="ttdef"><b>Definition:</b> <a href="backends_2reference_2workloads_2_fully_connected_8cpp_source.html#l00015">FullyConnected.cpp:15</a></div></div>
<div class="ttc" id="namespacearmnn_html_a86d7a7168ac00b75b4971f9aad623698"><div class="ttname"><a href="namespacearmnn.html#a86d7a7168ac00b75b4971f9aad623698">armnn::StridedSlice</a></div><div class="ttdeci">void StridedSlice(const TensorInfo &amp;inputInfo, const StridedSliceDescriptor &amp;params, const void *inputData, void *outputData, unsigned int dataTypeSize)</div><div class="ttdef"><b>Definition:</b> <a href="backends_2reference_2workloads_2_strided_slice_8cpp_source.html#l00090">StridedSlice.cpp:90</a></div></div>
<div class="ttc" id="namespacearmnn_html_a56943a0946e5f15e5e58054b8e7a04a4a0c5967f09e0669c840ebb1ed0da85e32"><div class="ttname"><a href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4a0c5967f09e0669c840ebb1ed0da85e32">armnn::LayerType::Prelu</a></div></div>
<div class="ttc" id="namespacearmnn_html_a044ea0cc993d4d1fbe4ec877b17b8d39"><div class="ttname"><a href="namespacearmnn.html#a044ea0cc993d4d1fbe4ec877b17b8d39">armnn::Slice</a></div><div class="ttdeci">void Slice(const TensorInfo &amp;inputInfo, const SliceDescriptor &amp;descriptor, const void *inputData, void *outputData, unsigned int dataTypeSize)</div><div class="ttdef"><b>Definition:</b> <a href="backends_2reference_2workloads_2_slice_8cpp_source.html#l00015">Slice.cpp:15</a></div></div>
<div class="ttc" id="namespacearmnn_html_a5e1dc69443b64ad16b669388a6023f7a"><div class="ttname"><a href="namespacearmnn.html#a5e1dc69443b64ad16b669388a6023f7a">armnn::SpaceToDepth</a></div><div class="ttdeci">void SpaceToDepth(const TensorInfo &amp;inputInfo, const TensorInfo &amp;outputInfo, const SpaceToDepthDescriptor &amp;params, Decoder&lt; float &gt; &amp;inputData, Encoder&lt; float &gt; &amp;outputData)</div><div class="ttdef"><b>Definition:</b> <a href="_space_to_depth_8cpp_source.html#l00036">SpaceToDepth.cpp:36</a></div></div>
<div class="ttc" id="namespacearmnn_html_a56943a0946e5f15e5e58054b8e7a04a4aa1d0ec6d56f8833a078b5a7ac4caf2d4"><div class="ttname"><a href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4aa1d0ec6d56f8833a078b5a7ac4caf2d4">armnn::LayerType::Minimum</a></div></div>
<div class="ttc" id="namespacearmnn_html_a56943a0946e5f15e5e58054b8e7a04a4addf4f83b056acd5549949fc0350e9aad"><div class="ttname"><a href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4addf4f83b056acd5549949fc0350e9aad">armnn::LayerType::ConvertFp32ToFp16</a></div></div>
<div class="ttc" id="namespacearmnn_html_a427c3d26d05b518b1ace407035f5920e"><div class="ttname"><a href="namespacearmnn.html#a427c3d26d05b518b1ace407035f5920e">armnn::Splitter</a></div><div class="ttdeci">void Splitter(const SplitterQueueDescriptor &amp;data)</div><div class="ttdef"><b>Definition:</b> <a href="_splitter_8hpp_source.html#l00017">Splitter.hpp:17</a></div></div>
<div class="ttc" id="namespacearmnn_html_a56943a0946e5f15e5e58054b8e7a04a4adb033d2f81b68f9a17e8f62de69fed4a"><div class="ttname"><a href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4adb033d2f81b68f9a17e8f62de69fed4a">armnn::LayerType::Convolution2d</a></div></div>
<div class="ttc" id="namespacearmnn_html_a56943a0946e5f15e5e58054b8e7a04a4ae4743c3ec15d1d84169b17264634692e"><div class="ttname"><a href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4ae4743c3ec15d1d84169b17264634692e">armnn::LayerType::BatchNormalization</a></div></div>
<div class="ttc" id="namespacearmnn_html_a56943a0946e5f15e5e58054b8e7a04a4a4dd48794eb3305a0f5aece88b111a97b"><div class="ttname"><a href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4a4dd48794eb3305a0f5aece88b111a97b">armnn::LayerType::MemCopy</a></div></div>
<div class="ttc" id="namespacearmnn_html_a56943a0946e5f15e5e58054b8e7a04a4ae66a93a31fb93839c8369265cd44695c"><div class="ttname"><a href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4ae66a93a31fb93839c8369265cd44695c">armnn::LayerType::FirstLayer</a></div></div>
<div class="ttc" id="namespacearmnn_html_a56943a0946e5f15e5e58054b8e7a04a4a06b091bc9aea697ba473c71f0bb55925"><div class="ttname"><a href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4a06b091bc9aea697ba473c71f0bb55925">armnn::LayerType::Lstm</a></div></div>
<div class="ttc" id="namespacearmnn_html_adf2e5515c4c36a3e7e46bb8b83c6754eaf3f6d0343d56ce88ce7958170ed05cb3"><div class="ttname"><a href="namespacearmnn.html#adf2e5515c4c36a3e7e46bb8b83c6754eaf3f6d0343d56ce88ce7958170ed05cb3">armnn::OutputShapeRounding::Floor</a></div></div>
<div class="ttc" id="namespacearmnn_html_a56943a0946e5f15e5e58054b8e7a04a4a3025cdaab2deb0bb2cd642449e570833"><div class="ttname"><a href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4a3025cdaab2deb0bb2cd642449e570833">armnn::LayerType::Division</a></div></div>
<div class="ttc" id="namespacearmnn_html_a56943a0946e5f15e5e58054b8e7a04a4a33cae35d37c1b558ecd35dd5e37dd80f"><div class="ttname"><a href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4a33cae35d37c1b558ecd35dd5e37dd80f">armnn::LayerType::LastLayer</a></div></div>
<div class="ttc" id="namespacearmnn_html_a25dc224be48103343302b5a6fd588fe7"><div class="ttname"><a href="namespacearmnn.html#a25dc224be48103343302b5a6fd588fe7">armnn::Resize</a></div><div class="ttdeci">void Resize(Decoder&lt; float &gt; &amp;in, const TensorInfo &amp;inputInfo, Encoder&lt; float &gt; &amp;out, const TensorInfo &amp;outputInfo, DataLayoutIndexed dataLayout, armnn::ResizeMethod resizeMethod, bool alignCorners)</div><div class="ttdef"><b>Definition:</b> <a href="_resize_8cpp_source.html#l00035">Resize.cpp:35</a></div></div>
<div class="ttc" id="namespacearmnn_html_a56943a0946e5f15e5e58054b8e7a04a4af97adbfc88b7012a0243215b1076e7e7"><div class="ttname"><a href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4af97adbfc88b7012a0243215b1076e7e7">armnn::LayerType::DepthwiseConvolution2d</a></div></div>
<div class="ttc" id="namespacearmnn_html_a7636fbbc4f8ea2d0cf9f3ac2d12a4c62"><div class="ttname"><a href="namespacearmnn.html#a7636fbbc4f8ea2d0cf9f3ac2d12a4c62">armnn::Activation</a></div><div class="ttdeci">float Activation(float in, ActivationFunction function, float a, float b)</div><div class="ttdef"><b>Definition:</b> <a href="_activation_8cpp_source.html#l00012">Activation.cpp:12</a></div></div>
<div class="ttc" id="namespacearmnn_html_a56943a0946e5f15e5e58054b8e7a04a4a6eb8b8b560161603402c0238b3a7d8b0"><div class="ttname"><a href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4a6eb8b8b560161603402c0238b3a7d8b0">armnn::LayerType::Subtraction</a></div></div>
<div class="ttc" id="namespacearmnn_html_a6ef2dcac2ec0683d52df1b051404e7d6"><div class="ttname"><a href="namespacearmnn.html#a6ef2dcac2ec0683d52df1b051404e7d6">armnn::Stack</a></div><div class="ttdeci">void Stack(const StackQueueDescriptor &amp;data, std::vector&lt; std::unique_ptr&lt; Decoder&lt; float &gt;&gt;&gt; &amp;inputs, Encoder&lt; float &gt; &amp;output)</div><div class="ttdef"><b>Definition:</b> <a href="backends_2reference_2workloads_2_stack_8cpp_source.html#l00012">Stack.cpp:12</a></div></div>
<div class="ttc" id="namespacearmnn_html_a56943a0946e5f15e5e58054b8e7a04a4a324118a6721dd6b8a9b9f4e327df2bf5"><div class="ttname"><a href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4a324118a6721dd6b8a9b9f4e327df2bf5">armnn::LayerType::Input</a></div></div>
<div class="ttc" id="namespacearmnn_html_ab023d9a7687e35c0f108458a094c1f56"><div class="ttname"><a href="namespacearmnn.html#ab023d9a7687e35c0f108458a094c1f56">armnn::DepthToSpace</a></div><div class="ttdeci">void DepthToSpace(const TensorInfo &amp;inputInfo, const DepthToSpaceDescriptor &amp;descriptor, const void *inputData, void *outputData, unsigned int dataTypeSize)</div><div class="ttdef"><b>Definition:</b> <a href="_depth_to_space_8cpp_source.html#l00018">DepthToSpace.cpp:18</a></div></div>
<div class="ttc" id="namespacearmnn_html_a56943a0946e5f15e5e58054b8e7a04a4ae20f0f2826a6549809f050b86274567f"><div class="ttname"><a href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4ae20f0f2826a6549809f050b86274567f">armnn::LayerType::Concat</a></div></div>
<div class="ttc" id="namespacearmnn_html_a56943a0946e5f15e5e58054b8e7a04a4abbc155fb2b111bf61c4f5ff892915e6b"><div class="ttname"><a href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4abbc155fb2b111bf61c4f5ff892915e6b">armnn::LayerType::Switch</a></div></div>
<div class="ttc" id="namespacearmnn_html_ac52e04c0e349e25bcdaa72c27395ef8f"><div class="ttname"><a href="namespacearmnn.html#ac52e04c0e349e25bcdaa72c27395ef8f">armnn::LogSoftmax</a></div><div class="ttdeci">void LogSoftmax(Decoder&lt; float &gt; &amp;input, Encoder&lt; float &gt; &amp;output, const TensorInfo &amp;inputInfo, const LogSoftmaxDescriptor &amp;descriptor)</div><div class="ttdef"><b>Definition:</b> <a href="_log_softmax_8cpp_source.html#l00030">LogSoftmax.cpp:30</a></div></div>
<div class="ttc" id="namespacearmnn_html_a56943a0946e5f15e5e58054b8e7a04a4a71b23d26c0f5d20416d6c77754f9806a"><div class="ttname"><a href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4a71b23d26c0f5d20416d6c77754f9806a">armnn::LayerType::TransposeConvolution2d</a></div></div>
<div class="ttc" id="namespacearmnn_html_a56943a0946e5f15e5e58054b8e7a04a4a1ba143ebe524d46181a4b53470693278"><div class="ttname"><a href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4a1ba143ebe524d46181a4b53470693278">armnn::LayerType::PreCompiled</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a93a3ba385cad27c4774e5fe64c025d3d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a93a3ba385cad27c4774e5fe64c025d3d">&#9670;&nbsp;</a></span>LogSeverity</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">enum <a class="el" href="namespacearmnn.html#a93a3ba385cad27c4774e5fe64c025d3d">LogSeverity</a></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">strong</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<table class="fieldtable">
<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a id="a93a3ba385cad27c4774e5fe64c025d3dadd4ec0ac4e58f7c32a01244ae91150b1"></a>Trace&#160;</td><td class="fielddoc"></td></tr>
<tr><td class="fieldname"><a id="a93a3ba385cad27c4774e5fe64c025d3daa603905470e2a5b8c13e96b579ef0dba"></a>Debug&#160;</td><td class="fielddoc"></td></tr>
<tr><td class="fieldname"><a id="a93a3ba385cad27c4774e5fe64c025d3da4059b0251f66a18cb56f544728796875"></a>Info&#160;</td><td class="fielddoc"></td></tr>
<tr><td class="fieldname"><a id="a93a3ba385cad27c4774e5fe64c025d3da0eaadb4fcb48a0a0ed7bc9868be9fbaa"></a>Warning&#160;</td><td class="fielddoc"></td></tr>
<tr><td class="fieldname"><a id="a93a3ba385cad27c4774e5fe64c025d3da902b0d55fddef6f8d651fe1035b7d4bd"></a>Error&#160;</td><td class="fielddoc"></td></tr>
<tr><td class="fieldname"><a id="a93a3ba385cad27c4774e5fe64c025d3da882384ec38ce8d9582b57e70861730e4"></a>Fatal&#160;</td><td class="fielddoc"></td></tr>
</table>
<p class="definition">Definition at line <a class="el" href="_utils_8hpp_source.html#l00012">12</a> of file <a class="el" href="_utils_8hpp_source.html">Utils.hpp</a>.</p>
<div class="fragment"><div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;{</div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160; <a class="code" href="namespacearmnn.html#a93a3ba385cad27c4774e5fe64c025d3dadd4ec0ac4e58f7c32a01244ae91150b1">Trace</a>,</div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160; <a class="code" href="namespacearmnn.html#a5aae369ef847a00062925cea8e9be9c4">Debug</a>,</div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160; <a class="code" href="namespacearmnn.html#a93a3ba385cad27c4774e5fe64c025d3da4059b0251f66a18cb56f544728796875">Info</a>,</div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160; <a class="code" href="namespacearmnn.html#a93a3ba385cad27c4774e5fe64c025d3da0eaadb4fcb48a0a0ed7bc9868be9fbaa">Warning</a>,</div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160; <a class="code" href="namespacearmnn.html#a93a3ba385cad27c4774e5fe64c025d3da902b0d55fddef6f8d651fe1035b7d4bd">Error</a>,</div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160; <a class="code" href="namespacearmnn.html#a93a3ba385cad27c4774e5fe64c025d3da882384ec38ce8d9582b57e70861730e4">Fatal</a></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;};</div><div class="ttc" id="namespacearmnn_html_a93a3ba385cad27c4774e5fe64c025d3da902b0d55fddef6f8d651fe1035b7d4bd"><div class="ttname"><a href="namespacearmnn.html#a93a3ba385cad27c4774e5fe64c025d3da902b0d55fddef6f8d651fe1035b7d4bd">armnn::LogSeverity::Error</a></div></div>
<div class="ttc" id="namespacearmnn_html_a5aae369ef847a00062925cea8e9be9c4"><div class="ttname"><a href="namespacearmnn.html#a5aae369ef847a00062925cea8e9be9c4">armnn::Debug</a></div><div class="ttdeci">void Debug(const TensorInfo &amp;inputInfo, const T *inputData, LayerGuid guid, const std::string &amp;layerName, unsigned int slotIndex)</div><div class="ttdef"><b>Definition:</b> <a href="_debug_8cpp_source.html#l00019">Debug.cpp:19</a></div></div>
<div class="ttc" id="namespacearmnn_html_a93a3ba385cad27c4774e5fe64c025d3da0eaadb4fcb48a0a0ed7bc9868be9fbaa"><div class="ttname"><a href="namespacearmnn.html#a93a3ba385cad27c4774e5fe64c025d3da0eaadb4fcb48a0a0ed7bc9868be9fbaa">armnn::LogSeverity::Warning</a></div></div>
<div class="ttc" id="namespacearmnn_html_a93a3ba385cad27c4774e5fe64c025d3da882384ec38ce8d9582b57e70861730e4"><div class="ttname"><a href="namespacearmnn.html#a93a3ba385cad27c4774e5fe64c025d3da882384ec38ce8d9582b57e70861730e4">armnn::LogSeverity::Fatal</a></div></div>
<div class="ttc" id="namespacearmnn_html_a93a3ba385cad27c4774e5fe64c025d3dadd4ec0ac4e58f7c32a01244ae91150b1"><div class="ttname"><a href="namespacearmnn.html#a93a3ba385cad27c4774e5fe64c025d3dadd4ec0ac4e58f7c32a01244ae91150b1">armnn::LogSeverity::Trace</a></div></div>
<div class="ttc" id="namespacearmnn_html_a93a3ba385cad27c4774e5fe64c025d3da4059b0251f66a18cb56f544728796875"><div class="ttname"><a href="namespacearmnn.html#a93a3ba385cad27c4774e5fe64c025d3da4059b0251f66a18cb56f544728796875">armnn::LogSeverity::Info</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a0fc99721e27eb20ecd0ea85a3cc8b488"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a0fc99721e27eb20ecd0ea85a3cc8b488">&#9670;&nbsp;</a></span>MemorySource</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">enum <a class="el" href="namespacearmnn.html#a0fc99721e27eb20ecd0ea85a3cc8b488">MemorySource</a></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">strong</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<table class="fieldtable">
<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a id="a0fc99721e27eb20ecd0ea85a3cc8b488aec0fc0100c4fc1ce4eea230c3dc10360"></a>Undefined&#160;</td><td class="fielddoc"></td></tr>
<tr><td class="fieldname"><a id="a0fc99721e27eb20ecd0ea85a3cc8b488a1131a914388fac73e5f07b0ba0aad523"></a>Malloc&#160;</td><td class="fielddoc"></td></tr>
<tr><td class="fieldname"><a id="a0fc99721e27eb20ecd0ea85a3cc8b488a966e13d8aabbff3966a5cd28d67b4846"></a>DmaBuf&#160;</td><td class="fielddoc"></td></tr>
<tr><td class="fieldname"><a id="a0fc99721e27eb20ecd0ea85a3cc8b488a7f9067c59dd34aca0ad09a7f283ed1f8"></a>DmaBufProtected&#160;</td><td class="fielddoc"></td></tr>
</table>
<p class="definition">Definition at line <a class="el" href="_memory_sources_8hpp_source.html#l00013">13</a> of file <a class="el" href="_memory_sources_8hpp_source.html">MemorySources.hpp</a>.</p>
<div class="fragment"><div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;{</div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160; <a class="code" href="namespacearmnn.html#ae2f04a162585c0a5222a537efd5456aeaec0fc0100c4fc1ce4eea230c3dc10360">Undefined</a> = 0,</div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160; <a class="code" href="namespacearmnn.html#a0fc99721e27eb20ecd0ea85a3cc8b488a1131a914388fac73e5f07b0ba0aad523">Malloc</a> = 1,</div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160; <a class="code" href="namespacearmnn.html#a0fc99721e27eb20ecd0ea85a3cc8b488a966e13d8aabbff3966a5cd28d67b4846">DmaBuf</a> = 2,</div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160; <a class="code" href="namespacearmnn.html#a0fc99721e27eb20ecd0ea85a3cc8b488a7f9067c59dd34aca0ad09a7f283ed1f8">DmaBufProtected</a> = 4</div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;};</div><div class="ttc" id="namespacearmnn_html_ae2f04a162585c0a5222a537efd5456aeaec0fc0100c4fc1ce4eea230c3dc10360"><div class="ttname"><a href="namespacearmnn.html#ae2f04a162585c0a5222a537efd5456aeaec0fc0100c4fc1ce4eea230c3dc10360">armnn::Compute::Undefined</a></div></div>
<div class="ttc" id="namespacearmnn_html_a0fc99721e27eb20ecd0ea85a3cc8b488a7f9067c59dd34aca0ad09a7f283ed1f8"><div class="ttname"><a href="namespacearmnn.html#a0fc99721e27eb20ecd0ea85a3cc8b488a7f9067c59dd34aca0ad09a7f283ed1f8">armnn::MemorySource::DmaBufProtected</a></div></div>
<div class="ttc" id="namespacearmnn_html_a0fc99721e27eb20ecd0ea85a3cc8b488a966e13d8aabbff3966a5cd28d67b4846"><div class="ttname"><a href="namespacearmnn.html#a0fc99721e27eb20ecd0ea85a3cc8b488a966e13d8aabbff3966a5cd28d67b4846">armnn::MemorySource::DmaBuf</a></div></div>
<div class="ttc" id="namespacearmnn_html_a0fc99721e27eb20ecd0ea85a3cc8b488a1131a914388fac73e5f07b0ba0aad523"><div class="ttname"><a href="namespacearmnn.html#a0fc99721e27eb20ecd0ea85a3cc8b488a1131a914388fac73e5f07b0ba0aad523">armnn::MemorySource::Malloc</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="abe18a5033f2ab9c0de82c676b48f5437"></a>
<h2 class="memtitle"><span class="permalink"><a href="#abe18a5033f2ab9c0de82c676b48f5437">&#9670;&nbsp;</a></span>NormalizationAlgorithmChannel</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">enum <a class="el" href="namespacearmnn.html#abe18a5033f2ab9c0de82c676b48f5437">NormalizationAlgorithmChannel</a></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">strong</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<table class="fieldtable">
<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a id="abe18a5033f2ab9c0de82c676b48f5437a810f43f3996922151c39b76143faeecc"></a>Across&#160;</td><td class="fielddoc"></td></tr>
<tr><td class="fieldname"><a id="abe18a5033f2ab9c0de82c676b48f5437a37bac6dce4f46277d89bfa3003e2e39b"></a>Within&#160;</td><td class="fielddoc"></td></tr>
</table>
<p class="definition">Definition at line <a class="el" href="_types_8hpp_source.html#l00123">123</a> of file <a class="el" href="_types_8hpp_source.html">Types.hpp</a>.</p>
<div class="fragment"><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160;{</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; <a class="code" href="namespacearmnn.html#abe18a5033f2ab9c0de82c676b48f5437a810f43f3996922151c39b76143faeecc">Across</a> = 0,</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; <a class="code" href="namespacearmnn.html#abe18a5033f2ab9c0de82c676b48f5437a37bac6dce4f46277d89bfa3003e2e39b">Within</a> = 1</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160;};</div><div class="ttc" id="namespacearmnn_html_abe18a5033f2ab9c0de82c676b48f5437a37bac6dce4f46277d89bfa3003e2e39b"><div class="ttname"><a href="namespacearmnn.html#abe18a5033f2ab9c0de82c676b48f5437a37bac6dce4f46277d89bfa3003e2e39b">armnn::NormalizationAlgorithmChannel::Within</a></div></div>
<div class="ttc" id="namespacearmnn_html_abe18a5033f2ab9c0de82c676b48f5437a810f43f3996922151c39b76143faeecc"><div class="ttname"><a href="namespacearmnn.html#abe18a5033f2ab9c0de82c676b48f5437a810f43f3996922151c39b76143faeecc">armnn::NormalizationAlgorithmChannel::Across</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="ad605d1661fa0d8c7fea651d82fbe11c9"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad605d1661fa0d8c7fea651d82fbe11c9">&#9670;&nbsp;</a></span>NormalizationAlgorithmMethod</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">enum <a class="el" href="namespacearmnn.html#ad605d1661fa0d8c7fea651d82fbe11c9">NormalizationAlgorithmMethod</a></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">strong</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<table class="fieldtable">
<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a id="ad605d1661fa0d8c7fea651d82fbe11c9ac65d2e51c610dd3853a3c777aa8bfe9d"></a>LocalBrightness&#160;</td><td class="fielddoc"><p>Krichevsky 2012: Local Brightness Normalization. </p>
</td></tr>
<tr><td class="fieldname"><a id="ad605d1661fa0d8c7fea651d82fbe11c9aa94d2fcabc6b001015aeddfa19266e6f"></a>LocalContrast&#160;</td><td class="fielddoc"><p>Jarret 2009: Local Contrast Normalization. </p>
</td></tr>
</table>
<p class="definition">Definition at line <a class="el" href="_types_8hpp_source.html#l00129">129</a> of file <a class="el" href="_types_8hpp_source.html">Types.hpp</a>.</p>
<div class="fragment"><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160;{</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; <a class="code" href="namespacearmnn.html#ad605d1661fa0d8c7fea651d82fbe11c9ac65d2e51c610dd3853a3c777aa8bfe9d">LocalBrightness</a> = 0,</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; <a class="code" href="namespacearmnn.html#ad605d1661fa0d8c7fea651d82fbe11c9aa94d2fcabc6b001015aeddfa19266e6f">LocalContrast</a> = 1</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160;};</div><div class="ttc" id="namespacearmnn_html_ad605d1661fa0d8c7fea651d82fbe11c9ac65d2e51c610dd3853a3c777aa8bfe9d"><div class="ttname"><a href="namespacearmnn.html#ad605d1661fa0d8c7fea651d82fbe11c9ac65d2e51c610dd3853a3c777aa8bfe9d">armnn::NormalizationAlgorithmMethod::LocalBrightness</a></div><div class="ttdoc">Krichevsky 2012: Local Brightness Normalization. </div></div>
<div class="ttc" id="namespacearmnn_html_ad605d1661fa0d8c7fea651d82fbe11c9aa94d2fcabc6b001015aeddfa19266e6f"><div class="ttname"><a href="namespacearmnn.html#ad605d1661fa0d8c7fea651d82fbe11c9aa94d2fcabc6b001015aeddfa19266e6f">armnn::NormalizationAlgorithmMethod::LocalContrast</a></div><div class="ttdoc">Jarret 2009: Local Contrast Normalization. </div></div>
</div><!-- fragment -->
</div>
</div>
<a id="adf2e5515c4c36a3e7e46bb8b83c6754e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#adf2e5515c4c36a3e7e46bb8b83c6754e">&#9670;&nbsp;</a></span>OutputShapeRounding</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">enum <a class="el" href="namespacearmnn.html#adf2e5515c4c36a3e7e46bb8b83c6754e">OutputShapeRounding</a></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">strong</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<table class="fieldtable">
<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a id="adf2e5515c4c36a3e7e46bb8b83c6754eaf3f6d0343d56ce88ce7958170ed05cb3"></a>Floor&#160;</td><td class="fielddoc"></td></tr>
<tr><td class="fieldname"><a id="adf2e5515c4c36a3e7e46bb8b83c6754ea3237fbc8204064c106cb9080088a17cb"></a>Ceiling&#160;</td><td class="fielddoc"></td></tr>
</table>
<p class="definition">Definition at line <a class="el" href="_types_8hpp_source.html#l00137">137</a> of file <a class="el" href="_types_8hpp_source.html">Types.hpp</a>.</p>
<div class="fragment"><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160;{</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; <a class="code" href="namespacearmnn.html#adf2e5515c4c36a3e7e46bb8b83c6754eaf3f6d0343d56ce88ce7958170ed05cb3">Floor</a> = 0,</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; <a class="code" href="namespacearmnn.html#adf2e5515c4c36a3e7e46bb8b83c6754ea3237fbc8204064c106cb9080088a17cb">Ceiling</a> = 1</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160;};</div><div class="ttc" id="namespacearmnn_html_adf2e5515c4c36a3e7e46bb8b83c6754ea3237fbc8204064c106cb9080088a17cb"><div class="ttname"><a href="namespacearmnn.html#adf2e5515c4c36a3e7e46bb8b83c6754ea3237fbc8204064c106cb9080088a17cb">armnn::OutputShapeRounding::Ceiling</a></div></div>
<div class="ttc" id="namespacearmnn_html_adf2e5515c4c36a3e7e46bb8b83c6754eaf3f6d0343d56ce88ce7958170ed05cb3"><div class="ttname"><a href="namespacearmnn.html#adf2e5515c4c36a3e7e46bb8b83c6754eaf3f6d0343d56ce88ce7958170ed05cb3">armnn::OutputShapeRounding::Floor</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a3888429b6ebc79f9a7df549e5e4d9a2f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a3888429b6ebc79f9a7df549e5e4d9a2f">&#9670;&nbsp;</a></span>PaddingMethod</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">enum <a class="el" href="namespacearmnn.html#a3888429b6ebc79f9a7df549e5e4d9a2f">PaddingMethod</a></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">strong</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>The padding method modifies the output of pooling layers. In both supported methods, the values are ignored (they are not even zeroes, which would make a difference for max pooling a tensor with negative values). The difference between IgnoreValue and Exclude is that the former counts the padding fields in the divisor of Average and L2 pooling, while Exclude does not. </p>
<table class="fieldtable">
<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a id="a3888429b6ebc79f9a7df549e5e4d9a2faad301514192636ad34210adce598a45a"></a>IgnoreValue&#160;</td><td class="fielddoc"><p>The padding fields count, but are ignored. </p>
</td></tr>
<tr><td class="fieldname"><a id="a3888429b6ebc79f9a7df549e5e4d9a2fa843f2812f595e7ec7c5036e89fde02d6"></a>Exclude&#160;</td><td class="fielddoc"><p>The padding fields don't count and are ignored. </p>
</td></tr>
</table>
<p class="definition">Definition at line <a class="el" href="_types_8hpp_source.html#l00115">115</a> of file <a class="el" href="_types_8hpp_source.html">Types.hpp</a>.</p>
<div class="fragment"><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160;{</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; <a class="code" href="namespacearmnn.html#a3888429b6ebc79f9a7df549e5e4d9a2faad301514192636ad34210adce598a45a">IgnoreValue</a> = 0,</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; <a class="code" href="namespacearmnn.html#a3888429b6ebc79f9a7df549e5e4d9a2fa843f2812f595e7ec7c5036e89fde02d6">Exclude</a> = 1</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160;};</div><div class="ttc" id="namespacearmnn_html_a3888429b6ebc79f9a7df549e5e4d9a2faad301514192636ad34210adce598a45a"><div class="ttname"><a href="namespacearmnn.html#a3888429b6ebc79f9a7df549e5e4d9a2faad301514192636ad34210adce598a45a">armnn::PaddingMethod::IgnoreValue</a></div><div class="ttdoc">The padding fields count, but are ignored. </div></div>
<div class="ttc" id="namespacearmnn_html_a3888429b6ebc79f9a7df549e5e4d9a2fa843f2812f595e7ec7c5036e89fde02d6"><div class="ttname"><a href="namespacearmnn.html#a3888429b6ebc79f9a7df549e5e4d9a2fa843f2812f595e7ec7c5036e89fde02d6">armnn::PaddingMethod::Exclude</a></div><div class="ttdoc">The padding fields don&amp;#39;t count and are ignored. </div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a961bbfe1db71a848eff5a1f0ab775718"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a961bbfe1db71a848eff5a1f0ab775718">&#9670;&nbsp;</a></span>PoolingAlgorithm</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">enum <a class="el" href="namespacearmnn.html#a961bbfe1db71a848eff5a1f0ab775718">PoolingAlgorithm</a></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">strong</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<table class="fieldtable">
<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a id="a961bbfe1db71a848eff5a1f0ab775718a6a061313d22e51e0f25b7cd4dc065233"></a>Max&#160;</td><td class="fielddoc"></td></tr>
<tr><td class="fieldname"><a id="a961bbfe1db71a848eff5a1f0ab775718ab1897515d548a960afe49ecf66a29021"></a>Average&#160;</td><td class="fielddoc"></td></tr>
<tr><td class="fieldname"><a id="a961bbfe1db71a848eff5a1f0ab775718a7e6aa2d53f6ee2b1a34b017fa403cb76"></a>L2&#160;</td><td class="fielddoc"></td></tr>
</table>
<p class="definition">Definition at line <a class="el" href="_types_8hpp_source.html#l00093">93</a> of file <a class="el" href="_types_8hpp_source.html">Types.hpp</a>.</p>
<div class="fragment"><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160;{</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; <a class="code" href="namespacearmnn.html#ae7e8cbf71db6a490789ca6dcaa8deeaea6a061313d22e51e0f25b7cd4dc065233">Max</a> = 0,</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; <a class="code" href="namespacearmnn.html#a961bbfe1db71a848eff5a1f0ab775718ab1897515d548a960afe49ecf66a29021">Average</a> = 1,</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; <a class="code" href="namespacearmnn.html#a961bbfe1db71a848eff5a1f0ab775718a7e6aa2d53f6ee2b1a34b017fa403cb76">L2</a> = 2</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160;};</div><div class="ttc" id="namespacearmnn_html_ae7e8cbf71db6a490789ca6dcaa8deeaea6a061313d22e51e0f25b7cd4dc065233"><div class="ttname"><a href="namespacearmnn.html#ae7e8cbf71db6a490789ca6dcaa8deeaea6a061313d22e51e0f25b7cd4dc065233">armnn::ArgMinMaxFunction::Max</a></div></div>
<div class="ttc" id="namespacearmnn_html_a961bbfe1db71a848eff5a1f0ab775718a7e6aa2d53f6ee2b1a34b017fa403cb76"><div class="ttname"><a href="namespacearmnn.html#a961bbfe1db71a848eff5a1f0ab775718a7e6aa2d53f6ee2b1a34b017fa403cb76">armnn::PoolingAlgorithm::L2</a></div></div>
<div class="ttc" id="namespacearmnn_html_a961bbfe1db71a848eff5a1f0ab775718ab1897515d548a960afe49ecf66a29021"><div class="ttname"><a href="namespacearmnn.html#a961bbfe1db71a848eff5a1f0ab775718ab1897515d548a960afe49ecf66a29021">armnn::PoolingAlgorithm::Average</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a9a2af2f8c4af4f9efa8e79417d505ac4"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a9a2af2f8c4af4f9efa8e79417d505ac4">&#9670;&nbsp;</a></span>ResizeMethod</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">enum <a class="el" href="namespacearmnn.html#a9a2af2f8c4af4f9efa8e79417d505ac4">ResizeMethod</a></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">strong</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<table class="fieldtable">
<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a id="a9a2af2f8c4af4f9efa8e79417d505ac4aaf17c98bbd83c27d6426d2ff3fa81d7f"></a>Bilinear&#160;</td><td class="fielddoc"></td></tr>
<tr><td class="fieldname"><a id="a9a2af2f8c4af4f9efa8e79417d505ac4aaa020331bb30d2fa2ecf7c3a0777823f"></a>NearestNeighbor&#160;</td><td class="fielddoc"></td></tr>
</table>
<p class="definition">Definition at line <a class="el" href="_types_8hpp_source.html#l00100">100</a> of file <a class="el" href="_types_8hpp_source.html">Types.hpp</a>.</p>
<div class="fragment"><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160;{</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; <a class="code" href="namespacearmnn.html#a9a2af2f8c4af4f9efa8e79417d505ac4aaf17c98bbd83c27d6426d2ff3fa81d7f">Bilinear</a> = 0,</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; <a class="code" href="namespacearmnn.html#a9a2af2f8c4af4f9efa8e79417d505ac4aaa020331bb30d2fa2ecf7c3a0777823f">NearestNeighbor</a> = 1</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160;};</div><div class="ttc" id="namespacearmnn_html_a9a2af2f8c4af4f9efa8e79417d505ac4aaf17c98bbd83c27d6426d2ff3fa81d7f"><div class="ttname"><a href="namespacearmnn.html#a9a2af2f8c4af4f9efa8e79417d505ac4aaf17c98bbd83c27d6426d2ff3fa81d7f">armnn::ResizeMethod::Bilinear</a></div></div>
<div class="ttc" id="namespacearmnn_html_a9a2af2f8c4af4f9efa8e79417d505ac4aaa020331bb30d2fa2ecf7c3a0777823f"><div class="ttname"><a href="namespacearmnn.html#a9a2af2f8c4af4f9efa8e79417d505ac4aaa020331bb30d2fa2ecf7c3a0777823f">armnn::ResizeMethod::NearestNeighbor</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a67a0db04d321a74b7e7fcfd3f1a3f70b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a67a0db04d321a74b7e7fcfd3f1a3f70b">&#9670;&nbsp;</a></span>Status</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">enum <a class="el" href="namespacearmnn.html#a67a0db04d321a74b7e7fcfd3f1a3f70b">Status</a></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">strong</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>enumeration </p>
<table class="fieldtable">
<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a id="a67a0db04d321a74b7e7fcfd3f1a3f70ba505a83f220c02df2f85c3810cd9ceb38"></a>Success&#160;</td><td class="fielddoc"></td></tr>
<tr><td class="fieldname"><a id="a67a0db04d321a74b7e7fcfd3f1a3f70bae139a585510a502bbf1841cf589f5086"></a>Failure&#160;</td><td class="fielddoc"></td></tr>
</table>
<p class="definition">Definition at line <a class="el" href="_types_8hpp_source.html#l00026">26</a> of file <a class="el" href="_types_8hpp_source.html">Types.hpp</a>.</p>
<div class="fragment"><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;{</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; <a class="code" href="namespacearmnn.html#a67a0db04d321a74b7e7fcfd3f1a3f70ba505a83f220c02df2f85c3810cd9ceb38">Success</a> = 0,</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; <a class="code" href="namespacearmnn.html#a67a0db04d321a74b7e7fcfd3f1a3f70bae139a585510a502bbf1841cf589f5086">Failure</a> = 1</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;};</div><div class="ttc" id="namespacearmnn_html_a67a0db04d321a74b7e7fcfd3f1a3f70ba505a83f220c02df2f85c3810cd9ceb38"><div class="ttname"><a href="namespacearmnn.html#a67a0db04d321a74b7e7fcfd3f1a3f70ba505a83f220c02df2f85c3810cd9ceb38">armnn::Status::Success</a></div></div>
<div class="ttc" id="namespacearmnn_html_a67a0db04d321a74b7e7fcfd3f1a3f70bae139a585510a502bbf1841cf589f5086"><div class="ttname"><a href="namespacearmnn.html#a67a0db04d321a74b7e7fcfd3f1a3f70bae139a585510a502bbf1841cf589f5086">armnn::Status::Failure</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a707090747256af276c389e0cf1cb0a9a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a707090747256af276c389e0cf1cb0a9a">&#9670;&nbsp;</a></span>TuningLevel</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">enum <a class="el" href="namespacearmnn.html#a707090747256af276c389e0cf1cb0a9a">TuningLevel</a></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">strong</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<table class="fieldtable">
<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a id="a707090747256af276c389e0cf1cb0a9aa6adf97f83acf6453d4a6a4b1070f3754"></a>None&#160;</td><td class="fielddoc"></td></tr>
<tr><td class="fieldname"><a id="a707090747256af276c389e0cf1cb0a9aab571ef5b2664270d25bea4f4b61ffe68"></a>Rapid&#160;</td><td class="fielddoc"></td></tr>
<tr><td class="fieldname"><a id="a707090747256af276c389e0cf1cb0a9aa960b44c579bc2f6818d2daaf9e4c16f0"></a>Normal&#160;</td><td class="fielddoc"></td></tr>
<tr><td class="fieldname"><a id="a707090747256af276c389e0cf1cb0a9aafaf34f09ea1e93bfbf591e19dc0dfb9f"></a>Exhaustive&#160;</td><td class="fielddoc"></td></tr>
</table>
<p class="definition">Definition at line <a class="el" href="_cl_backend_context_8cpp_source.html#l00069">69</a> of file <a class="el" href="_cl_backend_context_8cpp_source.html">ClBackendContext.cpp</a>.</p>
<div class="fragment"><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160;{</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; <a class="code" href="namespacearmnn.html#a707090747256af276c389e0cf1cb0a9aa6adf97f83acf6453d4a6a4b1070f3754">None</a>,</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; <a class="code" href="namespacearmnn.html#a707090747256af276c389e0cf1cb0a9aab571ef5b2664270d25bea4f4b61ffe68">Rapid</a>,</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; <a class="code" href="namespacearmnn.html#a707090747256af276c389e0cf1cb0a9aa960b44c579bc2f6818d2daaf9e4c16f0">Normal</a>,</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; <a class="code" href="namespacearmnn.html#a707090747256af276c389e0cf1cb0a9aafaf34f09ea1e93bfbf591e19dc0dfb9f">Exhaustive</a></div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160;};</div><div class="ttc" id="namespacearmnn_html_a707090747256af276c389e0cf1cb0a9aafaf34f09ea1e93bfbf591e19dc0dfb9f"><div class="ttname"><a href="namespacearmnn.html#a707090747256af276c389e0cf1cb0a9aafaf34f09ea1e93bfbf591e19dc0dfb9f">armnn::TuningLevel::Exhaustive</a></div></div>
<div class="ttc" id="namespacearmnn_html_a707090747256af276c389e0cf1cb0a9aa6adf97f83acf6453d4a6a4b1070f3754"><div class="ttname"><a href="namespacearmnn.html#a707090747256af276c389e0cf1cb0a9aa6adf97f83acf6453d4a6a4b1070f3754">armnn::TuningLevel::None</a></div></div>
<div class="ttc" id="namespacearmnn_html_a707090747256af276c389e0cf1cb0a9aa960b44c579bc2f6818d2daaf9e4c16f0"><div class="ttname"><a href="namespacearmnn.html#a707090747256af276c389e0cf1cb0a9aa960b44c579bc2f6818d2daaf9e4c16f0">armnn::TuningLevel::Normal</a></div></div>
<div class="ttc" id="namespacearmnn_html_a707090747256af276c389e0cf1cb0a9aab571ef5b2664270d25bea4f4b61ffe68"><div class="ttname"><a href="namespacearmnn.html#a707090747256af276c389e0cf1cb0a9aab571ef5b2664270d25bea4f4b61ffe68">armnn::TuningLevel::Rapid</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a1cfaa710db2a54673b21d2ea2da757c8"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a1cfaa710db2a54673b21d2ea2da757c8">&#9670;&nbsp;</a></span>UnaryOperation</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">enum <a class="el" href="namespacearmnn.html#a1cfaa710db2a54673b21d2ea2da757c8">UnaryOperation</a></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">strong</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<table class="fieldtable">
<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a id="a1cfaa710db2a54673b21d2ea2da757c8a1e34af023adeb7d5f484f8eb4b9826b6"></a>Abs&#160;</td><td class="fielddoc"></td></tr>
<tr><td class="fieldname"><a id="a1cfaa710db2a54673b21d2ea2da757c8acad39a154bffb61175f674d6eefaf6d0"></a>Exp&#160;</td><td class="fielddoc"></td></tr>
<tr><td class="fieldname"><a id="a1cfaa710db2a54673b21d2ea2da757c8aae77f3ad25595e35b327334d89410054"></a>Sqrt&#160;</td><td class="fielddoc"></td></tr>
<tr><td class="fieldname"><a id="a1cfaa710db2a54673b21d2ea2da757c8a09bb7f6e2118c85a6a55bd4bf2beeca4"></a>Rsqrt&#160;</td><td class="fielddoc"></td></tr>
<tr><td class="fieldname"><a id="a1cfaa710db2a54673b21d2ea2da757c8afb278fa5defd7e699fcbc930c3e76ccd"></a>Neg&#160;</td><td class="fielddoc"></td></tr>
</table>
<p class="definition">Definition at line <a class="el" href="_types_8hpp_source.html#l00084">84</a> of file <a class="el" href="_types_8hpp_source.html">Types.hpp</a>.</p>
<div class="fragment"><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160;{</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; <a class="code" href="namespacearmnn.html#a56297e0f7b215eea46c818cb7528d9eaa1e34af023adeb7d5f484f8eb4b9826b6">Abs</a> = 0,</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; <a class="code" href="namespacearmnn.html#a1cfaa710db2a54673b21d2ea2da757c8acad39a154bffb61175f674d6eefaf6d0">Exp</a> = 1,</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; <a class="code" href="namespacearmnn.html#a56297e0f7b215eea46c818cb7528d9eaaae77f3ad25595e35b327334d89410054">Sqrt</a> = 2,</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; <a class="code" href="namespacearmnn.html#a1cfaa710db2a54673b21d2ea2da757c8a09bb7f6e2118c85a6a55bd4bf2beeca4">Rsqrt</a> = 3,</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; <a class="code" href="namespacearmnn.html#a1cfaa710db2a54673b21d2ea2da757c8afb278fa5defd7e699fcbc930c3e76ccd">Neg</a> = 4</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160;};</div><div class="ttc" id="namespacearmnn_html_a56297e0f7b215eea46c818cb7528d9eaaae77f3ad25595e35b327334d89410054"><div class="ttname"><a href="namespacearmnn.html#a56297e0f7b215eea46c818cb7528d9eaaae77f3ad25595e35b327334d89410054">armnn::ActivationFunction::Sqrt</a></div></div>
<div class="ttc" id="namespacearmnn_html_a56297e0f7b215eea46c818cb7528d9eaa1e34af023adeb7d5f484f8eb4b9826b6"><div class="ttname"><a href="namespacearmnn.html#a56297e0f7b215eea46c818cb7528d9eaa1e34af023adeb7d5f484f8eb4b9826b6">armnn::ActivationFunction::Abs</a></div></div>
<div class="ttc" id="namespacearmnn_html_a1cfaa710db2a54673b21d2ea2da757c8acad39a154bffb61175f674d6eefaf6d0"><div class="ttname"><a href="namespacearmnn.html#a1cfaa710db2a54673b21d2ea2da757c8acad39a154bffb61175f674d6eefaf6d0">armnn::UnaryOperation::Exp</a></div></div>
<div class="ttc" id="namespacearmnn_html_a1cfaa710db2a54673b21d2ea2da757c8afb278fa5defd7e699fcbc930c3e76ccd"><div class="ttname"><a href="namespacearmnn.html#a1cfaa710db2a54673b21d2ea2da757c8afb278fa5defd7e699fcbc930c3e76ccd">armnn::UnaryOperation::Neg</a></div></div>
<div class="ttc" id="namespacearmnn_html_a1cfaa710db2a54673b21d2ea2da757c8a09bb7f6e2118c85a6a55bd4bf2beeca4"><div class="ttname"><a href="namespacearmnn.html#a1cfaa710db2a54673b21d2ea2da757c8a09bb7f6e2118c85a6a55bd4bf2beeca4">armnn::UnaryOperation::Rsqrt</a></div></div>
</div><!-- fragment -->
</div>
</div>
<h2 class="groupheader">Function Documentation</h2>
<a id="a7636fbbc4f8ea2d0cf9f3ac2d12a4c62"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a7636fbbc4f8ea2d0cf9f3ac2d12a4c62">&#9670;&nbsp;</a></span>Activation() <span class="overload">[1/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">float Activation </td>
<td>(</td>
<td class="paramtype">float&#160;</td>
<td class="paramname"><em>in</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacearmnn.html#a56297e0f7b215eea46c818cb7528d9ea">ActivationFunction</a>&#160;</td>
<td class="paramname"><em>function</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">float&#160;</td>
<td class="paramname"><em>a</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">float&#160;</td>
<td class="paramname"><em>b</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_activation_8cpp_source.html#l00012">12</a> of file <a class="el" href="_activation_8cpp_source.html">Activation.cpp</a>.</p>
<p class="reference">References <a class="el" href="namespacearmnn.html#a56297e0f7b215eea46c818cb7528d9eaa1e34af023adeb7d5f484f8eb4b9826b6">Abs</a>, <a class="el" href="namespacearmnn.html#a56297e0f7b215eea46c818cb7528d9eaabc5a0f0d6e7cf7fca73299dcd46c0f0d">BoundedReLu</a>, <a class="el" href="namespacearmnn.html#a56297e0f7b215eea46c818cb7528d9eaacb7667f5ec2f6e8a5943b781ba6c2735">LeakyReLu</a>, <a class="el" href="namespacearmnn.html#a56297e0f7b215eea46c818cb7528d9eaa32a843da6ea40ab3b17a3421ccdf671b">Linear</a>, <a class="el" href="namespacearmnn.html#a56297e0f7b215eea46c818cb7528d9eaa3d90c0a5ab3fcf8e6f6608cb3d3a1559">ReLu</a>, <a class="el" href="namespacearmnn.html#a56297e0f7b215eea46c818cb7528d9eaa21eebb164e4b8b9bcf64fdb4d8d5dff4">Sigmoid</a>, <a class="el" href="namespacearmnn.html#a56297e0f7b215eea46c818cb7528d9eaa6bba7052636d1740303b1b2ef3b53fef">SoftReLu</a>, <a class="el" href="namespacearmnn.html#a56297e0f7b215eea46c818cb7528d9eaaae77f3ad25595e35b327334d89410054">Sqrt</a>, <a class="el" href="namespacearmnn.html#a56297e0f7b215eea46c818cb7528d9eaaceb46ca115d05c51aa5a16a8867c3304">Square</a>, and <a class="el" href="namespacearmnn.html#a56297e0f7b215eea46c818cb7528d9eaa23b68da1de2b77d74da9da2635722a3e">TanH</a>.</p>
<p class="reference">Referenced by <a class="el" href="_activation_8cpp_source.html#l00082">Activation()</a>.</p>
<div class="fragment"><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;{</div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160; <span class="keywordtype">float</span> output;</div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;</div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160; <span class="comment">// Compute the result of the activation function.</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160; <span class="keywordflow">switch</span> (<span class="keyword">function</span>)</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160; {</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160; <span class="keywordflow">case</span> ActivationFunction::Linear:</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160; {</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160; output = a * in + b;</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; }</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; <span class="keywordflow">case</span> ActivationFunction::Sigmoid:</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; {</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; output = 1.f / (1.f + expf(-in));</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; }</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; <span class="keywordflow">case</span> ActivationFunction::ReLu:</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; {</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; output = std::max(0.f, in);</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; }</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; <span class="keywordflow">case</span> ActivationFunction::BoundedReLu:</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; {</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; output = std::min(a, std::max(b, in));</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; }</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; <span class="keywordflow">case</span> ActivationFunction::SoftReLu:</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; {</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; output = logf(1.0f + expf(in));</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; }</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; <span class="keywordflow">case</span> ActivationFunction::LeakyReLu:</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; {</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; output = in &gt; 0.0f ? in : (in * a);</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; }</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; <span class="keywordflow">case</span> ActivationFunction::Abs:</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; {</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; output = in &lt; 0 ? -in : in;</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; }</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; <span class="keywordflow">case</span> ActivationFunction::Sqrt:</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; {</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; output = sqrtf(in);</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; }</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; <span class="keywordflow">case</span> ActivationFunction::Square:</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; {</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; output = in * in;</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; }</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; <span class="keywordflow">case</span> ActivationFunction::TanH:</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; {</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; output = a * tanhf(b * in);</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; }</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; <span class="keywordflow">default</span>:</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; {</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; <span class="keywordflow">throw</span> InvalidArgumentException(<span class="stringliteral">&quot;Unsupported activation function&quot;</span>);</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; }</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; }</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160;</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; <span class="keywordflow">return</span> output;</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160;}</div></div><!-- fragment -->
</div>
</div>
<a id="ad10d72a6f8859949bbe6134c638ce171"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad10d72a6f8859949bbe6134c638ce171">&#9670;&nbsp;</a></span>Activation() <span class="overload">[2/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void Activation </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classarmnn_1_1_decoder.html">Decoder</a>&lt; float &gt; &amp;&#160;</td>
<td class="paramname"><em>in</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classarmnn_1_1_encoder.html">Encoder</a>&lt; float &gt; &amp;&#160;</td>
<td class="paramname"><em>out</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>tensorInfo</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacearmnn.html#a56297e0f7b215eea46c818cb7528d9ea">ActivationFunction</a>&#160;</td>
<td class="paramname"><em>function</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">float&#160;</td>
<td class="paramname"><em>a</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">float&#160;</td>
<td class="paramname"><em>b</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_activation_8cpp_source.html#l00082">82</a> of file <a class="el" href="_activation_8cpp_source.html">Activation.cpp</a>.</p>
<p class="reference">References <a class="el" href="_activation_8cpp_source.html#l00012">Activation()</a>, <a class="el" href="classarmnn_1_1_decoder.html#ac729108381e2340bea12877971713ecb">Decoder&lt; IType &gt;::Get()</a>, <a class="el" href="_tensor_8hpp_source.html#l00093">TensorInfo::GetNumElements()</a>, and <a class="el" href="classarmnn_1_1_encoder.html#ae3b62b846a9c239f332830b9e36030eb">Encoder&lt; IType &gt;::Set()</a>.</p>
<div class="fragment"><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160;{</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> numElements = tensorInfo.GetNumElements();</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160;</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i &lt; numElements; i++)</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; {</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; out.<a class="code" href="classarmnn_1_1_encoder.html#ae3b62b846a9c239f332830b9e36030eb">Set</a>(<a class="code" href="namespacearmnn.html#ad10d72a6f8859949bbe6134c638ce171">Activation</a>(in.<a class="code" href="classarmnn_1_1_decoder.html#ac729108381e2340bea12877971713ecb">Get</a>(), <span class="keyword">function</span>, a, b));</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; ++in;</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; ++out;</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; }</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; in -= numElements;</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; out -= numElements;</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_ad10d72a6f8859949bbe6134c638ce171"><div class="ttname"><a href="namespacearmnn.html#ad10d72a6f8859949bbe6134c638ce171">armnn::Activation</a></div><div class="ttdeci">void Activation(Decoder&lt; float &gt; &amp;in, Encoder&lt; float &gt; &amp;out, const TensorInfo &amp;tensorInfo, ActivationFunction function, float a, float b)</div><div class="ttdef"><b>Definition:</b> <a href="_activation_8cpp_source.html#l00082">Activation.cpp:82</a></div></div>
<div class="ttc" id="classarmnn_1_1_decoder_html_ac729108381e2340bea12877971713ecb"><div class="ttname"><a href="classarmnn_1_1_decoder.html#ac729108381e2340bea12877971713ecb">armnn::Decoder::Get</a></div><div class="ttdeci">virtual IType Get() const =0</div></div>
<div class="ttc" id="classarmnn_1_1_encoder_html_ae3b62b846a9c239f332830b9e36030eb"><div class="ttname"><a href="classarmnn_1_1_encoder.html#ae3b62b846a9c239f332830b9e36030eb">armnn::Encoder::Set</a></div><div class="ttdeci">virtual void Set(IType right)=0</div></div>
</div><!-- fragment -->
</div>
</div>
<a id="ae8dcbb74cf0c855724f12833a55a5684"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae8dcbb74cf0c855724f12833a55a5684">&#9670;&nbsp;</a></span>AllocateOutputData()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void armnn::AllocateOutputData </td>
<td>(</td>
<td class="paramtype">unsigned int&#160;</td>
<td class="paramname"><em>numOutput</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">unsigned int&#160;</td>
<td class="paramname"><em>numSelected</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const std::vector&lt; float &gt; &amp;&#160;</td>
<td class="paramname"><em>boxCorners</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const std::vector&lt; unsigned int &gt; &amp;&#160;</td>
<td class="paramname"><em>outputIndices</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const std::vector&lt; unsigned int &gt; &amp;&#160;</td>
<td class="paramname"><em>selectedBoxes</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const std::vector&lt; unsigned int &gt; &amp;&#160;</td>
<td class="paramname"><em>selectedClasses</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const std::vector&lt; float &gt; &amp;&#160;</td>
<td class="paramname"><em>selectedScores</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">float *&#160;</td>
<td class="paramname"><em>detectionBoxes</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">float *&#160;</td>
<td class="paramname"><em>detectionScores</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">float *&#160;</td>
<td class="paramname"><em>detectionClasses</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">float *&#160;</td>
<td class="paramname"><em>numDetections</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="backends_2reference_2workloads_2_detection_post_process_8cpp_source.html#l00103">103</a> of file <a class="el" href="backends_2reference_2workloads_2_detection_post_process_8cpp_source.html">DetectionPostProcess.cpp</a>.</p>
<p class="reference">Referenced by <a class="el" href="backends_2reference_2workloads_2_detection_post_process_8cpp_source.html#l00141">DetectionPostProcess()</a>.</p>
<div class="fragment"><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160;{</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i &lt; numOutput; ++i)</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; {</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> boxIndex = i * 4;</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; <span class="keywordflow">if</span> (i &lt; numSelected)</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; {</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> boxCornorIndex = selectedBoxes[outputIndices[i]] * 4;</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; detectionScores[i] = selectedScores[outputIndices[i]];</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; detectionClasses[i] = boost::numeric_cast&lt;<span class="keywordtype">float</span>&gt;(selectedClasses[outputIndices[i]]);</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; detectionBoxes[boxIndex] = boxCorners[boxCornorIndex];</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; detectionBoxes[boxIndex + 1] = boxCorners[boxCornorIndex + 1];</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; detectionBoxes[boxIndex + 2] = boxCorners[boxCornorIndex + 2];</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; detectionBoxes[boxIndex + 3] = boxCorners[boxCornorIndex + 3];</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; }</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; {</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; detectionScores[i] = 0.0f;</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; detectionClasses[i] = 0.0f;</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; detectionBoxes[boxIndex] = 0.0f;</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; detectionBoxes[boxIndex + 1] = 0.0f;</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; detectionBoxes[boxIndex + 2] = 0.0f;</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; detectionBoxes[boxIndex + 3] = 0.0f;</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; }</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; }</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; numDetections[0] = boost::numeric_cast&lt;<span class="keywordtype">float</span>&gt;(numSelected);</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160;}</div></div><!-- fragment -->
</div>
</div>
<a id="a5980f7b42f4df041efebdc6ae242f686"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a5980f7b42f4df041efebdc6ae242f686">&#9670;&nbsp;</a></span>AllTypesAreEqualImpl() <span class="overload">[1/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">bool armnn::AllTypesAreEqualImpl </td>
<td>(</td>
<td class="paramtype">T&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_layer_support_rules_8hpp_source.html#l00058">58</a> of file <a class="el" href="_layer_support_rules_8hpp_source.html">LayerSupportRules.hpp</a>.</p>
<p class="reference">Referenced by <a class="el" href="_layer_support_rules_8hpp_source.html#l00064">AllTypesAreEqualImpl()</a>, and <a class="el" href="_layer_support_rules_8hpp_source.html#l00074">TypesAreEqual::TypesAreEqual()</a>.</p>
<div class="fragment"><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160;{</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160;}</div></div><!-- fragment -->
</div>
</div>
<a id="a2a0bcfb4df0a03357b4cbb8d9e89a3da"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a2a0bcfb4df0a03357b4cbb8d9e89a3da">&#9670;&nbsp;</a></span>AllTypesAreEqualImpl() <span class="overload">[2/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">bool armnn::AllTypesAreEqualImpl </td>
<td>(</td>
<td class="paramtype">T&#160;</td>
<td class="paramname"><em>t1</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">T&#160;</td>
<td class="paramname"><em>t2</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">Rest...&#160;</td>
<td class="paramname"><em>rest</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_layer_support_rules_8hpp_source.html#l00064">64</a> of file <a class="el" href="_layer_support_rules_8hpp_source.html">LayerSupportRules.hpp</a>.</p>
<p class="reference">References <a class="el" href="_layer_support_rules_8hpp_source.html#l00058">AllTypesAreEqualImpl()</a>.</p>
<div class="fragment"><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160;{</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; static_assert(std::is_same&lt;T, TensorInfo&gt;::value, <span class="stringliteral">&quot;Type T must be a TensorInfo&quot;</span>);</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160;</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; <span class="keywordflow">return</span> (t1.GetDataType() == t2.GetDataType()) &amp;&amp; <a class="code" href="namespacearmnn.html#a2a0bcfb4df0a03357b4cbb8d9e89a3da">AllTypesAreEqualImpl</a>(t2, rest...);</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a2a0bcfb4df0a03357b4cbb8d9e89a3da"><div class="ttname"><a href="namespacearmnn.html#a2a0bcfb4df0a03357b4cbb8d9e89a3da">armnn::AllTypesAreEqualImpl</a></div><div class="ttdeci">bool AllTypesAreEqualImpl(T t1, T t2, Rest... rest)</div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_rules_8hpp_source.html#l00064">LayerSupportRules.hpp:64</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a4907f6b88c3e72be6b8ae876de355e0a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a4907f6b88c3e72be6b8ae876de355e0a">&#9670;&nbsp;</a></span>Append() <span class="overload">[1/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void armnn::Append </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classarmnn_1_1_optimizer.html#ad1794808004025d6e06c176507197b24">Optimizer::Optimizations</a> &amp;&#160;</td>
<td class="paramname"><em>optimizations</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">T &amp;&amp;&#160;</td>
<td class="paramname"><em>optimization</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_optimizer_8hpp_source.html#l00030">30</a> of file <a class="el" href="_optimizer_8hpp_source.html">Optimizer.hpp</a>.</p>
<p class="reference">Referenced by <a class="el" href="_optimizer_8hpp_source.html#l00036">Append()</a>, and <a class="el" href="_optimizer_8hpp_source.html#l00043">MakeOptimizations()</a>.</p>
<div class="fragment"><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;{</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; optimizations.emplace_back(<span class="keyword">new</span> T(optimization));</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;};</div></div><!-- fragment -->
</div>
</div>
<a id="a0c8a28b71e49c04596289ff281e58f1a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a0c8a28b71e49c04596289ff281e58f1a">&#9670;&nbsp;</a></span>Append() <span class="overload">[2/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void armnn::Append </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classarmnn_1_1_optimizer.html#ad1794808004025d6e06c176507197b24">Optimizer::Optimizations</a> &amp;&#160;</td>
<td class="paramname"><em>optimizations</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">Front &amp;&amp;&#160;</td>
<td class="paramname"><em>front</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">Others &amp;&amp;...&#160;</td>
<td class="paramname"><em>others</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_optimizer_8hpp_source.html#l00036">36</a> of file <a class="el" href="_optimizer_8hpp_source.html">Optimizer.hpp</a>.</p>
<p class="reference">References <a class="el" href="_optimizer_8hpp_source.html#l00030">Append()</a>.</p>
<div class="fragment"><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;{</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; Append&lt;Front&gt;(optimizations, std::forward&lt;Front&gt;(front));</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; <a class="code" href="namespacearmnn.html#a0c8a28b71e49c04596289ff281e58f1a">Append</a>&lt;Others...&gt;(optimizations, std::forward&lt;Others&gt;(others)...);</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;};</div><div class="ttc" id="namespacearmnn_html_a0c8a28b71e49c04596289ff281e58f1a"><div class="ttname"><a href="namespacearmnn.html#a0c8a28b71e49c04596289ff281e58f1a">armnn::Append</a></div><div class="ttdeci">void Append(Optimizer::Optimizations &amp;optimizations, Front &amp;&amp;front, Others &amp;&amp;... others)</div><div class="ttdef"><b>Definition:</b> <a href="_optimizer_8hpp_source.html#l00036">Optimizer.hpp:36</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="ae97734279fd10b4c754cc15bc8ed9dad"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae97734279fd10b4c754cc15bc8ed9dad">&#9670;&nbsp;</a></span>ApplyBackendOptimizations()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="structarmnn_1_1_optimization_result.html">OptimizationResult</a> armnn::ApplyBackendOptimizations </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classarmnn_1_1_optimized_network.html">OptimizedNetwork</a> *&#160;</td>
<td class="paramname"><em>optNetObjPtr</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="structarmnn_1_1_backend_settings.html">BackendSettings</a> &amp;&#160;</td>
<td class="paramname"><em>backendSettings</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacearmnn.html#a9173495a61a0092b5f38b855f02c3585">BackendsMap</a> &amp;&#160;</td>
<td class="paramname"><em>backends</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classarmnn_1_1_optional.html">Optional</a>&lt; std::vector&lt; std::string &gt; &amp;&gt;&#160;</td>
<td class="paramname"><em>errMessages</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_network_8cpp_source.html#l00345">345</a> of file <a class="el" href="_network_8cpp_source.html">Network.cpp</a>.</p>
<p class="reference">References <a class="el" href="_network_8cpp_source.html#l00133">AssignBackends()</a>, <a class="el" href="_subgraph_view_8cpp_source.html#l00163">SubgraphView::begin()</a>, <a class="el" href="_subgraph_view_8cpp_source.html#l00168">SubgraphView::end()</a>, <a class="el" href="_layer_8hpp_source.html#l00263">Layer::GetBackendId()</a>, <a class="el" href="include_2armnn_2backends_2_optimization_views_8hpp_source.html#l00050">OptimizationViews::GetFailedSubgraphs()</a>, <a class="el" href="_network_8hpp_source.html#l00272">OptimizedNetwork::GetGraph()</a>, <a class="el" href="include_2armnn_2backends_2_optimization_views_8hpp_source.html#l00049">OptimizationViews::GetSubstitutions()</a>, <a class="el" href="_layer_8hpp_source.html#l00259">Layer::GetType()</a>, <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4a324118a6721dd6b8a9b9f4e327df2bf5">Input</a>, <a class="el" href="_network_8hpp_source.html#l00284">OptimizationResult::m_Error</a>, <a class="el" href="_backend_settings_8hpp_source.html#l00018">BackendSettings::m_SelectedBackends</a>, <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4a29c2c02a361c9d7028472e5d92cd4a54">Output</a>, <a class="el" href="_network_8cpp_source.html#l00086">ReportWarning()</a>, <a class="el" href="_subgraph_view_selector_8cpp_source.html#l00251">SubgraphViewSelector::SelectSubgraphs()</a>, <a class="el" href="_graph_8cpp_source.html#l00396">Graph::SubstituteSubgraph()</a>, and <a class="el" href="_optimization_views_8cpp_source.html#l00011">OptimizationViews::Validate()</a>.</p>
<p class="reference">Referenced by <a class="el" href="_network_8cpp_source.html#l00807">Optimize()</a>.</p>
<div class="fragment"><div class="line"><a name="l00349"></a><span class="lineno"> 349</span>&#160;{</div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span>&#160; BOOST_ASSERT(optNetObjPtr);</div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span>&#160;</div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>&#160; OptimizationResult result;</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160;</div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span>&#160; <span class="comment">// Get the optimized graph</span></div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span>&#160; Graph&amp; optGraph = optNetObjPtr-&gt;GetGraph();</div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span>&#160;</div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span>&#160; <span class="comment">// Run backend specific optimizations</span></div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span>&amp;&amp; selectedBackend : backendSettings.m_SelectedBackends)</div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span>&#160; {</div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span>&#160; <span class="keyword">auto</span> backendObjPtr = backends.find(selectedBackend)-&gt;second.get();</div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span>&#160; BOOST_ASSERT(backendObjPtr);</div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span>&#160;</div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span>&#160; <span class="comment">// Select sub-graphs based on backend</span></div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span>&#160; SubgraphViewSelector::Subgraphs subgraphs =</div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span>&#160; SubgraphViewSelector::SelectSubgraphs(optGraph,</div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span>&#160; <span class="comment">// Select layers assigned to the requested backend</span></div><div class="line"><a name="l00367"></a><span class="lineno"> 367</span>&#160; [&amp;backendObjPtr](<span class="keyword">const</span> Layer&amp; layer)</div><div class="line"><a name="l00368"></a><span class="lineno"> 368</span>&#160; {</div><div class="line"><a name="l00369"></a><span class="lineno"> 369</span>&#160; <span class="keywordflow">return</span> layer.GetType() != LayerType::Input &amp;&amp;</div><div class="line"><a name="l00370"></a><span class="lineno"> 370</span>&#160; layer.GetType() != LayerType::Output &amp;&amp;</div><div class="line"><a name="l00371"></a><span class="lineno"> 371</span>&#160; layer.GetBackendId() == backendObjPtr-&gt;GetId();</div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span>&#160; });</div><div class="line"><a name="l00373"></a><span class="lineno"> 373</span>&#160; <span class="keywordflow">if</span> (subgraphs.empty())</div><div class="line"><a name="l00374"></a><span class="lineno"> 374</span>&#160; {</div><div class="line"><a name="l00375"></a><span class="lineno"> 375</span>&#160; <span class="comment">// No sub-graphs found, try with next selected backend</span></div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00377"></a><span class="lineno"> 377</span>&#160; }</div><div class="line"><a name="l00378"></a><span class="lineno"> 378</span>&#160;</div><div class="line"><a name="l00379"></a><span class="lineno"> 379</span>&#160; <span class="comment">// Try to optimize each sub-graph</span></div><div class="line"><a name="l00380"></a><span class="lineno"> 380</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span>&amp; subgraph : subgraphs)</div><div class="line"><a name="l00381"></a><span class="lineno"> 381</span>&#160; {</div><div class="line"><a name="l00382"></a><span class="lineno"> 382</span>&#160; <span class="comment">// Try to optimize the current sub-graph</span></div><div class="line"><a name="l00383"></a><span class="lineno"> 383</span>&#160; OptimizationViews optimizationViews = backendObjPtr-&gt;OptimizeSubgraphView(*subgraph);</div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span>&#160; BOOST_ASSERT(optimizationViews.Validate(*subgraph));</div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span>&#160;</div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span>&#160; <span class="comment">// Optimization attempted, check the resulting optimized sub-graph</span></div><div class="line"><a name="l00387"></a><span class="lineno"> 387</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span>&amp; substitution : optimizationViews.GetSubstitutions())</div><div class="line"><a name="l00388"></a><span class="lineno"> 388</span>&#160; {</div><div class="line"><a name="l00389"></a><span class="lineno"> 389</span>&#160; <span class="comment">// Sub-graph optimized, substitute the sub-graph with the new optimized one in the main optimized graph</span></div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span>&#160; SubgraphView&amp; replacementSubgraph = substitution.m_ReplacementSubgraph;</div><div class="line"><a name="l00391"></a><span class="lineno"> 391</span>&#160; SubgraphView&amp; substitutableSubgraph = substitution.m_SubstitutableSubgraph;</div><div class="line"><a name="l00392"></a><span class="lineno"> 392</span>&#160; optGraph.SubstituteSubgraph(substitutableSubgraph, replacementSubgraph);</div><div class="line"><a name="l00393"></a><span class="lineno"> 393</span>&#160;</div><div class="line"><a name="l00394"></a><span class="lineno"> 394</span>&#160; <span class="comment">// Assign the current backend to the optimized sub-graph</span></div><div class="line"><a name="l00395"></a><span class="lineno"> 395</span>&#160; std::for_each(replacementSubgraph.begin(), replacementSubgraph.end(), [&amp;selectedBackend](Layer* l)</div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span>&#160; {</div><div class="line"><a name="l00397"></a><span class="lineno"> 397</span>&#160; BOOST_ASSERT(l);</div><div class="line"><a name="l00398"></a><span class="lineno"> 398</span>&#160; l-&gt;SetBackendId(selectedBackend);</div><div class="line"><a name="l00399"></a><span class="lineno"> 399</span>&#160; });</div><div class="line"><a name="l00400"></a><span class="lineno"> 400</span>&#160; }</div><div class="line"><a name="l00401"></a><span class="lineno"> 401</span>&#160;</div><div class="line"><a name="l00402"></a><span class="lineno"> 402</span>&#160; <span class="keywordflow">if</span> (!optimizationViews.GetFailedSubgraphs().empty())</div><div class="line"><a name="l00403"></a><span class="lineno"> 403</span>&#160; {</div><div class="line"><a name="l00404"></a><span class="lineno"> 404</span>&#160; std::stringstream warningMsg;</div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span>&#160; warningMsg &lt;&lt; <span class="stringliteral">&quot;Some sub-graph(s) failed to optimized on &quot;</span> &lt;&lt; backendObjPtr-&gt;GetId() &lt;&lt; <span class="stringliteral">&quot; backend.&quot;</span>;</div><div class="line"><a name="l00406"></a><span class="lineno"> 406</span>&#160; <a class="code" href="namespacearmnn.html#a38e626422579decc13e3ee37da1a84c9">ReportWarning</a>(warningMsg.str(), errMessages);</div><div class="line"><a name="l00407"></a><span class="lineno"> 407</span>&#160;</div><div class="line"><a name="l00408"></a><span class="lineno"> 408</span>&#160; <span class="comment">// Failed to optimize the given sub-graph, re-assign the sub-graph layers to other available backends</span></div><div class="line"><a name="l00409"></a><span class="lineno"> 409</span>&#160; BackendSettings settingsCopy(backendSettings);</div><div class="line"><a name="l00410"></a><span class="lineno"> 410</span>&#160; <span class="keywordflow">if</span> (!backendObjPtr-&gt;GetId().IsCpuRef())</div><div class="line"><a name="l00411"></a><span class="lineno"> 411</span>&#160; {</div><div class="line"><a name="l00412"></a><span class="lineno"> 412</span>&#160; <span class="comment">// Add the current backend to the list of backends to ignore</span></div><div class="line"><a name="l00413"></a><span class="lineno"> 413</span>&#160; settingsCopy.m_IgnoredBackends.insert(backendObjPtr-&gt;GetId());</div><div class="line"><a name="l00414"></a><span class="lineno"> 414</span>&#160; }</div><div class="line"><a name="l00415"></a><span class="lineno"> 415</span>&#160;</div><div class="line"><a name="l00416"></a><span class="lineno"> 416</span>&#160; <span class="keywordtype">int</span> count=0;</div><div class="line"><a name="l00417"></a><span class="lineno"> 417</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span>&amp; failedSubgraph : optimizationViews.GetFailedSubgraphs())</div><div class="line"><a name="l00418"></a><span class="lineno"> 418</span>&#160; {</div><div class="line"><a name="l00419"></a><span class="lineno"> 419</span>&#160; <span class="comment">// An error occurred: the optimization was attempted but not performed, try different backends</span></div><div class="line"><a name="l00420"></a><span class="lineno"> 420</span>&#160; std::stringstream subgraphMsg;</div><div class="line"><a name="l00421"></a><span class="lineno"> 421</span>&#160; subgraphMsg &lt;&lt; <span class="stringliteral">&quot;Re-assigning backends to &quot;</span> &lt;&lt; failedSubgraph.GetLayers().size()</div><div class="line"><a name="l00422"></a><span class="lineno"> 422</span>&#160; &lt;&lt; <span class="stringliteral">&quot; layers inside sub-graph &quot;</span> &lt;&lt; count++;</div><div class="line"><a name="l00423"></a><span class="lineno"> 423</span>&#160; <a class="code" href="namespacearmnn.html#a38e626422579decc13e3ee37da1a84c9">ReportWarning</a>(subgraphMsg.str(), errMessages);</div><div class="line"><a name="l00424"></a><span class="lineno"> 424</span>&#160;</div><div class="line"><a name="l00425"></a><span class="lineno"> 425</span>&#160; OptimizationResult reassignmentResult = <a class="code" href="namespacearmnn.html#a76dca645d0d0665f74e171bbc1901469">AssignBackends</a>(optNetObjPtr,</div><div class="line"><a name="l00426"></a><span class="lineno"> 426</span>&#160; settingsCopy,</div><div class="line"><a name="l00427"></a><span class="lineno"> 427</span>&#160; *subgraph,</div><div class="line"><a name="l00428"></a><span class="lineno"> 428</span>&#160; errMessages);</div><div class="line"><a name="l00429"></a><span class="lineno"> 429</span>&#160; <span class="keywordflow">if</span> (reassignmentResult.m_Error)</div><div class="line"><a name="l00430"></a><span class="lineno"> 430</span>&#160; {</div><div class="line"><a name="l00431"></a><span class="lineno"> 431</span>&#160; <span class="comment">// Failed to re-assign one of the remaining backends to each layer of the sub-graph</span></div><div class="line"><a name="l00432"></a><span class="lineno"> 432</span>&#160; result.m_Error = <span class="keyword">true</span>;</div><div class="line"><a name="l00433"></a><span class="lineno"> 433</span>&#160; <span class="keywordflow">return</span> result;</div><div class="line"><a name="l00434"></a><span class="lineno"> 434</span>&#160; }</div><div class="line"><a name="l00435"></a><span class="lineno"> 435</span>&#160; }</div><div class="line"><a name="l00436"></a><span class="lineno"> 436</span>&#160; }</div><div class="line"><a name="l00437"></a><span class="lineno"> 437</span>&#160; }</div><div class="line"><a name="l00438"></a><span class="lineno"> 438</span>&#160; }</div><div class="line"><a name="l00439"></a><span class="lineno"> 439</span>&#160;</div><div class="line"><a name="l00440"></a><span class="lineno"> 440</span>&#160; <span class="keywordflow">return</span> result;</div><div class="line"><a name="l00441"></a><span class="lineno"> 441</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a38e626422579decc13e3ee37da1a84c9"><div class="ttname"><a href="namespacearmnn.html#a38e626422579decc13e3ee37da1a84c9">armnn::ReportWarning</a></div><div class="ttdeci">void ReportWarning(const std::string &amp;warningMessage, Optional&lt; std::vector&lt; std::string &gt; &amp;&gt; warningMessages)</div><div class="ttdef"><b>Definition:</b> <a href="_network_8cpp_source.html#l00086">Network.cpp:86</a></div></div>
<div class="ttc" id="namespacearmnn_html_a76dca645d0d0665f74e171bbc1901469"><div class="ttname"><a href="namespacearmnn.html#a76dca645d0d0665f74e171bbc1901469">armnn::AssignBackends</a></div><div class="ttdeci">OptimizationResult AssignBackends(OptimizedNetwork *optNetObjPtr, BackendSettings &amp;backendSettings, SubgraphView &amp;subgraph, Optional&lt; std::vector&lt; std::string &gt; &amp;&gt; errMessages)</div><div class="ttdef"><b>Definition:</b> <a href="_network_8cpp_source.html#l00312">Network.cpp:312</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a374120de442fe42c26536bb4f1e2a5a1"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a374120de442fe42c26536bb4f1e2a5a1">&#9670;&nbsp;</a></span>ArgMinMax()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void ArgMinMax </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classarmnn_1_1_decoder.html">Decoder</a>&lt; float &gt; &amp;&#160;</td>
<td class="paramname"><em>in</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int32_t *&#160;</td>
<td class="paramname"><em>out</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>inputTensorInfo</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>outputTensorInfo</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacearmnn.html#ae7e8cbf71db6a490789ca6dcaa8deeae">ArgMinMaxFunction</a>&#160;</td>
<td class="paramname"><em>function</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>axis</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_arg_min_max_8cpp_source.html#l00015">15</a> of file <a class="el" href="_arg_min_max_8cpp_source.html">ArgMinMax.cpp</a>.</p>
<p class="reference">References <a class="el" href="classarmnn_1_1_decoder.html#ac729108381e2340bea12877971713ecb">Decoder&lt; IType &gt;::Get()</a>, <a class="el" href="_tensor_8hpp_source.html#l00092">TensorInfo::GetNumDimensions()</a>, <a class="el" href="_tensor_utils_8cpp_source.html#l00113">armnnUtils::GetNumElementsBetween()</a>, <a class="el" href="_tensor_8hpp_source.html#l00088">TensorInfo::GetShape()</a>, <a class="el" href="_tensor_utils_8cpp_source.html#l00127">armnnUtils::GetUnsignedAxis()</a>, <a class="el" href="namespacearmnn.html#ae7e8cbf71db6a490789ca6dcaa8deeaea6a061313d22e51e0f25b7cd4dc065233">Max</a>, and <a class="el" href="namespacearmnn.html#ae7e8cbf71db6a490789ca6dcaa8deeaea78d811e98514cd165dda532286610fd2">Min</a>.</p>
<p class="reference">Referenced by <a class="el" href="_serializer_tests_8cpp_source.html#l00299">BOOST_AUTO_TEST_CASE()</a>.</p>
<div class="fragment"><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;{</div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160; boost::ignore_unused(outputTensorInfo);</div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;</div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> uAxis = <a class="code" href="namespacearmnn_utils.html#ac93cb1365b4bcb67df2a3164606096c5">armnnUtils::GetUnsignedAxis</a>(inputTensorInfo.GetNumDimensions(), axis);</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> outerElements = <a class="code" href="namespacearmnn_utils.html#af57864f5e03358d14c2988edae912b8b">armnnUtils::GetNumElementsBetween</a>(inputTensorInfo.GetShape(), 0, uAxis);</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> axisSize = inputTensorInfo.GetShape()[uAxis];</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> innerElements = <a class="code" href="namespacearmnn_utils.html#af57864f5e03358d14c2988edae912b8b">armnnUtils::GetNumElementsBetween</a>(inputTensorInfo.GetShape(),</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; uAxis + 1,</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; inputTensorInfo.GetNumDimensions());</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> outer = 0; outer &lt; outerElements; ++outer) {</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> inner = 0; inner &lt; innerElements; ++inner) {</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; in[outer * axisSize * innerElements + inner];</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; <span class="keyword">auto</span> tmpValue = in.<a class="code" href="classarmnn_1_1_decoder.html#ac729108381e2340bea12877971713ecb">Get</a>();</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> tmpIndex = 0;</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 1; i &lt; axisSize; ++i) {</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; in[(outer * axisSize * innerElements) + (i * innerElements) + inner];</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; <span class="keyword">const</span> <span class="keyword">auto</span>&amp; value = in.<a class="code" href="classarmnn_1_1_decoder.html#ac729108381e2340bea12877971713ecb">Get</a>();</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; <span class="keywordflow">if</span> ((<span class="keyword">function</span> == <a class="code" href="namespacearmnn.html#ae7e8cbf71db6a490789ca6dcaa8deeaea78d811e98514cd165dda532286610fd2">armnn::ArgMinMaxFunction::Min</a> &amp;&amp; value &lt; tmpValue) ||</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; (<span class="keyword">function</span> == <a class="code" href="namespacearmnn.html#ae7e8cbf71db6a490789ca6dcaa8deeaea6a061313d22e51e0f25b7cd4dc065233">armnn::ArgMinMaxFunction::Max</a> &amp;&amp; value &gt; tmpValue)) {</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; tmpValue = value;</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; tmpIndex = i;</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; }</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; }</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; out[outer * innerElements + inner] = boost::numeric_cast&lt;int32_t&gt;(tmpIndex);</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; }</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; }</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_ae7e8cbf71db6a490789ca6dcaa8deeaea6a061313d22e51e0f25b7cd4dc065233"><div class="ttname"><a href="namespacearmnn.html#ae7e8cbf71db6a490789ca6dcaa8deeaea6a061313d22e51e0f25b7cd4dc065233">armnn::ArgMinMaxFunction::Max</a></div></div>
<div class="ttc" id="namespacearmnn_utils_html_ac93cb1365b4bcb67df2a3164606096c5"><div class="ttname"><a href="namespacearmnn_utils.html#ac93cb1365b4bcb67df2a3164606096c5">armnnUtils::GetUnsignedAxis</a></div><div class="ttdeci">unsigned int GetUnsignedAxis(const unsigned int inputDimension, const int axis)</div><div class="ttdef"><b>Definition:</b> <a href="_tensor_utils_8cpp_source.html#l00127">TensorUtils.cpp:127</a></div></div>
<div class="ttc" id="namespacearmnn_html_ae7e8cbf71db6a490789ca6dcaa8deeaea78d811e98514cd165dda532286610fd2"><div class="ttname"><a href="namespacearmnn.html#ae7e8cbf71db6a490789ca6dcaa8deeaea78d811e98514cd165dda532286610fd2">armnn::ArgMinMaxFunction::Min</a></div></div>
<div class="ttc" id="classarmnn_1_1_decoder_html_ac729108381e2340bea12877971713ecb"><div class="ttname"><a href="classarmnn_1_1_decoder.html#ac729108381e2340bea12877971713ecb">armnn::Decoder::Get</a></div><div class="ttdeci">virtual IType Get() const =0</div></div>
<div class="ttc" id="namespacearmnn_utils_html_af57864f5e03358d14c2988edae912b8b"><div class="ttname"><a href="namespacearmnn_utils.html#af57864f5e03358d14c2988edae912b8b">armnnUtils::GetNumElementsBetween</a></div><div class="ttdeci">unsigned int GetNumElementsBetween(const armnn::TensorShape &amp;shape, unsigned int firstAxisInclusive, unsigned int lastAxisExclusive)</div><div class="ttdef"><b>Definition:</b> <a href="_tensor_utils_8cpp_source.html#l00113">TensorUtils.cpp:113</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="aad4c29b429ad2d6c9224921cfdc5b271"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aad4c29b429ad2d6c9224921cfdc5b271">&#9670;&nbsp;</a></span>AssignBackends() <span class="overload">[1/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="structarmnn_1_1_optimization_result.html">OptimizationResult</a> armnn::AssignBackends </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classarmnn_1_1_optimized_network.html">OptimizedNetwork</a> *&#160;</td>
<td class="paramname"><em>optNetObjPtr</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="structarmnn_1_1_backend_settings.html">BackendSettings</a> &amp;&#160;</td>
<td class="paramname"><em>backendSettings</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classarmnn_1_1_graph.html#acc25db0641c1c22faf95af3bb49080c9">Graph::Iterator</a> &amp;&#160;</td>
<td class="paramname"><em>firstLayer</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classarmnn_1_1_graph.html#acc25db0641c1c22faf95af3bb49080c9">Graph::Iterator</a> &amp;&#160;</td>
<td class="paramname"><em>lastLayer</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classarmnn_1_1_optional.html">Optional</a>&lt; std::vector&lt; std::string &gt; &amp;&gt;&#160;</td>
<td class="paramname"><em>errMessages</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_network_8cpp_source.html#l00133">133</a> of file <a class="el" href="_network_8cpp_source.html">Network.cpp</a>.</p>
<p class="reference">References <a class="el" href="_network_8cpp_source.html#l00098">CheckScaleSetOnQuantizedType()</a>, <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4acb17869fe51048b5a5c4c6106551a255">Constant</a>, <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4a912a4b4d73726c282e3f79aa2c390d6c">ConvertFp16ToFp32</a>, <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4addf4f83b056acd5549949fc0350e9aad">ConvertFp32ToFp16</a>, <a class="el" href="namespacearmnn.html#ae2f04a162585c0a5222a537efd5456aea83c2c4e9b658ccafbcbe6309c5d84c64">CpuRef</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a26e6ed77470c6f2f830ecf874e6c0d55">Float16</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">Float32</a>, <a class="el" href="_backend_settings_8hpp_source.html#l00063">BackendSettings::GetAvailablePreferredBackends()</a>, <a class="el" href="_types_utils_8hpp_source.html#l00165">GetDataTypeName()</a>, <a class="el" href="_network_8hpp_source.html#l00272">OptimizedNetwork::GetGraph()</a>, <a class="el" href="_internal_types_8cpp_source.html#l00013">GetLayerTypeAsCString()</a>, <a class="el" href="_network_utils_8cpp_source.html#l00040">InsertConvertFp16ToFp32LayersBefore()</a>, <a class="el" href="_network_utils_8cpp_source.html#l00079">InsertConvertFp32ToFp16LayersAfter()</a>, <a class="el" href="_backend_settings_8hpp_source.html#l00057">BackendSettings::IsCpuRefUsed()</a>, <a class="el" href="_workload_factory_8cpp_source.html#l00045">IWorkloadFactory::IsLayerSupported()</a>, <a class="el" href="_network_8hpp_source.html#l00284">OptimizationResult::m_Error</a>, <a class="el" href="_backend_settings_8hpp_source.html#l00016">BackendSettings::m_PreferredBackends</a>, <a class="el" href="_backend_settings_8hpp_source.html#l00018">BackendSettings::m_SelectedBackends</a>, <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4a4dd48794eb3305a0f5aece88b111a97b">MemCopy</a>, <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4afa662c6eb71caef475b2b981ce8eccd7">Permute</a>, <a class="el" href="_network_8cpp_source.html#l00074">ReportError()</a>, <a class="el" href="_network_8cpp_source.html#l00086">ReportWarning()</a>, and <a class="el" href="_layer_8hpp_source.html#l00264">Layer::SetBackendId()</a>.</p>
<p class="reference">Referenced by <a class="el" href="_network_8cpp_source.html#l00345">ApplyBackendOptimizations()</a>, <a class="el" href="_network_8cpp_source.html#l00312">AssignBackends()</a>, and <a class="el" href="_network_8cpp_source.html#l00807">Optimize()</a>.</p>
<div class="fragment"><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160;{</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; OptimizationResult result;</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160;</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; <span class="comment">// Helper lambda to compose meaningful error message before returning with error</span></div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; <span class="keyword">auto</span> ReturnWithError = [&amp;](<span class="keyword">const</span> Layer* layer)</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; {</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; std::stringstream failureMsg;</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; failureMsg &lt;&lt; <span class="stringliteral">&quot;Layer of type &quot;</span> &lt;&lt; <a class="code" href="namespacearmnn.html#a9da573d7a1fc03726fd41f2130cbcf92">GetLayerTypeAsCString</a>(layer-&gt;GetType())</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; &lt;&lt; <span class="stringliteral">&quot; is not supported on any preferred backend &quot;</span> &lt;&lt; backendSettings.m_PreferredBackends;</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; <a class="code" href="namespacearmnn.html#a7658f93d899c8646515a29370e6aa994">ReportError</a>(failureMsg.str(), errMessages);</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160;</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; result.m_Error = <span class="keyword">true</span>;</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; <span class="keywordflow">return</span> result;</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; };</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160;</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; <span class="keyword">auto</span> availablePreferredBackends = backendSettings.GetAvailablePreferredBackends();</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; <span class="keywordflow">if</span> (availablePreferredBackends.empty())</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; {</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; std::stringstream failureMsg;</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; failureMsg &lt;&lt; <span class="stringliteral">&quot;No preferred backends are available&quot;</span>;</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; <a class="code" href="namespacearmnn.html#a7658f93d899c8646515a29370e6aa994">ReportError</a>(failureMsg.str(), errMessages);</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160;</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; result.m_Error = <span class="keyword">true</span>;</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; <span class="keywordflow">return</span> result;</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; }</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160;</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span> it = firstLayer; it != lastLayer; ++it)</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; {</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160; <span class="keyword">auto</span> layer = *it;</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160;</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160; <a class="code" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a> dataTypeIn = layer-&gt;GetNumInputSlots() == 0 ? DataType::Float32 :</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160; layer-&gt;GetInputSlot(0).GetConnectedOutputSlot()-&gt;GetTensorInfo().GetDataType();</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; <a class="code" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a> dataTypeOut = layer-&gt;GetNumOutputSlots() == 0 ? DataType::Float32 :</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160; layer-&gt;GetOutputSlot(0).GetTensorInfo().GetDataType();</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160;</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160; std::string reasonIfUnsupported;</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; <span class="keywordtype">bool</span> found = <span class="keyword">false</span>;</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="namespacearmnn.html#af002111f64aee648e3258247075cae36">CheckScaleSetOnQuantizedType</a>(layer, errMessages))</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; {</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160; <span class="comment">// don&#39;t bomb immediately, find all the quantized outputs</span></div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160; <span class="comment">// which haven&#39;t had a scale set and report them all back.</span></div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160; result.m_Error = <span class="keyword">true</span>;</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160; }</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160;</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span>&amp; backend : availablePreferredBackends)</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; {</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160; <span class="comment">// need to set the compute device on the layer</span></div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; <span class="comment">// before we can check if it is supported</span></div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160; layer-&gt;SetBackendId(backend);</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160; <span class="keywordflow">if</span> (!IWorkloadFactory::IsLayerSupported(*layer, EmptyOptional(), reasonIfUnsupported))</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160; {</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160; <span class="keywordflow">if</span> (dataTypeIn == DataType::Float16 || dataTypeOut == DataType::Float16)</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160; {</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160; <span class="keywordflow">if</span> (IWorkloadFactory::IsLayerSupported(*layer, DataType::Float32, reasonIfUnsupported)</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160; &amp;&amp; layer-&gt;GetType() != LayerType::ConvertFp32ToFp16</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160; &amp;&amp; layer-&gt;GetType() != LayerType::ConvertFp16ToFp32)</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160; {</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160; <span class="comment">// Insert FP16 -&gt; FP32 conversion layer before current layer</span></div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; std::vector&lt;ConvertFp16ToFp32Layer*&gt; convertFp16ToFp32Layers;</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160; <span class="keywordflow">if</span> (dataTypeIn == DataType::Float16)</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160; {</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160; convertFp16ToFp32Layers =</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160; <a class="code" href="namespacearmnn.html#ad31c56533e4f9f9f51719599fbfcf7bb">InsertConvertFp16ToFp32LayersBefore</a>(optNetObjPtr-&gt;GetGraph(), *layer);</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160; }</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160;</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160; <span class="comment">// Insert FP32 -&gt; FP16 conversion layer after current layer</span></div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160; std::vector&lt;ConvertFp32ToFp16Layer*&gt; convertFp32ToFp16Layers;</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160; <span class="keywordflow">if</span> (dataTypeOut == DataType::Float16)</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160; {</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160; convertFp32ToFp16Layers =</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160; <a class="code" href="namespacearmnn.html#abf625e50a5eaeafce5b39580dc95a9d3">InsertConvertFp32ToFp16LayersAfter</a>(optNetObjPtr-&gt;GetGraph(), *layer);</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160; }</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160;</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160; <span class="comment">// Assign a supported backend to the newly introduced conversion layers</span></div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160; <span class="keyword">auto</span> AssignFirstSupportedBackend = [&amp;](Layer* layer, BackendId preferredBackend)</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160; {</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160; <span class="keywordtype">bool</span> supportedBackendFound = <span class="keyword">false</span>;</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160; std::string reasonIfUnsupported;</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160;</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160; <span class="comment">// Try preferred backend first</span></div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160; layer-&gt;SetBackendId(preferredBackend);</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160; <span class="keywordflow">if</span> (IWorkloadFactory::IsLayerSupported(*layer,</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160; EmptyOptional(),</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160; reasonIfUnsupported))</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160; {</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160; supportedBackendFound = <span class="keyword">true</span>;</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160; }</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160; {</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span>&amp; backend : availablePreferredBackends)</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160; {</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160; <span class="comment">// Skip preferred backend (we already determined that it is not supported)</span></div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160; <span class="keywordflow">if</span> (backend == preferredBackend)</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160; {</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160; }</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160;</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160; layer-&gt;SetBackendId(backend);</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160; <span class="keywordflow">if</span> (IWorkloadFactory::IsLayerSupported(*layer,</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160; EmptyOptional(),</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160; reasonIfUnsupported))</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160; {</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160; supportedBackendFound = <span class="keyword">true</span>;</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160; }</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160; }</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160; }</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160;</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160; <span class="keywordflow">return</span> supportedBackendFound;</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160; };</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160;</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160; <span class="keywordflow">for</span> (ConvertFp16ToFp32Layer* convertLayer : convertFp16ToFp32Layers)</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160; {</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160; <span class="keywordflow">if</span> (!AssignFirstSupportedBackend(convertLayer, backend))</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160; {</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160; <span class="keywordflow">return</span> ReturnWithError(convertLayer);</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160; }</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160; }</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160;</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160; <span class="keywordflow">for</span> (ConvertFp32ToFp16Layer* convertLayer : convertFp32ToFp16Layers)</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160; {</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160; <span class="keywordflow">if</span> (!AssignFirstSupportedBackend(convertLayer, backend))</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160; {</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160; <span class="keywordflow">return</span> ReturnWithError(convertLayer);</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160; }</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160; }</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160;</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160; found = <span class="keyword">true</span>;</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160; }</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160; }</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160; std::stringstream warningMsg;</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160; warningMsg &lt;&lt; <span class="stringliteral">&quot;Layer of type &quot;</span> &lt;&lt; <a class="code" href="namespacearmnn.html#a9da573d7a1fc03726fd41f2130cbcf92">GetLayerTypeAsCString</a>(layer-&gt;GetType())</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160; &lt;&lt; <span class="stringliteral">&quot; is not supported on requested backend &quot;</span> &lt;&lt; layer-&gt;GetBackendId().Get()</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160; &lt;&lt; <span class="stringliteral">&quot; for input data type &quot;</span> &lt;&lt; <a class="code" href="namespacearmnn.html#a81b5ff8545adad19a1c9d4ca076d552c">GetDataTypeName</a>(dataTypeIn)</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160; &lt;&lt; <span class="stringliteral">&quot; and output data type &quot;</span> &lt;&lt; <a class="code" href="namespacearmnn.html#a81b5ff8545adad19a1c9d4ca076d552c">GetDataTypeName</a>(dataTypeOut)</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160; &lt;&lt; <span class="stringliteral">&quot; (reason: &quot;</span> &lt;&lt; reasonIfUnsupported</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160; &lt;&lt; <span class="stringliteral">&quot;), falling back to the next backend.&quot;</span>;</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160; <a class="code" href="namespacearmnn.html#a38e626422579decc13e3ee37da1a84c9">ReportWarning</a>(warningMsg.str(), errMessages);</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160; }</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160; {</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160; found = <span class="keyword">true</span>;</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160; backendSettings.m_SelectedBackends.insert(backend);</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160; }</div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160; }</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160;</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160; <span class="comment">// If the layer is unsupported by any devices, log and return a null network.</span></div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160; <span class="keywordflow">if</span> (!found)</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160; {</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160; <span class="comment">// NOTE: if the layer is not an operation queue type AND we have not got CpuRef as a</span></div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160; <span class="comment">// fallback we should set the compute device on the layer to CpuRef (these are not</span></div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160; <span class="comment">// available as accelerated operations, or are only available under certain</span></div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160; <span class="comment">// conditions, currently they comprise MemCopy, Constant, Permute)</span></div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160; <a class="code" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4">armnn::LayerType</a> layerType = layer-&gt;GetType();</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160; <span class="keywordflow">if</span> (!backendSettings.IsCpuRefUsed() &amp;&amp; (layerType == <a class="code" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4a4dd48794eb3305a0f5aece88b111a97b">armnn::LayerType::MemCopy</a> ||</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160; layerType == <a class="code" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4acb17869fe51048b5a5c4c6106551a255">armnn::LayerType::Constant</a> ||</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160; layerType == <a class="code" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4afa662c6eb71caef475b2b981ce8eccd7">armnn::LayerType::Permute</a>))</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160; {</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160; BackendId cpuBackendId(<a class="code" href="namespacearmnn.html#ae2f04a162585c0a5222a537efd5456aea83c2c4e9b658ccafbcbe6309c5d84c64">armnn::Compute::CpuRef</a>);</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160; layer-&gt;SetBackendId(cpuBackendId);</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160; backendSettings.m_SelectedBackends.insert(cpuBackendId);</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160; }</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160; {</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160; <span class="keywordflow">return</span> ReturnWithError(layer);</div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160; }</div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160; }</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160; }</div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160;</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160; <span class="keywordflow">return</span> result;</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a9da573d7a1fc03726fd41f2130cbcf92"><div class="ttname"><a href="namespacearmnn.html#a9da573d7a1fc03726fd41f2130cbcf92">armnn::GetLayerTypeAsCString</a></div><div class="ttdeci">char const * GetLayerTypeAsCString(LayerType type)</div><div class="ttdef"><b>Definition:</b> <a href="_internal_types_8cpp_source.html#l00013">InternalTypes.cpp:13</a></div></div>
<div class="ttc" id="namespacearmnn_html_a56943a0946e5f15e5e58054b8e7a04a4acb17869fe51048b5a5c4c6106551a255"><div class="ttname"><a href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4acb17869fe51048b5a5c4c6106551a255">armnn::LayerType::Constant</a></div></div>
<div class="ttc" id="namespacearmnn_html_abf625e50a5eaeafce5b39580dc95a9d3"><div class="ttname"><a href="namespacearmnn.html#abf625e50a5eaeafce5b39580dc95a9d3">armnn::InsertConvertFp32ToFp16LayersAfter</a></div><div class="ttdeci">std::vector&lt; ConvertFp32ToFp16Layer * &gt; InsertConvertFp32ToFp16LayersAfter(Graph &amp;graph, Layer &amp;layer)</div><div class="ttdef"><b>Definition:</b> <a href="_network_utils_8cpp_source.html#l00079">NetworkUtils.cpp:79</a></div></div>
<div class="ttc" id="namespacearmnn_html_a38e626422579decc13e3ee37da1a84c9"><div class="ttname"><a href="namespacearmnn.html#a38e626422579decc13e3ee37da1a84c9">armnn::ReportWarning</a></div><div class="ttdeci">void ReportWarning(const std::string &amp;warningMessage, Optional&lt; std::vector&lt; std::string &gt; &amp;&gt; warningMessages)</div><div class="ttdef"><b>Definition:</b> <a href="_network_8cpp_source.html#l00086">Network.cpp:86</a></div></div>
<div class="ttc" id="namespacearmnn_html_a7658f93d899c8646515a29370e6aa994"><div class="ttname"><a href="namespacearmnn.html#a7658f93d899c8646515a29370e6aa994">armnn::ReportError</a></div><div class="ttdeci">void ReportError(const std::string &amp;errorMessage, Optional&lt; std::vector&lt; std::string &gt; &amp;&gt; errorMessages)</div><div class="ttdef"><b>Definition:</b> <a href="_network_8cpp_source.html#l00074">Network.cpp:74</a></div></div>
<div class="ttc" id="namespacearmnn_html_af002111f64aee648e3258247075cae36"><div class="ttname"><a href="namespacearmnn.html#af002111f64aee648e3258247075cae36">armnn::CheckScaleSetOnQuantizedType</a></div><div class="ttdeci">bool CheckScaleSetOnQuantizedType(Layer *layer, Optional&lt; std::vector&lt; std::string &gt; &amp;&gt; errMessages)</div><div class="ttdef"><b>Definition:</b> <a href="_network_8cpp_source.html#l00098">Network.cpp:98</a></div></div>
<div class="ttc" id="namespacearmnn_html_ae2f04a162585c0a5222a537efd5456aea83c2c4e9b658ccafbcbe6309c5d84c64"><div class="ttname"><a href="namespacearmnn.html#ae2f04a162585c0a5222a537efd5456aea83c2c4e9b658ccafbcbe6309c5d84c64">armnn::Compute::CpuRef</a></div><div class="ttdoc">CPU Execution: Reference C++ kernels. </div></div>
<div class="ttc" id="namespacearmnn_html_a56943a0946e5f15e5e58054b8e7a04a4a4dd48794eb3305a0f5aece88b111a97b"><div class="ttname"><a href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4a4dd48794eb3305a0f5aece88b111a97b">armnn::LayerType::MemCopy</a></div></div>
<div class="ttc" id="namespacearmnn_html_ad8ed01ff3ff33333d8e19db4d2818bb6"><div class="ttname"><a href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6">armnn::DataType</a></div><div class="ttdeci">DataType</div><div class="ttdef"><b>Definition:</b> <a href="_types_8hpp_source.html#l00032">Types.hpp:32</a></div></div>
<div class="ttc" id="namespacearmnn_html_ad31c56533e4f9f9f51719599fbfcf7bb"><div class="ttname"><a href="namespacearmnn.html#ad31c56533e4f9f9f51719599fbfcf7bb">armnn::InsertConvertFp16ToFp32LayersBefore</a></div><div class="ttdeci">std::vector&lt; ConvertFp16ToFp32Layer * &gt; InsertConvertFp16ToFp32LayersBefore(Graph &amp;graph, Layer &amp;layer, bool expectCorrectInputType)</div><div class="ttdef"><b>Definition:</b> <a href="_network_utils_8cpp_source.html#l00040">NetworkUtils.cpp:40</a></div></div>
<div class="ttc" id="namespacearmnn_html_a56943a0946e5f15e5e58054b8e7a04a4afa662c6eb71caef475b2b981ce8eccd7"><div class="ttname"><a href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4afa662c6eb71caef475b2b981ce8eccd7">armnn::LayerType::Permute</a></div></div>
<div class="ttc" id="namespacearmnn_html_a81b5ff8545adad19a1c9d4ca076d552c"><div class="ttname"><a href="namespacearmnn.html#a81b5ff8545adad19a1c9d4ca076d552c">armnn::GetDataTypeName</a></div><div class="ttdeci">constexpr const char * GetDataTypeName(DataType dataType)</div><div class="ttdef"><b>Definition:</b> <a href="_types_utils_8hpp_source.html#l00165">TypesUtils.hpp:165</a></div></div>
<div class="ttc" id="namespacearmnn_html_a56943a0946e5f15e5e58054b8e7a04a4"><div class="ttname"><a href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4">armnn::LayerType</a></div><div class="ttdeci">LayerType</div><div class="ttdef"><b>Definition:</b> <a href="_internal_types_8hpp_source.html#l00014">InternalTypes.hpp:14</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a76dca645d0d0665f74e171bbc1901469"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a76dca645d0d0665f74e171bbc1901469">&#9670;&nbsp;</a></span>AssignBackends() <span class="overload">[2/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="structarmnn_1_1_optimization_result.html">OptimizationResult</a> armnn::AssignBackends </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classarmnn_1_1_optimized_network.html">OptimizedNetwork</a> *&#160;</td>
<td class="paramname"><em>optNetObjPtr</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="structarmnn_1_1_backend_settings.html">BackendSettings</a> &amp;&#160;</td>
<td class="paramname"><em>backendSettings</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classarmnn_1_1_subgraph_view.html">SubgraphView</a> &amp;&#160;</td>
<td class="paramname"><em>subgraph</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classarmnn_1_1_optional.html">Optional</a>&lt; std::vector&lt; std::string &gt; &amp;&gt;&#160;</td>
<td class="paramname"><em>errMessages</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_network_8cpp_source.html#l00312">312</a> of file <a class="el" href="_network_8cpp_source.html">Network.cpp</a>.</p>
<p class="reference">References <a class="el" href="_network_8cpp_source.html#l00133">AssignBackends()</a>, <a class="el" href="_subgraph_view_8cpp_source.html#l00163">SubgraphView::begin()</a>, and <a class="el" href="_subgraph_view_8cpp_source.html#l00168">SubgraphView::end()</a>.</p>
<div class="fragment"><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160;{</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>&#160; Graph::Iterator firstLayer = subgraph.begin();</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160; Graph::Iterator lastLayer = subgraph.end();</div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespacearmnn.html#a76dca645d0d0665f74e171bbc1901469">AssignBackends</a>(optNetObjPtr,</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160; backendSettings,</div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span>&#160; firstLayer,</div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>&#160; lastLayer,</div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160; errMessages);</div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a76dca645d0d0665f74e171bbc1901469"><div class="ttname"><a href="namespacearmnn.html#a76dca645d0d0665f74e171bbc1901469">armnn::AssignBackends</a></div><div class="ttdeci">OptimizationResult AssignBackends(OptimizedNetwork *optNetObjPtr, BackendSettings &amp;backendSettings, SubgraphView &amp;subgraph, Optional&lt; std::vector&lt; std::string &gt; &amp;&gt; errMessages)</div><div class="ttdef"><b>Definition:</b> <a href="_network_8cpp_source.html#l00312">Network.cpp:312</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a09ff1f6670d27d3b41e5b5d35a6c9f37"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a09ff1f6670d27d3b41e5b5d35a6c9f37">&#9670;&nbsp;</a></span>AssignSplitId()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void armnn::AssignSplitId </td>
<td>(</td>
<td class="paramtype">LayerSelectionInfo::LayerInfoContainer &amp;&#160;</td>
<td class="paramname"><em>layerInfos</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">LayerSelectionInfo &amp;&#160;</td>
<td class="paramname"><em>layerInfo</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_subgraph_view_selector_8cpp_source.html#l00301">301</a> of file <a class="el" href="_subgraph_view_selector_8cpp_source.html">SubgraphViewSelector.cpp</a>.</p>
<p class="reference">References <a class="el" href="_subgraph_view_selector_8cpp_source.html#l00259">ForEachLayerInput()</a>.</p>
<p class="reference">Referenced by <a class="el" href="_subgraph_view_selector_8cpp_source.html#l00381">SubgraphViewSelector::SelectSubgraphs()</a>.</p>
<div class="fragment"><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160;{</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160; <span class="comment">// Check each input to see if we can attach ourselves to any of the subgraphs that have already been assigned.</span></div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160; <a class="code" href="namespacearmnn.html#afce94270d9c4a51cd0c4ac6a58af4e26">ForEachLayerInput</a>(layerInfos, layerInfo, [&amp;](LayerSelectionInfo&amp; parentInfo)</div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160; {</div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160; <span class="comment">// We can only attach ourselves to the subgraph from this input if there isn&#39;t a cut here.</span></div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160; <span class="keywordflow">if</span> (layerInfo.m_IsSelected == parentInfo.m_IsSelected)</div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160; {</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160; <span class="comment">// We also need to check that merging into this subgraph won&#39;t cause a dependency cycle between subgraphs.</span></div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160; <span class="comment">// This will be the case if the subgraph that we will become part of is already a dependency</span></div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160; <span class="comment">// of one of the subgraphs that are input to this layer, e.g:</span></div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160; <span class="comment">//</span></div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160; <span class="comment">// 0 | The numbers (0, 1) are the subgraph IDs of each layer and we are looking at layer X.</span></div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160; <span class="comment">// / \ |</span></div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>&#160; <span class="comment">// 1 0 | We can&#39;t merge X into subgraph 0, because the left-hand input already depends on subgraph 0.</span></div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160; <span class="comment">// \ / | We can however merge X into subgraph 1.</span></div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>&#160; <span class="comment">// X |</span></div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160; <span class="comment">//</span></div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160; bool dependenciesOk = true;</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160; ForEachLayerInput(layerInfos, layerInfo, [&amp;](LayerSelectionInfo&amp; otherParentInfo)</div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span>&#160; {</div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>&#160; <span class="comment">// We call HasAntecedent() ~ n^2 times, where n is the number of inputs to this layer.</span></div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160; <span class="comment">// Hence it is important that this is efficient - see PartialSubgraph class description.</span></div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>&#160; if (otherParentInfo.m_Subgraph-&gt;HasAntecedent(parentInfo.m_Subgraph.get()))</div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span>&#160; {</div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span>&#160; dependenciesOk = false;</div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span>&#160; }</div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span>&#160; });</div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span>&#160;</div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span>&#160; <span class="keywordflow">if</span> (dependenciesOk)</div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span>&#160; {</div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span>&#160; <span class="comment">// Merge into the subgraph of this input. If we have already been merged into another subgraph</span></div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span>&#160; <span class="comment">// (from another input of this layer), then merge both of them together.</span></div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span>&#160; <span class="keywordflow">if</span> (layerInfo.m_Subgraph == <span class="keyword">nullptr</span>)</div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span>&#160; {</div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span>&#160; layerInfo.m_Subgraph = parentInfo.m_Subgraph;</div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>&#160; }</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>&#160; {</div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>&#160; <span class="comment">// We call MergeWith() ~ n times, where n is the number of inputs to this layer.</span></div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span>&#160; <span class="comment">// Therefore it does not need to be as performant as HasAntecedent().</span></div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span>&#160; layerInfo.m_Subgraph-&gt;MergeWith(parentInfo.m_Subgraph.get());</div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span>&#160; }</div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span>&#160; }</div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span>&#160; }</div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span>&#160; });</div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span>&#160;</div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span>&#160; <span class="comment">// If we weren&#39;t able to merge into an existing subgraph then we need to make a new one</span></div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span>&#160; <span class="keywordflow">if</span> (layerInfo.m_Subgraph == <span class="keyword">nullptr</span>)</div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span>&#160; {</div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span>&#160; layerInfo.m_Subgraph = std::make_shared&lt;PartialSubgraph&gt;();</div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>&#160; }</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160;</div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span>&#160; <span class="comment">// Record dependencies of the chosen subgraph based on the inputs of this layer.</span></div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span>&#160; <a class="code" href="namespacearmnn.html#afce94270d9c4a51cd0c4ac6a58af4e26">ForEachLayerInput</a>(layerInfos, layerInfo, [&amp;](LayerSelectionInfo&amp; parentInfo)</div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span>&#160; {</div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span>&#160; <span class="comment">// These functions are called ~n times, where n is the number of inputs to this layer.</span></div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span>&#160; <span class="comment">// Therefore it does not need to be as performant as HasAntecedent().</span></div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span>&#160; <span class="keywordflow">if</span> (!layerInfo.m_Subgraph-&gt;IsMergedWith(parentInfo.m_Subgraph.get()))</div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span>&#160; {</div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span>&#160; layerInfo.m_Subgraph-&gt;AddDirectAntecedent(parentInfo.m_Subgraph.get());</div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span>&#160; }</div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span>&#160; });</div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_afce94270d9c4a51cd0c4ac6a58af4e26"><div class="ttname"><a href="namespacearmnn.html#afce94270d9c4a51cd0c4ac6a58af4e26">armnn::ForEachLayerInput</a></div><div class="ttdeci">void ForEachLayerInput(LayerSelectionInfo::LayerInfoContainer &amp;layerInfos, LayerSelectionInfo &amp;layerInfo, Delegate function)</div><div class="ttdef"><b>Definition:</b> <a href="_subgraph_view_selector_8cpp_source.html#l00259">SubgraphViewSelector.cpp:259</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="ac2807505b850738bc8a1991ce669dd47"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ac2807505b850738bc8a1991ce669dd47">&#9670;&nbsp;</a></span>BackendRegistryInstance()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classarmnn_1_1_backend_registry.html">BackendRegistry</a> &amp; BackendRegistryInstance </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_backend_registry_8cpp_source.html#l00013">13</a> of file <a class="el" href="_backend_registry_8cpp_source.html">BackendRegistry.cpp</a>.</p>
<p class="reference">Referenced by <a class="el" href="_inference_model_8hpp_source.html#l00341">InferenceModel&lt; IParser, TDataType &gt;::AddCommandLineOptions()</a>, <a class="el" href="_backend_registry_tests_8cpp_source.html#l00037">BOOST_AUTO_TEST_CASE()</a>, <a class="el" href="_common_test_utils_8cpp_source.html#l00045">CreateBackendObject()</a>, <a class="el" href="_network_8cpp_source.html#l00326">CreateSupportedBackends()</a>, <a class="el" href="_dynamic_backend_utils_8cpp_source.html#l00314">DynamicBackendUtils::DeregisterDynamicBackends()</a>, <a class="el" href="_backend_helper_8cpp_source.html#l00014">GetILayerSupportByBackendId()</a>, <a class="el" href="_workload_factory_8cpp_source.html#l00045">IWorkloadFactory::IsLayerSupported()</a>, <a class="el" href="_execute_network_8cpp_source.html#l00009">main()</a>, <a class="el" href="_loaded_network_8cpp_source.html#l00085">LoadedNetwork::MakeLoadedNetwork()</a>, <a class="el" href="_mock_backend_8cpp_source.html#l00070">MockBackendInitialiser::MockBackendInitialiser()</a>, <a class="el" href="_network_8cpp_source.html#l00807">Optimize()</a>, <a class="el" href="_dynamic_backend_utils_8cpp_source.html#l00326">DynamicBackendUtils::RegisterDynamicBackends()</a>, <a class="el" href="_network_execution_utils_8hpp_source.html#l00731">RunCsvTest()</a>, <a class="el" href="_runtime_8cpp_source.html#l00155">Runtime::Runtime()</a>, <a class="el" href="_dynamic_backend_tests_8hpp_source.html#l01202">RuntimeEmptyTestImpl()</a>, <a class="el" href="_dynamic_backend_tests_8hpp_source.html#l01331">RuntimeInvalidOverridePathTestImpl()</a>, <a class="el" href="_dynamic_backend_tests_8hpp_source.html#l00094">TestBackendRegistry::TestBackendRegistry()</a>, <a class="el" href="_mock_backend_8cpp_source.html#l00079">MockBackendInitialiser::~MockBackendInitialiser()</a>, and <a class="el" href="_dynamic_backend_tests_8hpp_source.html#l00099">TestBackendRegistry::~TestBackendRegistry()</a>.</p>
<div class="fragment"><div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;{</div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160; <span class="keyword">static</span> BackendRegistry instance;</div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160; <span class="keywordflow">return</span> instance;</div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;}</div></div><!-- fragment -->
</div>
</div>
<a id="adc251e65d99405496d503811589e9a20"></a>
<h2 class="memtitle"><span class="permalink"><a href="#adc251e65d99405496d503811589e9a20">&#9670;&nbsp;</a></span>BatchNormImpl()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void BatchNormImpl </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="structarmnn_1_1_batch_normalization_queue_descriptor.html">BatchNormalizationQueueDescriptor</a> &amp;&#160;</td>
<td class="paramname"><em>data</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classarmnn_1_1_decoder.html">Decoder</a>&lt; float &gt; &amp;&#160;</td>
<td class="paramname"><em>meanDecoder</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classarmnn_1_1_decoder.html">Decoder</a>&lt; float &gt; &amp;&#160;</td>
<td class="paramname"><em>varianceDecoder</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classarmnn_1_1_decoder.html">Decoder</a>&lt; float &gt; &amp;&#160;</td>
<td class="paramname"><em>betaDecoder</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classarmnn_1_1_decoder.html">Decoder</a>&lt; float &gt; &amp;&#160;</td>
<td class="paramname"><em>gammaDecoder</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classarmnn_1_1_decoder.html">Decoder</a>&lt; float &gt; &amp;&#160;</td>
<td class="paramname"><em>inputDecoder</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classarmnn_1_1_encoder.html">Encoder</a>&lt; float &gt; &amp;&#160;</td>
<td class="paramname"><em>outputEncoder</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_batch_norm_impl_8cpp_source.html#l00018">18</a> of file <a class="el" href="_batch_norm_impl_8cpp_source.html">BatchNormImpl.cpp</a>.</p>
<p class="reference">References <a class="el" href="classarmnn_1_1_decoder.html#ac729108381e2340bea12877971713ecb">Decoder&lt; IType &gt;::Get()</a>, <a class="el" href="_data_layout_indexed_8hpp_source.html#l00023">DataLayoutIndexed::GetChannelsIndex()</a>, <a class="el" href="_data_layout_indexed_8hpp_source.html#l00024">DataLayoutIndexed::GetHeightIndex()</a>, <a class="el" href="_data_layout_indexed_8hpp_source.html#l00027">DataLayoutIndexed::GetIndex()</a>, <a class="el" href="_tensor_8hpp_source.html#l00088">TensorInfo::GetShape()</a>, <a class="el" href="_ref_workload_utils_8hpp_source.html#l00025">GetTensorInfo()</a>, <a class="el" href="_data_layout_indexed_8hpp_source.html#l00025">DataLayoutIndexed::GetWidthIndex()</a>, <a class="el" href="_descriptors_8hpp_source.html#l00625">BatchNormalizationDescriptor::m_DataLayout</a>, <a class="el" href="_descriptors_8hpp_source.html#l00623">BatchNormalizationDescriptor::m_Eps</a>, <a class="el" href="_workload_data_8hpp_source.html#l00030">QueueDescriptor::m_Inputs</a>, <a class="el" href="_workload_data_8hpp_source.html#l00049">QueueDescriptorWithParameters&lt; LayerDescriptor &gt;::m_Parameters</a>, and <a class="el" href="classarmnn_1_1_encoder.html#ae3b62b846a9c239f332830b9e36030eb">Encoder&lt; IType &gt;::Set()</a>.</p>
<p class="reference">Referenced by <a class="el" href="_ref_batch_normalization_workload_8cpp_source.html#l00025">RefBatchNormalizationWorkload::Execute()</a>.</p>
<div class="fragment"><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;{</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; <span class="keyword">const</span> TensorInfo&amp; inputInfo = <a class="code" href="namespacearmnn_utils.html#acee63cd08da47910fc166a1990988fa8">GetTensorInfo</a>(data.m_Inputs[0]);</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; <span class="keyword">const</span> TensorShape inputShape = inputInfo.GetShape();</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; <a class="code" href="classarmnn_utils_1_1_data_layout_indexed.html">armnnUtils::DataLayoutIndexed</a> dataLayout(data.m_Parameters.m_DataLayout);</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> inputBatches = inputShape[0];</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> inputHeight = inputShape[dataLayout.GetHeightIndex()];</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> inputWidth = inputShape[dataLayout.GetWidthIndex()];</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> inputChannels = inputShape[dataLayout.GetChannelsIndex()];</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> c = 0; c &lt; inputChannels; c++)</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; {</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; meanDecoder[c];</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; varianceDecoder[c];</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; betaDecoder[c];</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; gammaDecoder[c];</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; <span class="keywordtype">float</span> mean = meanDecoder.<a class="code" href="classarmnn_1_1_decoder.html#ac729108381e2340bea12877971713ecb">Get</a>();</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; <span class="keywordtype">float</span> var = varianceDecoder.<a class="code" href="classarmnn_1_1_decoder.html#ac729108381e2340bea12877971713ecb">Get</a>();</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <span class="keywordtype">float</span> beta = betaDecoder.<a class="code" href="classarmnn_1_1_decoder.html#ac729108381e2340bea12877971713ecb">Get</a>();</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <span class="keywordtype">float</span> gamma = gammaDecoder.<a class="code" href="classarmnn_1_1_decoder.html#ac729108381e2340bea12877971713ecb">Get</a>();</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; <span class="keywordtype">float</span> mult = gamma / sqrtf(var + data.m_Parameters.m_Eps);</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; <span class="keywordtype">float</span> add = beta - mult * mean;</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> n = 0; n &lt; inputBatches; n++)</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; {</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> h = 0; h &lt; inputHeight; h++)</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; {</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> w = 0; w &lt; inputWidth; w++)</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; {</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> index = dataLayout.GetIndex(inputShape, n, c, h, w);</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; inputDecoder[index];</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; outputEncoder[index];</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; outputEncoder.<a class="code" href="classarmnn_1_1_encoder.html#ae3b62b846a9c239f332830b9e36030eb">Set</a>(mult * inputDecoder.<a class="code" href="classarmnn_1_1_decoder.html#ac729108381e2340bea12877971713ecb">Get</a>() + add);</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; }</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; }</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; }</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; }</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160;}</div><div class="ttc" id="namespacearmnn_utils_html_acee63cd08da47910fc166a1990988fa8"><div class="ttname"><a href="namespacearmnn_utils.html#acee63cd08da47910fc166a1990988fa8">armnnUtils::GetTensorInfo</a></div><div class="ttdeci">armnn::TensorInfo GetTensorInfo(unsigned int numberOfBatches, unsigned int numberOfChannels, unsigned int height, unsigned int width, const armnn::DataLayout dataLayout, const armnn::DataType dataType)</div><div class="ttdef"><b>Definition:</b> <a href="_tensor_utils_8cpp_source.html#l00038">TensorUtils.cpp:38</a></div></div>
<div class="ttc" id="classarmnn_1_1_decoder_html_ac729108381e2340bea12877971713ecb"><div class="ttname"><a href="classarmnn_1_1_decoder.html#ac729108381e2340bea12877971713ecb">armnn::Decoder::Get</a></div><div class="ttdeci">virtual IType Get() const =0</div></div>
<div class="ttc" id="classarmnn_utils_1_1_data_layout_indexed_html"><div class="ttname"><a href="classarmnn_utils_1_1_data_layout_indexed.html">armnnUtils::DataLayoutIndexed</a></div><div class="ttdef"><b>Definition:</b> <a href="_data_layout_indexed_8hpp_source.html#l00017">DataLayoutIndexed.hpp:17</a></div></div>
<div class="ttc" id="classarmnn_1_1_encoder_html_ae3b62b846a9c239f332830b9e36030eb"><div class="ttname"><a href="classarmnn_1_1_encoder.html#ae3b62b846a9c239f332830b9e36030eb">armnn::Encoder::Set</a></div><div class="ttdeci">virtual void Set(IType right)=0</div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a8746512fab5ec10c2c57800c66311ba7"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a8746512fab5ec10c2c57800c66311ba7">&#9670;&nbsp;</a></span>BatchToSpaceNd()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void BatchToSpaceNd </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarmnn_utils_1_1_data_layout_indexed.html">DataLayoutIndexed</a> &amp;&#160;</td>
<td class="paramname"><em>dataLayout</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>inputTensorInfo</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>outputTensorInfo</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const std::vector&lt; unsigned int &gt; &amp;&#160;</td>
<td class="paramname"><em>blockShape</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const std::vector&lt; std::pair&lt; unsigned int, unsigned int &gt;&gt; &amp;&#160;</td>
<td class="paramname"><em>cropsData</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classarmnn_1_1_decoder.html">Decoder</a>&lt; float &gt; &amp;&#160;</td>
<td class="paramname"><em>inputDecoder</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classarmnn_1_1_encoder.html">Encoder</a>&lt; float &gt; &amp;&#160;</td>
<td class="paramname"><em>outputEncoder</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="backends_2reference_2workloads_2_batch_to_space_n_d_8cpp_source.html#l00035">35</a> of file <a class="el" href="backends_2reference_2workloads_2_batch_to_space_n_d_8cpp_source.html">BatchToSpaceNd.cpp</a>.</p>
<p class="reference">References <a class="el" href="backends_2reference_2workloads_2_batch_to_space_n_d_8cpp_source.html#l00035">BatchToSpaceNd()</a>, <a class="el" href="classarmnn_1_1_decoder.html#ac729108381e2340bea12877971713ecb">Decoder&lt; IType &gt;::Get()</a>, <a class="el" href="_data_layout_indexed_8hpp_source.html#l00023">DataLayoutIndexed::GetChannelsIndex()</a>, <a class="el" href="_data_layout_indexed_8hpp_source.html#l00024">DataLayoutIndexed::GetHeightIndex()</a>, <a class="el" href="_tensor_8hpp_source.html#l00043">TensorShape::GetNumDimensions()</a>, <a class="el" href="_tensor_8hpp_source.html#l00088">TensorInfo::GetShape()</a>, <a class="el" href="_data_layout_indexed_8hpp_source.html#l00025">DataLayoutIndexed::GetWidthIndex()</a>, <a class="el" href="backends_2reference_2workloads_2_batch_to_space_n_d_8cpp_source.html#l00019">Offset()</a>, and <a class="el" href="classarmnn_1_1_encoder.html#ae3b62b846a9c239f332830b9e36030eb">Encoder&lt; IType &gt;::Set()</a>.</p>
<p class="reference">Referenced by <a class="el" href="backends_2reference_2workloads_2_batch_to_space_n_d_8cpp_source.html#l00035">BatchToSpaceNd()</a>, <a class="el" href="_batch_to_space_nd_layer_8cpp_source.html#l00026">BatchToSpaceNdLayer::BatchToSpaceNdLayer()</a>, and <a class="el" href="_serializer_tests_8cpp_source.html#l00416">BOOST_AUTO_TEST_CASE()</a>.</p>
<div class="fragment"><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;{</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; <a class="code" href="classarmnn_1_1_tensor_shape.html">TensorShape</a> inputShape = inputTensorInfo.<a class="code" href="classarmnn_1_1_tensor_info.html#a8b5d0f8a24e9d9238f412260a552acf8">GetShape</a>();</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; BOOST_ASSERT_MSG(inputShape.<a class="code" href="classarmnn_1_1_tensor_shape.html#a157e27d41e9f6b21f0d3c025fa47dc24">GetNumDimensions</a>() == 4, <span class="stringliteral">&quot;Expected Input with 4 Dimensions&quot;</span>);</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; <a class="code" href="classarmnn_1_1_tensor_shape.html">TensorShape</a> outputShape = outputTensorInfo.<a class="code" href="classarmnn_1_1_tensor_info.html#a8b5d0f8a24e9d9238f412260a552acf8">GetShape</a>();</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; BOOST_ASSERT_MSG(outputShape.GetNumDimensions() == 4, <span class="stringliteral">&quot;Expected Output with 4 Dimensions&quot;</span>);</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> inputBatchSize = inputShape[0];</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> channels = inputShape[dataLayout.<a class="code" href="classarmnn_utils_1_1_data_layout_indexed.html#a861b2621ee46e4b63379988b360b8cd9">GetChannelsIndex</a>()];</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160;</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> outputBatchSize = outputShape[0];</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> outputHeight = outputShape[dataLayout.<a class="code" href="classarmnn_utils_1_1_data_layout_indexed.html#a61c00316c443adc233c24e85c6c5b740">GetHeightIndex</a>()];</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> outputWidth = outputShape[dataLayout.<a class="code" href="classarmnn_utils_1_1_data_layout_indexed.html#a414e6f95548e6f7a01d5028b55ad3941">GetWidthIndex</a>()];</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160;</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; BOOST_ASSERT_MSG(blockShape.size() &gt; 0, <span class="stringliteral">&quot;BlockShape must contain 1 or more entries&quot;</span>);</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160;</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> blockShapeHeight = blockShape[0];</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> blockShapeWidth = blockShape[1];</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160;</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; BOOST_ASSERT_MSG(cropsData.size() &gt; 0, <span class="stringliteral">&quot;Crops must contain 1 or more entries&quot;</span>);</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160;</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> cropsTop = cropsData[0].first;</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> cropsLeft = cropsData[1].first;</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160;</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> inBatch = 0; inBatch &lt; inputBatchSize; ++inBatch)</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; {</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> outBatch = inBatch % outputBatchSize;</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> spatialOffset = inBatch / outputBatchSize;</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160;</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> inH = 0; inH &lt; inputTensorInfo.<a class="code" href="classarmnn_1_1_tensor_info.html#a8b5d0f8a24e9d9238f412260a552acf8">GetShape</a>()[dataLayout.<a class="code" href="classarmnn_utils_1_1_data_layout_indexed.html#a61c00316c443adc233c24e85c6c5b740">GetHeightIndex</a>()]; ++inH) {</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> outH = inH * blockShapeHeight + spatialOffset / blockShapeWidth - cropsTop;</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160;</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; <span class="keywordflow">if</span> (outH &gt;= outputHeight)</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; {</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; }</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160;</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> inW = 0; inW &lt; inputTensorInfo.<a class="code" href="classarmnn_1_1_tensor_info.html#a8b5d0f8a24e9d9238f412260a552acf8">GetShape</a>()[dataLayout.<a class="code" href="classarmnn_utils_1_1_data_layout_indexed.html#a414e6f95548e6f7a01d5028b55ad3941">GetWidthIndex</a>()]; ++inW) {</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> outW = inW * blockShapeWidth + spatialOffset % blockShapeWidth - cropsLeft;</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160;</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; <span class="keywordflow">if</span> (outW &gt;= outputWidth)</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; {</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; }</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160;</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> c = 0; c &lt; channels; c++)</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; {</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> outOffset = <a class="code" href="namespacearmnn.html#ac70a495c61526a0500b33b23db86ca27">Offset</a>(outputShape, outBatch, outH, outW, c, dataLayout);</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> inOffset = <a class="code" href="namespacearmnn.html#ac70a495c61526a0500b33b23db86ca27">Offset</a>(inputShape, inBatch, inH, inW, c, dataLayout);</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160;</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; outputEncoder[outOffset];</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; inputDecoder[inOffset];</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; outputEncoder.<a class="code" href="classarmnn_1_1_encoder.html#ae3b62b846a9c239f332830b9e36030eb">Set</a>(inputDecoder.<a class="code" href="classarmnn_1_1_decoder.html#ac729108381e2340bea12877971713ecb">Get</a>());</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; }</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; }</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; }</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; }</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_ac70a495c61526a0500b33b23db86ca27"><div class="ttname"><a href="namespacearmnn.html#ac70a495c61526a0500b33b23db86ca27">armnn::Offset</a></div><div class="ttdeci">unsigned int Offset(const TensorShape &amp;shape, unsigned int batch, unsigned int height, unsigned int width, unsigned int channels, const DataLayoutIndexed &amp;dataLayout)</div><div class="ttdef"><b>Definition:</b> <a href="backends_2reference_2workloads_2_batch_to_space_n_d_8cpp_source.html#l00019">BatchToSpaceNd.cpp:19</a></div></div>
<div class="ttc" id="classarmnn_1_1_tensor_shape_html_a157e27d41e9f6b21f0d3c025fa47dc24"><div class="ttname"><a href="classarmnn_1_1_tensor_shape.html#a157e27d41e9f6b21f0d3c025fa47dc24">armnn::TensorShape::GetNumDimensions</a></div><div class="ttdeci">unsigned int GetNumDimensions() const</div><div class="ttdef"><b>Definition:</b> <a href="_tensor_8hpp_source.html#l00043">Tensor.hpp:43</a></div></div>
<div class="ttc" id="classarmnn_utils_1_1_data_layout_indexed_html_a61c00316c443adc233c24e85c6c5b740"><div class="ttname"><a href="classarmnn_utils_1_1_data_layout_indexed.html#a61c00316c443adc233c24e85c6c5b740">armnnUtils::DataLayoutIndexed::GetHeightIndex</a></div><div class="ttdeci">unsigned int GetHeightIndex() const</div><div class="ttdef"><b>Definition:</b> <a href="_data_layout_indexed_8hpp_source.html#l00024">DataLayoutIndexed.hpp:24</a></div></div>
<div class="ttc" id="classarmnn_utils_1_1_data_layout_indexed_html_a414e6f95548e6f7a01d5028b55ad3941"><div class="ttname"><a href="classarmnn_utils_1_1_data_layout_indexed.html#a414e6f95548e6f7a01d5028b55ad3941">armnnUtils::DataLayoutIndexed::GetWidthIndex</a></div><div class="ttdeci">unsigned int GetWidthIndex() const</div><div class="ttdef"><b>Definition:</b> <a href="_data_layout_indexed_8hpp_source.html#l00025">DataLayoutIndexed.hpp:25</a></div></div>
<div class="ttc" id="classarmnn_utils_1_1_data_layout_indexed_html_a861b2621ee46e4b63379988b360b8cd9"><div class="ttname"><a href="classarmnn_utils_1_1_data_layout_indexed.html#a861b2621ee46e4b63379988b360b8cd9">armnnUtils::DataLayoutIndexed::GetChannelsIndex</a></div><div class="ttdeci">unsigned int GetChannelsIndex() const</div><div class="ttdef"><b>Definition:</b> <a href="_data_layout_indexed_8hpp_source.html#l00023">DataLayoutIndexed.hpp:23</a></div></div>
<div class="ttc" id="classarmnn_1_1_tensor_shape_html"><div class="ttname"><a href="classarmnn_1_1_tensor_shape.html">armnn::TensorShape</a></div><div class="ttdef"><b>Definition:</b> <a href="_tensor_8hpp_source.html#l00020">Tensor.hpp:20</a></div></div>
<div class="ttc" id="classarmnn_1_1_decoder_html_ac729108381e2340bea12877971713ecb"><div class="ttname"><a href="classarmnn_1_1_decoder.html#ac729108381e2340bea12877971713ecb">armnn::Decoder::Get</a></div><div class="ttdeci">virtual IType Get() const =0</div></div>
<div class="ttc" id="classarmnn_1_1_tensor_info_html_a8b5d0f8a24e9d9238f412260a552acf8"><div class="ttname"><a href="classarmnn_1_1_tensor_info.html#a8b5d0f8a24e9d9238f412260a552acf8">armnn::TensorInfo::GetShape</a></div><div class="ttdeci">const TensorShape &amp; GetShape() const</div><div class="ttdef"><b>Definition:</b> <a href="_tensor_8hpp_source.html#l00088">Tensor.hpp:88</a></div></div>
<div class="ttc" id="classarmnn_1_1_encoder_html_ae3b62b846a9c239f332830b9e36030eb"><div class="ttname"><a href="classarmnn_1_1_encoder.html#ae3b62b846a9c239f332830b9e36030eb">armnn::Encoder::Set</a></div><div class="ttdeci">virtual void Set(IType right)=0</div></div>
</div><!-- fragment -->
</div>
</div>
<a id="ad3d9cbf26cb5894fd6d9169dbe743417"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad3d9cbf26cb5894fd6d9169dbe743417">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[1/79]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
<td>(</td>
<td class="paramtype">CheckInputLayerVisitorBindingIdAndName&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_test_input_output_layer_visitor_8cpp_source.html#l00013">13</a> of file <a class="el" href="_test_input_output_layer_visitor_8cpp_source.html">TestInputOutputLayerVisitor.cpp</a>.</p>
<p class="reference">References <a class="el" href="classarmnn_1_1_i_connectable_layer.html#a8c9198a992b02e61a6777329d487dde3">IConnectableLayer::Accept()</a>, and <a class="el" href="_network_8cpp_source.html#l00953">Network::AddInputLayer()</a>.</p>
<div class="fragment"><div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;{</div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span>* layerName = <span class="stringliteral">&quot;InputLayer&quot;</span>;</div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160; TestInputLayerVisitor visitor(1, layerName);</div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160; Network net;</div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;</div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160; IConnectableLayer *<span class="keyword">const</span> layer = net.AddInputLayer(1, layerName);</div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160; layer-&gt;Accept(visitor);</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;}</div></div><!-- fragment -->
</div>
</div>
<a id="ac7ce83f024515592cffac13ae5220f1e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ac7ce83f024515592cffac13ae5220f1e">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[2/79]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
<td>(</td>
<td class="paramtype">CheckInputLayerVisitorBindingIdAndNameNull&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_test_input_output_layer_visitor_8cpp_source.html#l00023">23</a> of file <a class="el" href="_test_input_output_layer_visitor_8cpp_source.html">TestInputOutputLayerVisitor.cpp</a>.</p>
<p class="reference">References <a class="el" href="classarmnn_1_1_i_connectable_layer.html#a8c9198a992b02e61a6777329d487dde3">IConnectableLayer::Accept()</a>, and <a class="el" href="_network_8cpp_source.html#l00953">Network::AddInputLayer()</a>.</p>
<div class="fragment"><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;{</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; TestInputLayerVisitor visitor(1);</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; Network net;</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; IConnectableLayer *<span class="keyword">const</span> layer = net.AddInputLayer(1);</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; layer-&gt;Accept(visitor);</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;}</div></div><!-- fragment -->
</div>
</div>
<a id="ac28b0a4861e6eab3e7621a7ed4eb5f62"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ac28b0a4861e6eab3e7621a7ed4eb5f62">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[3/79]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
<td>(</td>
<td class="paramtype">CheckOutputLayerVisitorBindingIdAndName&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_test_input_output_layer_visitor_8cpp_source.html#l00032">32</a> of file <a class="el" href="_test_input_output_layer_visitor_8cpp_source.html">TestInputOutputLayerVisitor.cpp</a>.</p>
<p class="reference">References <a class="el" href="classarmnn_1_1_i_connectable_layer.html#a8c9198a992b02e61a6777329d487dde3">IConnectableLayer::Accept()</a>, and <a class="el" href="_network_8cpp_source.html#l01222">Network::AddOutputLayer()</a>.</p>
<div class="fragment"><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;{</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span>* layerName = <span class="stringliteral">&quot;OutputLayer&quot;</span>;</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; TestOutputLayerVisitor visitor(1, layerName);</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; Network net;</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; IConnectableLayer *<span class="keyword">const</span> layer = net.AddOutputLayer(1, layerName);</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; layer-&gt;Accept(visitor);</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;}</div></div><!-- fragment -->
</div>
</div>
<a id="a9a7475b081b431ffa9915aac51c2d338"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a9a7475b081b431ffa9915aac51c2d338">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[4/79]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
<td>(</td>
<td class="paramtype">CheckOutputLayerVisitorBindingIdAndNameNull&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_test_input_output_layer_visitor_8cpp_source.html#l00042">42</a> of file <a class="el" href="_test_input_output_layer_visitor_8cpp_source.html">TestInputOutputLayerVisitor.cpp</a>.</p>
<p class="reference">References <a class="el" href="classarmnn_1_1_i_connectable_layer.html#a8c9198a992b02e61a6777329d487dde3">IConnectableLayer::Accept()</a>, <a class="el" href="_network_8cpp_source.html#l01222">Network::AddOutputLayer()</a>, and <a class="el" href="_profiler_tests_8cpp.html#af7f71af5c6c124222dd1c42c5df892f4">BOOST_AUTO_TEST_SUITE_END()</a>.</p>
<div class="fragment"><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;{</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; TestOutputLayerVisitor visitor(1);</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; Network net;</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; IConnectableLayer *<span class="keyword">const</span> layer = net.AddOutputLayer(1);</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; layer-&gt;Accept(visitor);</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;}</div></div><!-- fragment -->
</div>
</div>
<a id="a10d15f3df1ab52b3b915a4be1dbf386b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a10d15f3df1ab52b3b915a4be1dbf386b">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[5/79]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
<td>(</td>
<td class="paramtype">CheckConvolution2dLayer&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_const_tensor_layer_visitor_8cpp_source.html#l00170">170</a> of file <a class="el" href="_const_tensor_layer_visitor_8cpp_source.html">ConstTensorLayerVisitor.cpp</a>.</p>
<p class="reference">References <a class="el" href="classarmnn_1_1_i_connectable_layer.html#a8c9198a992b02e61a6777329d487dde3">IConnectableLayer::Accept()</a>, <a class="el" href="_network_8cpp_source.html#l01051">Network::AddConvolution2dLayer()</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">Float32</a>, <a class="el" href="_descriptors_8hpp_source.html#l00440">Convolution2dDescriptor::m_DataLayout</a>, <a class="el" href="_descriptors_8hpp_source.html#l00428">Convolution2dDescriptor::m_PadBottom</a>, <a class="el" href="_descriptors_8hpp_source.html#l00422">Convolution2dDescriptor::m_PadLeft</a>, <a class="el" href="_descriptors_8hpp_source.html#l00424">Convolution2dDescriptor::m_PadRight</a>, <a class="el" href="_descriptors_8hpp_source.html#l00426">Convolution2dDescriptor::m_PadTop</a>, <a class="el" href="_descriptors_8hpp_source.html#l00430">Convolution2dDescriptor::m_StrideX</a>, <a class="el" href="_descriptors_8hpp_source.html#l00432">Convolution2dDescriptor::m_StrideY</a>, and <a class="el" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0ad066db54b89b0912e7e7c6da51e2da51">NHWC</a>.</p>
<p class="reference">Referenced by <a class="el" href="_permute_and_batch_to_space_as_depth_to_space_tests_8cpp_source.html#l00056">BOOST_AUTO_TEST_CASE()</a>, and <a class="el" href="_neon_end_to_end_tests_8cpp_source.html#l00545">QuantizeData()</a>.</p>
<div class="fragment"><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160;{</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; Convolution2dDescriptor descriptor;</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160; descriptor.m_PadLeft = 2;</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; descriptor.m_PadRight = 3;</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; descriptor.m_PadBottom = 1;</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; descriptor.m_PadTop = 5;</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160; descriptor.m_StrideX = 2;</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160; descriptor.m_StrideY = 3;</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160; descriptor.m_DataLayout = DataLayout::NHWC;</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160;</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160; std::vector&lt;float&gt; data = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160; std::vector&lt;unsigned int&gt; dimensions = {1, 1, 3, 3};</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; ConstTensor weights(TensorInfo(4, dimensions.data(), DataType::Float32), data);</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160;</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; TestConvolution2dLayerVisitor visitor(descriptor, weights, EmptyOptional());</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160;</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160; Network net;</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160;</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160; IConnectableLayer* <span class="keyword">const</span> layer = net.AddConvolution2dLayer(descriptor, weights, EmptyOptional());</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160; layer-&gt;Accept(visitor);</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160;}</div></div><!-- fragment -->
</div>
</div>
<a id="a62448ee306fc41cc7980c4b7eac3ebb6"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a62448ee306fc41cc7980c4b7eac3ebb6">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[6/79]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
<td>(</td>
<td class="paramtype">CheckNamedConvolution2dLayer&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_const_tensor_layer_visitor_8cpp_source.html#l00193">193</a> of file <a class="el" href="_const_tensor_layer_visitor_8cpp_source.html">ConstTensorLayerVisitor.cpp</a>.</p>
<p class="reference">References <a class="el" href="classarmnn_1_1_i_connectable_layer.html#a8c9198a992b02e61a6777329d487dde3">IConnectableLayer::Accept()</a>, <a class="el" href="_network_8cpp_source.html#l01051">Network::AddConvolution2dLayer()</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">Float32</a>, <a class="el" href="_descriptors_8hpp_source.html#l00440">Convolution2dDescriptor::m_DataLayout</a>, <a class="el" href="_descriptors_8hpp_source.html#l00428">Convolution2dDescriptor::m_PadBottom</a>, <a class="el" href="_descriptors_8hpp_source.html#l00422">Convolution2dDescriptor::m_PadLeft</a>, <a class="el" href="_descriptors_8hpp_source.html#l00424">Convolution2dDescriptor::m_PadRight</a>, <a class="el" href="_descriptors_8hpp_source.html#l00426">Convolution2dDescriptor::m_PadTop</a>, <a class="el" href="_descriptors_8hpp_source.html#l00430">Convolution2dDescriptor::m_StrideX</a>, <a class="el" href="_descriptors_8hpp_source.html#l00432">Convolution2dDescriptor::m_StrideY</a>, and <a class="el" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0ad066db54b89b0912e7e7c6da51e2da51">NHWC</a>.</p>
<div class="fragment"><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160;{</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span>* layerName = <span class="stringliteral">&quot;Convolution2dLayer&quot;</span>;</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; Convolution2dDescriptor descriptor;</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160; descriptor.m_PadLeft = 2;</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160; descriptor.m_PadRight = 3;</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160; descriptor.m_PadBottom = 1;</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160; descriptor.m_PadTop = 5;</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160; descriptor.m_StrideX = 2;</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160; descriptor.m_StrideY = 3;</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160; descriptor.m_DataLayout = DataLayout::NHWC;</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160;</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160; std::vector&lt;float&gt; data = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160; std::vector&lt;unsigned int&gt; dimensions = {1, 1, 3, 3};</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160; ConstTensor weights(TensorInfo(4, dimensions.data(), DataType::Float32), data);</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160;</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160; TestConvolution2dLayerVisitor visitor(descriptor, weights, EmptyOptional(), layerName);</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160;</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160; Network net;</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160;</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160; IConnectableLayer* <span class="keyword">const</span> layer = net.AddConvolution2dLayer(descriptor, weights, EmptyOptional(), layerName);</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160; layer-&gt;Accept(visitor);</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160;}</div></div><!-- fragment -->
</div>
</div>
<a id="a66e9fcc01969d6afa35dfaa212ded223"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a66e9fcc01969d6afa35dfaa212ded223">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[7/79]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
<td>(</td>
<td class="paramtype">CheckConvolution2dLayerWithBiases&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_const_tensor_layer_visitor_8cpp_source.html#l00217">217</a> of file <a class="el" href="_const_tensor_layer_visitor_8cpp_source.html">ConstTensorLayerVisitor.cpp</a>.</p>
<p class="reference">References <a class="el" href="classarmnn_1_1_i_connectable_layer.html#a8c9198a992b02e61a6777329d487dde3">IConnectableLayer::Accept()</a>, <a class="el" href="_network_8cpp_source.html#l01051">Network::AddConvolution2dLayer()</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">Float32</a>, <a class="el" href="_descriptors_8hpp_source.html#l00438">Convolution2dDescriptor::m_BiasEnabled</a>, <a class="el" href="_descriptors_8hpp_source.html#l00440">Convolution2dDescriptor::m_DataLayout</a>, <a class="el" href="_descriptors_8hpp_source.html#l00428">Convolution2dDescriptor::m_PadBottom</a>, <a class="el" href="_descriptors_8hpp_source.html#l00422">Convolution2dDescriptor::m_PadLeft</a>, <a class="el" href="_descriptors_8hpp_source.html#l00424">Convolution2dDescriptor::m_PadRight</a>, <a class="el" href="_descriptors_8hpp_source.html#l00426">Convolution2dDescriptor::m_PadTop</a>, <a class="el" href="_descriptors_8hpp_source.html#l00430">Convolution2dDescriptor::m_StrideX</a>, <a class="el" href="_descriptors_8hpp_source.html#l00432">Convolution2dDescriptor::m_StrideY</a>, and <a class="el" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0ad066db54b89b0912e7e7c6da51e2da51">NHWC</a>.</p>
<div class="fragment"><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160;{</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160; Convolution2dDescriptor descriptor;</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160; descriptor.m_PadLeft = 2;</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160; descriptor.m_PadRight = 3;</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160; descriptor.m_PadBottom = 1;</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160; descriptor.m_PadTop = 5;</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160; descriptor.m_StrideX = 2;</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160; descriptor.m_StrideY = 3;</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160; descriptor.m_DataLayout = DataLayout::NHWC;</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160; descriptor.m_BiasEnabled = <span class="keyword">true</span>;</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160;</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160; std::vector&lt;float&gt; data = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160; std::vector&lt;unsigned int&gt; dimensions = {1, 1, 3, 3};</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160; ConstTensor weights(TensorInfo(4, dimensions.data(), DataType::Float32), data);</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160;</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160; std::vector&lt;float&gt; biasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160; std::vector&lt;unsigned int&gt; biasDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160; ConstTensor biases(TensorInfo(4, biasDimensions.data(), DataType::Float32), biasData);</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160; Optional&lt;ConstTensor&gt; optionalBiases(biases);</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160;</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160; TestConvolution2dLayerVisitor visitor(descriptor, weights, optionalBiases);</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160;</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160; Network net;</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160;</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160; IConnectableLayer* <span class="keyword">const</span> layer = net.AddConvolution2dLayer(descriptor, weights, optionalBiases);</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160; layer-&gt;Accept(visitor);</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160;}</div></div><!-- fragment -->
</div>
</div>
<a id="a8baf97065d802063eb9bcdd1a066dc86"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a8baf97065d802063eb9bcdd1a066dc86">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[8/79]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
<td>(</td>
<td class="paramtype">QuantizeAddition&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_quantizer_test_8cpp_source.html#l00227">227</a> of file <a class="el" href="_quantizer_test_8cpp_source.html">QuantizerTest.cpp</a>.</p>
<p class="reference">References <a class="el" href="classarmnn_1_1_i_output_slot.html#ac1835f8756a9f03c02fcf9664e3a0fce">IOutputSlot::Connect()</a>, <a class="el" href="_network_quantizer_8cpp_source.html#l00040">INetworkQuantizer::Create()</a>, <a class="el" href="_network_8cpp_source.html#l00048">INetwork::Create()</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">Float32</a>, <a class="el" href="_quantizer_test_8cpp_source.html#l00035">g_AsymmS8QuantizationBase</a>, <a class="el" href="_quantizer_test_8cpp_source.html#l00033">g_AsymmU8QuantizationBase</a>, <a class="el" href="_quantizer_test_8cpp_source.html#l00037">g_SymmS16QuantizationBase</a>, <a class="el" href="_quantizer_test_8cpp_source.html#l00036">g_SymmS8QuantizationBase</a>, <a class="el" href="classarmnn_1_1_i_connectable_layer.html#a6ec9e0eb66d7d6a01240492a0b18104c">IConnectableLayer::GetInputSlot()</a>, <a class="el" href="classarmnn_1_1_i_connectable_layer.html#a80ac4eda2e7f2757ec9dd96fc96dbd16">IConnectableLayer::GetOutputSlot()</a>, <a class="el" href="classarmnn_1_1_i_output_slot.html#a9943775a364fc4ab53b85ac88f311886">IOutputSlot::GetTensorInfo()</a>, <a class="el" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>, <a class="el" href="_file_only_profiling_decorator_tests_8cpp_source.html#l00045">options</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a9d02ea768c081d4bdb2b7cab0b3f510d">QAsymmS8</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a0a3f57c876f5a230244c38e1453a8a6e">QAsymmU8</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7">QSymmS16</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a9945327825b115e93a3b89f4302e76db">QSymmS8</a>, <a class="el" href="classarmnn_1_1_i_output_slot.html#a5ee4a6c9a2481245487b1b1a70d20fd0">IOutputSlot::SetTensorInfo()</a>, and <a class="el" href="_quantizer_test_8cpp_source.html#l00193">VisitLayersTopologically()</a>.</p>
<div class="fragment"><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160;{</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> network = INetwork::Create();</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160;</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160; <span class="comment">// Add the layers</span></div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160; IConnectableLayer* input0 = network-&gt;AddInputLayer(0);</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160; IConnectableLayer* input1 = network-&gt;AddInputLayer(1);</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160; IConnectableLayer* addition = network-&gt;AddAdditionLayer();</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160; IConnectableLayer* output = network-&gt;AddOutputLayer(2);</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160;</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160; <span class="comment">// Establish connections</span></div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160; input0-&gt;GetOutputSlot(0).Connect(addition-&gt;GetInputSlot(0));</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160; input1-&gt;GetOutputSlot(0).Connect(addition-&gt;GetInputSlot(1));</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160; addition-&gt;GetOutputSlot(0).Connect(output-&gt;GetInputSlot(0));</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160;</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160; <span class="comment">// Set TensorInfo</span></div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160; <span class="keyword">const</span> TensorShape shape{1U};</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160; TensorInfo <a class="code" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>(shape, DataType::Float32);</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160; input0-&gt;GetOutputSlot(0).SetTensorInfo(info);</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160; input1-&gt;GetOutputSlot(0).SetTensorInfo(info);</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160; addition-&gt;GetOutputSlot(0).SetTensorInfo(info);</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160;</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160; <span class="keyword">const</span> QuantizerOptions qAsymmU8Options(DataType::QAsymmU8);</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQAsymmU8 = INetworkQuantizer::Create(network.get(), qAsymmU8Options)-&gt;ExportNetwork();</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160; TestAdditionQuantization validatorQAsymmU8(shape, shape);</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQAsymmU8.get(), validatorQAsymmU8);</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160;</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160; <span class="keyword">const</span> QuantizerOptions qAsymmS8Options(DataType::QAsymmS8);</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQAsymmS8 = INetworkQuantizer::Create(network.get(), qAsymmS8Options)-&gt;ExportNetwork();</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160; TestAdditionQuantization validatorQAsymmS8(qAsymmS8Options, shape, shape);</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQAsymmS8.get(), validatorQAsymmS8);</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160;</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160; <span class="keyword">const</span> QuantizerOptions qSymmS8Options(DataType::QSymmS8);</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQSymmS8 = INetworkQuantizer::Create(network.get(), qSymmS8Options)-&gt;ExportNetwork();</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160; TestAdditionQuantization validatorQSymmS8(qSymmS8Options, shape, shape);</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQSymmS8.get(), validatorQSymmS8);</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160;</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160; <span class="keyword">const</span> QuantizerOptions qSymmS16options(DataType::QSymmS16);</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQSymmS16 = INetworkQuantizer::Create(network.get(), qSymmS16options)-&gt;ExportNetwork();</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160; TestAdditionQuantization validatorQSymmS16(qSymmS16options, shape, shape);</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQSymmS16.get(), validatorQSymmS16);</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c"><div class="ttname"><a href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">armnn::BoostLogSeverityMapping::info</a></div></div>
<div class="ttc" id="namespacearmnn_html_a6482907b4c57873e197324f5cb66fd4d"><div class="ttname"><a href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">armnn::VisitLayersTopologically</a></div><div class="ttdeci">void VisitLayersTopologically(const INetwork *inputNetwork, ILayerVisitor &amp;visitor)</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l00193">QuantizerTest.cpp:193</a></div></div>
<div class="ttc" id="namespacearmnn_html_ace74f6f9feb95a964a49d79458232703"><div class="ttname"><a href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">armnn::INetworkPtr</a></div><div class="ttdeci">std::unique_ptr&lt; INetwork, void(*)(INetwork *network)&gt; INetworkPtr</div><div class="ttdef"><b>Definition:</b> <a href="_i_network_8hpp_source.html#l00085">INetwork.hpp:85</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a154c5a01df05412929d89e06fc4d0d6d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a154c5a01df05412929d89e06fc4d0d6d">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[9/79]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
<td>(</td>
<td class="paramtype">CheckNamedConvolution2dLayerWithBiases&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_const_tensor_layer_visitor_8cpp_source.html#l00246">246</a> of file <a class="el" href="_const_tensor_layer_visitor_8cpp_source.html">ConstTensorLayerVisitor.cpp</a>.</p>
<p class="reference">References <a class="el" href="classarmnn_1_1_i_connectable_layer.html#a8c9198a992b02e61a6777329d487dde3">IConnectableLayer::Accept()</a>, <a class="el" href="_network_8cpp_source.html#l01051">Network::AddConvolution2dLayer()</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">Float32</a>, <a class="el" href="_descriptors_8hpp_source.html#l00438">Convolution2dDescriptor::m_BiasEnabled</a>, <a class="el" href="_descriptors_8hpp_source.html#l00440">Convolution2dDescriptor::m_DataLayout</a>, <a class="el" href="_descriptors_8hpp_source.html#l00428">Convolution2dDescriptor::m_PadBottom</a>, <a class="el" href="_descriptors_8hpp_source.html#l00422">Convolution2dDescriptor::m_PadLeft</a>, <a class="el" href="_descriptors_8hpp_source.html#l00424">Convolution2dDescriptor::m_PadRight</a>, <a class="el" href="_descriptors_8hpp_source.html#l00426">Convolution2dDescriptor::m_PadTop</a>, <a class="el" href="_descriptors_8hpp_source.html#l00430">Convolution2dDescriptor::m_StrideX</a>, <a class="el" href="_descriptors_8hpp_source.html#l00432">Convolution2dDescriptor::m_StrideY</a>, and <a class="el" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0ad066db54b89b0912e7e7c6da51e2da51">NHWC</a>.</p>
<div class="fragment"><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160;{</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span>* layerName = <span class="stringliteral">&quot;Convolution2dLayer&quot;</span>;</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160; Convolution2dDescriptor descriptor;</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160; descriptor.m_PadLeft = 2;</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160; descriptor.m_PadRight = 3;</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160; descriptor.m_PadBottom = 1;</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160; descriptor.m_PadTop = 5;</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160; descriptor.m_StrideX = 2;</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160; descriptor.m_StrideY = 3;</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160; descriptor.m_DataLayout = DataLayout::NHWC;</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160; descriptor.m_BiasEnabled = <span class="keyword">true</span>;</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160;</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160; std::vector&lt;float&gt; data = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160; std::vector&lt;unsigned int&gt; dimensions = {1, 1, 3, 3};</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160; ConstTensor weights(TensorInfo(4, dimensions.data(), DataType::Float32), data);</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160;</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160; std::vector&lt;float&gt; biasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160; std::vector&lt;unsigned int&gt; biasDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160; ConstTensor biases(TensorInfo(4, biasDimensions.data(), DataType::Float32), biasData);</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160; Optional&lt;ConstTensor&gt; optionalBiases(biases);</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160;</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160; TestConvolution2dLayerVisitor visitor(descriptor, weights, optionalBiases, layerName);</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160;</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160; Network net;</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160;</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160; IConnectableLayer* <span class="keyword">const</span> layer = net.AddConvolution2dLayer(descriptor, weights, optionalBiases, layerName);</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160; layer-&gt;Accept(visitor);</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160;}</div></div><!-- fragment -->
</div>
</div>
<a id="a6eadb1671955b1bf7cdd8b29fd34aa33"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a6eadb1671955b1bf7cdd8b29fd34aa33">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[10/79]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
<td>(</td>
<td class="paramtype">CheckDepthwiseConvolution2dLayer&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_const_tensor_layer_visitor_8cpp_source.html#l00276">276</a> of file <a class="el" href="_const_tensor_layer_visitor_8cpp_source.html">ConstTensorLayerVisitor.cpp</a>.</p>
<p class="reference">References <a class="el" href="classarmnn_1_1_i_connectable_layer.html#a8c9198a992b02e61a6777329d487dde3">IConnectableLayer::Accept()</a>, <a class="el" href="_network_8cpp_source.html#l01105">Network::AddDepthwiseConvolution2dLayer()</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">Float32</a>, <a class="el" href="_descriptors_8hpp_source.html#l00492">DepthwiseConvolution2dDescriptor::m_DataLayout</a>, <a class="el" href="_descriptors_8hpp_source.html#l00480">DepthwiseConvolution2dDescriptor::m_PadBottom</a>, <a class="el" href="_descriptors_8hpp_source.html#l00474">DepthwiseConvolution2dDescriptor::m_PadLeft</a>, <a class="el" href="_descriptors_8hpp_source.html#l00476">DepthwiseConvolution2dDescriptor::m_PadRight</a>, <a class="el" href="_descriptors_8hpp_source.html#l00478">DepthwiseConvolution2dDescriptor::m_PadTop</a>, <a class="el" href="_descriptors_8hpp_source.html#l00482">DepthwiseConvolution2dDescriptor::m_StrideX</a>, <a class="el" href="_descriptors_8hpp_source.html#l00484">DepthwiseConvolution2dDescriptor::m_StrideY</a>, and <a class="el" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0ad066db54b89b0912e7e7c6da51e2da51">NHWC</a>.</p>
<div class="fragment"><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160;{</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160; DepthwiseConvolution2dDescriptor descriptor;</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160; descriptor.m_PadLeft = 2;</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160; descriptor.m_PadRight = 3;</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160; descriptor.m_PadBottom = 1;</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160; descriptor.m_PadTop = 5;</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160; descriptor.m_StrideX = 2;</div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160; descriptor.m_StrideY = 3;</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160; descriptor.m_DataLayout = DataLayout::NHWC;</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160;</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160; std::vector&lt;float&gt; data = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160; std::vector&lt;unsigned int&gt; dimensions = {1, 1, 3, 3};</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160; ConstTensor weights(TensorInfo(4, dimensions.data(), DataType::Float32), data);</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160;</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160; TestDepthwiseConvolution2dLayerVisitor visitor(descriptor, weights, EmptyOptional());</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160;</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160; Network net;</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160;</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160; IConnectableLayer* <span class="keyword">const</span> layer = net.AddDepthwiseConvolution2dLayer(descriptor, weights, EmptyOptional());</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160; layer-&gt;Accept(visitor);</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160;}</div></div><!-- fragment -->
</div>
</div>
<a id="ac36bd2336c0e3caefecde40bc07e2bf3"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ac36bd2336c0e3caefecde40bc07e2bf3">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[11/79]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
<td>(</td>
<td class="paramtype">CheckNamedDepthwiseConvolution2dLayer&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_const_tensor_layer_visitor_8cpp_source.html#l00299">299</a> of file <a class="el" href="_const_tensor_layer_visitor_8cpp_source.html">ConstTensorLayerVisitor.cpp</a>.</p>
<p class="reference">References <a class="el" href="classarmnn_1_1_i_connectable_layer.html#a8c9198a992b02e61a6777329d487dde3">IConnectableLayer::Accept()</a>, <a class="el" href="_network_8cpp_source.html#l01105">Network::AddDepthwiseConvolution2dLayer()</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">Float32</a>, <a class="el" href="_descriptors_8hpp_source.html#l00492">DepthwiseConvolution2dDescriptor::m_DataLayout</a>, <a class="el" href="_descriptors_8hpp_source.html#l00480">DepthwiseConvolution2dDescriptor::m_PadBottom</a>, <a class="el" href="_descriptors_8hpp_source.html#l00474">DepthwiseConvolution2dDescriptor::m_PadLeft</a>, <a class="el" href="_descriptors_8hpp_source.html#l00476">DepthwiseConvolution2dDescriptor::m_PadRight</a>, <a class="el" href="_descriptors_8hpp_source.html#l00478">DepthwiseConvolution2dDescriptor::m_PadTop</a>, <a class="el" href="_descriptors_8hpp_source.html#l00482">DepthwiseConvolution2dDescriptor::m_StrideX</a>, <a class="el" href="_descriptors_8hpp_source.html#l00484">DepthwiseConvolution2dDescriptor::m_StrideY</a>, and <a class="el" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0ad066db54b89b0912e7e7c6da51e2da51">NHWC</a>.</p>
<div class="fragment"><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160;{</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span>* layerName = <span class="stringliteral">&quot;DepthwiseConvolution2dLayer&quot;</span>;</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160; DepthwiseConvolution2dDescriptor descriptor;</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160; descriptor.m_PadLeft = 2;</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160; descriptor.m_PadRight = 3;</div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160; descriptor.m_PadBottom = 1;</div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160; descriptor.m_PadTop = 5;</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160; descriptor.m_StrideX = 2;</div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160; descriptor.m_StrideY = 3;</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160; descriptor.m_DataLayout = DataLayout::NHWC;</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160;</div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160; std::vector&lt;float&gt; data = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160; std::vector&lt;unsigned int&gt; dimensions = {1, 1, 3, 3};</div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160; ConstTensor weights(TensorInfo(4, dimensions.data(), DataType::Float32), data);</div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160;</div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>&#160; TestDepthwiseConvolution2dLayerVisitor visitor(descriptor, weights, EmptyOptional(), layerName);</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160;</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>&#160; Network net;</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160;</div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160; IConnectableLayer* <span class="keyword">const</span> layer = net.AddDepthwiseConvolution2dLayer(descriptor,</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160; weights,</div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span>&#160; EmptyOptional(),</div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>&#160; layerName);</div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160; layer-&gt;Accept(visitor);</div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>&#160;}</div></div><!-- fragment -->
</div>
</div>
<a id="a14bcc6125921389dceb27e432bc7a489"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a14bcc6125921389dceb27e432bc7a489">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[12/79]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
<td>(</td>
<td class="paramtype">CheckDepthwiseConvolution2dLayerWithBiases&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_const_tensor_layer_visitor_8cpp_source.html#l00326">326</a> of file <a class="el" href="_const_tensor_layer_visitor_8cpp_source.html">ConstTensorLayerVisitor.cpp</a>.</p>
<p class="reference">References <a class="el" href="classarmnn_1_1_i_connectable_layer.html#a8c9198a992b02e61a6777329d487dde3">IConnectableLayer::Accept()</a>, <a class="el" href="_network_8cpp_source.html#l01105">Network::AddDepthwiseConvolution2dLayer()</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">Float32</a>, <a class="el" href="_descriptors_8hpp_source.html#l00490">DepthwiseConvolution2dDescriptor::m_BiasEnabled</a>, <a class="el" href="_descriptors_8hpp_source.html#l00492">DepthwiseConvolution2dDescriptor::m_DataLayout</a>, <a class="el" href="_descriptors_8hpp_source.html#l00480">DepthwiseConvolution2dDescriptor::m_PadBottom</a>, <a class="el" href="_descriptors_8hpp_source.html#l00474">DepthwiseConvolution2dDescriptor::m_PadLeft</a>, <a class="el" href="_descriptors_8hpp_source.html#l00476">DepthwiseConvolution2dDescriptor::m_PadRight</a>, <a class="el" href="_descriptors_8hpp_source.html#l00478">DepthwiseConvolution2dDescriptor::m_PadTop</a>, <a class="el" href="_descriptors_8hpp_source.html#l00482">DepthwiseConvolution2dDescriptor::m_StrideX</a>, <a class="el" href="_descriptors_8hpp_source.html#l00484">DepthwiseConvolution2dDescriptor::m_StrideY</a>, and <a class="el" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0ad066db54b89b0912e7e7c6da51e2da51">NHWC</a>.</p>
<div class="fragment"><div class="line"><a name="l00327"></a><span class="lineno"> 327</span>&#160;{</div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span>&#160; DepthwiseConvolution2dDescriptor descriptor;</div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span>&#160; descriptor.m_PadLeft = 2;</div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span>&#160; descriptor.m_PadRight = 3;</div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span>&#160; descriptor.m_PadBottom = 1;</div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span>&#160; descriptor.m_PadTop = 5;</div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span>&#160; descriptor.m_StrideX = 2;</div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span>&#160; descriptor.m_StrideY = 3;</div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span>&#160; descriptor.m_DataLayout = DataLayout::NHWC;</div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span>&#160; descriptor.m_BiasEnabled = <span class="keyword">true</span>;</div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>&#160;</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>&#160; std::vector&lt;float&gt; data = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>&#160; std::vector&lt;unsigned int&gt; dimensions = {1, 1, 3, 3};</div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>&#160; ConstTensor weights(TensorInfo(4, dimensions.data(), DataType::Float32), data);</div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span>&#160;</div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span>&#160; std::vector&lt;float&gt; biasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span>&#160; std::vector&lt;unsigned int&gt; biasDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span>&#160; ConstTensor biases(TensorInfo(4, biasDimensions.data(), DataType::Float32), biasData);</div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span>&#160; Optional&lt;ConstTensor&gt; optionalBiases(biases);</div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span>&#160;</div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span>&#160; TestDepthwiseConvolution2dLayerVisitor visitor(descriptor, weights, optionalBiases);</div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span>&#160;</div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span>&#160; Network net;</div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span>&#160;</div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span>&#160; IConnectableLayer* <span class="keyword">const</span> layer = net.AddDepthwiseConvolution2dLayer(descriptor, weights, optionalBiases);</div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>&#160; layer-&gt;Accept(visitor);</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160;}</div></div><!-- fragment -->
</div>
</div>
<a id="a9cec088786b209989fe9e04e1be9636d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a9cec088786b209989fe9e04e1be9636d">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[13/79]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
<td>(</td>
<td class="paramtype">InputOutputLayerDynamicQuant&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_quantizer_test_8cpp_source.html#l00347">347</a> of file <a class="el" href="_quantizer_test_8cpp_source.html">QuantizerTest.cpp</a>.</p>
<p class="reference">References <a class="el" href="_file_only_profiling_decorator_tests_8cpp.html#a0c262ba6f6c189a2d092d127c1b7627b">BOOST_CHECK()</a>, <a class="el" href="_network_quantizer_8cpp_source.html#l00040">INetworkQuantizer::Create()</a>, <a class="el" href="_quantizer_test_8cpp_source.html#l00318">CreateNetworkWithInputOutputLayers()</a>, <a class="el" href="classarmnn_1_1_i_input_slot.html#a81fbf6103761e55061b62ba989b00f10">IInputSlot::GetConnection()</a>, <a class="el" href="_tensor_8hpp_source.html#l00095">TensorInfo::GetDataType()</a>, <a class="el" href="_types_utils_8hpp_source.html#l00165">GetDataTypeName()</a>, <a class="el" href="classarmnn_1_1_i_connectable_layer.html#a6ec9e0eb66d7d6a01240492a0b18104c">IConnectableLayer::GetInputSlot()</a>, <a class="el" href="_quantizer_test_8cpp_source.html#l00337">GetInputTensorInfo()</a>, <a class="el" href="_tensor_8cpp_source.html#l00264">TensorInfo::GetQuantizationOffset()</a>, <a class="el" href="_tensor_8cpp_source.html#l00247">TensorInfo::GetQuantizationScale()</a>, <a class="el" href="classarmnn_1_1_i_output_slot.html#a9943775a364fc4ab53b85ac88f311886">IOutputSlot::GetTensorInfo()</a>, and <a class="el" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>.</p>
<div class="fragment"><div class="line"><a name="l00348"></a><span class="lineno"> 348</span>&#160;{</div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> network = <a class="code" href="namespacearmnn.html#aa9c6c1a7b5380a99a536f4740f87dd59">CreateNetworkWithInputOutputLayers</a>();</div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span>&#160;</div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span>&#160; <a class="code" href="classarmnn_1_1_tensor_info.html">armnn::TensorInfo</a> tensorInfo = <a class="code" href="namespacearmnn.html#ae52296dff1f4879854f320d59f92574e">GetInputTensorInfo</a>(boost::polymorphic_downcast&lt;const Network*&gt;(network.get()));</div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>&#160;</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160; <span class="comment">// Outliers -56 and 98</span></div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span>&#160; std::vector&lt;float&gt; inputData({0, 0, 0, -56, 98, 0, 0, 0});</div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span>&#160; <a class="code" href="classarmnn_1_1_const_tensor.html">armnn::ConstTensor</a> inputTensor(tensorInfo, inputData.data());</div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span>&#160;</div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span>&#160; <a class="code" href="namespacearmnn.html#aa01bce88f89975a5a031db4cc8861527">InputTensors</a> inputTensors;</div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span>&#160; inputTensors.push_back(std::make_pair(0, inputTensor));</div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span>&#160;</div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span>&#160; <a class="code" href="namespacearmnn.html#a41119e261eec9343888d2ceab1e4999a">armnn::INetworkQuantizerPtr</a> quantizer = <a class="code" href="classarmnn_1_1_i_network_quantizer.html#a3a4d01d9351c02a703740290f226441f">armnn::INetworkQuantizer::Create</a>(network.get());</div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span>&#160;</div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span>&#160; quantizer-&gt;Refine(inputTensors);</div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span>&#160;</div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span>&#160; <span class="comment">// Outliers -77 and 65</span></div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span>&#160; std::vector&lt;float&gt; inputData2({0, -77, 0, -56, 65, 0, 0, 0});</div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span>&#160; <a class="code" href="classarmnn_1_1_const_tensor.html">armnn::ConstTensor</a> inputTensor2(tensorInfo, inputData2.data());</div><div class="line"><a name="l00367"></a><span class="lineno"> 367</span>&#160; <a class="code" href="namespacearmnn.html#aa01bce88f89975a5a031db4cc8861527">InputTensors</a> inputTensors2;</div><div class="line"><a name="l00368"></a><span class="lineno"> 368</span>&#160; inputTensors2.push_back(std::make_pair(0, inputTensor2));</div><div class="line"><a name="l00369"></a><span class="lineno"> 369</span>&#160;</div><div class="line"><a name="l00370"></a><span class="lineno"> 370</span>&#160; quantizer-&gt;Refine(inputTensors2);</div><div class="line"><a name="l00371"></a><span class="lineno"> 371</span>&#160;</div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetwork = quantizer-&gt;ExportNetwork();</div><div class="line"><a name="l00373"></a><span class="lineno"> 373</span>&#160; <span class="comment">// Output Layer should be quantized for a min max of -77 and 98</span></div><div class="line"><a name="l00374"></a><span class="lineno"> 374</span>&#160; <span class="comment">// according to QU8 Quantization Scheme</span></div><div class="line"><a name="l00375"></a><span class="lineno"> 375</span>&#160; std::unique_ptr&lt;IQuantizationScheme&gt; quantizationScheme = std::make_unique&lt;QAsymmU8QuantizationScheme&gt;();</div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span>&#160; <a class="code" href="namespacearmnn.html#a9b8e5a95f8c061bbbcdb036915dcb61a">OffsetScalePair</a> qParams = quantizationScheme-&gt;ComputeScheme(-77.0, 98.0);</div><div class="line"><a name="l00377"></a><span class="lineno"> 377</span>&#160;</div><div class="line"><a name="l00378"></a><span class="lineno"> 378</span>&#160; <span class="keyword">class </span>TestOutputLayerVisitor : <span class="keyword">public</span> LayerVisitorBase&lt;VisitorNoThrowPolicy&gt;</div><div class="line"><a name="l00379"></a><span class="lineno"> 379</span>&#160; {</div><div class="line"><a name="l00380"></a><span class="lineno"> 380</span>&#160; <span class="keyword">public</span>:</div><div class="line"><a name="l00381"></a><span class="lineno"> 381</span>&#160; TestOutputLayerVisitor(<span class="keyword">const</span> <a class="code" href="namespacearmnn.html#a9b8e5a95f8c061bbbcdb036915dcb61a">OffsetScalePair</a>&amp; offsetScalePair, <span class="keyword">const</span> <a class="code" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a>&amp; dataType) :</div><div class="line"><a name="l00382"></a><span class="lineno"> 382</span>&#160; m_OffsetScalePair(offsetScalePair), m_DataType(dataType) {}</div><div class="line"><a name="l00383"></a><span class="lineno"> 383</span>&#160;</div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span>&#160; <span class="keywordtype">void</span> VisitOutputLayer(<span class="keyword">const</span> IConnectableLayer* layer,</div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span>&#160; <a class="code" href="namespacearmnn.html#ab8cf8f9fb6792e654c2d8d8382f6f01b">LayerBindingId</a> <span class="keywordtype">id</span>,</div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span>* name = <span class="keyword">nullptr</span>)<span class="keyword"> override</span></div><div class="line"><a name="l00387"></a><span class="lineno"> 387</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00388"></a><span class="lineno"> 388</span>&#160; boost::ignore_unused(<span class="keywordtype">id</span>, name);</div><div class="line"><a name="l00389"></a><span class="lineno"> 389</span>&#160; <span class="keyword">const</span> TensorInfo&amp; <a class="code" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a> = layer-&gt;GetInputSlot(0).GetConnection()-&gt;GetTensorInfo();</div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span>&#160; BOOST_CHECK_MESSAGE(info.GetDataType() == m_DataType,</div><div class="line"><a name="l00391"></a><span class="lineno"> 391</span>&#160; std::string(<a class="code" href="namespacearmnn.html#a81b5ff8545adad19a1c9d4ca076d552c">armnn::GetDataTypeName</a>(info.GetDataType()))</div><div class="line"><a name="l00392"></a><span class="lineno"> 392</span>&#160; .append(<span class="stringliteral">&quot; == &quot;</span>).append(<a class="code" href="namespacearmnn.html#a81b5ff8545adad19a1c9d4ca076d552c">armnn::GetDataTypeName</a>(m_DataType)));</div><div class="line"><a name="l00393"></a><span class="lineno"> 393</span>&#160; <span class="comment">// int_32t</span></div><div class="line"><a name="l00394"></a><span class="lineno"> 394</span>&#160; <a class="code" href="_file_only_profiling_decorator_tests_8cpp.html#a0c262ba6f6c189a2d092d127c1b7627b">BOOST_CHECK</a>(info.GetQuantizationOffset() == m_OffsetScalePair.second);</div><div class="line"><a name="l00395"></a><span class="lineno"> 395</span>&#160; <span class="comment">// float</span></div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span>&#160; BOOST_TEST(info.GetQuantizationScale() == m_OffsetScalePair.first, boost::test_tools::tolerance(0.001));</div><div class="line"><a name="l00397"></a><span class="lineno"> 397</span>&#160; }</div><div class="line"><a name="l00398"></a><span class="lineno"> 398</span>&#160;</div><div class="line"><a name="l00399"></a><span class="lineno"> 399</span>&#160; <span class="keyword">private</span>:</div><div class="line"><a name="l00400"></a><span class="lineno"> 400</span>&#160; <span class="keyword">const</span> <a class="code" href="namespacearmnn.html#a9b8e5a95f8c061bbbcdb036915dcb61a">OffsetScalePair</a> m_OffsetScalePair;</div><div class="line"><a name="l00401"></a><span class="lineno"> 401</span>&#160; <span class="keyword">const</span> <a class="code" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a> m_DataType;</div><div class="line"><a name="l00402"></a><span class="lineno"> 402</span>&#160; };</div><div class="line"><a name="l00403"></a><span class="lineno"> 403</span>&#160;</div><div class="line"><a name="l00404"></a><span class="lineno"> 404</span>&#160; TestOutputLayerVisitor visitor(qParams, quantizationScheme-&gt;GetDataType());</div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span>&#160; quantizedNetwork-&gt;Accept(visitor);</div><div class="line"><a name="l00406"></a><span class="lineno"> 406</span>&#160;}</div><div class="ttc" id="classarmnn_1_1_const_tensor_html"><div class="ttname"><a href="classarmnn_1_1_const_tensor.html">armnn::ConstTensor</a></div><div class="ttdoc">A tensor defined by a TensorInfo (shape and data type) and an immutable backing store. </div><div class="ttdef"><b>Definition:</b> <a href="_tensor_8hpp_source.html#l00199">Tensor.hpp:199</a></div></div>
<div class="ttc" id="namespacearmnn_html_a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c"><div class="ttname"><a href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">armnn::BoostLogSeverityMapping::info</a></div></div>
<div class="ttc" id="namespacearmnn_html_ae52296dff1f4879854f320d59f92574e"><div class="ttname"><a href="namespacearmnn.html#ae52296dff1f4879854f320d59f92574e">armnn::GetInputTensorInfo</a></div><div class="ttdeci">TensorInfo GetInputTensorInfo(const Network *network)</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l00337">QuantizerTest.cpp:337</a></div></div>
<div class="ttc" id="classarmnn_1_1_tensor_info_html"><div class="ttname"><a href="classarmnn_1_1_tensor_info.html">armnn::TensorInfo</a></div><div class="ttdef"><b>Definition:</b> <a href="_tensor_8hpp_source.html#l00053">Tensor.hpp:53</a></div></div>
<div class="ttc" id="namespacearmnn_html_a41119e261eec9343888d2ceab1e4999a"><div class="ttname"><a href="namespacearmnn.html#a41119e261eec9343888d2ceab1e4999a">armnn::INetworkQuantizerPtr</a></div><div class="ttdeci">std::unique_ptr&lt; class INetworkQuantizer, void(*)(INetworkQuantizer *quantizer)&gt; INetworkQuantizerPtr</div><div class="ttdef"><b>Definition:</b> <a href="_i_network_quantizer_8hpp_source.html#l00029">INetworkQuantizer.hpp:29</a></div></div>
<div class="ttc" id="namespacearmnn_html_aa01bce88f89975a5a031db4cc8861527"><div class="ttname"><a href="namespacearmnn.html#aa01bce88f89975a5a031db4cc8861527">armnn::InputTensors</a></div><div class="ttdeci">std::vector&lt; std::pair&lt; LayerBindingId, class ConstTensor &gt; &gt; InputTensors</div><div class="ttdef"><b>Definition:</b> <a href="_tensor_8hpp_source.html#l00225">Tensor.hpp:225</a></div></div>
<div class="ttc" id="namespacearmnn_html_aa9c6c1a7b5380a99a536f4740f87dd59"><div class="ttname"><a href="namespacearmnn.html#aa9c6c1a7b5380a99a536f4740f87dd59">armnn::CreateNetworkWithInputOutputLayers</a></div><div class="ttdeci">INetworkPtr CreateNetworkWithInputOutputLayers()</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l00318">QuantizerTest.cpp:318</a></div></div>
<div class="ttc" id="_file_only_profiling_decorator_tests_8cpp_html_a0c262ba6f6c189a2d092d127c1b7627b"><div class="ttname"><a href="_file_only_profiling_decorator_tests_8cpp.html#a0c262ba6f6c189a2d092d127c1b7627b">BOOST_CHECK</a></div><div class="ttdeci">BOOST_CHECK(profilingService.GetCurrentState()==ProfilingState::WaitingForAck)</div></div>
<div class="ttc" id="namespacearmnn_html_ace74f6f9feb95a964a49d79458232703"><div class="ttname"><a href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">armnn::INetworkPtr</a></div><div class="ttdeci">std::unique_ptr&lt; INetwork, void(*)(INetwork *network)&gt; INetworkPtr</div><div class="ttdef"><b>Definition:</b> <a href="_i_network_8hpp_source.html#l00085">INetwork.hpp:85</a></div></div>
<div class="ttc" id="namespacearmnn_html_ad8ed01ff3ff33333d8e19db4d2818bb6"><div class="ttname"><a href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6">armnn::DataType</a></div><div class="ttdeci">DataType</div><div class="ttdef"><b>Definition:</b> <a href="_types_8hpp_source.html#l00032">Types.hpp:32</a></div></div>
<div class="ttc" id="classarmnn_1_1_i_network_quantizer_html_a3a4d01d9351c02a703740290f226441f"><div class="ttname"><a href="classarmnn_1_1_i_network_quantizer.html#a3a4d01d9351c02a703740290f226441f">armnn::INetworkQuantizer::Create</a></div><div class="ttdeci">static INetworkQuantizerPtr Create(INetwork *inputNetwork, const QuantizerOptions &amp;options=QuantizerOptions())</div><div class="ttdoc">Create Quantizer object wrapped in unique_ptr. </div><div class="ttdef"><b>Definition:</b> <a href="_network_quantizer_8cpp_source.html#l00040">NetworkQuantizer.cpp:40</a></div></div>
<div class="ttc" id="namespacearmnn_html_a9b8e5a95f8c061bbbcdb036915dcb61a"><div class="ttname"><a href="namespacearmnn.html#a9b8e5a95f8c061bbbcdb036915dcb61a">armnn::OffsetScalePair</a></div><div class="ttdeci">std::pair&lt; float, int &gt; OffsetScalePair</div><div class="ttdef"><b>Definition:</b> <a href="_network_quantization_scheme_8hpp_source.html#l00016">NetworkQuantizationScheme.hpp:16</a></div></div>
<div class="ttc" id="namespacearmnn_html_ab8cf8f9fb6792e654c2d8d8382f6f01b"><div class="ttname"><a href="namespacearmnn.html#ab8cf8f9fb6792e654c2d8d8382f6f01b">armnn::LayerBindingId</a></div><div class="ttdeci">int LayerBindingId</div><div class="ttdoc">Type of identifiers for bindable layers (inputs, outputs). </div><div class="ttdef"><b>Definition:</b> <a href="_types_8hpp_source.html#l00168">Types.hpp:168</a></div></div>
<div class="ttc" id="namespacearmnn_html_a81b5ff8545adad19a1c9d4ca076d552c"><div class="ttname"><a href="namespacearmnn.html#a81b5ff8545adad19a1c9d4ca076d552c">armnn::GetDataTypeName</a></div><div class="ttdeci">constexpr const char * GetDataTypeName(DataType dataType)</div><div class="ttdef"><b>Definition:</b> <a href="_types_utils_8hpp_source.html#l00165">TypesUtils.hpp:165</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="aaeafd5f3786a0bd215468714c1e743b1"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aaeafd5f3786a0bd215468714c1e743b1">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[14/79]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
<td>(</td>
<td class="paramtype">CheckNamedDepthwiseConvolution2dLayerWithBiases&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_const_tensor_layer_visitor_8cpp_source.html#l00355">355</a> of file <a class="el" href="_const_tensor_layer_visitor_8cpp_source.html">ConstTensorLayerVisitor.cpp</a>.</p>
<p class="reference">References <a class="el" href="classarmnn_1_1_i_connectable_layer.html#a8c9198a992b02e61a6777329d487dde3">IConnectableLayer::Accept()</a>, <a class="el" href="_network_8cpp_source.html#l01105">Network::AddDepthwiseConvolution2dLayer()</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">Float32</a>, <a class="el" href="_descriptors_8hpp_source.html#l00490">DepthwiseConvolution2dDescriptor::m_BiasEnabled</a>, <a class="el" href="_descriptors_8hpp_source.html#l00492">DepthwiseConvolution2dDescriptor::m_DataLayout</a>, <a class="el" href="_descriptors_8hpp_source.html#l00480">DepthwiseConvolution2dDescriptor::m_PadBottom</a>, <a class="el" href="_descriptors_8hpp_source.html#l00474">DepthwiseConvolution2dDescriptor::m_PadLeft</a>, <a class="el" href="_descriptors_8hpp_source.html#l00476">DepthwiseConvolution2dDescriptor::m_PadRight</a>, <a class="el" href="_descriptors_8hpp_source.html#l00478">DepthwiseConvolution2dDescriptor::m_PadTop</a>, <a class="el" href="_descriptors_8hpp_source.html#l00482">DepthwiseConvolution2dDescriptor::m_StrideX</a>, <a class="el" href="_descriptors_8hpp_source.html#l00484">DepthwiseConvolution2dDescriptor::m_StrideY</a>, and <a class="el" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0ad066db54b89b0912e7e7c6da51e2da51">NHWC</a>.</p>
<div class="fragment"><div class="line"><a name="l00356"></a><span class="lineno"> 356</span>&#160;{</div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span>* layerName = <span class="stringliteral">&quot;DepthwiseConvolution2dLayer&quot;</span>;</div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span>&#160; DepthwiseConvolution2dDescriptor descriptor;</div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span>&#160; descriptor.m_PadLeft = 2;</div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span>&#160; descriptor.m_PadRight = 3;</div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span>&#160; descriptor.m_PadBottom = 1;</div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span>&#160; descriptor.m_PadTop = 5;</div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span>&#160; descriptor.m_StrideX = 2;</div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span>&#160; descriptor.m_StrideY = 3;</div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span>&#160; descriptor.m_DataLayout = DataLayout::NHWC;</div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span>&#160; descriptor.m_BiasEnabled = <span class="keyword">true</span>;</div><div class="line"><a name="l00367"></a><span class="lineno"> 367</span>&#160;</div><div class="line"><a name="l00368"></a><span class="lineno"> 368</span>&#160; std::vector&lt;float&gt; data = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l00369"></a><span class="lineno"> 369</span>&#160; std::vector&lt;unsigned int&gt; dimensions = {1, 1, 3, 3};</div><div class="line"><a name="l00370"></a><span class="lineno"> 370</span>&#160; ConstTensor weights(TensorInfo(4, dimensions.data(), DataType::Float32), data);</div><div class="line"><a name="l00371"></a><span class="lineno"> 371</span>&#160;</div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span>&#160; std::vector&lt;float&gt; biasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l00373"></a><span class="lineno"> 373</span>&#160; std::vector&lt;unsigned int&gt; biasDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l00374"></a><span class="lineno"> 374</span>&#160; ConstTensor biases(TensorInfo(4, biasDimensions.data(), DataType::Float32), biasData);</div><div class="line"><a name="l00375"></a><span class="lineno"> 375</span>&#160; Optional&lt;ConstTensor&gt; optionalBiases(biases);</div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span>&#160;</div><div class="line"><a name="l00377"></a><span class="lineno"> 377</span>&#160; TestDepthwiseConvolution2dLayerVisitor visitor(descriptor, weights, optionalBiases, layerName);</div><div class="line"><a name="l00378"></a><span class="lineno"> 378</span>&#160;</div><div class="line"><a name="l00379"></a><span class="lineno"> 379</span>&#160; Network net;</div><div class="line"><a name="l00380"></a><span class="lineno"> 380</span>&#160;</div><div class="line"><a name="l00381"></a><span class="lineno"> 381</span>&#160; IConnectableLayer* <span class="keyword">const</span> layer = net.AddDepthwiseConvolution2dLayer(descriptor, weights, optionalBiases, layerName);</div><div class="line"><a name="l00382"></a><span class="lineno"> 382</span>&#160; layer-&gt;Accept(visitor);</div><div class="line"><a name="l00383"></a><span class="lineno"> 383</span>&#160;}</div></div><!-- fragment -->
</div>
</div>
<a id="a3425db69ef4e4927a82e99025c16294a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a3425db69ef4e4927a82e99025c16294a">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[15/79]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
<td>(</td>
<td class="paramtype">CheckFullyConnectedLayer&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_const_tensor_layer_visitor_8cpp_source.html#l00385">385</a> of file <a class="el" href="_const_tensor_layer_visitor_8cpp_source.html">ConstTensorLayerVisitor.cpp</a>.</p>
<p class="reference">References <a class="el" href="classarmnn_1_1_i_connectable_layer.html#a8c9198a992b02e61a6777329d487dde3">IConnectableLayer::Accept()</a>, <a class="el" href="_network_8cpp_source.html#l00998">Network::AddFullyConnectedLayer()</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">Float32</a>, and <a class="el" href="_descriptors_8hpp_source.html#l00388">FullyConnectedDescriptor::m_TransposeWeightMatrix</a>.</p>
<div class="fragment"><div class="line"><a name="l00386"></a><span class="lineno"> 386</span>&#160;{</div><div class="line"><a name="l00387"></a><span class="lineno"> 387</span>&#160; FullyConnectedDescriptor descriptor;</div><div class="line"><a name="l00388"></a><span class="lineno"> 388</span>&#160; descriptor.m_TransposeWeightMatrix = <span class="keyword">true</span>;</div><div class="line"><a name="l00389"></a><span class="lineno"> 389</span>&#160;</div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span>&#160; std::vector&lt;float&gt; data = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l00391"></a><span class="lineno"> 391</span>&#160; std::vector&lt;unsigned int&gt; dimensions = {1, 1, 3, 3};</div><div class="line"><a name="l00392"></a><span class="lineno"> 392</span>&#160; ConstTensor weights(TensorInfo(4, dimensions.data(), DataType::Float32), data);</div><div class="line"><a name="l00393"></a><span class="lineno"> 393</span>&#160;</div><div class="line"><a name="l00394"></a><span class="lineno"> 394</span>&#160; TestFullyConnectedLayerVistor visitor(descriptor, weights, EmptyOptional());</div><div class="line"><a name="l00395"></a><span class="lineno"> 395</span>&#160;</div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span>&#160; Network net;</div><div class="line"><a name="l00397"></a><span class="lineno"> 397</span>&#160;</div><div class="line"><a name="l00398"></a><span class="lineno"> 398</span>&#160; IConnectableLayer* <span class="keyword">const</span> layer = net.AddFullyConnectedLayer(descriptor, weights, EmptyOptional());</div><div class="line"><a name="l00399"></a><span class="lineno"> 399</span>&#160; layer-&gt;Accept(visitor);</div><div class="line"><a name="l00400"></a><span class="lineno"> 400</span>&#160;}</div></div><!-- fragment -->
</div>
</div>
<a id="a631f8c0c9bceff4bef761eb7fd865686"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a631f8c0c9bceff4bef761eb7fd865686">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[16/79]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
<td>(</td>
<td class="paramtype">CheckNamedFullyConnectedLayer&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_const_tensor_layer_visitor_8cpp_source.html#l00402">402</a> of file <a class="el" href="_const_tensor_layer_visitor_8cpp_source.html">ConstTensorLayerVisitor.cpp</a>.</p>
<p class="reference">References <a class="el" href="classarmnn_1_1_i_connectable_layer.html#a8c9198a992b02e61a6777329d487dde3">IConnectableLayer::Accept()</a>, <a class="el" href="_network_8cpp_source.html#l00998">Network::AddFullyConnectedLayer()</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">Float32</a>, and <a class="el" href="_descriptors_8hpp_source.html#l00388">FullyConnectedDescriptor::m_TransposeWeightMatrix</a>.</p>
<div class="fragment"><div class="line"><a name="l00403"></a><span class="lineno"> 403</span>&#160;{</div><div class="line"><a name="l00404"></a><span class="lineno"> 404</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span>* layerName = <span class="stringliteral">&quot;FullyConnectedLayer&quot;</span>;</div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span>&#160; FullyConnectedDescriptor descriptor;</div><div class="line"><a name="l00406"></a><span class="lineno"> 406</span>&#160; descriptor.m_TransposeWeightMatrix = <span class="keyword">true</span>;</div><div class="line"><a name="l00407"></a><span class="lineno"> 407</span>&#160;</div><div class="line"><a name="l00408"></a><span class="lineno"> 408</span>&#160; std::vector&lt;float&gt; data = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l00409"></a><span class="lineno"> 409</span>&#160; std::vector&lt;unsigned int&gt; dimensions = {1, 1, 3, 3};</div><div class="line"><a name="l00410"></a><span class="lineno"> 410</span>&#160; ConstTensor weights(TensorInfo(4, dimensions.data(), DataType::Float32), data);</div><div class="line"><a name="l00411"></a><span class="lineno"> 411</span>&#160;</div><div class="line"><a name="l00412"></a><span class="lineno"> 412</span>&#160; TestFullyConnectedLayerVistor visitor(descriptor, weights, EmptyOptional(), layerName);</div><div class="line"><a name="l00413"></a><span class="lineno"> 413</span>&#160;</div><div class="line"><a name="l00414"></a><span class="lineno"> 414</span>&#160; Network net;</div><div class="line"><a name="l00415"></a><span class="lineno"> 415</span>&#160;</div><div class="line"><a name="l00416"></a><span class="lineno"> 416</span>&#160; IConnectableLayer* <span class="keyword">const</span> layer = net.AddFullyConnectedLayer(descriptor, weights, EmptyOptional(), layerName);</div><div class="line"><a name="l00417"></a><span class="lineno"> 417</span>&#160; layer-&gt;Accept(visitor);</div><div class="line"><a name="l00418"></a><span class="lineno"> 418</span>&#160;}</div></div><!-- fragment -->
</div>
</div>
<a id="a7db6a78bb6eedbea7f0525f1fe59de28"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a7db6a78bb6eedbea7f0525f1fe59de28">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[17/79]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
<td>(</td>
<td class="paramtype">QuantizeAbsActivation&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_quantizer_test_8cpp_source.html#l00408">408</a> of file <a class="el" href="_quantizer_test_8cpp_source.html">QuantizerTest.cpp</a>.</p>
<p class="reference">References <a class="el" href="namespacearmnn.html#a56297e0f7b215eea46c818cb7528d9eaa1e34af023adeb7d5f484f8eb4b9826b6">Abs</a>, <a class="el" href="_network_quantizer_8cpp_source.html#l00040">INetworkQuantizer::Create()</a>, <a class="el" href="_quantizer_test_8cpp_source.html#l00297">CreateNetworkWithActivationLayer()</a>, <a class="el" href="_descriptors_8hpp_source.html#l00037">ActivationDescriptor::m_A</a>, <a class="el" href="_descriptors_8hpp_source.html#l00039">ActivationDescriptor::m_B</a>, <a class="el" href="_descriptors_8hpp_source.html#l00035">ActivationDescriptor::m_Function</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a9d02ea768c081d4bdb2b7cab0b3f510d">QAsymmS8</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a0a3f57c876f5a230244c38e1453a8a6e">QAsymmU8</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7">QSymmS16</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a9945327825b115e93a3b89f4302e76db">QSymmS8</a>, and <a class="el" href="_quantizer_test_8cpp_source.html#l00193">VisitLayersTopologically()</a>.</p>
<div class="fragment"><div class="line"><a name="l00409"></a><span class="lineno"> 409</span>&#160;{</div><div class="line"><a name="l00410"></a><span class="lineno"> 410</span>&#160; ActivationDescriptor descriptor;</div><div class="line"><a name="l00411"></a><span class="lineno"> 411</span>&#160; descriptor.m_Function = ActivationFunction::Abs;</div><div class="line"><a name="l00412"></a><span class="lineno"> 412</span>&#160; descriptor.m_A = 3.5f;</div><div class="line"><a name="l00413"></a><span class="lineno"> 413</span>&#160; descriptor.m_B = -10.0f;</div><div class="line"><a name="l00414"></a><span class="lineno"> 414</span>&#160;</div><div class="line"><a name="l00415"></a><span class="lineno"> 415</span>&#160; <span class="keyword">const</span> TensorShape shape{1U};</div><div class="line"><a name="l00416"></a><span class="lineno"> 416</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> network = <a class="code" href="namespacearmnn.html#a5fbc1479db5f4ff70a750cf02d58971b">CreateNetworkWithActivationLayer</a>(descriptor, shape);</div><div class="line"><a name="l00417"></a><span class="lineno"> 417</span>&#160;</div><div class="line"><a name="l00418"></a><span class="lineno"> 418</span>&#160; <span class="keyword">const</span> QuantizerOptions qAsymmU8Options(DataType::QAsymmU8);</div><div class="line"><a name="l00419"></a><span class="lineno"> 419</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQAsymmU8 = INetworkQuantizer::Create(network.get(), qAsymmU8Options)-&gt;ExportNetwork();</div><div class="line"><a name="l00420"></a><span class="lineno"> 420</span>&#160; TestActivationQuantization validatorQAsymmU8(shape, shape);</div><div class="line"><a name="l00421"></a><span class="lineno"> 421</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQAsymmU8.get(), validatorQAsymmU8);</div><div class="line"><a name="l00422"></a><span class="lineno"> 422</span>&#160;</div><div class="line"><a name="l00423"></a><span class="lineno"> 423</span>&#160; <span class="keyword">const</span> QuantizerOptions qAsymmS8Options(DataType::QAsymmS8);</div><div class="line"><a name="l00424"></a><span class="lineno"> 424</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQAsymmS8 = INetworkQuantizer::Create(network.get(), qAsymmS8Options)-&gt;ExportNetwork();</div><div class="line"><a name="l00425"></a><span class="lineno"> 425</span>&#160; TestActivationQuantization validatorQAsymmS8(qAsymmS8Options, shape, shape);</div><div class="line"><a name="l00426"></a><span class="lineno"> 426</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQAsymmS8.get(), validatorQAsymmS8);</div><div class="line"><a name="l00427"></a><span class="lineno"> 427</span>&#160;</div><div class="line"><a name="l00428"></a><span class="lineno"> 428</span>&#160; <span class="keyword">const</span> QuantizerOptions qSymmS8Options(DataType::QSymmS8);</div><div class="line"><a name="l00429"></a><span class="lineno"> 429</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQSymmS8 = INetworkQuantizer::Create(network.get(), qSymmS8Options)-&gt;ExportNetwork();</div><div class="line"><a name="l00430"></a><span class="lineno"> 430</span>&#160; TestActivationQuantization validatorQSymmS8(qSymmS8Options, shape, shape);</div><div class="line"><a name="l00431"></a><span class="lineno"> 431</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQSymmS8.get(), validatorQSymmS8);</div><div class="line"><a name="l00432"></a><span class="lineno"> 432</span>&#160;</div><div class="line"><a name="l00433"></a><span class="lineno"> 433</span>&#160; <span class="keyword">const</span> QuantizerOptions qSymmS16options(DataType::QSymmS16);</div><div class="line"><a name="l00434"></a><span class="lineno"> 434</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQSymmS16 = INetworkQuantizer::Create(network.get(), qSymmS16options)-&gt;ExportNetwork();</div><div class="line"><a name="l00435"></a><span class="lineno"> 435</span>&#160; TestActivationQuantization validatorQSymmS16(qSymmS16options, shape, shape);</div><div class="line"><a name="l00436"></a><span class="lineno"> 436</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQSymmS16.get(), validatorQSymmS16);</div><div class="line"><a name="l00437"></a><span class="lineno"> 437</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a5fbc1479db5f4ff70a750cf02d58971b"><div class="ttname"><a href="namespacearmnn.html#a5fbc1479db5f4ff70a750cf02d58971b">armnn::CreateNetworkWithActivationLayer</a></div><div class="ttdeci">INetworkPtr CreateNetworkWithActivationLayer(const ActivationDescriptor &amp;descriptor, const TensorShape &amp;shape)</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l00297">QuantizerTest.cpp:297</a></div></div>
<div class="ttc" id="namespacearmnn_html_a6482907b4c57873e197324f5cb66fd4d"><div class="ttname"><a href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">armnn::VisitLayersTopologically</a></div><div class="ttdeci">void VisitLayersTopologically(const INetwork *inputNetwork, ILayerVisitor &amp;visitor)</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l00193">QuantizerTest.cpp:193</a></div></div>
<div class="ttc" id="namespacearmnn_html_ace74f6f9feb95a964a49d79458232703"><div class="ttname"><a href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">armnn::INetworkPtr</a></div><div class="ttdeci">std::unique_ptr&lt; INetwork, void(*)(INetwork *network)&gt; INetworkPtr</div><div class="ttdef"><b>Definition:</b> <a href="_i_network_8hpp_source.html#l00085">INetwork.hpp:85</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a7b017a692367333d1035e276f252f46c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a7b017a692367333d1035e276f252f46c">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[18/79]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
<td>(</td>
<td class="paramtype">CheckFullyConnectedLayerWithBiases&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_const_tensor_layer_visitor_8cpp_source.html#l00420">420</a> of file <a class="el" href="_const_tensor_layer_visitor_8cpp_source.html">ConstTensorLayerVisitor.cpp</a>.</p>
<p class="reference">References <a class="el" href="classarmnn_1_1_i_connectable_layer.html#a8c9198a992b02e61a6777329d487dde3">IConnectableLayer::Accept()</a>, <a class="el" href="_network_8cpp_source.html#l00998">Network::AddFullyConnectedLayer()</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">Float32</a>, <a class="el" href="_descriptors_8hpp_source.html#l00386">FullyConnectedDescriptor::m_BiasEnabled</a>, and <a class="el" href="_descriptors_8hpp_source.html#l00388">FullyConnectedDescriptor::m_TransposeWeightMatrix</a>.</p>
<div class="fragment"><div class="line"><a name="l00421"></a><span class="lineno"> 421</span>&#160;{</div><div class="line"><a name="l00422"></a><span class="lineno"> 422</span>&#160; FullyConnectedDescriptor descriptor;</div><div class="line"><a name="l00423"></a><span class="lineno"> 423</span>&#160; descriptor.m_TransposeWeightMatrix = <span class="keyword">true</span>;</div><div class="line"><a name="l00424"></a><span class="lineno"> 424</span>&#160; descriptor.m_BiasEnabled = <span class="keyword">true</span>;</div><div class="line"><a name="l00425"></a><span class="lineno"> 425</span>&#160;</div><div class="line"><a name="l00426"></a><span class="lineno"> 426</span>&#160; std::vector&lt;float&gt; data = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l00427"></a><span class="lineno"> 427</span>&#160; std::vector&lt;unsigned int&gt; dimensions = {1, 1, 3, 3};</div><div class="line"><a name="l00428"></a><span class="lineno"> 428</span>&#160; ConstTensor weights(TensorInfo(4, dimensions.data(), DataType::Float32), data);</div><div class="line"><a name="l00429"></a><span class="lineno"> 429</span>&#160;</div><div class="line"><a name="l00430"></a><span class="lineno"> 430</span>&#160; std::vector&lt;float&gt; biasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l00431"></a><span class="lineno"> 431</span>&#160; std::vector&lt;unsigned int&gt; biasDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l00432"></a><span class="lineno"> 432</span>&#160; ConstTensor biases(TensorInfo(4, biasDimensions.data(), DataType::Float32), biasData);</div><div class="line"><a name="l00433"></a><span class="lineno"> 433</span>&#160; Optional&lt;ConstTensor&gt; optionalBiases(biases);</div><div class="line"><a name="l00434"></a><span class="lineno"> 434</span>&#160;</div><div class="line"><a name="l00435"></a><span class="lineno"> 435</span>&#160; TestFullyConnectedLayerVistor visitor(descriptor, weights, optionalBiases);</div><div class="line"><a name="l00436"></a><span class="lineno"> 436</span>&#160;</div><div class="line"><a name="l00437"></a><span class="lineno"> 437</span>&#160; Network net;</div><div class="line"><a name="l00438"></a><span class="lineno"> 438</span>&#160;</div><div class="line"><a name="l00439"></a><span class="lineno"> 439</span>&#160; IConnectableLayer* <span class="keyword">const</span> layer = net.AddFullyConnectedLayer(descriptor, weights, optionalBiases);</div><div class="line"><a name="l00440"></a><span class="lineno"> 440</span>&#160; layer-&gt;Accept(visitor);</div><div class="line"><a name="l00441"></a><span class="lineno"> 441</span>&#160;}</div></div><!-- fragment -->
</div>
</div>
<a id="a2df3b432de50a9b9e8b486aa53e11cc5"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a2df3b432de50a9b9e8b486aa53e11cc5">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[19/79]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
<td>(</td>
<td class="paramtype">QuantizeLinearActivation&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_quantizer_test_8cpp_source.html#l00439">439</a> of file <a class="el" href="_quantizer_test_8cpp_source.html">QuantizerTest.cpp</a>.</p>
<p class="reference">References <a class="el" href="_network_quantizer_8cpp_source.html#l00040">INetworkQuantizer::Create()</a>, <a class="el" href="_quantizer_test_8cpp_source.html#l00297">CreateNetworkWithActivationLayer()</a>, <a class="el" href="namespacearmnn.html#a56297e0f7b215eea46c818cb7528d9eaa32a843da6ea40ab3b17a3421ccdf671b">Linear</a>, <a class="el" href="_descriptors_8hpp_source.html#l00037">ActivationDescriptor::m_A</a>, <a class="el" href="_descriptors_8hpp_source.html#l00039">ActivationDescriptor::m_B</a>, <a class="el" href="_descriptors_8hpp_source.html#l00035">ActivationDescriptor::m_Function</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a9d02ea768c081d4bdb2b7cab0b3f510d">QAsymmS8</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7">QSymmS16</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a9945327825b115e93a3b89f4302e76db">QSymmS8</a>, and <a class="el" href="_quantizer_test_8cpp_source.html#l00193">VisitLayersTopologically()</a>.</p>
<div class="fragment"><div class="line"><a name="l00440"></a><span class="lineno"> 440</span>&#160;{</div><div class="line"><a name="l00441"></a><span class="lineno"> 441</span>&#160; ActivationDescriptor descriptor;</div><div class="line"><a name="l00442"></a><span class="lineno"> 442</span>&#160; descriptor.m_Function = ActivationFunction::Linear;</div><div class="line"><a name="l00443"></a><span class="lineno"> 443</span>&#160; descriptor.m_A = 3.5f;</div><div class="line"><a name="l00444"></a><span class="lineno"> 444</span>&#160; descriptor.m_B = -10.0f;</div><div class="line"><a name="l00445"></a><span class="lineno"> 445</span>&#160;</div><div class="line"><a name="l00446"></a><span class="lineno"> 446</span>&#160; <span class="keyword">const</span> TensorShape shape{1U};</div><div class="line"><a name="l00447"></a><span class="lineno"> 447</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> network = <a class="code" href="namespacearmnn.html#a5fbc1479db5f4ff70a750cf02d58971b">CreateNetworkWithActivationLayer</a>(descriptor, shape);</div><div class="line"><a name="l00448"></a><span class="lineno"> 448</span>&#160;</div><div class="line"><a name="l00449"></a><span class="lineno"> 449</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQAsymmU8 = INetworkQuantizer::Create(network.get())-&gt;ExportNetwork();</div><div class="line"><a name="l00450"></a><span class="lineno"> 450</span>&#160; TestActivationQuantization validatorQAsymmU8(shape, shape);</div><div class="line"><a name="l00451"></a><span class="lineno"> 451</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQAsymmU8.get(), validatorQAsymmU8);</div><div class="line"><a name="l00452"></a><span class="lineno"> 452</span>&#160;</div><div class="line"><a name="l00453"></a><span class="lineno"> 453</span>&#160; <span class="keyword">const</span> QuantizerOptions qAsymmS8Options(DataType::QAsymmS8);</div><div class="line"><a name="l00454"></a><span class="lineno"> 454</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQAsymmS8 = INetworkQuantizer::Create(network.get(), qAsymmS8Options)-&gt;ExportNetwork();</div><div class="line"><a name="l00455"></a><span class="lineno"> 455</span>&#160; TestActivationQuantization validatorQAsymmS8(qAsymmS8Options, shape, shape);</div><div class="line"><a name="l00456"></a><span class="lineno"> 456</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQAsymmS8.get(), validatorQAsymmS8);</div><div class="line"><a name="l00457"></a><span class="lineno"> 457</span>&#160;</div><div class="line"><a name="l00458"></a><span class="lineno"> 458</span>&#160; <span class="keyword">const</span> QuantizerOptions qSymmS8Options(DataType::QSymmS8);</div><div class="line"><a name="l00459"></a><span class="lineno"> 459</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQSymmS8 = INetworkQuantizer::Create(network.get(), qSymmS8Options)-&gt;ExportNetwork();</div><div class="line"><a name="l00460"></a><span class="lineno"> 460</span>&#160; TestActivationQuantization validatorQSymmS8(qSymmS8Options, shape, shape);</div><div class="line"><a name="l00461"></a><span class="lineno"> 461</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQSymmS8.get(), validatorQSymmS8);</div><div class="line"><a name="l00462"></a><span class="lineno"> 462</span>&#160;</div><div class="line"><a name="l00463"></a><span class="lineno"> 463</span>&#160; <span class="keyword">const</span> QuantizerOptions qSymmS16options(DataType::QSymmS16);</div><div class="line"><a name="l00464"></a><span class="lineno"> 464</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQSymmS16 = INetworkQuantizer::Create(network.get(), qSymmS16options)-&gt;ExportNetwork();</div><div class="line"><a name="l00465"></a><span class="lineno"> 465</span>&#160; TestActivationQuantization validatorQSymmS16(qSymmS16options, shape, shape);</div><div class="line"><a name="l00466"></a><span class="lineno"> 466</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQSymmS16.get(), validatorQSymmS16);</div><div class="line"><a name="l00467"></a><span class="lineno"> 467</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a5fbc1479db5f4ff70a750cf02d58971b"><div class="ttname"><a href="namespacearmnn.html#a5fbc1479db5f4ff70a750cf02d58971b">armnn::CreateNetworkWithActivationLayer</a></div><div class="ttdeci">INetworkPtr CreateNetworkWithActivationLayer(const ActivationDescriptor &amp;descriptor, const TensorShape &amp;shape)</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l00297">QuantizerTest.cpp:297</a></div></div>
<div class="ttc" id="namespacearmnn_html_a6482907b4c57873e197324f5cb66fd4d"><div class="ttname"><a href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">armnn::VisitLayersTopologically</a></div><div class="ttdeci">void VisitLayersTopologically(const INetwork *inputNetwork, ILayerVisitor &amp;visitor)</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l00193">QuantizerTest.cpp:193</a></div></div>
<div class="ttc" id="namespacearmnn_html_ace74f6f9feb95a964a49d79458232703"><div class="ttname"><a href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">armnn::INetworkPtr</a></div><div class="ttdeci">std::unique_ptr&lt; INetwork, void(*)(INetwork *network)&gt; INetworkPtr</div><div class="ttdef"><b>Definition:</b> <a href="_i_network_8hpp_source.html#l00085">INetwork.hpp:85</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a5f3e4faca1d063ad73764571f898dc2d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a5f3e4faca1d063ad73764571f898dc2d">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[20/79]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
<td>(</td>
<td class="paramtype">CheckNamedFullyConnectedLayerWithBiases&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_const_tensor_layer_visitor_8cpp_source.html#l00443">443</a> of file <a class="el" href="_const_tensor_layer_visitor_8cpp_source.html">ConstTensorLayerVisitor.cpp</a>.</p>
<p class="reference">References <a class="el" href="classarmnn_1_1_i_connectable_layer.html#a8c9198a992b02e61a6777329d487dde3">IConnectableLayer::Accept()</a>, <a class="el" href="_network_8cpp_source.html#l00998">Network::AddFullyConnectedLayer()</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">Float32</a>, <a class="el" href="_descriptors_8hpp_source.html#l00386">FullyConnectedDescriptor::m_BiasEnabled</a>, and <a class="el" href="_descriptors_8hpp_source.html#l00388">FullyConnectedDescriptor::m_TransposeWeightMatrix</a>.</p>
<div class="fragment"><div class="line"><a name="l00444"></a><span class="lineno"> 444</span>&#160;{</div><div class="line"><a name="l00445"></a><span class="lineno"> 445</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span>* layerName = <span class="stringliteral">&quot;FullyConnectedLayer&quot;</span>;</div><div class="line"><a name="l00446"></a><span class="lineno"> 446</span>&#160; FullyConnectedDescriptor descriptor;</div><div class="line"><a name="l00447"></a><span class="lineno"> 447</span>&#160; descriptor.m_TransposeWeightMatrix = <span class="keyword">true</span>;</div><div class="line"><a name="l00448"></a><span class="lineno"> 448</span>&#160; descriptor.m_BiasEnabled = <span class="keyword">true</span>;</div><div class="line"><a name="l00449"></a><span class="lineno"> 449</span>&#160;</div><div class="line"><a name="l00450"></a><span class="lineno"> 450</span>&#160; std::vector&lt;float&gt; data = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l00451"></a><span class="lineno"> 451</span>&#160; std::vector&lt;unsigned int&gt; dimensions = {1, 1, 3, 3};</div><div class="line"><a name="l00452"></a><span class="lineno"> 452</span>&#160; ConstTensor weights(TensorInfo(4, dimensions.data(), DataType::Float32), data);</div><div class="line"><a name="l00453"></a><span class="lineno"> 453</span>&#160;</div><div class="line"><a name="l00454"></a><span class="lineno"> 454</span>&#160; std::vector&lt;float&gt; biasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l00455"></a><span class="lineno"> 455</span>&#160; std::vector&lt;unsigned int&gt; biasDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l00456"></a><span class="lineno"> 456</span>&#160; ConstTensor biases(TensorInfo(4, biasDimensions.data(), DataType::Float32), biasData);</div><div class="line"><a name="l00457"></a><span class="lineno"> 457</span>&#160; Optional&lt;ConstTensor&gt; optionalBiases(biases);</div><div class="line"><a name="l00458"></a><span class="lineno"> 458</span>&#160;</div><div class="line"><a name="l00459"></a><span class="lineno"> 459</span>&#160; TestFullyConnectedLayerVistor visitor(descriptor, weights, optionalBiases, layerName);</div><div class="line"><a name="l00460"></a><span class="lineno"> 460</span>&#160;</div><div class="line"><a name="l00461"></a><span class="lineno"> 461</span>&#160; Network net;</div><div class="line"><a name="l00462"></a><span class="lineno"> 462</span>&#160;</div><div class="line"><a name="l00463"></a><span class="lineno"> 463</span>&#160; IConnectableLayer* <span class="keyword">const</span> layer = net.AddFullyConnectedLayer(descriptor, weights, optionalBiases, layerName);</div><div class="line"><a name="l00464"></a><span class="lineno"> 464</span>&#160; layer-&gt;Accept(visitor);</div><div class="line"><a name="l00465"></a><span class="lineno"> 465</span>&#160;}</div></div><!-- fragment -->
</div>
</div>
<a id="a199581e11ebd49e1322b090484f3dd29"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a199581e11ebd49e1322b090484f3dd29">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[21/79]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
<td>(</td>
<td class="paramtype">CheckBatchNormalizationLayer&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_const_tensor_layer_visitor_8cpp_source.html#l00467">467</a> of file <a class="el" href="_const_tensor_layer_visitor_8cpp_source.html">ConstTensorLayerVisitor.cpp</a>.</p>
<p class="reference">References <a class="el" href="classarmnn_1_1_i_connectable_layer.html#a8c9198a992b02e61a6777329d487dde3">IConnectableLayer::Accept()</a>, <a class="el" href="_network_8cpp_source.html#l01227">Network::AddBatchNormalizationLayer()</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">Float32</a>, <a class="el" href="_descriptors_8hpp_source.html#l00625">BatchNormalizationDescriptor::m_DataLayout</a>, <a class="el" href="_descriptors_8hpp_source.html#l00623">BatchNormalizationDescriptor::m_Eps</a>, and <a class="el" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0ad066db54b89b0912e7e7c6da51e2da51">NHWC</a>.</p>
<div class="fragment"><div class="line"><a name="l00468"></a><span class="lineno"> 468</span>&#160;{</div><div class="line"><a name="l00469"></a><span class="lineno"> 469</span>&#160; BatchNormalizationDescriptor descriptor;</div><div class="line"><a name="l00470"></a><span class="lineno"> 470</span>&#160; descriptor.m_Eps = 0.0002f;</div><div class="line"><a name="l00471"></a><span class="lineno"> 471</span>&#160; descriptor.m_DataLayout = DataLayout::NHWC;</div><div class="line"><a name="l00472"></a><span class="lineno"> 472</span>&#160;</div><div class="line"><a name="l00473"></a><span class="lineno"> 473</span>&#160; std::vector&lt;float&gt; data = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l00474"></a><span class="lineno"> 474</span>&#160; std::vector&lt;unsigned int&gt; dimensions = {1, 1, 3, 3};</div><div class="line"><a name="l00475"></a><span class="lineno"> 475</span>&#160; ConstTensor mean(TensorInfo(4, dimensions.data(), DataType::Float32), data);</div><div class="line"><a name="l00476"></a><span class="lineno"> 476</span>&#160;</div><div class="line"><a name="l00477"></a><span class="lineno"> 477</span>&#160; std::vector&lt;float&gt; varianceData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l00478"></a><span class="lineno"> 478</span>&#160; std::vector&lt;unsigned int&gt; varianceDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l00479"></a><span class="lineno"> 479</span>&#160; ConstTensor variance(TensorInfo(4, varianceDimensions.data(), DataType::Float32), varianceData);</div><div class="line"><a name="l00480"></a><span class="lineno"> 480</span>&#160;</div><div class="line"><a name="l00481"></a><span class="lineno"> 481</span>&#160; std::vector&lt;float&gt; betaData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l00482"></a><span class="lineno"> 482</span>&#160; std::vector&lt;unsigned int&gt; betaDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l00483"></a><span class="lineno"> 483</span>&#160; ConstTensor beta(TensorInfo(4, betaDimensions.data(), DataType::Float32), betaData);</div><div class="line"><a name="l00484"></a><span class="lineno"> 484</span>&#160;</div><div class="line"><a name="l00485"></a><span class="lineno"> 485</span>&#160; std::vector&lt;float&gt; gammaData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l00486"></a><span class="lineno"> 486</span>&#160; std::vector&lt;unsigned int&gt; gammaDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l00487"></a><span class="lineno"> 487</span>&#160; ConstTensor gamma(TensorInfo(4, gammaDimensions.data(), DataType::Float32), gammaData);</div><div class="line"><a name="l00488"></a><span class="lineno"> 488</span>&#160;</div><div class="line"><a name="l00489"></a><span class="lineno"> 489</span>&#160; TestBatchNormalizationLayerVisitor visitor(descriptor, mean, variance, beta, gamma);</div><div class="line"><a name="l00490"></a><span class="lineno"> 490</span>&#160;</div><div class="line"><a name="l00491"></a><span class="lineno"> 491</span>&#160; Network net;</div><div class="line"><a name="l00492"></a><span class="lineno"> 492</span>&#160;</div><div class="line"><a name="l00493"></a><span class="lineno"> 493</span>&#160; IConnectableLayer* <span class="keyword">const</span> layer = net.AddBatchNormalizationLayer(descriptor, mean, variance, beta, gamma);</div><div class="line"><a name="l00494"></a><span class="lineno"> 494</span>&#160; layer-&gt;Accept(visitor);</div><div class="line"><a name="l00495"></a><span class="lineno"> 495</span>&#160;}</div></div><!-- fragment -->
</div>
</div>
<a id="a3dd219b394b8186d1849ee595193268d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a3dd219b394b8186d1849ee595193268d">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[22/79]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
<td>(</td>
<td class="paramtype">QuantizeReLuActivation&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_quantizer_test_8cpp_source.html#l00469">469</a> of file <a class="el" href="_quantizer_test_8cpp_source.html">QuantizerTest.cpp</a>.</p>
<p class="reference">References <a class="el" href="_network_quantizer_8cpp_source.html#l00040">INetworkQuantizer::Create()</a>, <a class="el" href="_quantizer_test_8cpp_source.html#l00297">CreateNetworkWithActivationLayer()</a>, <a class="el" href="_descriptors_8hpp_source.html#l00037">ActivationDescriptor::m_A</a>, <a class="el" href="_descriptors_8hpp_source.html#l00039">ActivationDescriptor::m_B</a>, <a class="el" href="_descriptors_8hpp_source.html#l00035">ActivationDescriptor::m_Function</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a9d02ea768c081d4bdb2b7cab0b3f510d">QAsymmS8</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7">QSymmS16</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a9945327825b115e93a3b89f4302e76db">QSymmS8</a>, <a class="el" href="namespacearmnn.html#a56297e0f7b215eea46c818cb7528d9eaa3d90c0a5ab3fcf8e6f6608cb3d3a1559">ReLu</a>, and <a class="el" href="_quantizer_test_8cpp_source.html#l00193">VisitLayersTopologically()</a>.</p>
<div class="fragment"><div class="line"><a name="l00470"></a><span class="lineno"> 470</span>&#160;{</div><div class="line"><a name="l00471"></a><span class="lineno"> 471</span>&#160; ActivationDescriptor descriptor;</div><div class="line"><a name="l00472"></a><span class="lineno"> 472</span>&#160; descriptor.m_Function = ActivationFunction::ReLu;</div><div class="line"><a name="l00473"></a><span class="lineno"> 473</span>&#160; descriptor.m_A = 3.5f;</div><div class="line"><a name="l00474"></a><span class="lineno"> 474</span>&#160; descriptor.m_B = -10.0f;</div><div class="line"><a name="l00475"></a><span class="lineno"> 475</span>&#160;</div><div class="line"><a name="l00476"></a><span class="lineno"> 476</span>&#160; <span class="keyword">const</span> TensorShape shape{1U};</div><div class="line"><a name="l00477"></a><span class="lineno"> 477</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> network = <a class="code" href="namespacearmnn.html#a5fbc1479db5f4ff70a750cf02d58971b">CreateNetworkWithActivationLayer</a>(descriptor, shape);</div><div class="line"><a name="l00478"></a><span class="lineno"> 478</span>&#160;</div><div class="line"><a name="l00479"></a><span class="lineno"> 479</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQAsymmU8 = INetworkQuantizer::Create(network.get())-&gt;ExportNetwork();</div><div class="line"><a name="l00480"></a><span class="lineno"> 480</span>&#160; TestActivationQuantization validatorQAsymmU8(shape, shape);</div><div class="line"><a name="l00481"></a><span class="lineno"> 481</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQAsymmU8.get(), validatorQAsymmU8);</div><div class="line"><a name="l00482"></a><span class="lineno"> 482</span>&#160;</div><div class="line"><a name="l00483"></a><span class="lineno"> 483</span>&#160; <span class="keyword">const</span> QuantizerOptions qAsymmS8Options(DataType::QAsymmS8);</div><div class="line"><a name="l00484"></a><span class="lineno"> 484</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQAsymmS8 = INetworkQuantizer::Create(network.get(), qAsymmS8Options)-&gt;ExportNetwork();</div><div class="line"><a name="l00485"></a><span class="lineno"> 485</span>&#160; TestActivationQuantization validatorQAsymmS8(qAsymmS8Options, shape, shape);</div><div class="line"><a name="l00486"></a><span class="lineno"> 486</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQAsymmS8.get(), validatorQAsymmS8);</div><div class="line"><a name="l00487"></a><span class="lineno"> 487</span>&#160;</div><div class="line"><a name="l00488"></a><span class="lineno"> 488</span>&#160; <span class="keyword">const</span> QuantizerOptions qSymmS8Options(DataType::QSymmS8);</div><div class="line"><a name="l00489"></a><span class="lineno"> 489</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQSymmS8 = INetworkQuantizer::Create(network.get(), qSymmS8Options)-&gt;ExportNetwork();</div><div class="line"><a name="l00490"></a><span class="lineno"> 490</span>&#160; TestActivationQuantization validatorQSymmS8(qSymmS8Options, shape, shape);</div><div class="line"><a name="l00491"></a><span class="lineno"> 491</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQSymmS8.get(), validatorQSymmS8);</div><div class="line"><a name="l00492"></a><span class="lineno"> 492</span>&#160;</div><div class="line"><a name="l00493"></a><span class="lineno"> 493</span>&#160; <span class="keyword">const</span> QuantizerOptions qSymmS16options(DataType::QSymmS16);</div><div class="line"><a name="l00494"></a><span class="lineno"> 494</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQSymmS16 = INetworkQuantizer::Create(network.get(), qSymmS16options)-&gt;ExportNetwork();</div><div class="line"><a name="l00495"></a><span class="lineno"> 495</span>&#160; TestActivationQuantization validatorQSymmS16(qSymmS16options, shape, shape);</div><div class="line"><a name="l00496"></a><span class="lineno"> 496</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQSymmS16.get(), validatorQSymmS16);</div><div class="line"><a name="l00497"></a><span class="lineno"> 497</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a5fbc1479db5f4ff70a750cf02d58971b"><div class="ttname"><a href="namespacearmnn.html#a5fbc1479db5f4ff70a750cf02d58971b">armnn::CreateNetworkWithActivationLayer</a></div><div class="ttdeci">INetworkPtr CreateNetworkWithActivationLayer(const ActivationDescriptor &amp;descriptor, const TensorShape &amp;shape)</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l00297">QuantizerTest.cpp:297</a></div></div>
<div class="ttc" id="namespacearmnn_html_a6482907b4c57873e197324f5cb66fd4d"><div class="ttname"><a href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">armnn::VisitLayersTopologically</a></div><div class="ttdeci">void VisitLayersTopologically(const INetwork *inputNetwork, ILayerVisitor &amp;visitor)</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l00193">QuantizerTest.cpp:193</a></div></div>
<div class="ttc" id="namespacearmnn_html_ace74f6f9feb95a964a49d79458232703"><div class="ttname"><a href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">armnn::INetworkPtr</a></div><div class="ttdeci">std::unique_ptr&lt; INetwork, void(*)(INetwork *network)&gt; INetworkPtr</div><div class="ttdef"><b>Definition:</b> <a href="_i_network_8hpp_source.html#l00085">INetwork.hpp:85</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="af1eda3afe49e91bf04d6e34a0e3be8ef"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af1eda3afe49e91bf04d6e34a0e3be8ef">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[23/79]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
<td>(</td>
<td class="paramtype">CheckNamedBatchNormalizationLayer&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_const_tensor_layer_visitor_8cpp_source.html#l00497">497</a> of file <a class="el" href="_const_tensor_layer_visitor_8cpp_source.html">ConstTensorLayerVisitor.cpp</a>.</p>
<p class="reference">References <a class="el" href="classarmnn_1_1_i_connectable_layer.html#a8c9198a992b02e61a6777329d487dde3">IConnectableLayer::Accept()</a>, <a class="el" href="_network_8cpp_source.html#l01227">Network::AddBatchNormalizationLayer()</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">Float32</a>, <a class="el" href="_descriptors_8hpp_source.html#l00625">BatchNormalizationDescriptor::m_DataLayout</a>, <a class="el" href="_descriptors_8hpp_source.html#l00623">BatchNormalizationDescriptor::m_Eps</a>, and <a class="el" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0ad066db54b89b0912e7e7c6da51e2da51">NHWC</a>.</p>
<div class="fragment"><div class="line"><a name="l00498"></a><span class="lineno"> 498</span>&#160;{</div><div class="line"><a name="l00499"></a><span class="lineno"> 499</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span>* layerName = <span class="stringliteral">&quot;BatchNormalizationLayer&quot;</span>;</div><div class="line"><a name="l00500"></a><span class="lineno"> 500</span>&#160; BatchNormalizationDescriptor descriptor;</div><div class="line"><a name="l00501"></a><span class="lineno"> 501</span>&#160; descriptor.m_Eps = 0.0002f;</div><div class="line"><a name="l00502"></a><span class="lineno"> 502</span>&#160; descriptor.m_DataLayout = DataLayout::NHWC;</div><div class="line"><a name="l00503"></a><span class="lineno"> 503</span>&#160;</div><div class="line"><a name="l00504"></a><span class="lineno"> 504</span>&#160; std::vector&lt;float&gt; data = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l00505"></a><span class="lineno"> 505</span>&#160; std::vector&lt;unsigned int&gt; dimensions = {1, 1, 3, 3};</div><div class="line"><a name="l00506"></a><span class="lineno"> 506</span>&#160; ConstTensor mean(TensorInfo(4, dimensions.data(), DataType::Float32), data);</div><div class="line"><a name="l00507"></a><span class="lineno"> 507</span>&#160;</div><div class="line"><a name="l00508"></a><span class="lineno"> 508</span>&#160; std::vector&lt;float&gt; varianceData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l00509"></a><span class="lineno"> 509</span>&#160; std::vector&lt;unsigned int&gt; varianceDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l00510"></a><span class="lineno"> 510</span>&#160; ConstTensor variance(TensorInfo(4, varianceDimensions.data(), DataType::Float32), varianceData);</div><div class="line"><a name="l00511"></a><span class="lineno"> 511</span>&#160;</div><div class="line"><a name="l00512"></a><span class="lineno"> 512</span>&#160; std::vector&lt;float&gt; betaData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l00513"></a><span class="lineno"> 513</span>&#160; std::vector&lt;unsigned int&gt; betaDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l00514"></a><span class="lineno"> 514</span>&#160; ConstTensor beta(TensorInfo(4, betaDimensions.data(), DataType::Float32), betaData);</div><div class="line"><a name="l00515"></a><span class="lineno"> 515</span>&#160;</div><div class="line"><a name="l00516"></a><span class="lineno"> 516</span>&#160; std::vector&lt;float&gt; gammaData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l00517"></a><span class="lineno"> 517</span>&#160; std::vector&lt;unsigned int&gt; gammaDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l00518"></a><span class="lineno"> 518</span>&#160; ConstTensor gamma(TensorInfo(4, gammaDimensions.data(), DataType::Float32), gammaData);</div><div class="line"><a name="l00519"></a><span class="lineno"> 519</span>&#160;</div><div class="line"><a name="l00520"></a><span class="lineno"> 520</span>&#160; TestBatchNormalizationLayerVisitor visitor(descriptor, mean, variance, beta, gamma, layerName);</div><div class="line"><a name="l00521"></a><span class="lineno"> 521</span>&#160;</div><div class="line"><a name="l00522"></a><span class="lineno"> 522</span>&#160; Network net;</div><div class="line"><a name="l00523"></a><span class="lineno"> 523</span>&#160;</div><div class="line"><a name="l00524"></a><span class="lineno"> 524</span>&#160; IConnectableLayer* <span class="keyword">const</span> layer = net.AddBatchNormalizationLayer(</div><div class="line"><a name="l00525"></a><span class="lineno"> 525</span>&#160; descriptor, mean, variance, beta, gamma, layerName);</div><div class="line"><a name="l00526"></a><span class="lineno"> 526</span>&#160; layer-&gt;Accept(visitor);</div><div class="line"><a name="l00527"></a><span class="lineno"> 527</span>&#160;}</div></div><!-- fragment -->
</div>
</div>
<a id="a52e948b4bffc16a3933d812dbc384833"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a52e948b4bffc16a3933d812dbc384833">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[24/79]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
<td>(</td>
<td class="paramtype">QuantizeSoftReLuActivation&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_quantizer_test_8cpp_source.html#l00499">499</a> of file <a class="el" href="_quantizer_test_8cpp_source.html">QuantizerTest.cpp</a>.</p>
<p class="reference">References <a class="el" href="_network_quantizer_8cpp_source.html#l00040">INetworkQuantizer::Create()</a>, <a class="el" href="_quantizer_test_8cpp_source.html#l00297">CreateNetworkWithActivationLayer()</a>, <a class="el" href="_descriptors_8hpp_source.html#l00037">ActivationDescriptor::m_A</a>, <a class="el" href="_descriptors_8hpp_source.html#l00039">ActivationDescriptor::m_B</a>, <a class="el" href="_descriptors_8hpp_source.html#l00035">ActivationDescriptor::m_Function</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a9d02ea768c081d4bdb2b7cab0b3f510d">QAsymmS8</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7">QSymmS16</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a9945327825b115e93a3b89f4302e76db">QSymmS8</a>, <a class="el" href="namespacearmnn.html#a56297e0f7b215eea46c818cb7528d9eaa6bba7052636d1740303b1b2ef3b53fef">SoftReLu</a>, and <a class="el" href="_quantizer_test_8cpp_source.html#l00193">VisitLayersTopologically()</a>.</p>
<div class="fragment"><div class="line"><a name="l00500"></a><span class="lineno"> 500</span>&#160;{</div><div class="line"><a name="l00501"></a><span class="lineno"> 501</span>&#160; ActivationDescriptor descriptor;</div><div class="line"><a name="l00502"></a><span class="lineno"> 502</span>&#160; descriptor.m_Function = ActivationFunction::SoftReLu;</div><div class="line"><a name="l00503"></a><span class="lineno"> 503</span>&#160; descriptor.m_A = 3.5f;</div><div class="line"><a name="l00504"></a><span class="lineno"> 504</span>&#160; descriptor.m_B = -10.0f;</div><div class="line"><a name="l00505"></a><span class="lineno"> 505</span>&#160;</div><div class="line"><a name="l00506"></a><span class="lineno"> 506</span>&#160; <span class="keyword">const</span> TensorShape shape{1U};</div><div class="line"><a name="l00507"></a><span class="lineno"> 507</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> network = <a class="code" href="namespacearmnn.html#a5fbc1479db5f4ff70a750cf02d58971b">CreateNetworkWithActivationLayer</a>(descriptor, shape);</div><div class="line"><a name="l00508"></a><span class="lineno"> 508</span>&#160;</div><div class="line"><a name="l00509"></a><span class="lineno"> 509</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQAsymmU8 = INetworkQuantizer::Create(network.get())-&gt;ExportNetwork();</div><div class="line"><a name="l00510"></a><span class="lineno"> 510</span>&#160; TestActivationQuantization validatorQAsymmU8(shape, shape);</div><div class="line"><a name="l00511"></a><span class="lineno"> 511</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQAsymmU8.get(), validatorQAsymmU8);</div><div class="line"><a name="l00512"></a><span class="lineno"> 512</span>&#160;</div><div class="line"><a name="l00513"></a><span class="lineno"> 513</span>&#160; <span class="keyword">const</span> QuantizerOptions qAsymmS8Options(DataType::QAsymmS8);</div><div class="line"><a name="l00514"></a><span class="lineno"> 514</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQAsymmS8 = INetworkQuantizer::Create(network.get(), qAsymmS8Options)-&gt;ExportNetwork();</div><div class="line"><a name="l00515"></a><span class="lineno"> 515</span>&#160; TestActivationQuantization validatorQAsymmS8(qAsymmS8Options, shape, shape);</div><div class="line"><a name="l00516"></a><span class="lineno"> 516</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQAsymmS8.get(), validatorQAsymmS8);</div><div class="line"><a name="l00517"></a><span class="lineno"> 517</span>&#160;</div><div class="line"><a name="l00518"></a><span class="lineno"> 518</span>&#160; <span class="keyword">const</span> QuantizerOptions qSymmS8Options(DataType::QSymmS8);</div><div class="line"><a name="l00519"></a><span class="lineno"> 519</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQSymmS8 = INetworkQuantizer::Create(network.get(), qSymmS8Options)-&gt;ExportNetwork();</div><div class="line"><a name="l00520"></a><span class="lineno"> 520</span>&#160; TestActivationQuantization validatorQSymmS8(qSymmS8Options, shape, shape);</div><div class="line"><a name="l00521"></a><span class="lineno"> 521</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQSymmS8.get(), validatorQSymmS8);</div><div class="line"><a name="l00522"></a><span class="lineno"> 522</span>&#160;</div><div class="line"><a name="l00523"></a><span class="lineno"> 523</span>&#160; <span class="keyword">const</span> QuantizerOptions qSymmS16options(DataType::QSymmS16);</div><div class="line"><a name="l00524"></a><span class="lineno"> 524</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQSymmS16 = INetworkQuantizer::Create(network.get(), qSymmS16options)-&gt;ExportNetwork();</div><div class="line"><a name="l00525"></a><span class="lineno"> 525</span>&#160; TestActivationQuantization validatorQSymmS16(qSymmS16options, shape, shape);</div><div class="line"><a name="l00526"></a><span class="lineno"> 526</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQSymmS16.get(), validatorQSymmS16);</div><div class="line"><a name="l00527"></a><span class="lineno"> 527</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a5fbc1479db5f4ff70a750cf02d58971b"><div class="ttname"><a href="namespacearmnn.html#a5fbc1479db5f4ff70a750cf02d58971b">armnn::CreateNetworkWithActivationLayer</a></div><div class="ttdeci">INetworkPtr CreateNetworkWithActivationLayer(const ActivationDescriptor &amp;descriptor, const TensorShape &amp;shape)</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l00297">QuantizerTest.cpp:297</a></div></div>
<div class="ttc" id="namespacearmnn_html_a6482907b4c57873e197324f5cb66fd4d"><div class="ttname"><a href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">armnn::VisitLayersTopologically</a></div><div class="ttdeci">void VisitLayersTopologically(const INetwork *inputNetwork, ILayerVisitor &amp;visitor)</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l00193">QuantizerTest.cpp:193</a></div></div>
<div class="ttc" id="namespacearmnn_html_ace74f6f9feb95a964a49d79458232703"><div class="ttname"><a href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">armnn::INetworkPtr</a></div><div class="ttdeci">std::unique_ptr&lt; INetwork, void(*)(INetwork *network)&gt; INetworkPtr</div><div class="ttdef"><b>Definition:</b> <a href="_i_network_8hpp_source.html#l00085">INetwork.hpp:85</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="abf109580225cb949565c8223bceadd5d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#abf109580225cb949565c8223bceadd5d">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[25/79]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
<td>(</td>
<td class="paramtype">QuantizeBoundedReluActivation&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_quantizer_test_8cpp_source.html#l00529">529</a> of file <a class="el" href="_quantizer_test_8cpp_source.html">QuantizerTest.cpp</a>.</p>
<p class="reference">References <a class="el" href="namespacearmnn.html#a56297e0f7b215eea46c818cb7528d9eaabc5a0f0d6e7cf7fca73299dcd46c0f0d">BoundedReLu</a>, <a class="el" href="_network_quantizer_8cpp_source.html#l00040">INetworkQuantizer::Create()</a>, <a class="el" href="_quantizer_test_8cpp_source.html#l00297">CreateNetworkWithActivationLayer()</a>, <a class="el" href="_quantizer_test_8cpp_source.html#l00035">g_AsymmS8QuantizationBase</a>, <a class="el" href="_quantizer_test_8cpp_source.html#l00033">g_AsymmU8QuantizationBase</a>, <a class="el" href="_quantizer_test_8cpp_source.html#l00037">g_SymmS16QuantizationBase</a>, <a class="el" href="_quantizer_test_8cpp_source.html#l00036">g_SymmS8QuantizationBase</a>, <a class="el" href="classarmnn_1_1_i_connectable_layer.html#a80ac4eda2e7f2757ec9dd96fc96dbd16">IConnectableLayer::GetOutputSlot()</a>, <a class="el" href="classarmnn_1_1_i_output_slot.html#a9943775a364fc4ab53b85ac88f311886">IOutputSlot::GetTensorInfo()</a>, <a class="el" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>, <a class="el" href="_descriptors_8hpp_source.html#l00037">ActivationDescriptor::m_A</a>, <a class="el" href="_descriptors_8hpp_source.html#l00039">ActivationDescriptor::m_B</a>, <a class="el" href="_descriptors_8hpp_source.html#l00035">ActivationDescriptor::m_Function</a>, <a class="el" href="_file_only_profiling_decorator_tests_8cpp_source.html#l00045">options</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a9d02ea768c081d4bdb2b7cab0b3f510d">QAsymmS8</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7">QSymmS16</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a9945327825b115e93a3b89f4302e76db">QSymmS8</a>, and <a class="el" href="_quantizer_test_8cpp_source.html#l00193">VisitLayersTopologically()</a>.</p>
<div class="fragment"><div class="line"><a name="l00530"></a><span class="lineno"> 530</span>&#160;{</div><div class="line"><a name="l00531"></a><span class="lineno"> 531</span>&#160; <span class="keyword">class </span>TestBoundedReluActivationQuantization : <span class="keyword">public</span> TestQuantization</div><div class="line"><a name="l00532"></a><span class="lineno"> 532</span>&#160; {</div><div class="line"><a name="l00533"></a><span class="lineno"> 533</span>&#160; <span class="keyword">public</span>:</div><div class="line"><a name="l00534"></a><span class="lineno"> 534</span>&#160; TestBoundedReluActivationQuantization(<span class="keyword">const</span> TensorShape&amp; inputShape, <span class="keyword">const</span> TensorShape&amp; outputShape)</div><div class="line"><a name="l00535"></a><span class="lineno"> 535</span>&#160; : TestQuantization(inputShape, outputShape) {}</div><div class="line"><a name="l00536"></a><span class="lineno"> 536</span>&#160;</div><div class="line"><a name="l00537"></a><span class="lineno"> 537</span>&#160; TestBoundedReluActivationQuantization(<span class="keyword">const</span> QuantizerOptions&amp; <a class="code" href="_file_only_profiling_decorator_tests_8cpp.html#a6560146509197f3e197d8d36f76c1347">options</a>,</div><div class="line"><a name="l00538"></a><span class="lineno"> 538</span>&#160; <span class="keyword">const</span> TensorShape&amp; inputShape,</div><div class="line"><a name="l00539"></a><span class="lineno"> 539</span>&#160; <span class="keyword">const</span> TensorShape&amp; outputShape)</div><div class="line"><a name="l00540"></a><span class="lineno"> 540</span>&#160; : TestQuantization(options, inputShape, outputShape) {}</div><div class="line"><a name="l00541"></a><span class="lineno"> 541</span>&#160;</div><div class="line"><a name="l00542"></a><span class="lineno"> 542</span>&#160; <span class="keywordtype">void</span> VisitActivationLayer(<span class="keyword">const</span> IConnectableLayer* layer,</div><div class="line"><a name="l00543"></a><span class="lineno"> 543</span>&#160; <span class="keyword">const</span> ActivationDescriptor&amp; descriptor,</div><div class="line"><a name="l00544"></a><span class="lineno"> 544</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span>* name = <span class="keyword">nullptr</span>)<span class="keyword"> override</span></div><div class="line"><a name="l00545"></a><span class="lineno"> 545</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00546"></a><span class="lineno"> 546</span>&#160; boost::ignore_unused(descriptor, name);</div><div class="line"><a name="l00547"></a><span class="lineno"> 547</span>&#160; TensorInfo <a class="code" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a> = layer-&gt;GetOutputSlot(0).GetTensorInfo();</div><div class="line"><a name="l00548"></a><span class="lineno"> 548</span>&#160;</div><div class="line"><a name="l00549"></a><span class="lineno"> 549</span>&#160; <span class="comment">// Based off default static range [0.0f, 3.5f]</span></div><div class="line"><a name="l00550"></a><span class="lineno"> 550</span>&#160; TestQuantizationParams(info, {3.5f / <a class="code" href="namespacearmnn.html#a19994153bdbd7710f0af3973403bc4cc">g_AsymmU8QuantizationBase</a>, 0},</div><div class="line"><a name="l00551"></a><span class="lineno"> 551</span>&#160; {3.5f / <a class="code" href="namespacearmnn.html#a09bdfaa922d72ce0d9ec014dfa8f8c95">g_AsymmS8QuantizationBase</a>, -128},</div><div class="line"><a name="l00552"></a><span class="lineno"> 552</span>&#160; {3.5f / <a class="code" href="namespacearmnn.html#acd7f8820d124166a38c95bc8ad38811b">g_SymmS8QuantizationBase</a>, 0},</div><div class="line"><a name="l00553"></a><span class="lineno"> 553</span>&#160; {3.5f / <a class="code" href="namespacearmnn.html#a1465480794787d2278d3f0d2e6d887b4">g_SymmS16QuantizationBase</a>, 0});</div><div class="line"><a name="l00554"></a><span class="lineno"> 554</span>&#160; }</div><div class="line"><a name="l00555"></a><span class="lineno"> 555</span>&#160; };</div><div class="line"><a name="l00556"></a><span class="lineno"> 556</span>&#160;</div><div class="line"><a name="l00557"></a><span class="lineno"> 557</span>&#160; ActivationDescriptor descriptor;</div><div class="line"><a name="l00558"></a><span class="lineno"> 558</span>&#160; descriptor.m_Function = ActivationFunction::BoundedReLu;</div><div class="line"><a name="l00559"></a><span class="lineno"> 559</span>&#160; descriptor.m_A = 3.5f;</div><div class="line"><a name="l00560"></a><span class="lineno"> 560</span>&#160; descriptor.m_B = -10.0f;</div><div class="line"><a name="l00561"></a><span class="lineno"> 561</span>&#160;</div><div class="line"><a name="l00562"></a><span class="lineno"> 562</span>&#160; <span class="keyword">const</span> TensorShape shape{1U};</div><div class="line"><a name="l00563"></a><span class="lineno"> 563</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> network = <a class="code" href="namespacearmnn.html#a5fbc1479db5f4ff70a750cf02d58971b">CreateNetworkWithActivationLayer</a>(descriptor, shape);</div><div class="line"><a name="l00564"></a><span class="lineno"> 564</span>&#160;</div><div class="line"><a name="l00565"></a><span class="lineno"> 565</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQAsymmU8 = INetworkQuantizer::Create(network.get())-&gt;ExportNetwork();</div><div class="line"><a name="l00566"></a><span class="lineno"> 566</span>&#160; TestBoundedReluActivationQuantization validatorQAsymmU8(shape, shape);</div><div class="line"><a name="l00567"></a><span class="lineno"> 567</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQAsymmU8.get(), validatorQAsymmU8);</div><div class="line"><a name="l00568"></a><span class="lineno"> 568</span>&#160;</div><div class="line"><a name="l00569"></a><span class="lineno"> 569</span>&#160; <span class="keyword">const</span> QuantizerOptions qAsymmS8Options(DataType::QAsymmS8);</div><div class="line"><a name="l00570"></a><span class="lineno"> 570</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQAsymmS8 = INetworkQuantizer::Create(network.get(), qAsymmS8Options)-&gt;ExportNetwork();</div><div class="line"><a name="l00571"></a><span class="lineno"> 571</span>&#160; TestBoundedReluActivationQuantization validatorQAsymmS8(qAsymmS8Options, shape, shape);</div><div class="line"><a name="l00572"></a><span class="lineno"> 572</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQAsymmS8.get(), validatorQAsymmS8);</div><div class="line"><a name="l00573"></a><span class="lineno"> 573</span>&#160;</div><div class="line"><a name="l00574"></a><span class="lineno"> 574</span>&#160; <span class="keyword">const</span> QuantizerOptions qSymmS8Options(DataType::QSymmS8);</div><div class="line"><a name="l00575"></a><span class="lineno"> 575</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQSymmS8 = INetworkQuantizer::Create(network.get(), qSymmS8Options)-&gt;ExportNetwork();</div><div class="line"><a name="l00576"></a><span class="lineno"> 576</span>&#160; TestBoundedReluActivationQuantization validatorQSymmS8(qSymmS8Options, shape, shape);</div><div class="line"><a name="l00577"></a><span class="lineno"> 577</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQSymmS8.get(), validatorQSymmS8);</div><div class="line"><a name="l00578"></a><span class="lineno"> 578</span>&#160;</div><div class="line"><a name="l00579"></a><span class="lineno"> 579</span>&#160; <span class="keyword">const</span> QuantizerOptions qSymmS16options(DataType::QSymmS16);</div><div class="line"><a name="l00580"></a><span class="lineno"> 580</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQSymmS16 = INetworkQuantizer::Create(network.get(), qSymmS16options)-&gt;ExportNetwork();</div><div class="line"><a name="l00581"></a><span class="lineno"> 581</span>&#160; TestBoundedReluActivationQuantization validatorQSymmS16(qSymmS16options, shape, shape);</div><div class="line"><a name="l00582"></a><span class="lineno"> 582</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQSymmS16.get(), validatorQSymmS16);</div><div class="line"><a name="l00583"></a><span class="lineno"> 583</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a1465480794787d2278d3f0d2e6d887b4"><div class="ttname"><a href="namespacearmnn.html#a1465480794787d2278d3f0d2e6d887b4">armnn::g_SymmS16QuantizationBase</a></div><div class="ttdeci">const float g_SymmS16QuantizationBase</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l00037">QuantizerTest.cpp:37</a></div></div>
<div class="ttc" id="namespacearmnn_html_acd7f8820d124166a38c95bc8ad38811b"><div class="ttname"><a href="namespacearmnn.html#acd7f8820d124166a38c95bc8ad38811b">armnn::g_SymmS8QuantizationBase</a></div><div class="ttdeci">const float g_SymmS8QuantizationBase</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l00036">QuantizerTest.cpp:36</a></div></div>
<div class="ttc" id="namespacearmnn_html_a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c"><div class="ttname"><a href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">armnn::BoostLogSeverityMapping::info</a></div></div>
<div class="ttc" id="namespacearmnn_html_a5fbc1479db5f4ff70a750cf02d58971b"><div class="ttname"><a href="namespacearmnn.html#a5fbc1479db5f4ff70a750cf02d58971b">armnn::CreateNetworkWithActivationLayer</a></div><div class="ttdeci">INetworkPtr CreateNetworkWithActivationLayer(const ActivationDescriptor &amp;descriptor, const TensorShape &amp;shape)</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l00297">QuantizerTest.cpp:297</a></div></div>
<div class="ttc" id="namespacearmnn_html_a6482907b4c57873e197324f5cb66fd4d"><div class="ttname"><a href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">armnn::VisitLayersTopologically</a></div><div class="ttdeci">void VisitLayersTopologically(const INetwork *inputNetwork, ILayerVisitor &amp;visitor)</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l00193">QuantizerTest.cpp:193</a></div></div>
<div class="ttc" id="namespacearmnn_html_ace74f6f9feb95a964a49d79458232703"><div class="ttname"><a href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">armnn::INetworkPtr</a></div><div class="ttdeci">std::unique_ptr&lt; INetwork, void(*)(INetwork *network)&gt; INetworkPtr</div><div class="ttdef"><b>Definition:</b> <a href="_i_network_8hpp_source.html#l00085">INetwork.hpp:85</a></div></div>
<div class="ttc" id="namespacearmnn_html_a09bdfaa922d72ce0d9ec014dfa8f8c95"><div class="ttname"><a href="namespacearmnn.html#a09bdfaa922d72ce0d9ec014dfa8f8c95">armnn::g_AsymmS8QuantizationBase</a></div><div class="ttdeci">const float g_AsymmS8QuantizationBase</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l00035">QuantizerTest.cpp:35</a></div></div>
<div class="ttc" id="namespacearmnn_html_a19994153bdbd7710f0af3973403bc4cc"><div class="ttname"><a href="namespacearmnn.html#a19994153bdbd7710f0af3973403bc4cc">armnn::g_AsymmU8QuantizationBase</a></div><div class="ttdeci">const float g_AsymmU8QuantizationBase</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l00033">QuantizerTest.cpp:33</a></div></div>
<div class="ttc" id="_file_only_profiling_decorator_tests_8cpp_html_a6560146509197f3e197d8d36f76c1347"><div class="ttname"><a href="_file_only_profiling_decorator_tests_8cpp.html#a6560146509197f3e197d8d36f76c1347">options</a></div><div class="ttdeci">armnn::Runtime::CreationOptions::ExternalProfilingOptions options</div><div class="ttdef"><b>Definition:</b> <a href="_file_only_profiling_decorator_tests_8cpp_source.html#l00045">FileOnlyProfilingDecoratorTests.cpp:45</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a1a8221833cf3d29cd6435aed632dfcce"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a1a8221833cf3d29cd6435aed632dfcce">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[26/79]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
<td>(</td>
<td class="paramtype">CheckConstLayer&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_const_tensor_layer_visitor_8cpp_source.html#l00529">529</a> of file <a class="el" href="_const_tensor_layer_visitor_8cpp_source.html">ConstTensorLayerVisitor.cpp</a>.</p>
<p class="reference">References <a class="el" href="classarmnn_1_1_i_connectable_layer.html#a8c9198a992b02e61a6777329d487dde3">IConnectableLayer::Accept()</a>, <a class="el" href="_network_8cpp_source.html#l01280">Network::AddConstantLayer()</a>, and <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">Float32</a>.</p>
<div class="fragment"><div class="line"><a name="l00530"></a><span class="lineno"> 530</span>&#160;{</div><div class="line"><a name="l00531"></a><span class="lineno"> 531</span>&#160; std::vector&lt;float&gt; data = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l00532"></a><span class="lineno"> 532</span>&#160; std::vector&lt;unsigned int&gt; dimensions = {1, 1, 3, 3};</div><div class="line"><a name="l00533"></a><span class="lineno"> 533</span>&#160; ConstTensor input(TensorInfo(4, dimensions.data(), DataType::Float32), data);</div><div class="line"><a name="l00534"></a><span class="lineno"> 534</span>&#160;</div><div class="line"><a name="l00535"></a><span class="lineno"> 535</span>&#160; TestConstantLayerVisitor visitor(input);</div><div class="line"><a name="l00536"></a><span class="lineno"> 536</span>&#160;</div><div class="line"><a name="l00537"></a><span class="lineno"> 537</span>&#160; Network net;</div><div class="line"><a name="l00538"></a><span class="lineno"> 538</span>&#160;</div><div class="line"><a name="l00539"></a><span class="lineno"> 539</span>&#160; IConnectableLayer* <span class="keyword">const</span> layer = net.AddConstantLayer(input);</div><div class="line"><a name="l00540"></a><span class="lineno"> 540</span>&#160; layer-&gt;Accept(visitor);</div><div class="line"><a name="l00541"></a><span class="lineno"> 541</span>&#160;}</div></div><!-- fragment -->
</div>
</div>
<a id="a9da3b50de4d108b81264a22c5adacf05"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a9da3b50de4d108b81264a22c5adacf05">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[27/79]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
<td>(</td>
<td class="paramtype">CheckNamedConstLayer&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_const_tensor_layer_visitor_8cpp_source.html#l00543">543</a> of file <a class="el" href="_const_tensor_layer_visitor_8cpp_source.html">ConstTensorLayerVisitor.cpp</a>.</p>
<p class="reference">References <a class="el" href="classarmnn_1_1_i_connectable_layer.html#a8c9198a992b02e61a6777329d487dde3">IConnectableLayer::Accept()</a>, <a class="el" href="_network_8cpp_source.html#l01280">Network::AddConstantLayer()</a>, and <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">Float32</a>.</p>
<div class="fragment"><div class="line"><a name="l00544"></a><span class="lineno"> 544</span>&#160;{</div><div class="line"><a name="l00545"></a><span class="lineno"> 545</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span>* layerName = <span class="stringliteral">&quot;ConstantLayer&quot;</span>;</div><div class="line"><a name="l00546"></a><span class="lineno"> 546</span>&#160; std::vector&lt;float&gt; data = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l00547"></a><span class="lineno"> 547</span>&#160; std::vector&lt;unsigned int&gt; dimensions = {1, 1, 3, 3};</div><div class="line"><a name="l00548"></a><span class="lineno"> 548</span>&#160; ConstTensor input(TensorInfo(4, dimensions.data(), DataType::Float32), data);</div><div class="line"><a name="l00549"></a><span class="lineno"> 549</span>&#160;</div><div class="line"><a name="l00550"></a><span class="lineno"> 550</span>&#160; TestConstantLayerVisitor visitor(input, layerName);</div><div class="line"><a name="l00551"></a><span class="lineno"> 551</span>&#160;</div><div class="line"><a name="l00552"></a><span class="lineno"> 552</span>&#160; Network net;</div><div class="line"><a name="l00553"></a><span class="lineno"> 553</span>&#160;</div><div class="line"><a name="l00554"></a><span class="lineno"> 554</span>&#160; IConnectableLayer* <span class="keyword">const</span> layer = net.AddConstantLayer(input, layerName);</div><div class="line"><a name="l00555"></a><span class="lineno"> 555</span>&#160; layer-&gt;Accept(visitor);</div><div class="line"><a name="l00556"></a><span class="lineno"> 556</span>&#160;}</div></div><!-- fragment -->
</div>
</div>
<a id="afefeb492b3446d34e413556a805210b6"></a>
<h2 class="memtitle"><span class="permalink"><a href="#afefeb492b3446d34e413556a805210b6">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[28/79]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
<td>(</td>
<td class="paramtype">CheckLstmLayerBasic&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_const_tensor_layer_visitor_8cpp_source.html#l00558">558</a> of file <a class="el" href="_const_tensor_layer_visitor_8cpp_source.html">ConstTensorLayerVisitor.cpp</a>.</p>
<p class="reference">References <a class="el" href="classarmnn_1_1_i_connectable_layer.html#a8c9198a992b02e61a6777329d487dde3">IConnectableLayer::Accept()</a>, <a class="el" href="_network_8cpp_source.html#l01312">Network::AddLstmLayer()</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">Float32</a>, <a class="el" href="_descriptors_8hpp_source.html#l00861">LstmDescriptor::m_ActivationFunc</a>, <a class="el" href="_lstm_params_8hpp_source.html#l00053">LstmInputParams::m_CellBias</a>, <a class="el" href="_descriptors_8hpp_source.html#l00867">LstmDescriptor::m_CifgEnabled</a>, <a class="el" href="_descriptors_8hpp_source.html#l00863">LstmDescriptor::m_ClippingThresCell</a>, <a class="el" href="_descriptors_8hpp_source.html#l00865">LstmDescriptor::m_ClippingThresProj</a>, <a class="el" href="_lstm_params_8hpp_source.html#l00052">LstmInputParams::m_ForgetGateBias</a>, <a class="el" href="_lstm_params_8hpp_source.html#l00042">LstmInputParams::m_InputToCellWeights</a>, <a class="el" href="_lstm_params_8hpp_source.html#l00041">LstmInputParams::m_InputToForgetWeights</a>, <a class="el" href="_lstm_params_8hpp_source.html#l00043">LstmInputParams::m_InputToOutputWeights</a>, <a class="el" href="_lstm_params_8hpp_source.html#l00054">LstmInputParams::m_OutputGateBias</a>, <a class="el" href="_lstm_params_8hpp_source.html#l00046">LstmInputParams::m_RecurrentToCellWeights</a>, <a class="el" href="_lstm_params_8hpp_source.html#l00045">LstmInputParams::m_RecurrentToForgetWeights</a>, and <a class="el" href="_lstm_params_8hpp_source.html#l00047">LstmInputParams::m_RecurrentToOutputWeights</a>.</p>
<div class="fragment"><div class="line"><a name="l00559"></a><span class="lineno"> 559</span>&#160;{</div><div class="line"><a name="l00560"></a><span class="lineno"> 560</span>&#160; LstmDescriptor descriptor;</div><div class="line"><a name="l00561"></a><span class="lineno"> 561</span>&#160; descriptor.m_ActivationFunc = 3;</div><div class="line"><a name="l00562"></a><span class="lineno"> 562</span>&#160; descriptor.m_ClippingThresProj = 0.5f;</div><div class="line"><a name="l00563"></a><span class="lineno"> 563</span>&#160; descriptor.m_ClippingThresCell = 0.3f;</div><div class="line"><a name="l00564"></a><span class="lineno"> 564</span>&#160; descriptor.m_CifgEnabled = <span class="keyword">true</span>; <span class="comment">// if this is true then we DON&#39;T need to set the OptCifgParams</span></div><div class="line"><a name="l00565"></a><span class="lineno"> 565</span>&#160;</div><div class="line"><a name="l00566"></a><span class="lineno"> 566</span>&#160; std::vector&lt;float&gt; inputToForgetWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l00567"></a><span class="lineno"> 567</span>&#160; std::vector&lt;unsigned int&gt; inputToForgetWeightsDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l00568"></a><span class="lineno"> 568</span>&#160; ConstTensor inputToForgetWeights(</div><div class="line"><a name="l00569"></a><span class="lineno"> 569</span>&#160; TensorInfo(4, inputToForgetWeightsDimensions.data(), DataType::Float32), inputToForgetWeightsData);</div><div class="line"><a name="l00570"></a><span class="lineno"> 570</span>&#160;</div><div class="line"><a name="l00571"></a><span class="lineno"> 571</span>&#160; std::vector&lt;float&gt; inputToCellWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l00572"></a><span class="lineno"> 572</span>&#160; std::vector&lt;unsigned int&gt; inputToCellWeightsDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l00573"></a><span class="lineno"> 573</span>&#160; ConstTensor inputToCellWeights(</div><div class="line"><a name="l00574"></a><span class="lineno"> 574</span>&#160; TensorInfo(4, inputToCellWeightsDimensions.data(), DataType::Float32), inputToCellWeightsData);</div><div class="line"><a name="l00575"></a><span class="lineno"> 575</span>&#160;</div><div class="line"><a name="l00576"></a><span class="lineno"> 576</span>&#160; std::vector&lt;float&gt; inputToOutputWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l00577"></a><span class="lineno"> 577</span>&#160; std::vector&lt;unsigned int&gt; inputToOutputWeightsDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l00578"></a><span class="lineno"> 578</span>&#160; ConstTensor inputToOutputWeights(</div><div class="line"><a name="l00579"></a><span class="lineno"> 579</span>&#160; TensorInfo(4, inputToOutputWeightsDimensions.data(), DataType::Float32), inputToOutputWeightsData);</div><div class="line"><a name="l00580"></a><span class="lineno"> 580</span>&#160;</div><div class="line"><a name="l00581"></a><span class="lineno"> 581</span>&#160; std::vector&lt;float&gt; recurrentToForgetWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l00582"></a><span class="lineno"> 582</span>&#160; std::vector&lt;unsigned int&gt; recurrentToForgetWeightsDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l00583"></a><span class="lineno"> 583</span>&#160; ConstTensor recurrentToForgetWeights(TensorInfo(</div><div class="line"><a name="l00584"></a><span class="lineno"> 584</span>&#160; 4, recurrentToForgetWeightsDimensions.data(), DataType::Float32), recurrentToForgetWeightsData);</div><div class="line"><a name="l00585"></a><span class="lineno"> 585</span>&#160;</div><div class="line"><a name="l00586"></a><span class="lineno"> 586</span>&#160; std::vector&lt;float&gt; recurrentToCellWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l00587"></a><span class="lineno"> 587</span>&#160; std::vector&lt;unsigned int&gt; recurrentToCellWeightsDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l00588"></a><span class="lineno"> 588</span>&#160; ConstTensor recurrentToCellWeights(TensorInfo(</div><div class="line"><a name="l00589"></a><span class="lineno"> 589</span>&#160; 4, recurrentToCellWeightsDimensions.data(), DataType::Float32), recurrentToCellWeightsData);</div><div class="line"><a name="l00590"></a><span class="lineno"> 590</span>&#160;</div><div class="line"><a name="l00591"></a><span class="lineno"> 591</span>&#160; std::vector&lt;float&gt; recurrentToOutputWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l00592"></a><span class="lineno"> 592</span>&#160; std::vector&lt;unsigned int&gt; recurrentToOutputWeightsDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l00593"></a><span class="lineno"> 593</span>&#160; ConstTensor recurrentToOutputWeights(TensorInfo(</div><div class="line"><a name="l00594"></a><span class="lineno"> 594</span>&#160; 4, recurrentToOutputWeightsDimensions.data(), DataType::Float32), recurrentToOutputWeightsData);</div><div class="line"><a name="l00595"></a><span class="lineno"> 595</span>&#160;</div><div class="line"><a name="l00596"></a><span class="lineno"> 596</span>&#160; std::vector&lt;float&gt; forgetGateBiasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l00597"></a><span class="lineno"> 597</span>&#160; std::vector&lt;unsigned int&gt; forgetGateBiasDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l00598"></a><span class="lineno"> 598</span>&#160; ConstTensor forgetGateBias(TensorInfo(</div><div class="line"><a name="l00599"></a><span class="lineno"> 599</span>&#160; 4, forgetGateBiasDimensions.data(), DataType::Float32), forgetGateBiasData);</div><div class="line"><a name="l00600"></a><span class="lineno"> 600</span>&#160;</div><div class="line"><a name="l00601"></a><span class="lineno"> 601</span>&#160; std::vector&lt;float&gt; cellBiasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l00602"></a><span class="lineno"> 602</span>&#160; std::vector&lt;unsigned int&gt; cellBiasDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l00603"></a><span class="lineno"> 603</span>&#160; ConstTensor cellBias(TensorInfo(</div><div class="line"><a name="l00604"></a><span class="lineno"> 604</span>&#160; 4, cellBiasDimensions.data(), DataType::Float32), cellBiasData);</div><div class="line"><a name="l00605"></a><span class="lineno"> 605</span>&#160;</div><div class="line"><a name="l00606"></a><span class="lineno"> 606</span>&#160; std::vector&lt;float&gt; outputGateBiasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l00607"></a><span class="lineno"> 607</span>&#160; std::vector&lt;unsigned int&gt; outputGateBiasDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l00608"></a><span class="lineno"> 608</span>&#160; ConstTensor outputGateBias(TensorInfo(</div><div class="line"><a name="l00609"></a><span class="lineno"> 609</span>&#160; 4, outputGateBiasDimensions.data(), DataType::Float32), outputGateBiasData);</div><div class="line"><a name="l00610"></a><span class="lineno"> 610</span>&#160;</div><div class="line"><a name="l00611"></a><span class="lineno"> 611</span>&#160; LstmInputParams params;</div><div class="line"><a name="l00612"></a><span class="lineno"> 612</span>&#160; params.m_InputToForgetWeights = &amp;inputToForgetWeights;</div><div class="line"><a name="l00613"></a><span class="lineno"> 613</span>&#160; params.m_InputToCellWeights = &amp;inputToCellWeights;</div><div class="line"><a name="l00614"></a><span class="lineno"> 614</span>&#160; params.m_InputToOutputWeights = &amp;inputToOutputWeights;</div><div class="line"><a name="l00615"></a><span class="lineno"> 615</span>&#160; params.m_RecurrentToForgetWeights = &amp;recurrentToForgetWeights;</div><div class="line"><a name="l00616"></a><span class="lineno"> 616</span>&#160; params.m_RecurrentToCellWeights = &amp;recurrentToCellWeights;</div><div class="line"><a name="l00617"></a><span class="lineno"> 617</span>&#160; params.m_RecurrentToOutputWeights = &amp;recurrentToOutputWeights;</div><div class="line"><a name="l00618"></a><span class="lineno"> 618</span>&#160; params.m_ForgetGateBias = &amp;forgetGateBias;</div><div class="line"><a name="l00619"></a><span class="lineno"> 619</span>&#160; params.m_CellBias = &amp;cellBias;</div><div class="line"><a name="l00620"></a><span class="lineno"> 620</span>&#160; params.m_OutputGateBias = &amp;outputGateBias;</div><div class="line"><a name="l00621"></a><span class="lineno"> 621</span>&#160;</div><div class="line"><a name="l00622"></a><span class="lineno"> 622</span>&#160; TestLstmLayerVisitor visitor(descriptor, params);</div><div class="line"><a name="l00623"></a><span class="lineno"> 623</span>&#160;</div><div class="line"><a name="l00624"></a><span class="lineno"> 624</span>&#160; Network net;</div><div class="line"><a name="l00625"></a><span class="lineno"> 625</span>&#160;</div><div class="line"><a name="l00626"></a><span class="lineno"> 626</span>&#160; IConnectableLayer* <span class="keyword">const</span> layer = net.AddLstmLayer(descriptor, params);</div><div class="line"><a name="l00627"></a><span class="lineno"> 627</span>&#160; layer-&gt;Accept(visitor);</div><div class="line"><a name="l00628"></a><span class="lineno"> 628</span>&#160;}</div></div><!-- fragment -->
</div>
</div>
<a id="acbf871a6ec0726bfe2746e761a278108"></a>
<h2 class="memtitle"><span class="permalink"><a href="#acbf871a6ec0726bfe2746e761a278108">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[29/79]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
<td>(</td>
<td class="paramtype">QuantizeTanHActivation&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_quantizer_test_8cpp_source.html#l00585">585</a> of file <a class="el" href="_quantizer_test_8cpp_source.html">QuantizerTest.cpp</a>.</p>
<p class="reference">References <a class="el" href="_network_quantizer_8cpp_source.html#l00040">INetworkQuantizer::Create()</a>, <a class="el" href="_quantizer_test_8cpp_source.html#l00297">CreateNetworkWithActivationLayer()</a>, <a class="el" href="_quantizer_test_8cpp_source.html#l00035">g_AsymmS8QuantizationBase</a>, <a class="el" href="_quantizer_test_8cpp_source.html#l00033">g_AsymmU8QuantizationBase</a>, <a class="el" href="_quantizer_test_8cpp_source.html#l00037">g_SymmS16QuantizationBase</a>, <a class="el" href="_quantizer_test_8cpp_source.html#l00036">g_SymmS8QuantizationBase</a>, <a class="el" href="classarmnn_1_1_i_connectable_layer.html#a80ac4eda2e7f2757ec9dd96fc96dbd16">IConnectableLayer::GetOutputSlot()</a>, <a class="el" href="classarmnn_1_1_i_output_slot.html#a9943775a364fc4ab53b85ac88f311886">IOutputSlot::GetTensorInfo()</a>, <a class="el" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>, <a class="el" href="_descriptors_8hpp_source.html#l00037">ActivationDescriptor::m_A</a>, <a class="el" href="_descriptors_8hpp_source.html#l00039">ActivationDescriptor::m_B</a>, <a class="el" href="_descriptors_8hpp_source.html#l00035">ActivationDescriptor::m_Function</a>, <a class="el" href="_file_only_profiling_decorator_tests_8cpp_source.html#l00045">options</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a9d02ea768c081d4bdb2b7cab0b3f510d">QAsymmS8</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7">QSymmS16</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a9945327825b115e93a3b89f4302e76db">QSymmS8</a>, <a class="el" href="namespacearmnn.html#a56297e0f7b215eea46c818cb7528d9eaa23b68da1de2b77d74da9da2635722a3e">TanH</a>, and <a class="el" href="_quantizer_test_8cpp_source.html#l00193">VisitLayersTopologically()</a>.</p>
<div class="fragment"><div class="line"><a name="l00586"></a><span class="lineno"> 586</span>&#160;{</div><div class="line"><a name="l00587"></a><span class="lineno"> 587</span>&#160; <span class="keyword">class </span>TestTanHActivationQuantization : <span class="keyword">public</span> TestQuantization</div><div class="line"><a name="l00588"></a><span class="lineno"> 588</span>&#160; {</div><div class="line"><a name="l00589"></a><span class="lineno"> 589</span>&#160; <span class="keyword">public</span>:</div><div class="line"><a name="l00590"></a><span class="lineno"> 590</span>&#160; TestTanHActivationQuantization(<span class="keyword">const</span> TensorShape&amp; inputShape, <span class="keyword">const</span> TensorShape&amp; outputShape)</div><div class="line"><a name="l00591"></a><span class="lineno"> 591</span>&#160; : TestQuantization(inputShape, outputShape) {}</div><div class="line"><a name="l00592"></a><span class="lineno"> 592</span>&#160;</div><div class="line"><a name="l00593"></a><span class="lineno"> 593</span>&#160; TestTanHActivationQuantization(<span class="keyword">const</span> QuantizerOptions&amp; <a class="code" href="_file_only_profiling_decorator_tests_8cpp.html#a6560146509197f3e197d8d36f76c1347">options</a>,</div><div class="line"><a name="l00594"></a><span class="lineno"> 594</span>&#160; <span class="keyword">const</span> TensorShape&amp; inputShape,</div><div class="line"><a name="l00595"></a><span class="lineno"> 595</span>&#160; <span class="keyword">const</span> TensorShape&amp; outputShape)</div><div class="line"><a name="l00596"></a><span class="lineno"> 596</span>&#160; : TestQuantization(options, inputShape, outputShape) {}</div><div class="line"><a name="l00597"></a><span class="lineno"> 597</span>&#160;</div><div class="line"><a name="l00598"></a><span class="lineno"> 598</span>&#160; <span class="keywordtype">void</span> VisitActivationLayer(<span class="keyword">const</span> IConnectableLayer* layer,</div><div class="line"><a name="l00599"></a><span class="lineno"> 599</span>&#160; <span class="keyword">const</span> ActivationDescriptor&amp; descriptor,</div><div class="line"><a name="l00600"></a><span class="lineno"> 600</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span>* name = <span class="keyword">nullptr</span>)<span class="keyword"> override</span></div><div class="line"><a name="l00601"></a><span class="lineno"> 601</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00602"></a><span class="lineno"> 602</span>&#160; boost::ignore_unused(descriptor, name);</div><div class="line"><a name="l00603"></a><span class="lineno"> 603</span>&#160; TensorInfo <a class="code" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a> = layer-&gt;GetOutputSlot(0).GetTensorInfo();</div><div class="line"><a name="l00604"></a><span class="lineno"> 604</span>&#160;</div><div class="line"><a name="l00605"></a><span class="lineno"> 605</span>&#160; <span class="comment">// Based off default static range [-1.0f, 1.0f]</span></div><div class="line"><a name="l00606"></a><span class="lineno"> 606</span>&#160; TestQuantizationParams(</div><div class="line"><a name="l00607"></a><span class="lineno"> 607</span>&#160; info, {2.0f / <a class="code" href="namespacearmnn.html#a19994153bdbd7710f0af3973403bc4cc">g_AsymmU8QuantizationBase</a>, 128},</div><div class="line"><a name="l00608"></a><span class="lineno"> 608</span>&#160; {2.0f / <a class="code" href="namespacearmnn.html#a09bdfaa922d72ce0d9ec014dfa8f8c95">g_AsymmS8QuantizationBase</a>, 0},</div><div class="line"><a name="l00609"></a><span class="lineno"> 609</span>&#160; {1.0f / <a class="code" href="namespacearmnn.html#acd7f8820d124166a38c95bc8ad38811b">g_SymmS8QuantizationBase</a> , 0},</div><div class="line"><a name="l00610"></a><span class="lineno"> 610</span>&#160; {1.0f / <a class="code" href="namespacearmnn.html#a1465480794787d2278d3f0d2e6d887b4">g_SymmS16QuantizationBase</a>, 0});</div><div class="line"><a name="l00611"></a><span class="lineno"> 611</span>&#160; }</div><div class="line"><a name="l00612"></a><span class="lineno"> 612</span>&#160; };</div><div class="line"><a name="l00613"></a><span class="lineno"> 613</span>&#160;</div><div class="line"><a name="l00614"></a><span class="lineno"> 614</span>&#160; ActivationDescriptor descriptor;</div><div class="line"><a name="l00615"></a><span class="lineno"> 615</span>&#160; descriptor.m_Function = ActivationFunction::TanH;</div><div class="line"><a name="l00616"></a><span class="lineno"> 616</span>&#160; descriptor.m_A = 3.5f;</div><div class="line"><a name="l00617"></a><span class="lineno"> 617</span>&#160; descriptor.m_B = -10.0f;</div><div class="line"><a name="l00618"></a><span class="lineno"> 618</span>&#160;</div><div class="line"><a name="l00619"></a><span class="lineno"> 619</span>&#160; <span class="keyword">const</span> TensorShape shape{1U};</div><div class="line"><a name="l00620"></a><span class="lineno"> 620</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> network = <a class="code" href="namespacearmnn.html#a5fbc1479db5f4ff70a750cf02d58971b">CreateNetworkWithActivationLayer</a>(descriptor, shape);</div><div class="line"><a name="l00621"></a><span class="lineno"> 621</span>&#160;</div><div class="line"><a name="l00622"></a><span class="lineno"> 622</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQAsymmU8 = INetworkQuantizer::Create(network.get())-&gt;ExportNetwork();</div><div class="line"><a name="l00623"></a><span class="lineno"> 623</span>&#160; TestTanHActivationQuantization validatorQAsymmU8(shape, shape);</div><div class="line"><a name="l00624"></a><span class="lineno"> 624</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQAsymmU8.get(), validatorQAsymmU8);</div><div class="line"><a name="l00625"></a><span class="lineno"> 625</span>&#160;</div><div class="line"><a name="l00626"></a><span class="lineno"> 626</span>&#160; <span class="keyword">const</span> QuantizerOptions qAsymmS8Options(DataType::QAsymmS8);</div><div class="line"><a name="l00627"></a><span class="lineno"> 627</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQAsymmS8 = INetworkQuantizer::Create(network.get(), qAsymmS8Options)-&gt;ExportNetwork();</div><div class="line"><a name="l00628"></a><span class="lineno"> 628</span>&#160; TestTanHActivationQuantization validatorQAsymmS8(qAsymmS8Options, shape, shape);</div><div class="line"><a name="l00629"></a><span class="lineno"> 629</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQAsymmS8.get(), validatorQAsymmS8);</div><div class="line"><a name="l00630"></a><span class="lineno"> 630</span>&#160;</div><div class="line"><a name="l00631"></a><span class="lineno"> 631</span>&#160; <span class="keyword">const</span> QuantizerOptions qSymmS8Options(DataType::QSymmS8);</div><div class="line"><a name="l00632"></a><span class="lineno"> 632</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQSymmS8 = INetworkQuantizer::Create(network.get(), qSymmS8Options)-&gt;ExportNetwork();</div><div class="line"><a name="l00633"></a><span class="lineno"> 633</span>&#160; TestTanHActivationQuantization validatorQSymmS8(qSymmS8Options, shape, shape);</div><div class="line"><a name="l00634"></a><span class="lineno"> 634</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQSymmS8.get(), validatorQSymmS8);</div><div class="line"><a name="l00635"></a><span class="lineno"> 635</span>&#160;</div><div class="line"><a name="l00636"></a><span class="lineno"> 636</span>&#160; <span class="keyword">const</span> QuantizerOptions qSymmS16options(DataType::QSymmS16);</div><div class="line"><a name="l00637"></a><span class="lineno"> 637</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQSymmS16 = INetworkQuantizer::Create(network.get(), qSymmS16options)-&gt;ExportNetwork();</div><div class="line"><a name="l00638"></a><span class="lineno"> 638</span>&#160; TestTanHActivationQuantization validatorQSymmS16(qSymmS16options, shape, shape);</div><div class="line"><a name="l00639"></a><span class="lineno"> 639</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQSymmS16.get(), validatorQSymmS16);</div><div class="line"><a name="l00640"></a><span class="lineno"> 640</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a1465480794787d2278d3f0d2e6d887b4"><div class="ttname"><a href="namespacearmnn.html#a1465480794787d2278d3f0d2e6d887b4">armnn::g_SymmS16QuantizationBase</a></div><div class="ttdeci">const float g_SymmS16QuantizationBase</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l00037">QuantizerTest.cpp:37</a></div></div>
<div class="ttc" id="namespacearmnn_html_acd7f8820d124166a38c95bc8ad38811b"><div class="ttname"><a href="namespacearmnn.html#acd7f8820d124166a38c95bc8ad38811b">armnn::g_SymmS8QuantizationBase</a></div><div class="ttdeci">const float g_SymmS8QuantizationBase</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l00036">QuantizerTest.cpp:36</a></div></div>
<div class="ttc" id="namespacearmnn_html_a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c"><div class="ttname"><a href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">armnn::BoostLogSeverityMapping::info</a></div></div>
<div class="ttc" id="namespacearmnn_html_a5fbc1479db5f4ff70a750cf02d58971b"><div class="ttname"><a href="namespacearmnn.html#a5fbc1479db5f4ff70a750cf02d58971b">armnn::CreateNetworkWithActivationLayer</a></div><div class="ttdeci">INetworkPtr CreateNetworkWithActivationLayer(const ActivationDescriptor &amp;descriptor, const TensorShape &amp;shape)</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l00297">QuantizerTest.cpp:297</a></div></div>
<div class="ttc" id="namespacearmnn_html_a6482907b4c57873e197324f5cb66fd4d"><div class="ttname"><a href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">armnn::VisitLayersTopologically</a></div><div class="ttdeci">void VisitLayersTopologically(const INetwork *inputNetwork, ILayerVisitor &amp;visitor)</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l00193">QuantizerTest.cpp:193</a></div></div>
<div class="ttc" id="namespacearmnn_html_ace74f6f9feb95a964a49d79458232703"><div class="ttname"><a href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">armnn::INetworkPtr</a></div><div class="ttdeci">std::unique_ptr&lt; INetwork, void(*)(INetwork *network)&gt; INetworkPtr</div><div class="ttdef"><b>Definition:</b> <a href="_i_network_8hpp_source.html#l00085">INetwork.hpp:85</a></div></div>
<div class="ttc" id="namespacearmnn_html_a09bdfaa922d72ce0d9ec014dfa8f8c95"><div class="ttname"><a href="namespacearmnn.html#a09bdfaa922d72ce0d9ec014dfa8f8c95">armnn::g_AsymmS8QuantizationBase</a></div><div class="ttdeci">const float g_AsymmS8QuantizationBase</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l00035">QuantizerTest.cpp:35</a></div></div>
<div class="ttc" id="namespacearmnn_html_a19994153bdbd7710f0af3973403bc4cc"><div class="ttname"><a href="namespacearmnn.html#a19994153bdbd7710f0af3973403bc4cc">armnn::g_AsymmU8QuantizationBase</a></div><div class="ttdeci">const float g_AsymmU8QuantizationBase</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l00033">QuantizerTest.cpp:33</a></div></div>
<div class="ttc" id="_file_only_profiling_decorator_tests_8cpp_html_a6560146509197f3e197d8d36f76c1347"><div class="ttname"><a href="_file_only_profiling_decorator_tests_8cpp.html#a6560146509197f3e197d8d36f76c1347">options</a></div><div class="ttdeci">armnn::Runtime::CreationOptions::ExternalProfilingOptions options</div><div class="ttdef"><b>Definition:</b> <a href="_file_only_profiling_decorator_tests_8cpp_source.html#l00045">FileOnlyProfilingDecoratorTests.cpp:45</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a8f6ad27911e2e711f665ae69c5b2cd1d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a8f6ad27911e2e711f665ae69c5b2cd1d">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[30/79]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
<td>(</td>
<td class="paramtype">CheckNamedLstmLayerBasic&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_const_tensor_layer_visitor_8cpp_source.html#l00630">630</a> of file <a class="el" href="_const_tensor_layer_visitor_8cpp_source.html">ConstTensorLayerVisitor.cpp</a>.</p>
<p class="reference">References <a class="el" href="classarmnn_1_1_i_connectable_layer.html#a8c9198a992b02e61a6777329d487dde3">IConnectableLayer::Accept()</a>, <a class="el" href="_network_8cpp_source.html#l01312">Network::AddLstmLayer()</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">Float32</a>, <a class="el" href="_descriptors_8hpp_source.html#l00861">LstmDescriptor::m_ActivationFunc</a>, <a class="el" href="_lstm_params_8hpp_source.html#l00053">LstmInputParams::m_CellBias</a>, <a class="el" href="_descriptors_8hpp_source.html#l00867">LstmDescriptor::m_CifgEnabled</a>, <a class="el" href="_descriptors_8hpp_source.html#l00863">LstmDescriptor::m_ClippingThresCell</a>, <a class="el" href="_descriptors_8hpp_source.html#l00865">LstmDescriptor::m_ClippingThresProj</a>, <a class="el" href="_lstm_params_8hpp_source.html#l00052">LstmInputParams::m_ForgetGateBias</a>, <a class="el" href="_lstm_params_8hpp_source.html#l00042">LstmInputParams::m_InputToCellWeights</a>, <a class="el" href="_lstm_params_8hpp_source.html#l00041">LstmInputParams::m_InputToForgetWeights</a>, <a class="el" href="_lstm_params_8hpp_source.html#l00043">LstmInputParams::m_InputToOutputWeights</a>, <a class="el" href="_lstm_params_8hpp_source.html#l00054">LstmInputParams::m_OutputGateBias</a>, <a class="el" href="_lstm_params_8hpp_source.html#l00046">LstmInputParams::m_RecurrentToCellWeights</a>, <a class="el" href="_lstm_params_8hpp_source.html#l00045">LstmInputParams::m_RecurrentToForgetWeights</a>, and <a class="el" href="_lstm_params_8hpp_source.html#l00047">LstmInputParams::m_RecurrentToOutputWeights</a>.</p>
<div class="fragment"><div class="line"><a name="l00631"></a><span class="lineno"> 631</span>&#160;{</div><div class="line"><a name="l00632"></a><span class="lineno"> 632</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span>* layerName = <span class="stringliteral">&quot;LstmLayer&quot;</span>;</div><div class="line"><a name="l00633"></a><span class="lineno"> 633</span>&#160; LstmDescriptor descriptor;</div><div class="line"><a name="l00634"></a><span class="lineno"> 634</span>&#160; descriptor.m_ActivationFunc = 3;</div><div class="line"><a name="l00635"></a><span class="lineno"> 635</span>&#160; descriptor.m_ClippingThresProj = 0.5f;</div><div class="line"><a name="l00636"></a><span class="lineno"> 636</span>&#160; descriptor.m_ClippingThresCell = 0.3f;</div><div class="line"><a name="l00637"></a><span class="lineno"> 637</span>&#160; descriptor.m_CifgEnabled = <span class="keyword">true</span>; <span class="comment">// if this is true then we DON&#39;T need to set the OptCifgParams</span></div><div class="line"><a name="l00638"></a><span class="lineno"> 638</span>&#160;</div><div class="line"><a name="l00639"></a><span class="lineno"> 639</span>&#160; std::vector&lt;float&gt; inputToForgetWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l00640"></a><span class="lineno"> 640</span>&#160; std::vector&lt;unsigned int&gt; inputToForgetWeightsDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l00641"></a><span class="lineno"> 641</span>&#160; ConstTensor inputToForgetWeights(</div><div class="line"><a name="l00642"></a><span class="lineno"> 642</span>&#160; TensorInfo(4, inputToForgetWeightsDimensions.data(), DataType::Float32), inputToForgetWeightsData);</div><div class="line"><a name="l00643"></a><span class="lineno"> 643</span>&#160;</div><div class="line"><a name="l00644"></a><span class="lineno"> 644</span>&#160; std::vector&lt;float&gt; inputToCellWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l00645"></a><span class="lineno"> 645</span>&#160; std::vector&lt;unsigned int&gt; inputToCellWeightsDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l00646"></a><span class="lineno"> 646</span>&#160; ConstTensor inputToCellWeights(</div><div class="line"><a name="l00647"></a><span class="lineno"> 647</span>&#160; TensorInfo(4, inputToCellWeightsDimensions.data(), DataType::Float32), inputToCellWeightsData);</div><div class="line"><a name="l00648"></a><span class="lineno"> 648</span>&#160;</div><div class="line"><a name="l00649"></a><span class="lineno"> 649</span>&#160; std::vector&lt;float&gt; inputToOutputWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l00650"></a><span class="lineno"> 650</span>&#160; std::vector&lt;unsigned int&gt; inputToOutputWeightsDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l00651"></a><span class="lineno"> 651</span>&#160; ConstTensor inputToOutputWeights(</div><div class="line"><a name="l00652"></a><span class="lineno"> 652</span>&#160; TensorInfo(4, inputToOutputWeightsDimensions.data(), DataType::Float32), inputToOutputWeightsData);</div><div class="line"><a name="l00653"></a><span class="lineno"> 653</span>&#160;</div><div class="line"><a name="l00654"></a><span class="lineno"> 654</span>&#160; std::vector&lt;float&gt; recurrentToForgetWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l00655"></a><span class="lineno"> 655</span>&#160; std::vector&lt;unsigned int&gt; recurrentToForgetWeightsDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l00656"></a><span class="lineno"> 656</span>&#160; ConstTensor recurrentToForgetWeights(TensorInfo(</div><div class="line"><a name="l00657"></a><span class="lineno"> 657</span>&#160; 4, recurrentToForgetWeightsDimensions.data(), DataType::Float32), recurrentToForgetWeightsData);</div><div class="line"><a name="l00658"></a><span class="lineno"> 658</span>&#160;</div><div class="line"><a name="l00659"></a><span class="lineno"> 659</span>&#160; std::vector&lt;float&gt; recurrentToCellWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l00660"></a><span class="lineno"> 660</span>&#160; std::vector&lt;unsigned int&gt; recurrentToCellWeightsDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l00661"></a><span class="lineno"> 661</span>&#160; ConstTensor recurrentToCellWeights(TensorInfo(</div><div class="line"><a name="l00662"></a><span class="lineno"> 662</span>&#160; 4, recurrentToCellWeightsDimensions.data(), DataType::Float32), recurrentToCellWeightsData);</div><div class="line"><a name="l00663"></a><span class="lineno"> 663</span>&#160;</div><div class="line"><a name="l00664"></a><span class="lineno"> 664</span>&#160; std::vector&lt;float&gt; recurrentToOutputWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l00665"></a><span class="lineno"> 665</span>&#160; std::vector&lt;unsigned int&gt; recurrentToOutputWeightsDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l00666"></a><span class="lineno"> 666</span>&#160; ConstTensor recurrentToOutputWeights(TensorInfo(</div><div class="line"><a name="l00667"></a><span class="lineno"> 667</span>&#160; 4, recurrentToOutputWeightsDimensions.data(), DataType::Float32), recurrentToOutputWeightsData);</div><div class="line"><a name="l00668"></a><span class="lineno"> 668</span>&#160;</div><div class="line"><a name="l00669"></a><span class="lineno"> 669</span>&#160; std::vector&lt;float&gt; forgetGateBiasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l00670"></a><span class="lineno"> 670</span>&#160; std::vector&lt;unsigned int&gt; forgetGateBiasDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l00671"></a><span class="lineno"> 671</span>&#160; ConstTensor forgetGateBias(TensorInfo(</div><div class="line"><a name="l00672"></a><span class="lineno"> 672</span>&#160; 4, forgetGateBiasDimensions.data(), DataType::Float32), forgetGateBiasData);</div><div class="line"><a name="l00673"></a><span class="lineno"> 673</span>&#160;</div><div class="line"><a name="l00674"></a><span class="lineno"> 674</span>&#160; std::vector&lt;float&gt; cellBiasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l00675"></a><span class="lineno"> 675</span>&#160; std::vector&lt;unsigned int&gt; cellBiasDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l00676"></a><span class="lineno"> 676</span>&#160; ConstTensor cellBias(TensorInfo(</div><div class="line"><a name="l00677"></a><span class="lineno"> 677</span>&#160; 4, cellBiasDimensions.data(), DataType::Float32), cellBiasData);</div><div class="line"><a name="l00678"></a><span class="lineno"> 678</span>&#160;</div><div class="line"><a name="l00679"></a><span class="lineno"> 679</span>&#160; std::vector&lt;float&gt; outputGateBiasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l00680"></a><span class="lineno"> 680</span>&#160; std::vector&lt;unsigned int&gt; outputGateBiasDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l00681"></a><span class="lineno"> 681</span>&#160; ConstTensor outputGateBias(TensorInfo(</div><div class="line"><a name="l00682"></a><span class="lineno"> 682</span>&#160; 4, outputGateBiasDimensions.data(), DataType::Float32), outputGateBiasData);</div><div class="line"><a name="l00683"></a><span class="lineno"> 683</span>&#160;</div><div class="line"><a name="l00684"></a><span class="lineno"> 684</span>&#160; LstmInputParams params;</div><div class="line"><a name="l00685"></a><span class="lineno"> 685</span>&#160; params.m_InputToForgetWeights = &amp;inputToForgetWeights;</div><div class="line"><a name="l00686"></a><span class="lineno"> 686</span>&#160; params.m_InputToCellWeights = &amp;inputToCellWeights;</div><div class="line"><a name="l00687"></a><span class="lineno"> 687</span>&#160; params.m_InputToOutputWeights = &amp;inputToOutputWeights;</div><div class="line"><a name="l00688"></a><span class="lineno"> 688</span>&#160; params.m_RecurrentToForgetWeights = &amp;recurrentToForgetWeights;</div><div class="line"><a name="l00689"></a><span class="lineno"> 689</span>&#160; params.m_RecurrentToCellWeights = &amp;recurrentToCellWeights;</div><div class="line"><a name="l00690"></a><span class="lineno"> 690</span>&#160; params.m_RecurrentToOutputWeights = &amp;recurrentToOutputWeights;</div><div class="line"><a name="l00691"></a><span class="lineno"> 691</span>&#160; params.m_ForgetGateBias = &amp;forgetGateBias;</div><div class="line"><a name="l00692"></a><span class="lineno"> 692</span>&#160; params.m_CellBias = &amp;cellBias;</div><div class="line"><a name="l00693"></a><span class="lineno"> 693</span>&#160; params.m_OutputGateBias = &amp;outputGateBias;</div><div class="line"><a name="l00694"></a><span class="lineno"> 694</span>&#160;</div><div class="line"><a name="l00695"></a><span class="lineno"> 695</span>&#160; TestLstmLayerVisitor visitor(descriptor, params, layerName);</div><div class="line"><a name="l00696"></a><span class="lineno"> 696</span>&#160;</div><div class="line"><a name="l00697"></a><span class="lineno"> 697</span>&#160; Network net;</div><div class="line"><a name="l00698"></a><span class="lineno"> 698</span>&#160;</div><div class="line"><a name="l00699"></a><span class="lineno"> 699</span>&#160; IConnectableLayer* <span class="keyword">const</span> layer = net.AddLstmLayer(descriptor, params, layerName);</div><div class="line"><a name="l00700"></a><span class="lineno"> 700</span>&#160; layer-&gt;Accept(visitor);</div><div class="line"><a name="l00701"></a><span class="lineno"> 701</span>&#160;}</div></div><!-- fragment -->
</div>
</div>
<a id="a32068047cc7b37f1bed1830508891526"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a32068047cc7b37f1bed1830508891526">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[31/79]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
<td>(</td>
<td class="paramtype">QuantizeLeakyReLuActivation&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_quantizer_test_8cpp_source.html#l00680">680</a> of file <a class="el" href="_quantizer_test_8cpp_source.html">QuantizerTest.cpp</a>.</p>
<p class="reference">References <a class="el" href="_network_quantizer_8cpp_source.html#l00040">INetworkQuantizer::Create()</a>, <a class="el" href="_quantizer_test_8cpp_source.html#l00297">CreateNetworkWithActivationLayer()</a>, <a class="el" href="namespacearmnn.html#a56297e0f7b215eea46c818cb7528d9eaacb7667f5ec2f6e8a5943b781ba6c2735">LeakyReLu</a>, <a class="el" href="_descriptors_8hpp_source.html#l00037">ActivationDescriptor::m_A</a>, <a class="el" href="_descriptors_8hpp_source.html#l00039">ActivationDescriptor::m_B</a>, <a class="el" href="_descriptors_8hpp_source.html#l00035">ActivationDescriptor::m_Function</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a9d02ea768c081d4bdb2b7cab0b3f510d">QAsymmS8</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7">QSymmS16</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a9945327825b115e93a3b89f4302e76db">QSymmS8</a>, and <a class="el" href="_quantizer_test_8cpp_source.html#l00193">VisitLayersTopologically()</a>.</p>
<div class="fragment"><div class="line"><a name="l00681"></a><span class="lineno"> 681</span>&#160;{</div><div class="line"><a name="l00682"></a><span class="lineno"> 682</span>&#160; ActivationDescriptor descriptor;</div><div class="line"><a name="l00683"></a><span class="lineno"> 683</span>&#160; descriptor.m_Function = ActivationFunction::LeakyReLu;</div><div class="line"><a name="l00684"></a><span class="lineno"> 684</span>&#160; descriptor.m_A = 3.5f;</div><div class="line"><a name="l00685"></a><span class="lineno"> 685</span>&#160; descriptor.m_B = -10.0f;</div><div class="line"><a name="l00686"></a><span class="lineno"> 686</span>&#160;</div><div class="line"><a name="l00687"></a><span class="lineno"> 687</span>&#160; <span class="keyword">const</span> TensorShape shape{1U};</div><div class="line"><a name="l00688"></a><span class="lineno"> 688</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> network = <a class="code" href="namespacearmnn.html#a5fbc1479db5f4ff70a750cf02d58971b">CreateNetworkWithActivationLayer</a>(descriptor, shape);</div><div class="line"><a name="l00689"></a><span class="lineno"> 689</span>&#160;</div><div class="line"><a name="l00690"></a><span class="lineno"> 690</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQAsymmU8 = INetworkQuantizer::Create(network.get())-&gt;ExportNetwork();</div><div class="line"><a name="l00691"></a><span class="lineno"> 691</span>&#160; TestLeakyReLuActivationQuantization validatorQAsymmU8(shape, shape);</div><div class="line"><a name="l00692"></a><span class="lineno"> 692</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQAsymmU8.get(), validatorQAsymmU8);</div><div class="line"><a name="l00693"></a><span class="lineno"> 693</span>&#160;</div><div class="line"><a name="l00694"></a><span class="lineno"> 694</span>&#160; <span class="keyword">const</span> QuantizerOptions qAsymmS8Options(DataType::QAsymmS8);</div><div class="line"><a name="l00695"></a><span class="lineno"> 695</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQAsymmS8 = INetworkQuantizer::Create(network.get(), qAsymmS8Options)-&gt;ExportNetwork();</div><div class="line"><a name="l00696"></a><span class="lineno"> 696</span>&#160; TestLeakyReLuActivationQuantization validatorQAsymmS8(qAsymmS8Options, shape, shape);</div><div class="line"><a name="l00697"></a><span class="lineno"> 697</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQAsymmS8.get(), validatorQAsymmS8);</div><div class="line"><a name="l00698"></a><span class="lineno"> 698</span>&#160;</div><div class="line"><a name="l00699"></a><span class="lineno"> 699</span>&#160; <span class="keyword">const</span> QuantizerOptions qSymmS8Options(DataType::QSymmS8);</div><div class="line"><a name="l00700"></a><span class="lineno"> 700</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQSymmS8 = INetworkQuantizer::Create(network.get(), qSymmS8Options)-&gt;ExportNetwork();</div><div class="line"><a name="l00701"></a><span class="lineno"> 701</span>&#160; TestLeakyReLuActivationQuantization validatorQSymmS8(qSymmS8Options, shape, shape);</div><div class="line"><a name="l00702"></a><span class="lineno"> 702</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQSymmS8.get(), validatorQSymmS8);</div><div class="line"><a name="l00703"></a><span class="lineno"> 703</span>&#160;</div><div class="line"><a name="l00704"></a><span class="lineno"> 704</span>&#160; <span class="keyword">const</span> QuantizerOptions qSymmS16options(DataType::QSymmS16);</div><div class="line"><a name="l00705"></a><span class="lineno"> 705</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQSymmS16 = INetworkQuantizer::Create(network.get(), qSymmS16options)-&gt;ExportNetwork();</div><div class="line"><a name="l00706"></a><span class="lineno"> 706</span>&#160; TestLeakyReLuActivationQuantization validatorQSymmS16(qSymmS16options, shape, shape);</div><div class="line"><a name="l00707"></a><span class="lineno"> 707</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQSymmS16.get(), validatorQSymmS16);</div><div class="line"><a name="l00708"></a><span class="lineno"> 708</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a5fbc1479db5f4ff70a750cf02d58971b"><div class="ttname"><a href="namespacearmnn.html#a5fbc1479db5f4ff70a750cf02d58971b">armnn::CreateNetworkWithActivationLayer</a></div><div class="ttdeci">INetworkPtr CreateNetworkWithActivationLayer(const ActivationDescriptor &amp;descriptor, const TensorShape &amp;shape)</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l00297">QuantizerTest.cpp:297</a></div></div>
<div class="ttc" id="namespacearmnn_html_a6482907b4c57873e197324f5cb66fd4d"><div class="ttname"><a href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">armnn::VisitLayersTopologically</a></div><div class="ttdeci">void VisitLayersTopologically(const INetwork *inputNetwork, ILayerVisitor &amp;visitor)</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l00193">QuantizerTest.cpp:193</a></div></div>
<div class="ttc" id="namespacearmnn_html_ace74f6f9feb95a964a49d79458232703"><div class="ttname"><a href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">armnn::INetworkPtr</a></div><div class="ttdeci">std::unique_ptr&lt; INetwork, void(*)(INetwork *network)&gt; INetworkPtr</div><div class="ttdef"><b>Definition:</b> <a href="_i_network_8hpp_source.html#l00085">INetwork.hpp:85</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a5400bc09082eab59bdfdbd61a06578f5"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a5400bc09082eab59bdfdbd61a06578f5">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[32/79]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
<td>(</td>
<td class="paramtype">CheckLstmLayerCifgDisabled&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_const_tensor_layer_visitor_8cpp_source.html#l00703">703</a> of file <a class="el" href="_const_tensor_layer_visitor_8cpp_source.html">ConstTensorLayerVisitor.cpp</a>.</p>
<p class="reference">References <a class="el" href="classarmnn_1_1_i_connectable_layer.html#a8c9198a992b02e61a6777329d487dde3">IConnectableLayer::Accept()</a>, <a class="el" href="_network_8cpp_source.html#l01312">Network::AddLstmLayer()</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">Float32</a>, <a class="el" href="_descriptors_8hpp_source.html#l00861">LstmDescriptor::m_ActivationFunc</a>, <a class="el" href="_lstm_params_8hpp_source.html#l00053">LstmInputParams::m_CellBias</a>, <a class="el" href="_lstm_params_8hpp_source.html#l00048">LstmInputParams::m_CellToInputWeights</a>, <a class="el" href="_descriptors_8hpp_source.html#l00867">LstmDescriptor::m_CifgEnabled</a>, <a class="el" href="_descriptors_8hpp_source.html#l00863">LstmDescriptor::m_ClippingThresCell</a>, <a class="el" href="_descriptors_8hpp_source.html#l00865">LstmDescriptor::m_ClippingThresProj</a>, <a class="el" href="_lstm_params_8hpp_source.html#l00052">LstmInputParams::m_ForgetGateBias</a>, <a class="el" href="_lstm_params_8hpp_source.html#l00051">LstmInputParams::m_InputGateBias</a>, <a class="el" href="_lstm_params_8hpp_source.html#l00042">LstmInputParams::m_InputToCellWeights</a>, <a class="el" href="_lstm_params_8hpp_source.html#l00041">LstmInputParams::m_InputToForgetWeights</a>, <a class="el" href="_lstm_params_8hpp_source.html#l00040">LstmInputParams::m_InputToInputWeights</a>, <a class="el" href="_lstm_params_8hpp_source.html#l00043">LstmInputParams::m_InputToOutputWeights</a>, <a class="el" href="_lstm_params_8hpp_source.html#l00054">LstmInputParams::m_OutputGateBias</a>, <a class="el" href="_lstm_params_8hpp_source.html#l00046">LstmInputParams::m_RecurrentToCellWeights</a>, <a class="el" href="_lstm_params_8hpp_source.html#l00045">LstmInputParams::m_RecurrentToForgetWeights</a>, <a class="el" href="_lstm_params_8hpp_source.html#l00044">LstmInputParams::m_RecurrentToInputWeights</a>, and <a class="el" href="_lstm_params_8hpp_source.html#l00047">LstmInputParams::m_RecurrentToOutputWeights</a>.</p>
<div class="fragment"><div class="line"><a name="l00704"></a><span class="lineno"> 704</span>&#160;{</div><div class="line"><a name="l00705"></a><span class="lineno"> 705</span>&#160; LstmDescriptor descriptor;</div><div class="line"><a name="l00706"></a><span class="lineno"> 706</span>&#160; descriptor.m_ActivationFunc = 3;</div><div class="line"><a name="l00707"></a><span class="lineno"> 707</span>&#160; descriptor.m_ClippingThresProj = 0.5f;</div><div class="line"><a name="l00708"></a><span class="lineno"> 708</span>&#160; descriptor.m_ClippingThresCell = 0.3f;</div><div class="line"><a name="l00709"></a><span class="lineno"> 709</span>&#160; descriptor.m_CifgEnabled = <span class="keyword">false</span>; <span class="comment">// if this is true then we DON&#39;T need to set the OptCifgParams</span></div><div class="line"><a name="l00710"></a><span class="lineno"> 710</span>&#160;</div><div class="line"><a name="l00711"></a><span class="lineno"> 711</span>&#160; std::vector&lt;float&gt; inputToForgetWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l00712"></a><span class="lineno"> 712</span>&#160; std::vector&lt;unsigned int&gt; inputToForgetWeightsDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l00713"></a><span class="lineno"> 713</span>&#160; ConstTensor inputToForgetWeights(</div><div class="line"><a name="l00714"></a><span class="lineno"> 714</span>&#160; TensorInfo(4, inputToForgetWeightsDimensions.data(), DataType::Float32), inputToForgetWeightsData);</div><div class="line"><a name="l00715"></a><span class="lineno"> 715</span>&#160;</div><div class="line"><a name="l00716"></a><span class="lineno"> 716</span>&#160; std::vector&lt;float&gt; inputToCellWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l00717"></a><span class="lineno"> 717</span>&#160; std::vector&lt;unsigned int&gt; inputToCellWeightsDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l00718"></a><span class="lineno"> 718</span>&#160; ConstTensor inputToCellWeights(</div><div class="line"><a name="l00719"></a><span class="lineno"> 719</span>&#160; TensorInfo(4, inputToCellWeightsDimensions.data(), DataType::Float32), inputToCellWeightsData);</div><div class="line"><a name="l00720"></a><span class="lineno"> 720</span>&#160;</div><div class="line"><a name="l00721"></a><span class="lineno"> 721</span>&#160; std::vector&lt;float&gt; inputToOutputWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l00722"></a><span class="lineno"> 722</span>&#160; std::vector&lt;unsigned int&gt; inputToOutputWeightsDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l00723"></a><span class="lineno"> 723</span>&#160; ConstTensor inputToOutputWeights(</div><div class="line"><a name="l00724"></a><span class="lineno"> 724</span>&#160; TensorInfo(4, inputToOutputWeightsDimensions.data(), DataType::Float32), inputToOutputWeightsData);</div><div class="line"><a name="l00725"></a><span class="lineno"> 725</span>&#160;</div><div class="line"><a name="l00726"></a><span class="lineno"> 726</span>&#160; std::vector&lt;float&gt; recurrentToForgetWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l00727"></a><span class="lineno"> 727</span>&#160; std::vector&lt;unsigned int&gt; recurrentToForgetWeightsDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l00728"></a><span class="lineno"> 728</span>&#160; ConstTensor recurrentToForgetWeights(TensorInfo(</div><div class="line"><a name="l00729"></a><span class="lineno"> 729</span>&#160; 4, recurrentToForgetWeightsDimensions.data(), DataType::Float32), recurrentToForgetWeightsData);</div><div class="line"><a name="l00730"></a><span class="lineno"> 730</span>&#160;</div><div class="line"><a name="l00731"></a><span class="lineno"> 731</span>&#160; std::vector&lt;float&gt; recurrentToCellWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l00732"></a><span class="lineno"> 732</span>&#160; std::vector&lt;unsigned int&gt; recurrentToCellWeightsDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l00733"></a><span class="lineno"> 733</span>&#160; ConstTensor recurrentToCellWeights(TensorInfo(</div><div class="line"><a name="l00734"></a><span class="lineno"> 734</span>&#160; 4, recurrentToCellWeightsDimensions.data(), DataType::Float32), recurrentToCellWeightsData);</div><div class="line"><a name="l00735"></a><span class="lineno"> 735</span>&#160;</div><div class="line"><a name="l00736"></a><span class="lineno"> 736</span>&#160; std::vector&lt;float&gt; recurrentToOutputWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l00737"></a><span class="lineno"> 737</span>&#160; std::vector&lt;unsigned int&gt; recurrentToOutputWeightsDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l00738"></a><span class="lineno"> 738</span>&#160; ConstTensor recurrentToOutputWeights(TensorInfo(</div><div class="line"><a name="l00739"></a><span class="lineno"> 739</span>&#160; 4, recurrentToOutputWeightsDimensions.data(), DataType::Float32), recurrentToOutputWeightsData);</div><div class="line"><a name="l00740"></a><span class="lineno"> 740</span>&#160;</div><div class="line"><a name="l00741"></a><span class="lineno"> 741</span>&#160; std::vector&lt;float&gt; forgetGateBiasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l00742"></a><span class="lineno"> 742</span>&#160; std::vector&lt;unsigned int&gt; forgetGateBiasDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l00743"></a><span class="lineno"> 743</span>&#160; ConstTensor forgetGateBias(TensorInfo(</div><div class="line"><a name="l00744"></a><span class="lineno"> 744</span>&#160; 4, forgetGateBiasDimensions.data(), DataType::Float32), forgetGateBiasData);</div><div class="line"><a name="l00745"></a><span class="lineno"> 745</span>&#160;</div><div class="line"><a name="l00746"></a><span class="lineno"> 746</span>&#160; std::vector&lt;float&gt; cellBiasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l00747"></a><span class="lineno"> 747</span>&#160; std::vector&lt;unsigned int&gt; cellBiasDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l00748"></a><span class="lineno"> 748</span>&#160; ConstTensor cellBias(TensorInfo(</div><div class="line"><a name="l00749"></a><span class="lineno"> 749</span>&#160; 4, cellBiasDimensions.data(), DataType::Float32), cellBiasData);</div><div class="line"><a name="l00750"></a><span class="lineno"> 750</span>&#160;</div><div class="line"><a name="l00751"></a><span class="lineno"> 751</span>&#160; std::vector&lt;float&gt; outputGateBiasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l00752"></a><span class="lineno"> 752</span>&#160; std::vector&lt;unsigned int&gt; outputGateBiasDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l00753"></a><span class="lineno"> 753</span>&#160; ConstTensor outputGateBias(TensorInfo(</div><div class="line"><a name="l00754"></a><span class="lineno"> 754</span>&#160; 4, outputGateBiasDimensions.data(), DataType::Float32), outputGateBiasData);</div><div class="line"><a name="l00755"></a><span class="lineno"> 755</span>&#160;</div><div class="line"><a name="l00756"></a><span class="lineno"> 756</span>&#160; std::vector&lt;float&gt; inputToInputWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l00757"></a><span class="lineno"> 757</span>&#160; std::vector&lt;unsigned int&gt; inputToInputWeightsDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l00758"></a><span class="lineno"> 758</span>&#160; ConstTensor inputToInputWeights(</div><div class="line"><a name="l00759"></a><span class="lineno"> 759</span>&#160; TensorInfo(4, inputToInputWeightsDimensions.data(), DataType::Float32), inputToInputWeightsData);</div><div class="line"><a name="l00760"></a><span class="lineno"> 760</span>&#160;</div><div class="line"><a name="l00761"></a><span class="lineno"> 761</span>&#160; std::vector&lt;float&gt; recurrentToInputWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l00762"></a><span class="lineno"> 762</span>&#160; std::vector&lt;unsigned int&gt; recurrentToInputWeightsDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l00763"></a><span class="lineno"> 763</span>&#160; ConstTensor recurrentToInputWeights(TensorInfo(</div><div class="line"><a name="l00764"></a><span class="lineno"> 764</span>&#160; 4, recurrentToInputWeightsDimensions.data(), DataType::Float32), recurrentToInputWeightsData);</div><div class="line"><a name="l00765"></a><span class="lineno"> 765</span>&#160;</div><div class="line"><a name="l00766"></a><span class="lineno"> 766</span>&#160; std::vector&lt;float&gt; cellToInputWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l00767"></a><span class="lineno"> 767</span>&#160; std::vector&lt;unsigned int&gt; cellToInputWeightsDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l00768"></a><span class="lineno"> 768</span>&#160; ConstTensor cellToInputWeights(</div><div class="line"><a name="l00769"></a><span class="lineno"> 769</span>&#160; TensorInfo(4, cellToInputWeightsDimensions.data(), DataType::Float32), cellToInputWeightsData);</div><div class="line"><a name="l00770"></a><span class="lineno"> 770</span>&#160;</div><div class="line"><a name="l00771"></a><span class="lineno"> 771</span>&#160; std::vector&lt;float&gt; inputGateBiasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l00772"></a><span class="lineno"> 772</span>&#160; std::vector&lt;unsigned int&gt; inputGateBiasDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l00773"></a><span class="lineno"> 773</span>&#160; ConstTensor inputGateBias(</div><div class="line"><a name="l00774"></a><span class="lineno"> 774</span>&#160; TensorInfo(4, inputGateBiasDimensions.data(), DataType::Float32), inputGateBiasData);</div><div class="line"><a name="l00775"></a><span class="lineno"> 775</span>&#160;</div><div class="line"><a name="l00776"></a><span class="lineno"> 776</span>&#160; LstmInputParams params;</div><div class="line"><a name="l00777"></a><span class="lineno"> 777</span>&#160; params.m_InputToForgetWeights = &amp;inputToForgetWeights;</div><div class="line"><a name="l00778"></a><span class="lineno"> 778</span>&#160; params.m_InputToCellWeights = &amp;inputToCellWeights;</div><div class="line"><a name="l00779"></a><span class="lineno"> 779</span>&#160; params.m_InputToOutputWeights = &amp;inputToOutputWeights;</div><div class="line"><a name="l00780"></a><span class="lineno"> 780</span>&#160; params.m_RecurrentToForgetWeights = &amp;recurrentToForgetWeights;</div><div class="line"><a name="l00781"></a><span class="lineno"> 781</span>&#160; params.m_RecurrentToCellWeights = &amp;recurrentToCellWeights;</div><div class="line"><a name="l00782"></a><span class="lineno"> 782</span>&#160; params.m_RecurrentToOutputWeights = &amp;recurrentToOutputWeights;</div><div class="line"><a name="l00783"></a><span class="lineno"> 783</span>&#160; params.m_ForgetGateBias = &amp;forgetGateBias;</div><div class="line"><a name="l00784"></a><span class="lineno"> 784</span>&#160; params.m_CellBias = &amp;cellBias;</div><div class="line"><a name="l00785"></a><span class="lineno"> 785</span>&#160; params.m_OutputGateBias = &amp;outputGateBias;</div><div class="line"><a name="l00786"></a><span class="lineno"> 786</span>&#160;</div><div class="line"><a name="l00787"></a><span class="lineno"> 787</span>&#160; params.m_InputToInputWeights = &amp;inputToInputWeights;</div><div class="line"><a name="l00788"></a><span class="lineno"> 788</span>&#160; params.m_RecurrentToInputWeights = &amp;recurrentToInputWeights;</div><div class="line"><a name="l00789"></a><span class="lineno"> 789</span>&#160; params.m_CellToInputWeights = &amp;cellToInputWeights;</div><div class="line"><a name="l00790"></a><span class="lineno"> 790</span>&#160; params.m_InputGateBias = &amp;inputGateBias;</div><div class="line"><a name="l00791"></a><span class="lineno"> 791</span>&#160;</div><div class="line"><a name="l00792"></a><span class="lineno"> 792</span>&#160; TestLstmLayerVisitor visitor(descriptor, params);</div><div class="line"><a name="l00793"></a><span class="lineno"> 793</span>&#160;</div><div class="line"><a name="l00794"></a><span class="lineno"> 794</span>&#160; Network net;</div><div class="line"><a name="l00795"></a><span class="lineno"> 795</span>&#160;</div><div class="line"><a name="l00796"></a><span class="lineno"> 796</span>&#160; IConnectableLayer* <span class="keyword">const</span> layer = net.AddLstmLayer(descriptor, params);</div><div class="line"><a name="l00797"></a><span class="lineno"> 797</span>&#160; layer-&gt;Accept(visitor);</div><div class="line"><a name="l00798"></a><span class="lineno"> 798</span>&#160;}</div></div><!-- fragment -->
</div>
</div>
<a id="adf59f87645d301e9b56dd70aed350e54"></a>
<h2 class="memtitle"><span class="permalink"><a href="#adf59f87645d301e9b56dd70aed350e54">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[33/79]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
<td>(</td>
<td class="paramtype">QuantizeBatchNorm&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_quantizer_test_8cpp_source.html#l00710">710</a> of file <a class="el" href="_quantizer_test_8cpp_source.html">QuantizerTest.cpp</a>.</p>
<p class="reference">References <a class="el" href="classarmnn_1_1_i_output_slot.html#ac1835f8756a9f03c02fcf9664e3a0fce">IOutputSlot::Connect()</a>, <a class="el" href="_network_quantizer_8cpp_source.html#l00040">INetworkQuantizer::Create()</a>, <a class="el" href="_network_8cpp_source.html#l00048">INetwork::Create()</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">Float32</a>, <a class="el" href="_quantizer_test_8cpp_source.html#l00035">g_AsymmS8QuantizationBase</a>, <a class="el" href="_quantizer_test_8cpp_source.html#l00033">g_AsymmU8QuantizationBase</a>, <a class="el" href="_quantizer_test_8cpp_source.html#l00037">g_SymmS16QuantizationBase</a>, <a class="el" href="_quantizer_test_8cpp_source.html#l00036">g_SymmS8QuantizationBase</a>, <a class="el" href="_tensor_8hpp_source.html#l00167">BaseTensor&lt; MemoryType &gt;::GetInfo()</a>, <a class="el" href="classarmnn_1_1_i_connectable_layer.html#a6ec9e0eb66d7d6a01240492a0b18104c">IConnectableLayer::GetInputSlot()</a>, <a class="el" href="classarmnn_1_1_i_connectable_layer.html#a80ac4eda2e7f2757ec9dd96fc96dbd16">IConnectableLayer::GetOutputSlot()</a>, <a class="el" href="classarmnn_1_1_i_output_slot.html#a9943775a364fc4ab53b85ac88f311886">IOutputSlot::GetTensorInfo()</a>, <a class="el" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>, <a class="el" href="_file_only_profiling_decorator_tests_8cpp_source.html#l00045">options</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a9d02ea768c081d4bdb2b7cab0b3f510d">QAsymmS8</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7">QSymmS16</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a9945327825b115e93a3b89f4302e76db">QSymmS8</a>, <a class="el" href="classarmnn_1_1_i_output_slot.html#a5ee4a6c9a2481245487b1b1a70d20fd0">IOutputSlot::SetTensorInfo()</a>, and <a class="el" href="_quantizer_test_8cpp_source.html#l00193">VisitLayersTopologically()</a>.</p>
<div class="fragment"><div class="line"><a name="l00711"></a><span class="lineno"> 711</span>&#160;{</div><div class="line"><a name="l00712"></a><span class="lineno"> 712</span>&#160; <span class="keyword">class </span>TestBatchNormalizationQuantization : <span class="keyword">public</span> TestQuantization</div><div class="line"><a name="l00713"></a><span class="lineno"> 713</span>&#160; {</div><div class="line"><a name="l00714"></a><span class="lineno"> 714</span>&#160; <span class="keyword">public</span>:</div><div class="line"><a name="l00715"></a><span class="lineno"> 715</span>&#160; TestBatchNormalizationQuantization(<span class="keyword">const</span> TensorShape&amp; inputShape, <span class="keyword">const</span> TensorShape&amp; outputShape)</div><div class="line"><a name="l00716"></a><span class="lineno"> 716</span>&#160; : TestQuantization(inputShape, outputShape) {}</div><div class="line"><a name="l00717"></a><span class="lineno"> 717</span>&#160;</div><div class="line"><a name="l00718"></a><span class="lineno"> 718</span>&#160; TestBatchNormalizationQuantization(<span class="keyword">const</span> QuantizerOptions&amp; <a class="code" href="_file_only_profiling_decorator_tests_8cpp.html#a6560146509197f3e197d8d36f76c1347">options</a>,</div><div class="line"><a name="l00719"></a><span class="lineno"> 719</span>&#160; <span class="keyword">const</span> TensorShape&amp; inputShape,</div><div class="line"><a name="l00720"></a><span class="lineno"> 720</span>&#160; <span class="keyword">const</span> TensorShape&amp; outputShape)</div><div class="line"><a name="l00721"></a><span class="lineno"> 721</span>&#160; : TestQuantization(options, inputShape, outputShape) {}</div><div class="line"><a name="l00722"></a><span class="lineno"> 722</span>&#160;</div><div class="line"><a name="l00723"></a><span class="lineno"> 723</span>&#160; <span class="keywordtype">void</span> VisitBatchNormalizationLayer(<span class="keyword">const</span> IConnectableLayer* layer,</div><div class="line"><a name="l00724"></a><span class="lineno"> 724</span>&#160; <span class="keyword">const</span> BatchNormalizationDescriptor&amp; desc,</div><div class="line"><a name="l00725"></a><span class="lineno"> 725</span>&#160; <span class="keyword">const</span> ConstTensor&amp; mean,</div><div class="line"><a name="l00726"></a><span class="lineno"> 726</span>&#160; <span class="keyword">const</span> ConstTensor&amp; variance,</div><div class="line"><a name="l00727"></a><span class="lineno"> 727</span>&#160; <span class="keyword">const</span> ConstTensor&amp; beta,</div><div class="line"><a name="l00728"></a><span class="lineno"> 728</span>&#160; <span class="keyword">const</span> ConstTensor&amp; gamma,</div><div class="line"><a name="l00729"></a><span class="lineno"> 729</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span>* name = <span class="keyword">nullptr</span>)<span class="keyword"> override</span></div><div class="line"><a name="l00730"></a><span class="lineno"> 730</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00731"></a><span class="lineno"> 731</span>&#160; boost::ignore_unused(desc, name);</div><div class="line"><a name="l00732"></a><span class="lineno"> 732</span>&#160; TensorInfo <a class="code" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a> = layer-&gt;GetOutputSlot(0).GetTensorInfo();</div><div class="line"><a name="l00733"></a><span class="lineno"> 733</span>&#160;</div><div class="line"><a name="l00734"></a><span class="lineno"> 734</span>&#160; <span class="comment">// Based off default static range [-15.0f, 15.0f]</span></div><div class="line"><a name="l00735"></a><span class="lineno"> 735</span>&#160; TestQuantizationParams(</div><div class="line"><a name="l00736"></a><span class="lineno"> 736</span>&#160; info, {30.0f / <a class="code" href="namespacearmnn.html#a19994153bdbd7710f0af3973403bc4cc">g_AsymmU8QuantizationBase</a>, 128},</div><div class="line"><a name="l00737"></a><span class="lineno"> 737</span>&#160; {30.0f / <a class="code" href="namespacearmnn.html#a09bdfaa922d72ce0d9ec014dfa8f8c95">g_AsymmS8QuantizationBase</a>, 0},</div><div class="line"><a name="l00738"></a><span class="lineno"> 738</span>&#160; {15.0f / <a class="code" href="namespacearmnn.html#acd7f8820d124166a38c95bc8ad38811b">g_SymmS8QuantizationBase</a>, 0},</div><div class="line"><a name="l00739"></a><span class="lineno"> 739</span>&#160; {15.0f / <a class="code" href="namespacearmnn.html#a1465480794787d2278d3f0d2e6d887b4">g_SymmS16QuantizationBase</a>, 0});</div><div class="line"><a name="l00740"></a><span class="lineno"> 740</span>&#160;</div><div class="line"><a name="l00741"></a><span class="lineno"> 741</span>&#160; <span class="comment">// Test constants</span></div><div class="line"><a name="l00742"></a><span class="lineno"> 742</span>&#160; TestConstantQuantizationParams(mean.GetInfo(), {3.0f / <a class="code" href="namespacearmnn.html#a19994153bdbd7710f0af3973403bc4cc">g_AsymmU8QuantizationBase</a>, 85});</div><div class="line"><a name="l00743"></a><span class="lineno"> 743</span>&#160; TestConstantQuantizationParams(variance.GetInfo(), {3.0f / <a class="code" href="namespacearmnn.html#a19994153bdbd7710f0af3973403bc4cc">g_AsymmU8QuantizationBase</a>, 85});</div><div class="line"><a name="l00744"></a><span class="lineno"> 744</span>&#160; TestConstantQuantizationParams(beta.GetInfo(), {3.0f / <a class="code" href="namespacearmnn.html#a19994153bdbd7710f0af3973403bc4cc">g_AsymmU8QuantizationBase</a>, 85});</div><div class="line"><a name="l00745"></a><span class="lineno"> 745</span>&#160; TestConstantQuantizationParams(gamma.GetInfo(), {3.0f / <a class="code" href="namespacearmnn.html#a19994153bdbd7710f0af3973403bc4cc">g_AsymmU8QuantizationBase</a>, 85});</div><div class="line"><a name="l00746"></a><span class="lineno"> 746</span>&#160; }</div><div class="line"><a name="l00747"></a><span class="lineno"> 747</span>&#160; };</div><div class="line"><a name="l00748"></a><span class="lineno"> 748</span>&#160;</div><div class="line"><a name="l00749"></a><span class="lineno"> 749</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> network = INetwork::Create();</div><div class="line"><a name="l00750"></a><span class="lineno"> 750</span>&#160;</div><div class="line"><a name="l00751"></a><span class="lineno"> 751</span>&#160; <span class="keyword">const</span> TensorShape shape{3U};</div><div class="line"><a name="l00752"></a><span class="lineno"> 752</span>&#160; TensorInfo info(shape, DataType::Float32);</div><div class="line"><a name="l00753"></a><span class="lineno"> 753</span>&#160;</div><div class="line"><a name="l00754"></a><span class="lineno"> 754</span>&#160; std::vector&lt;float&gt; meanData{-1.0f, 1.5f, 2.0f};</div><div class="line"><a name="l00755"></a><span class="lineno"> 755</span>&#160; std::vector&lt;float&gt; varData{-1.0f, 1.5f, 2.0f};</div><div class="line"><a name="l00756"></a><span class="lineno"> 756</span>&#160; std::vector&lt;float&gt; betaData{-1.0f, 1.5f, 2.0f};</div><div class="line"><a name="l00757"></a><span class="lineno"> 757</span>&#160; std::vector&lt;float&gt; gammaData{-1.0f, 1.5f, 2.0f};</div><div class="line"><a name="l00758"></a><span class="lineno"> 758</span>&#160;</div><div class="line"><a name="l00759"></a><span class="lineno"> 759</span>&#160; ConstTensor mean(info, meanData);</div><div class="line"><a name="l00760"></a><span class="lineno"> 760</span>&#160; ConstTensor var(info, varData);</div><div class="line"><a name="l00761"></a><span class="lineno"> 761</span>&#160; ConstTensor beta(info, betaData);</div><div class="line"><a name="l00762"></a><span class="lineno"> 762</span>&#160; ConstTensor gamma(info, gammaData);</div><div class="line"><a name="l00763"></a><span class="lineno"> 763</span>&#160;</div><div class="line"><a name="l00764"></a><span class="lineno"> 764</span>&#160; BatchNormalizationDescriptor desc;</div><div class="line"><a name="l00765"></a><span class="lineno"> 765</span>&#160;</div><div class="line"><a name="l00766"></a><span class="lineno"> 766</span>&#160; <span class="comment">// Add the layers</span></div><div class="line"><a name="l00767"></a><span class="lineno"> 767</span>&#160; IConnectableLayer* input0 = network-&gt;AddInputLayer(0);</div><div class="line"><a name="l00768"></a><span class="lineno"> 768</span>&#160; IConnectableLayer* batchNorm = network-&gt;AddBatchNormalizationLayer(desc, mean, var, beta, gamma);</div><div class="line"><a name="l00769"></a><span class="lineno"> 769</span>&#160; IConnectableLayer* output = network-&gt;AddOutputLayer(1);</div><div class="line"><a name="l00770"></a><span class="lineno"> 770</span>&#160;</div><div class="line"><a name="l00771"></a><span class="lineno"> 771</span>&#160; <span class="comment">// Establish connections</span></div><div class="line"><a name="l00772"></a><span class="lineno"> 772</span>&#160; input0-&gt;GetOutputSlot(0).Connect(batchNorm-&gt;GetInputSlot(0));</div><div class="line"><a name="l00773"></a><span class="lineno"> 773</span>&#160; batchNorm-&gt;GetOutputSlot(0).Connect(output-&gt;GetInputSlot(0));</div><div class="line"><a name="l00774"></a><span class="lineno"> 774</span>&#160;</div><div class="line"><a name="l00775"></a><span class="lineno"> 775</span>&#160; <span class="comment">// Set TensorInfo</span></div><div class="line"><a name="l00776"></a><span class="lineno"> 776</span>&#160; input0-&gt;GetOutputSlot(0).SetTensorInfo(info);</div><div class="line"><a name="l00777"></a><span class="lineno"> 777</span>&#160; batchNorm-&gt;GetOutputSlot(0).SetTensorInfo(info);</div><div class="line"><a name="l00778"></a><span class="lineno"> 778</span>&#160;</div><div class="line"><a name="l00779"></a><span class="lineno"> 779</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQAsymmU8 = INetworkQuantizer::Create(network.get())-&gt;ExportNetwork();</div><div class="line"><a name="l00780"></a><span class="lineno"> 780</span>&#160; TestBatchNormalizationQuantization validatorQAsymmU8(shape, shape);</div><div class="line"><a name="l00781"></a><span class="lineno"> 781</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQAsymmU8.get(), validatorQAsymmU8);</div><div class="line"><a name="l00782"></a><span class="lineno"> 782</span>&#160;</div><div class="line"><a name="l00783"></a><span class="lineno"> 783</span>&#160; <span class="keyword">const</span> QuantizerOptions qAsymmS8Options(DataType::QAsymmS8);</div><div class="line"><a name="l00784"></a><span class="lineno"> 784</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQAsymmS8 = INetworkQuantizer::Create(network.get(), qAsymmS8Options)-&gt;ExportNetwork();</div><div class="line"><a name="l00785"></a><span class="lineno"> 785</span>&#160; TestBatchNormalizationQuantization validatorQAsymmS8(qAsymmS8Options, shape, shape);</div><div class="line"><a name="l00786"></a><span class="lineno"> 786</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQAsymmS8.get(), validatorQAsymmS8);</div><div class="line"><a name="l00787"></a><span class="lineno"> 787</span>&#160;</div><div class="line"><a name="l00788"></a><span class="lineno"> 788</span>&#160; <span class="keyword">const</span> QuantizerOptions qSymmS8Options(DataType::QSymmS8);</div><div class="line"><a name="l00789"></a><span class="lineno"> 789</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQSymmS8 = INetworkQuantizer::Create(network.get(), qSymmS8Options)-&gt;ExportNetwork();</div><div class="line"><a name="l00790"></a><span class="lineno"> 790</span>&#160; TestBatchNormalizationQuantization validatorQSymmS8(qSymmS8Options, shape, shape);</div><div class="line"><a name="l00791"></a><span class="lineno"> 791</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQSymmS8.get(), validatorQSymmS8);</div><div class="line"><a name="l00792"></a><span class="lineno"> 792</span>&#160;</div><div class="line"><a name="l00793"></a><span class="lineno"> 793</span>&#160; <span class="keyword">const</span> QuantizerOptions QQsymm16Options(DataType::QSymmS16);</div><div class="line"><a name="l00794"></a><span class="lineno"> 794</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQSymmS16 = INetworkQuantizer::Create(network.get(), QQsymm16Options)-&gt;ExportNetwork();</div><div class="line"><a name="l00795"></a><span class="lineno"> 795</span>&#160; TestBatchNormalizationQuantization validatorQSymmS16(QQsymm16Options, shape, shape);</div><div class="line"><a name="l00796"></a><span class="lineno"> 796</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQSymmS16.get(), validatorQSymmS16);</div><div class="line"><a name="l00797"></a><span class="lineno"> 797</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a1465480794787d2278d3f0d2e6d887b4"><div class="ttname"><a href="namespacearmnn.html#a1465480794787d2278d3f0d2e6d887b4">armnn::g_SymmS16QuantizationBase</a></div><div class="ttdeci">const float g_SymmS16QuantizationBase</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l00037">QuantizerTest.cpp:37</a></div></div>
<div class="ttc" id="namespacearmnn_html_acd7f8820d124166a38c95bc8ad38811b"><div class="ttname"><a href="namespacearmnn.html#acd7f8820d124166a38c95bc8ad38811b">armnn::g_SymmS8QuantizationBase</a></div><div class="ttdeci">const float g_SymmS8QuantizationBase</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l00036">QuantizerTest.cpp:36</a></div></div>
<div class="ttc" id="namespacearmnn_html_a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c"><div class="ttname"><a href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">armnn::BoostLogSeverityMapping::info</a></div></div>
<div class="ttc" id="namespacearmnn_html_a6482907b4c57873e197324f5cb66fd4d"><div class="ttname"><a href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">armnn::VisitLayersTopologically</a></div><div class="ttdeci">void VisitLayersTopologically(const INetwork *inputNetwork, ILayerVisitor &amp;visitor)</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l00193">QuantizerTest.cpp:193</a></div></div>
<div class="ttc" id="namespacearmnn_html_ace74f6f9feb95a964a49d79458232703"><div class="ttname"><a href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">armnn::INetworkPtr</a></div><div class="ttdeci">std::unique_ptr&lt; INetwork, void(*)(INetwork *network)&gt; INetworkPtr</div><div class="ttdef"><b>Definition:</b> <a href="_i_network_8hpp_source.html#l00085">INetwork.hpp:85</a></div></div>
<div class="ttc" id="namespacearmnn_html_a09bdfaa922d72ce0d9ec014dfa8f8c95"><div class="ttname"><a href="namespacearmnn.html#a09bdfaa922d72ce0d9ec014dfa8f8c95">armnn::g_AsymmS8QuantizationBase</a></div><div class="ttdeci">const float g_AsymmS8QuantizationBase</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l00035">QuantizerTest.cpp:35</a></div></div>
<div class="ttc" id="namespacearmnn_html_a19994153bdbd7710f0af3973403bc4cc"><div class="ttname"><a href="namespacearmnn.html#a19994153bdbd7710f0af3973403bc4cc">armnn::g_AsymmU8QuantizationBase</a></div><div class="ttdeci">const float g_AsymmU8QuantizationBase</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l00033">QuantizerTest.cpp:33</a></div></div>
<div class="ttc" id="_file_only_profiling_decorator_tests_8cpp_html_a6560146509197f3e197d8d36f76c1347"><div class="ttname"><a href="_file_only_profiling_decorator_tests_8cpp.html#a6560146509197f3e197d8d36f76c1347">options</a></div><div class="ttdeci">armnn::Runtime::CreationOptions::ExternalProfilingOptions options</div><div class="ttdef"><b>Definition:</b> <a href="_file_only_profiling_decorator_tests_8cpp_source.html#l00045">FileOnlyProfilingDecoratorTests.cpp:45</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="ae91bc23bf56bb5f9c2e0ddb1fc7be75e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae91bc23bf56bb5f9c2e0ddb1fc7be75e">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[34/79]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
<td>(</td>
<td class="paramtype">QuantizeDepthToSpace&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_quantizer_test_8cpp_source.html#l00799">799</a> of file <a class="el" href="_quantizer_test_8cpp_source.html">QuantizerTest.cpp</a>.</p>
<p class="reference">References <a class="el" href="classarmnn_1_1_i_output_slot.html#ac1835f8756a9f03c02fcf9664e3a0fce">IOutputSlot::Connect()</a>, <a class="el" href="_network_quantizer_8cpp_source.html#l00040">INetworkQuantizer::Create()</a>, <a class="el" href="_network_8cpp_source.html#l00048">INetwork::Create()</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">Float32</a>, <a class="el" href="_quantizer_test_8cpp_source.html#l00035">g_AsymmS8QuantizationBase</a>, <a class="el" href="_quantizer_test_8cpp_source.html#l00033">g_AsymmU8QuantizationBase</a>, <a class="el" href="_quantizer_test_8cpp_source.html#l00037">g_SymmS16QuantizationBase</a>, <a class="el" href="_quantizer_test_8cpp_source.html#l00036">g_SymmS8QuantizationBase</a>, <a class="el" href="classarmnn_1_1_i_connectable_layer.html#a6ec9e0eb66d7d6a01240492a0b18104c">IConnectableLayer::GetInputSlot()</a>, <a class="el" href="classarmnn_1_1_i_connectable_layer.html#a80ac4eda2e7f2757ec9dd96fc96dbd16">IConnectableLayer::GetOutputSlot()</a>, <a class="el" href="classarmnn_1_1_i_output_slot.html#a9943775a364fc4ab53b85ac88f311886">IOutputSlot::GetTensorInfo()</a>, <a class="el" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>, <a class="el" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0ad066db54b89b0912e7e7c6da51e2da51">NHWC</a>, <a class="el" href="_file_only_profiling_decorator_tests_8cpp_source.html#l00045">options</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a9d02ea768c081d4bdb2b7cab0b3f510d">QAsymmS8</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7">QSymmS16</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a9945327825b115e93a3b89f4302e76db">QSymmS8</a>, <a class="el" href="classarmnn_1_1_i_output_slot.html#a5ee4a6c9a2481245487b1b1a70d20fd0">IOutputSlot::SetTensorInfo()</a>, and <a class="el" href="_quantizer_test_8cpp_source.html#l00193">VisitLayersTopologically()</a>.</p>
<div class="fragment"><div class="line"><a name="l00800"></a><span class="lineno"> 800</span>&#160;{</div><div class="line"><a name="l00801"></a><span class="lineno"> 801</span>&#160; <span class="keyword">class </span>TestDepthToSpaceQuantization : <span class="keyword">public</span> TestQuantization</div><div class="line"><a name="l00802"></a><span class="lineno"> 802</span>&#160; {</div><div class="line"><a name="l00803"></a><span class="lineno"> 803</span>&#160; <span class="keyword">public</span>:</div><div class="line"><a name="l00804"></a><span class="lineno"> 804</span>&#160; TestDepthToSpaceQuantization(<span class="keyword">const</span> TensorShape&amp; inputShape, <span class="keyword">const</span> TensorShape&amp; outputShape)</div><div class="line"><a name="l00805"></a><span class="lineno"> 805</span>&#160; : TestQuantization(inputShape, outputShape) {}</div><div class="line"><a name="l00806"></a><span class="lineno"> 806</span>&#160;</div><div class="line"><a name="l00807"></a><span class="lineno"> 807</span>&#160; TestDepthToSpaceQuantization(<span class="keyword">const</span> QuantizerOptions&amp; <a class="code" href="_file_only_profiling_decorator_tests_8cpp.html#a6560146509197f3e197d8d36f76c1347">options</a>,</div><div class="line"><a name="l00808"></a><span class="lineno"> 808</span>&#160; <span class="keyword">const</span> TensorShape&amp; inputShape,</div><div class="line"><a name="l00809"></a><span class="lineno"> 809</span>&#160; <span class="keyword">const</span> TensorShape&amp; outputShape)</div><div class="line"><a name="l00810"></a><span class="lineno"> 810</span>&#160; : TestQuantization(options, inputShape, outputShape) {}</div><div class="line"><a name="l00811"></a><span class="lineno"> 811</span>&#160;</div><div class="line"><a name="l00812"></a><span class="lineno"> 812</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> VisitDepthToSpaceLayer(<span class="keyword">const</span> IConnectableLayer* layer,</div><div class="line"><a name="l00813"></a><span class="lineno"> 813</span>&#160; <span class="keyword">const</span> <a class="code" href="namespacearmnn.html#a3647f60510bc8ddaced01c51b0ee8714">DepthToSpaceDescriptor</a>&amp; desc,</div><div class="line"><a name="l00814"></a><span class="lineno"> 814</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span>* name = <span class="keyword">nullptr</span>)</div><div class="line"><a name="l00815"></a><span class="lineno"> 815</span>&#160; {</div><div class="line"><a name="l00816"></a><span class="lineno"> 816</span>&#160; boost::ignore_unused(desc, name);</div><div class="line"><a name="l00817"></a><span class="lineno"> 817</span>&#160; <span class="keyword">const</span> TensorInfo&amp; <a class="code" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a> = layer-&gt;GetOutputSlot(0).GetTensorInfo();</div><div class="line"><a name="l00818"></a><span class="lineno"> 818</span>&#160;</div><div class="line"><a name="l00819"></a><span class="lineno"> 819</span>&#160; <span class="keyword">const</span> <a class="code" href="namespacearmnn.html#a9b8e5a95f8c061bbbcdb036915dcb61a">OffsetScalePair</a> qAsymmU8Params{ 30.0f / <a class="code" href="namespacearmnn.html#a19994153bdbd7710f0af3973403bc4cc">g_AsymmU8QuantizationBase</a>, 128 };</div><div class="line"><a name="l00820"></a><span class="lineno"> 820</span>&#160; <span class="keyword">const</span> <a class="code" href="namespacearmnn.html#a9b8e5a95f8c061bbbcdb036915dcb61a">OffsetScalePair</a> qAsymmS8Params{ 30.0f / <a class="code" href="namespacearmnn.html#a09bdfaa922d72ce0d9ec014dfa8f8c95">g_AsymmS8QuantizationBase</a>, 0 };</div><div class="line"><a name="l00821"></a><span class="lineno"> 821</span>&#160; <span class="keyword">const</span> <a class="code" href="namespacearmnn.html#a9b8e5a95f8c061bbbcdb036915dcb61a">OffsetScalePair</a> qSymmS8Params { 15.0f / <a class="code" href="namespacearmnn.html#acd7f8820d124166a38c95bc8ad38811b">g_SymmS8QuantizationBase</a>, 0 };</div><div class="line"><a name="l00822"></a><span class="lineno"> 822</span>&#160; <span class="keyword">const</span> <a class="code" href="namespacearmnn.html#a9b8e5a95f8c061bbbcdb036915dcb61a">OffsetScalePair</a> qSymmS16Params{ 15.0f / <a class="code" href="namespacearmnn.html#a1465480794787d2278d3f0d2e6d887b4">g_SymmS16QuantizationBase</a>, 0 };</div><div class="line"><a name="l00823"></a><span class="lineno"> 823</span>&#160;</div><div class="line"><a name="l00824"></a><span class="lineno"> 824</span>&#160; TestQuantizationParams(info, qAsymmU8Params, qAsymmS8Params, qSymmS8Params, qSymmS16Params);</div><div class="line"><a name="l00825"></a><span class="lineno"> 825</span>&#160; }</div><div class="line"><a name="l00826"></a><span class="lineno"> 826</span>&#160; };</div><div class="line"><a name="l00827"></a><span class="lineno"> 827</span>&#160;</div><div class="line"><a name="l00828"></a><span class="lineno"> 828</span>&#160; <span class="keyword">const</span> TensorShape inputShape { 1, 2, 2, 4 };</div><div class="line"><a name="l00829"></a><span class="lineno"> 829</span>&#160; <span class="keyword">const</span> TensorShape outputShape{ 1, 4, 4, 1 };</div><div class="line"><a name="l00830"></a><span class="lineno"> 830</span>&#160;</div><div class="line"><a name="l00831"></a><span class="lineno"> 831</span>&#160; <span class="keyword">const</span> TensorInfo inputInfo (inputShape, DataType::Float32);</div><div class="line"><a name="l00832"></a><span class="lineno"> 832</span>&#160; <span class="keyword">const</span> TensorInfo outputInfo(outputShape, DataType::Float32);</div><div class="line"><a name="l00833"></a><span class="lineno"> 833</span>&#160;</div><div class="line"><a name="l00834"></a><span class="lineno"> 834</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> network = INetwork::Create();</div><div class="line"><a name="l00835"></a><span class="lineno"> 835</span>&#160; <span class="keyword">const</span> <a class="code" href="namespacearmnn.html#a3647f60510bc8ddaced01c51b0ee8714">DepthToSpaceDescriptor</a> descriptor(2, <a class="code" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0ad066db54b89b0912e7e7c6da51e2da51">armnn::DataLayout::NHWC</a>);</div><div class="line"><a name="l00836"></a><span class="lineno"> 836</span>&#160;</div><div class="line"><a name="l00837"></a><span class="lineno"> 837</span>&#160; IConnectableLayer* inputLayer = network-&gt;AddInputLayer(0);</div><div class="line"><a name="l00838"></a><span class="lineno"> 838</span>&#160; IConnectableLayer* depthToSpaceLayer = network-&gt;AddDepthToSpaceLayer(descriptor);</div><div class="line"><a name="l00839"></a><span class="lineno"> 839</span>&#160; IConnectableLayer* outputLayer = network-&gt;AddOutputLayer(0);</div><div class="line"><a name="l00840"></a><span class="lineno"> 840</span>&#160;</div><div class="line"><a name="l00841"></a><span class="lineno"> 841</span>&#160; inputLayer-&gt;GetOutputSlot(0).Connect(depthToSpaceLayer-&gt;GetInputSlot(0));</div><div class="line"><a name="l00842"></a><span class="lineno"> 842</span>&#160; depthToSpaceLayer-&gt;GetOutputSlot(0).Connect(outputLayer-&gt;GetInputSlot(0));</div><div class="line"><a name="l00843"></a><span class="lineno"> 843</span>&#160;</div><div class="line"><a name="l00844"></a><span class="lineno"> 844</span>&#160; inputLayer-&gt;GetOutputSlot(0).SetTensorInfo(inputInfo);</div><div class="line"><a name="l00845"></a><span class="lineno"> 845</span>&#160; depthToSpaceLayer-&gt;GetOutputSlot(0).SetTensorInfo(outputInfo);</div><div class="line"><a name="l00846"></a><span class="lineno"> 846</span>&#160;</div><div class="line"><a name="l00847"></a><span class="lineno"> 847</span>&#160; <span class="comment">// test QAsymmU8 quantization</span></div><div class="line"><a name="l00848"></a><span class="lineno"> 848</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQAsymmU8 = INetworkQuantizer::Create(network.get())-&gt;ExportNetwork();</div><div class="line"><a name="l00849"></a><span class="lineno"> 849</span>&#160; TestDepthToSpaceQuantization validatorQAsymmU8(inputShape, outputShape);</div><div class="line"><a name="l00850"></a><span class="lineno"> 850</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQAsymmU8.get(), validatorQAsymmU8);</div><div class="line"><a name="l00851"></a><span class="lineno"> 851</span>&#160;</div><div class="line"><a name="l00852"></a><span class="lineno"> 852</span>&#160; <span class="comment">// test QAsymmS8 quantization</span></div><div class="line"><a name="l00853"></a><span class="lineno"> 853</span>&#160; <span class="keyword">const</span> QuantizerOptions qAsymmS8Options(DataType::QAsymmS8);</div><div class="line"><a name="l00854"></a><span class="lineno"> 854</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQAsymmS8 = INetworkQuantizer::Create(network.get(), qAsymmS8Options)-&gt;ExportNetwork();</div><div class="line"><a name="l00855"></a><span class="lineno"> 855</span>&#160; TestDepthToSpaceQuantization validatorQAsymmS8(qAsymmS8Options, inputShape, outputShape);</div><div class="line"><a name="l00856"></a><span class="lineno"> 856</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQAsymmS8.get(), validatorQAsymmS8);</div><div class="line"><a name="l00857"></a><span class="lineno"> 857</span>&#160;</div><div class="line"><a name="l00858"></a><span class="lineno"> 858</span>&#160; <span class="comment">// test QSymmS8 quantization</span></div><div class="line"><a name="l00859"></a><span class="lineno"> 859</span>&#160; <span class="keyword">const</span> QuantizerOptions qSymmS8Options(DataType::QSymmS8);</div><div class="line"><a name="l00860"></a><span class="lineno"> 860</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQSymmS8 = INetworkQuantizer::Create(network.get(), qSymmS8Options)-&gt;ExportNetwork();</div><div class="line"><a name="l00861"></a><span class="lineno"> 861</span>&#160; TestDepthToSpaceQuantization validatorQSymmS8(qSymmS8Options, inputShape, outputShape);</div><div class="line"><a name="l00862"></a><span class="lineno"> 862</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQSymmS8.get(), validatorQSymmS8);</div><div class="line"><a name="l00863"></a><span class="lineno"> 863</span>&#160;</div><div class="line"><a name="l00864"></a><span class="lineno"> 864</span>&#160; <span class="comment">// test QSymmS16 quantization</span></div><div class="line"><a name="l00865"></a><span class="lineno"> 865</span>&#160; <span class="keyword">const</span> QuantizerOptions Qsymm16Options(DataType::QSymmS16);</div><div class="line"><a name="l00866"></a><span class="lineno"> 866</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQSymmS16 = INetworkQuantizer::Create(network.get(), Qsymm16Options)-&gt;ExportNetwork();</div><div class="line"><a name="l00867"></a><span class="lineno"> 867</span>&#160; TestDepthToSpaceQuantization validatorQSymmS16(Qsymm16Options, inputShape, outputShape);</div><div class="line"><a name="l00868"></a><span class="lineno"> 868</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQSymmS16.get(), validatorQSymmS16);</div><div class="line"><a name="l00869"></a><span class="lineno"> 869</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a1465480794787d2278d3f0d2e6d887b4"><div class="ttname"><a href="namespacearmnn.html#a1465480794787d2278d3f0d2e6d887b4">armnn::g_SymmS16QuantizationBase</a></div><div class="ttdeci">const float g_SymmS16QuantizationBase</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l00037">QuantizerTest.cpp:37</a></div></div>
<div class="ttc" id="namespacearmnn_html_a3647f60510bc8ddaced01c51b0ee8714"><div class="ttname"><a href="namespacearmnn.html#a3647f60510bc8ddaced01c51b0ee8714">armnn::DepthToSpaceDescriptor</a></div><div class="ttdeci">SpaceToDepthDescriptor DepthToSpaceDescriptor</div><div class="ttdoc">A DepthToSpaceDescriptor for the DepthToSpaceLayer. </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.html#l00834">Descriptors.hpp:834</a></div></div>
<div class="ttc" id="namespacearmnn_html_acd7f8820d124166a38c95bc8ad38811b"><div class="ttname"><a href="namespacearmnn.html#acd7f8820d124166a38c95bc8ad38811b">armnn::g_SymmS8QuantizationBase</a></div><div class="ttdeci">const float g_SymmS8QuantizationBase</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l00036">QuantizerTest.cpp:36</a></div></div>
<div class="ttc" id="namespacearmnn_html_a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c"><div class="ttname"><a href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">armnn::BoostLogSeverityMapping::info</a></div></div>
<div class="ttc" id="namespacearmnn_html_a6482907b4c57873e197324f5cb66fd4d"><div class="ttname"><a href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">armnn::VisitLayersTopologically</a></div><div class="ttdeci">void VisitLayersTopologically(const INetwork *inputNetwork, ILayerVisitor &amp;visitor)</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l00193">QuantizerTest.cpp:193</a></div></div>
<div class="ttc" id="namespacearmnn_html_ace74f6f9feb95a964a49d79458232703"><div class="ttname"><a href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">armnn::INetworkPtr</a></div><div class="ttdeci">std::unique_ptr&lt; INetwork, void(*)(INetwork *network)&gt; INetworkPtr</div><div class="ttdef"><b>Definition:</b> <a href="_i_network_8hpp_source.html#l00085">INetwork.hpp:85</a></div></div>
<div class="ttc" id="namespacearmnn_html_a09bdfaa922d72ce0d9ec014dfa8f8c95"><div class="ttname"><a href="namespacearmnn.html#a09bdfaa922d72ce0d9ec014dfa8f8c95">armnn::g_AsymmS8QuantizationBase</a></div><div class="ttdeci">const float g_AsymmS8QuantizationBase</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l00035">QuantizerTest.cpp:35</a></div></div>
<div class="ttc" id="namespacearmnn_html_a19994153bdbd7710f0af3973403bc4cc"><div class="ttname"><a href="namespacearmnn.html#a19994153bdbd7710f0af3973403bc4cc">armnn::g_AsymmU8QuantizationBase</a></div><div class="ttdeci">const float g_AsymmU8QuantizationBase</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l00033">QuantizerTest.cpp:33</a></div></div>
<div class="ttc" id="namespacearmnn_html_a9b8e5a95f8c061bbbcdb036915dcb61a"><div class="ttname"><a href="namespacearmnn.html#a9b8e5a95f8c061bbbcdb036915dcb61a">armnn::OffsetScalePair</a></div><div class="ttdeci">std::pair&lt; float, int &gt; OffsetScalePair</div><div class="ttdef"><b>Definition:</b> <a href="_network_quantization_scheme_8hpp_source.html#l00016">NetworkQuantizationScheme.hpp:16</a></div></div>
<div class="ttc" id="_file_only_profiling_decorator_tests_8cpp_html_a6560146509197f3e197d8d36f76c1347"><div class="ttname"><a href="_file_only_profiling_decorator_tests_8cpp.html#a6560146509197f3e197d8d36f76c1347">options</a></div><div class="ttdeci">armnn::Runtime::CreationOptions::ExternalProfilingOptions options</div><div class="ttdef"><b>Definition:</b> <a href="_file_only_profiling_decorator_tests_8cpp_source.html#l00045">FileOnlyProfilingDecoratorTests.cpp:45</a></div></div>
<div class="ttc" id="namespacearmnn_html_ad1d5cce2d9e9a5d61c243e5c989112e0ad066db54b89b0912e7e7c6da51e2da51"><div class="ttname"><a href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0ad066db54b89b0912e7e7c6da51e2da51">armnn::DataLayout::NHWC</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="ad956f3db79c93a658cbccb41714e1542"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad956f3db79c93a658cbccb41714e1542">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[35/79]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
<td>(</td>
<td class="paramtype">CheckNamedLstmLayerCifgDisabled&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_const_tensor_layer_visitor_8cpp_source.html#l00800">800</a> of file <a class="el" href="_const_tensor_layer_visitor_8cpp_source.html">ConstTensorLayerVisitor.cpp</a>.</p>
<p class="reference">References <a class="el" href="classarmnn_1_1_i_connectable_layer.html#a8c9198a992b02e61a6777329d487dde3">IConnectableLayer::Accept()</a>, <a class="el" href="_network_8cpp_source.html#l01312">Network::AddLstmLayer()</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">Float32</a>, <a class="el" href="_descriptors_8hpp_source.html#l00861">LstmDescriptor::m_ActivationFunc</a>, <a class="el" href="_lstm_params_8hpp_source.html#l00053">LstmInputParams::m_CellBias</a>, <a class="el" href="_lstm_params_8hpp_source.html#l00048">LstmInputParams::m_CellToInputWeights</a>, <a class="el" href="_descriptors_8hpp_source.html#l00867">LstmDescriptor::m_CifgEnabled</a>, <a class="el" href="_descriptors_8hpp_source.html#l00863">LstmDescriptor::m_ClippingThresCell</a>, <a class="el" href="_descriptors_8hpp_source.html#l00865">LstmDescriptor::m_ClippingThresProj</a>, <a class="el" href="_lstm_params_8hpp_source.html#l00052">LstmInputParams::m_ForgetGateBias</a>, <a class="el" href="_lstm_params_8hpp_source.html#l00051">LstmInputParams::m_InputGateBias</a>, <a class="el" href="_lstm_params_8hpp_source.html#l00042">LstmInputParams::m_InputToCellWeights</a>, <a class="el" href="_lstm_params_8hpp_source.html#l00041">LstmInputParams::m_InputToForgetWeights</a>, <a class="el" href="_lstm_params_8hpp_source.html#l00040">LstmInputParams::m_InputToInputWeights</a>, <a class="el" href="_lstm_params_8hpp_source.html#l00043">LstmInputParams::m_InputToOutputWeights</a>, <a class="el" href="_lstm_params_8hpp_source.html#l00054">LstmInputParams::m_OutputGateBias</a>, <a class="el" href="_lstm_params_8hpp_source.html#l00046">LstmInputParams::m_RecurrentToCellWeights</a>, <a class="el" href="_lstm_params_8hpp_source.html#l00045">LstmInputParams::m_RecurrentToForgetWeights</a>, <a class="el" href="_lstm_params_8hpp_source.html#l00044">LstmInputParams::m_RecurrentToInputWeights</a>, and <a class="el" href="_lstm_params_8hpp_source.html#l00047">LstmInputParams::m_RecurrentToOutputWeights</a>.</p>
<div class="fragment"><div class="line"><a name="l00801"></a><span class="lineno"> 801</span>&#160;{</div><div class="line"><a name="l00802"></a><span class="lineno"> 802</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span>* layerName = <span class="stringliteral">&quot;LstmLayer&quot;</span>;</div><div class="line"><a name="l00803"></a><span class="lineno"> 803</span>&#160; LstmDescriptor descriptor;</div><div class="line"><a name="l00804"></a><span class="lineno"> 804</span>&#160; descriptor.m_ActivationFunc = 3;</div><div class="line"><a name="l00805"></a><span class="lineno"> 805</span>&#160; descriptor.m_ClippingThresProj = 0.5f;</div><div class="line"><a name="l00806"></a><span class="lineno"> 806</span>&#160; descriptor.m_ClippingThresCell = 0.3f;</div><div class="line"><a name="l00807"></a><span class="lineno"> 807</span>&#160; descriptor.m_CifgEnabled = <span class="keyword">false</span>; <span class="comment">// if this is true then we DON&#39;T need to set the OptCifgParams</span></div><div class="line"><a name="l00808"></a><span class="lineno"> 808</span>&#160;</div><div class="line"><a name="l00809"></a><span class="lineno"> 809</span>&#160; std::vector&lt;float&gt; inputToForgetWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l00810"></a><span class="lineno"> 810</span>&#160; std::vector&lt;unsigned int&gt; inputToForgetWeightsDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l00811"></a><span class="lineno"> 811</span>&#160; ConstTensor inputToForgetWeights(</div><div class="line"><a name="l00812"></a><span class="lineno"> 812</span>&#160; TensorInfo(4, inputToForgetWeightsDimensions.data(), DataType::Float32), inputToForgetWeightsData);</div><div class="line"><a name="l00813"></a><span class="lineno"> 813</span>&#160;</div><div class="line"><a name="l00814"></a><span class="lineno"> 814</span>&#160; std::vector&lt;float&gt; inputToCellWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l00815"></a><span class="lineno"> 815</span>&#160; std::vector&lt;unsigned int&gt; inputToCellWeightsDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l00816"></a><span class="lineno"> 816</span>&#160; ConstTensor inputToCellWeights(</div><div class="line"><a name="l00817"></a><span class="lineno"> 817</span>&#160; TensorInfo(4, inputToCellWeightsDimensions.data(), DataType::Float32), inputToCellWeightsData);</div><div class="line"><a name="l00818"></a><span class="lineno"> 818</span>&#160;</div><div class="line"><a name="l00819"></a><span class="lineno"> 819</span>&#160; std::vector&lt;float&gt; inputToOutputWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l00820"></a><span class="lineno"> 820</span>&#160; std::vector&lt;unsigned int&gt; inputToOutputWeightsDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l00821"></a><span class="lineno"> 821</span>&#160; ConstTensor inputToOutputWeights(</div><div class="line"><a name="l00822"></a><span class="lineno"> 822</span>&#160; TensorInfo(4, inputToOutputWeightsDimensions.data(), DataType::Float32), inputToOutputWeightsData);</div><div class="line"><a name="l00823"></a><span class="lineno"> 823</span>&#160;</div><div class="line"><a name="l00824"></a><span class="lineno"> 824</span>&#160; std::vector&lt;float&gt; recurrentToForgetWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l00825"></a><span class="lineno"> 825</span>&#160; std::vector&lt;unsigned int&gt; recurrentToForgetWeightsDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l00826"></a><span class="lineno"> 826</span>&#160; ConstTensor recurrentToForgetWeights(TensorInfo(</div><div class="line"><a name="l00827"></a><span class="lineno"> 827</span>&#160; 4, recurrentToForgetWeightsDimensions.data(), DataType::Float32), recurrentToForgetWeightsData);</div><div class="line"><a name="l00828"></a><span class="lineno"> 828</span>&#160;</div><div class="line"><a name="l00829"></a><span class="lineno"> 829</span>&#160; std::vector&lt;float&gt; recurrentToCellWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l00830"></a><span class="lineno"> 830</span>&#160; std::vector&lt;unsigned int&gt; recurrentToCellWeightsDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l00831"></a><span class="lineno"> 831</span>&#160; ConstTensor recurrentToCellWeights(TensorInfo(</div><div class="line"><a name="l00832"></a><span class="lineno"> 832</span>&#160; 4, recurrentToCellWeightsDimensions.data(), DataType::Float32), recurrentToCellWeightsData);</div><div class="line"><a name="l00833"></a><span class="lineno"> 833</span>&#160;</div><div class="line"><a name="l00834"></a><span class="lineno"> 834</span>&#160; std::vector&lt;float&gt; recurrentToOutputWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l00835"></a><span class="lineno"> 835</span>&#160; std::vector&lt;unsigned int&gt; recurrentToOutputWeightsDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l00836"></a><span class="lineno"> 836</span>&#160; ConstTensor recurrentToOutputWeights(TensorInfo(</div><div class="line"><a name="l00837"></a><span class="lineno"> 837</span>&#160; 4, recurrentToOutputWeightsDimensions.data(), DataType::Float32), recurrentToOutputWeightsData);</div><div class="line"><a name="l00838"></a><span class="lineno"> 838</span>&#160;</div><div class="line"><a name="l00839"></a><span class="lineno"> 839</span>&#160; std::vector&lt;float&gt; forgetGateBiasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l00840"></a><span class="lineno"> 840</span>&#160; std::vector&lt;unsigned int&gt; forgetGateBiasDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l00841"></a><span class="lineno"> 841</span>&#160; ConstTensor forgetGateBias(TensorInfo(</div><div class="line"><a name="l00842"></a><span class="lineno"> 842</span>&#160; 4, forgetGateBiasDimensions.data(), DataType::Float32), forgetGateBiasData);</div><div class="line"><a name="l00843"></a><span class="lineno"> 843</span>&#160;</div><div class="line"><a name="l00844"></a><span class="lineno"> 844</span>&#160; std::vector&lt;float&gt; cellBiasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l00845"></a><span class="lineno"> 845</span>&#160; std::vector&lt;unsigned int&gt; cellBiasDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l00846"></a><span class="lineno"> 846</span>&#160; ConstTensor cellBias(TensorInfo(</div><div class="line"><a name="l00847"></a><span class="lineno"> 847</span>&#160; 4, cellBiasDimensions.data(), DataType::Float32), cellBiasData);</div><div class="line"><a name="l00848"></a><span class="lineno"> 848</span>&#160;</div><div class="line"><a name="l00849"></a><span class="lineno"> 849</span>&#160; std::vector&lt;float&gt; outputGateBiasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l00850"></a><span class="lineno"> 850</span>&#160; std::vector&lt;unsigned int&gt; outputGateBiasDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l00851"></a><span class="lineno"> 851</span>&#160; ConstTensor outputGateBias(TensorInfo(</div><div class="line"><a name="l00852"></a><span class="lineno"> 852</span>&#160; 4, outputGateBiasDimensions.data(), DataType::Float32), outputGateBiasData);</div><div class="line"><a name="l00853"></a><span class="lineno"> 853</span>&#160;</div><div class="line"><a name="l00854"></a><span class="lineno"> 854</span>&#160; std::vector&lt;float&gt; inputToInputWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l00855"></a><span class="lineno"> 855</span>&#160; std::vector&lt;unsigned int&gt; inputToInputWeightsDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l00856"></a><span class="lineno"> 856</span>&#160; ConstTensor inputToInputWeights(</div><div class="line"><a name="l00857"></a><span class="lineno"> 857</span>&#160; TensorInfo(4, inputToInputWeightsDimensions.data(), DataType::Float32), inputToInputWeightsData);</div><div class="line"><a name="l00858"></a><span class="lineno"> 858</span>&#160;</div><div class="line"><a name="l00859"></a><span class="lineno"> 859</span>&#160; std::vector&lt;float&gt; recurrentToInputWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l00860"></a><span class="lineno"> 860</span>&#160; std::vector&lt;unsigned int&gt; recurrentToInputWeightsDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l00861"></a><span class="lineno"> 861</span>&#160; ConstTensor recurrentToInputWeights(TensorInfo(</div><div class="line"><a name="l00862"></a><span class="lineno"> 862</span>&#160; 4, recurrentToInputWeightsDimensions.data(), DataType::Float32), recurrentToInputWeightsData);</div><div class="line"><a name="l00863"></a><span class="lineno"> 863</span>&#160;</div><div class="line"><a name="l00864"></a><span class="lineno"> 864</span>&#160; std::vector&lt;float&gt; cellToInputWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l00865"></a><span class="lineno"> 865</span>&#160; std::vector&lt;unsigned int&gt; cellToInputWeightsDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l00866"></a><span class="lineno"> 866</span>&#160; ConstTensor cellToInputWeights(</div><div class="line"><a name="l00867"></a><span class="lineno"> 867</span>&#160; TensorInfo(4, cellToInputWeightsDimensions.data(), DataType::Float32), cellToInputWeightsData);</div><div class="line"><a name="l00868"></a><span class="lineno"> 868</span>&#160;</div><div class="line"><a name="l00869"></a><span class="lineno"> 869</span>&#160; std::vector&lt;float&gt; inputGateBiasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l00870"></a><span class="lineno"> 870</span>&#160; std::vector&lt;unsigned int&gt; inputGateBiasDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l00871"></a><span class="lineno"> 871</span>&#160; ConstTensor inputGateBias(</div><div class="line"><a name="l00872"></a><span class="lineno"> 872</span>&#160; TensorInfo(4, inputGateBiasDimensions.data(), DataType::Float32), inputGateBiasData);</div><div class="line"><a name="l00873"></a><span class="lineno"> 873</span>&#160;</div><div class="line"><a name="l00874"></a><span class="lineno"> 874</span>&#160; LstmInputParams params;</div><div class="line"><a name="l00875"></a><span class="lineno"> 875</span>&#160; params.m_InputToForgetWeights = &amp;inputToForgetWeights;</div><div class="line"><a name="l00876"></a><span class="lineno"> 876</span>&#160; params.m_InputToCellWeights = &amp;inputToCellWeights;</div><div class="line"><a name="l00877"></a><span class="lineno"> 877</span>&#160; params.m_InputToOutputWeights = &amp;inputToOutputWeights;</div><div class="line"><a name="l00878"></a><span class="lineno"> 878</span>&#160; params.m_RecurrentToForgetWeights = &amp;recurrentToForgetWeights;</div><div class="line"><a name="l00879"></a><span class="lineno"> 879</span>&#160; params.m_RecurrentToCellWeights = &amp;recurrentToCellWeights;</div><div class="line"><a name="l00880"></a><span class="lineno"> 880</span>&#160; params.m_RecurrentToOutputWeights = &amp;recurrentToOutputWeights;</div><div class="line"><a name="l00881"></a><span class="lineno"> 881</span>&#160; params.m_ForgetGateBias = &amp;forgetGateBias;</div><div class="line"><a name="l00882"></a><span class="lineno"> 882</span>&#160; params.m_CellBias = &amp;cellBias;</div><div class="line"><a name="l00883"></a><span class="lineno"> 883</span>&#160; params.m_OutputGateBias = &amp;outputGateBias;</div><div class="line"><a name="l00884"></a><span class="lineno"> 884</span>&#160;</div><div class="line"><a name="l00885"></a><span class="lineno"> 885</span>&#160; params.m_InputToInputWeights = &amp;inputToInputWeights;</div><div class="line"><a name="l00886"></a><span class="lineno"> 886</span>&#160; params.m_RecurrentToInputWeights = &amp;recurrentToInputWeights;</div><div class="line"><a name="l00887"></a><span class="lineno"> 887</span>&#160; params.m_CellToInputWeights = &amp;cellToInputWeights;</div><div class="line"><a name="l00888"></a><span class="lineno"> 888</span>&#160; params.m_InputGateBias = &amp;inputGateBias;</div><div class="line"><a name="l00889"></a><span class="lineno"> 889</span>&#160;</div><div class="line"><a name="l00890"></a><span class="lineno"> 890</span>&#160; TestLstmLayerVisitor visitor(descriptor, params, layerName);</div><div class="line"><a name="l00891"></a><span class="lineno"> 891</span>&#160;</div><div class="line"><a name="l00892"></a><span class="lineno"> 892</span>&#160; Network net;</div><div class="line"><a name="l00893"></a><span class="lineno"> 893</span>&#160;</div><div class="line"><a name="l00894"></a><span class="lineno"> 894</span>&#160; IConnectableLayer *<span class="keyword">const</span> layer = net.AddLstmLayer(descriptor, params, layerName);</div><div class="line"><a name="l00895"></a><span class="lineno"> 895</span>&#160; layer-&gt;Accept(visitor);</div><div class="line"><a name="l00896"></a><span class="lineno"> 896</span>&#160;}</div></div><!-- fragment -->
</div>
</div>
<a id="aa6281ed3090b74167170c8f692688de5"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa6281ed3090b74167170c8f692688de5">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[36/79]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
<td>(</td>
<td class="paramtype">OverrideInputRangeEmptyNetwork&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_quantizer_test_8cpp_source.html#l00871">871</a> of file <a class="el" href="_quantizer_test_8cpp_source.html">QuantizerTest.cpp</a>.</p>
<p class="reference">References <a class="el" href="_file_only_profiling_decorator_tests_8cpp.html#a0c262ba6f6c189a2d092d127c1b7627b">BOOST_CHECK()</a>, <a class="el" href="_network_8hpp_source.html#l00033">Network::GetGraph()</a>, <a class="el" href="_graph_8hpp_source.html#l00181">Graph::GetInputLayers()</a>, <a class="el" href="_range_tracker_8hpp_source.html#l00029">RangeTracker::IsEmpty()</a>, and <a class="el" href="_network_quantizer_utils_8hpp_source.html#l00050">VisitLayers()</a>.</p>
<div class="fragment"><div class="line"><a name="l00872"></a><span class="lineno"> 872</span>&#160;{</div><div class="line"><a name="l00873"></a><span class="lineno"> 873</span>&#160; RangeTracker ranges;</div><div class="line"><a name="l00874"></a><span class="lineno"> 874</span>&#160; <a class="code" href="namespacearmnn.html#a997e96288bdb106c922202e3f33d5d7b">RangeTracker::MinMaxRange</a> minMaxRange(-12.3f, 45.6f); <span class="comment">// Range to use for the override</span></div><div class="line"><a name="l00875"></a><span class="lineno"> 875</span>&#160;</div><div class="line"><a name="l00876"></a><span class="lineno"> 876</span>&#160; Network network; <span class="comment">// Empty network</span></div><div class="line"><a name="l00877"></a><span class="lineno"> 877</span>&#160; <span class="keyword">auto</span> inputLayers = network.GetGraph().GetInputLayers(); <span class="comment">// Empty list of input layers</span></div><div class="line"><a name="l00878"></a><span class="lineno"> 878</span>&#160;</div><div class="line"><a name="l00879"></a><span class="lineno"> 879</span>&#160; OverrideInputRangeVisitor overrideInputRangeVisitor(ranges, 0, minMaxRange);</div><div class="line"><a name="l00880"></a><span class="lineno"> 880</span>&#160; <a class="code" href="namespacearmnn.html#a9835ef753dda5b5a2fe827680e41fda7">VisitLayers</a>(inputLayers, overrideInputRangeVisitor);</div><div class="line"><a name="l00881"></a><span class="lineno"> 881</span>&#160;</div><div class="line"><a name="l00882"></a><span class="lineno"> 882</span>&#160; <a class="code" href="_file_only_profiling_decorator_tests_8cpp.html#a0c262ba6f6c189a2d092d127c1b7627b">BOOST_CHECK</a>(ranges.IsEmpty()); <span class="comment">// Check that the map of ranges remained untouched</span></div><div class="line"><a name="l00883"></a><span class="lineno"> 883</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a9835ef753dda5b5a2fe827680e41fda7"><div class="ttname"><a href="namespacearmnn.html#a9835ef753dda5b5a2fe827680e41fda7">armnn::VisitLayers</a></div><div class="ttdeci">void VisitLayers(const LayerContainer &amp;layerContainer, ILayerVisitor &amp;visitor)</div><div class="ttdef"><b>Definition:</b> <a href="_network_quantizer_utils_8hpp_source.html#l00050">NetworkQuantizerUtils.hpp:50</a></div></div>
<div class="ttc" id="namespacearmnn_html_a997e96288bdb106c922202e3f33d5d7b"><div class="ttname"><a href="namespacearmnn.html#a997e96288bdb106c922202e3f33d5d7b">armnn::MinMaxRange</a></div><div class="ttdeci">std::pair&lt; float, float &gt; MinMaxRange</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l00029">QuantizerTest.cpp:29</a></div></div>
<div class="ttc" id="_file_only_profiling_decorator_tests_8cpp_html_a0c262ba6f6c189a2d092d127c1b7627b"><div class="ttname"><a href="_file_only_profiling_decorator_tests_8cpp.html#a0c262ba6f6c189a2d092d127c1b7627b">BOOST_CHECK</a></div><div class="ttdeci">BOOST_CHECK(profilingService.GetCurrentState()==ProfilingState::WaitingForAck)</div></div>
</div><!-- fragment -->
</div>
</div>
<a id="ad432424d97021ae6c81e38130b1ec5d6"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad432424d97021ae6c81e38130b1ec5d6">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[37/79]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
<td>(</td>
<td class="paramtype">OverrideInputRangeNoInputLayers&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_quantizer_test_8cpp_source.html#l00885">885</a> of file <a class="el" href="_quantizer_test_8cpp_source.html">QuantizerTest.cpp</a>.</p>
<p class="reference">References <a class="el" href="_network_8cpp_source.html#l01212">Network::AddAdditionLayer()</a>, <a class="el" href="_file_only_profiling_decorator_tests_8cpp.html#a0c262ba6f6c189a2d092d127c1b7627b">BOOST_CHECK()</a>, <a class="el" href="_network_8hpp_source.html#l00033">Network::GetGraph()</a>, <a class="el" href="_graph_8hpp_source.html#l00181">Graph::GetInputLayers()</a>, <a class="el" href="_range_tracker_8hpp_source.html#l00029">RangeTracker::IsEmpty()</a>, and <a class="el" href="_network_quantizer_utils_8hpp_source.html#l00050">VisitLayers()</a>.</p>
<div class="fragment"><div class="line"><a name="l00886"></a><span class="lineno"> 886</span>&#160;{</div><div class="line"><a name="l00887"></a><span class="lineno"> 887</span>&#160; RangeTracker ranges;</div><div class="line"><a name="l00888"></a><span class="lineno"> 888</span>&#160; <a class="code" href="namespacearmnn.html#a997e96288bdb106c922202e3f33d5d7b">MinMaxRange</a> minMaxRange(-12.3f, 45.6f); <span class="comment">// Range to use for the override</span></div><div class="line"><a name="l00889"></a><span class="lineno"> 889</span>&#160;</div><div class="line"><a name="l00890"></a><span class="lineno"> 890</span>&#160; Network network;</div><div class="line"><a name="l00891"></a><span class="lineno"> 891</span>&#160; network.AddAdditionLayer(); <span class="comment">// Network with no input layers</span></div><div class="line"><a name="l00892"></a><span class="lineno"> 892</span>&#160; <span class="keyword">auto</span> inputLayers = network.GetGraph().GetInputLayers(); <span class="comment">// Empty list of input layers</span></div><div class="line"><a name="l00893"></a><span class="lineno"> 893</span>&#160;</div><div class="line"><a name="l00894"></a><span class="lineno"> 894</span>&#160; OverrideInputRangeVisitor overrideInputRangeVisitor(ranges, 0, minMaxRange);</div><div class="line"><a name="l00895"></a><span class="lineno"> 895</span>&#160; <a class="code" href="namespacearmnn.html#a9835ef753dda5b5a2fe827680e41fda7">VisitLayers</a>(inputLayers, overrideInputRangeVisitor);</div><div class="line"><a name="l00896"></a><span class="lineno"> 896</span>&#160;</div><div class="line"><a name="l00897"></a><span class="lineno"> 897</span>&#160; <a class="code" href="_file_only_profiling_decorator_tests_8cpp.html#a0c262ba6f6c189a2d092d127c1b7627b">BOOST_CHECK</a>(ranges.IsEmpty()); <span class="comment">// Check that the map of ranges remained untouched</span></div><div class="line"><a name="l00898"></a><span class="lineno"> 898</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a9835ef753dda5b5a2fe827680e41fda7"><div class="ttname"><a href="namespacearmnn.html#a9835ef753dda5b5a2fe827680e41fda7">armnn::VisitLayers</a></div><div class="ttdeci">void VisitLayers(const LayerContainer &amp;layerContainer, ILayerVisitor &amp;visitor)</div><div class="ttdef"><b>Definition:</b> <a href="_network_quantizer_utils_8hpp_source.html#l00050">NetworkQuantizerUtils.hpp:50</a></div></div>
<div class="ttc" id="namespacearmnn_html_a997e96288bdb106c922202e3f33d5d7b"><div class="ttname"><a href="namespacearmnn.html#a997e96288bdb106c922202e3f33d5d7b">armnn::MinMaxRange</a></div><div class="ttdeci">std::pair&lt; float, float &gt; MinMaxRange</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l00029">QuantizerTest.cpp:29</a></div></div>
<div class="ttc" id="_file_only_profiling_decorator_tests_8cpp_html_a0c262ba6f6c189a2d092d127c1b7627b"><div class="ttname"><a href="_file_only_profiling_decorator_tests_8cpp.html#a0c262ba6f6c189a2d092d127c1b7627b">BOOST_CHECK</a></div><div class="ttdeci">BOOST_CHECK(profilingService.GetCurrentState()==ProfilingState::WaitingForAck)</div></div>
</div><!-- fragment -->
</div>
</div>
<a id="aa524f33d3d2b294847c3929237947b20"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa524f33d3d2b294847c3929237947b20">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[38/79]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
<td>(</td>
<td class="paramtype">CheckLstmLayerPeephole&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_const_tensor_layer_visitor_8cpp_source.html#l00899">899</a> of file <a class="el" href="_const_tensor_layer_visitor_8cpp_source.html">ConstTensorLayerVisitor.cpp</a>.</p>
<p class="reference">References <a class="el" href="classarmnn_1_1_i_connectable_layer.html#a8c9198a992b02e61a6777329d487dde3">IConnectableLayer::Accept()</a>, <a class="el" href="_network_8cpp_source.html#l01312">Network::AddLstmLayer()</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">Float32</a>, <a class="el" href="_descriptors_8hpp_source.html#l00861">LstmDescriptor::m_ActivationFunc</a>, <a class="el" href="_lstm_params_8hpp_source.html#l00053">LstmInputParams::m_CellBias</a>, <a class="el" href="_lstm_params_8hpp_source.html#l00049">LstmInputParams::m_CellToForgetWeights</a>, <a class="el" href="_lstm_params_8hpp_source.html#l00050">LstmInputParams::m_CellToOutputWeights</a>, <a class="el" href="_descriptors_8hpp_source.html#l00867">LstmDescriptor::m_CifgEnabled</a>, <a class="el" href="_descriptors_8hpp_source.html#l00863">LstmDescriptor::m_ClippingThresCell</a>, <a class="el" href="_descriptors_8hpp_source.html#l00865">LstmDescriptor::m_ClippingThresProj</a>, <a class="el" href="_lstm_params_8hpp_source.html#l00052">LstmInputParams::m_ForgetGateBias</a>, <a class="el" href="_lstm_params_8hpp_source.html#l00042">LstmInputParams::m_InputToCellWeights</a>, <a class="el" href="_lstm_params_8hpp_source.html#l00041">LstmInputParams::m_InputToForgetWeights</a>, <a class="el" href="_lstm_params_8hpp_source.html#l00043">LstmInputParams::m_InputToOutputWeights</a>, <a class="el" href="_lstm_params_8hpp_source.html#l00054">LstmInputParams::m_OutputGateBias</a>, <a class="el" href="_descriptors_8hpp_source.html#l00869">LstmDescriptor::m_PeepholeEnabled</a>, <a class="el" href="_lstm_params_8hpp_source.html#l00046">LstmInputParams::m_RecurrentToCellWeights</a>, <a class="el" href="_lstm_params_8hpp_source.html#l00045">LstmInputParams::m_RecurrentToForgetWeights</a>, and <a class="el" href="_lstm_params_8hpp_source.html#l00047">LstmInputParams::m_RecurrentToOutputWeights</a>.</p>
<div class="fragment"><div class="line"><a name="l00900"></a><span class="lineno"> 900</span>&#160;{</div><div class="line"><a name="l00901"></a><span class="lineno"> 901</span>&#160; LstmDescriptor descriptor;</div><div class="line"><a name="l00902"></a><span class="lineno"> 902</span>&#160; descriptor.m_ActivationFunc = 3;</div><div class="line"><a name="l00903"></a><span class="lineno"> 903</span>&#160; descriptor.m_ClippingThresProj = 0.5f;</div><div class="line"><a name="l00904"></a><span class="lineno"> 904</span>&#160; descriptor.m_ClippingThresCell = 0.3f;</div><div class="line"><a name="l00905"></a><span class="lineno"> 905</span>&#160; descriptor.m_CifgEnabled = <span class="keyword">true</span>; <span class="comment">// if this is true then we DON&#39;T need to set the OptCifgParams</span></div><div class="line"><a name="l00906"></a><span class="lineno"> 906</span>&#160; descriptor.m_PeepholeEnabled = <span class="keyword">true</span>;</div><div class="line"><a name="l00907"></a><span class="lineno"> 907</span>&#160;</div><div class="line"><a name="l00908"></a><span class="lineno"> 908</span>&#160; std::vector&lt;float&gt; inputToForgetWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l00909"></a><span class="lineno"> 909</span>&#160; std::vector&lt;unsigned int&gt; inputToForgetWeightsDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l00910"></a><span class="lineno"> 910</span>&#160; ConstTensor inputToForgetWeights(</div><div class="line"><a name="l00911"></a><span class="lineno"> 911</span>&#160; TensorInfo(4, inputToForgetWeightsDimensions.data(), DataType::Float32), inputToForgetWeightsData);</div><div class="line"><a name="l00912"></a><span class="lineno"> 912</span>&#160;</div><div class="line"><a name="l00913"></a><span class="lineno"> 913</span>&#160; std::vector&lt;float&gt; inputToCellWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l00914"></a><span class="lineno"> 914</span>&#160; std::vector&lt;unsigned int&gt; inputToCellWeightsDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l00915"></a><span class="lineno"> 915</span>&#160; ConstTensor inputToCellWeights(</div><div class="line"><a name="l00916"></a><span class="lineno"> 916</span>&#160; TensorInfo(4, inputToCellWeightsDimensions.data(), DataType::Float32), inputToCellWeightsData);</div><div class="line"><a name="l00917"></a><span class="lineno"> 917</span>&#160;</div><div class="line"><a name="l00918"></a><span class="lineno"> 918</span>&#160; std::vector&lt;float&gt; inputToOutputWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l00919"></a><span class="lineno"> 919</span>&#160; std::vector&lt;unsigned int&gt; inputToOutputWeightsDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l00920"></a><span class="lineno"> 920</span>&#160; ConstTensor inputToOutputWeights(</div><div class="line"><a name="l00921"></a><span class="lineno"> 921</span>&#160; TensorInfo(4, inputToOutputWeightsDimensions.data(), DataType::Float32), inputToOutputWeightsData);</div><div class="line"><a name="l00922"></a><span class="lineno"> 922</span>&#160;</div><div class="line"><a name="l00923"></a><span class="lineno"> 923</span>&#160; std::vector&lt;float&gt; recurrentToForgetWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l00924"></a><span class="lineno"> 924</span>&#160; std::vector&lt;unsigned int&gt; recurrentToForgetWeightsDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l00925"></a><span class="lineno"> 925</span>&#160; ConstTensor recurrentToForgetWeights(TensorInfo(</div><div class="line"><a name="l00926"></a><span class="lineno"> 926</span>&#160; 4, recurrentToForgetWeightsDimensions.data(), DataType::Float32), recurrentToForgetWeightsData);</div><div class="line"><a name="l00927"></a><span class="lineno"> 927</span>&#160;</div><div class="line"><a name="l00928"></a><span class="lineno"> 928</span>&#160; std::vector&lt;float&gt; recurrentToCellWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l00929"></a><span class="lineno"> 929</span>&#160; std::vector&lt;unsigned int&gt; recurrentToCellWeightsDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l00930"></a><span class="lineno"> 930</span>&#160; ConstTensor recurrentToCellWeights(TensorInfo(</div><div class="line"><a name="l00931"></a><span class="lineno"> 931</span>&#160; 4, recurrentToCellWeightsDimensions.data(), DataType::Float32), recurrentToCellWeightsData);</div><div class="line"><a name="l00932"></a><span class="lineno"> 932</span>&#160;</div><div class="line"><a name="l00933"></a><span class="lineno"> 933</span>&#160; std::vector&lt;float&gt; recurrentToOutputWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l00934"></a><span class="lineno"> 934</span>&#160; std::vector&lt;unsigned int&gt; recurrentToOutputWeightsDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l00935"></a><span class="lineno"> 935</span>&#160; ConstTensor recurrentToOutputWeights(TensorInfo(</div><div class="line"><a name="l00936"></a><span class="lineno"> 936</span>&#160; 4, recurrentToOutputWeightsDimensions.data(), DataType::Float32), recurrentToOutputWeightsData);</div><div class="line"><a name="l00937"></a><span class="lineno"> 937</span>&#160;</div><div class="line"><a name="l00938"></a><span class="lineno"> 938</span>&#160; std::vector&lt;float&gt; forgetGateBiasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l00939"></a><span class="lineno"> 939</span>&#160; std::vector&lt;unsigned int&gt; forgetGateBiasDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l00940"></a><span class="lineno"> 940</span>&#160; ConstTensor forgetGateBias(TensorInfo(</div><div class="line"><a name="l00941"></a><span class="lineno"> 941</span>&#160; 4, forgetGateBiasDimensions.data(), DataType::Float32), forgetGateBiasData);</div><div class="line"><a name="l00942"></a><span class="lineno"> 942</span>&#160;</div><div class="line"><a name="l00943"></a><span class="lineno"> 943</span>&#160; std::vector&lt;float&gt; cellBiasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l00944"></a><span class="lineno"> 944</span>&#160; std::vector&lt;unsigned int&gt; cellBiasDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l00945"></a><span class="lineno"> 945</span>&#160; ConstTensor cellBias(TensorInfo(</div><div class="line"><a name="l00946"></a><span class="lineno"> 946</span>&#160; 4, cellBiasDimensions.data(), DataType::Float32), cellBiasData);</div><div class="line"><a name="l00947"></a><span class="lineno"> 947</span>&#160;</div><div class="line"><a name="l00948"></a><span class="lineno"> 948</span>&#160; std::vector&lt;float&gt; outputGateBiasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l00949"></a><span class="lineno"> 949</span>&#160; std::vector&lt;unsigned int&gt; outputGateBiasDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l00950"></a><span class="lineno"> 950</span>&#160; ConstTensor outputGateBias(TensorInfo(</div><div class="line"><a name="l00951"></a><span class="lineno"> 951</span>&#160; 4, outputGateBiasDimensions.data(), DataType::Float32), outputGateBiasData);</div><div class="line"><a name="l00952"></a><span class="lineno"> 952</span>&#160;</div><div class="line"><a name="l00953"></a><span class="lineno"> 953</span>&#160; std::vector&lt;float&gt; cellToForgetWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l00954"></a><span class="lineno"> 954</span>&#160; std::vector&lt;unsigned int&gt; cellToForgetWeightsDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l00955"></a><span class="lineno"> 955</span>&#160; ConstTensor cellToForgetWeights(</div><div class="line"><a name="l00956"></a><span class="lineno"> 956</span>&#160; TensorInfo(4, cellToForgetWeightsDimensions.data(), DataType::Float32), cellToForgetWeightsData);</div><div class="line"><a name="l00957"></a><span class="lineno"> 957</span>&#160;</div><div class="line"><a name="l00958"></a><span class="lineno"> 958</span>&#160; std::vector&lt;float&gt; cellToOutputWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l00959"></a><span class="lineno"> 959</span>&#160; std::vector&lt;unsigned int&gt; cellToOutputWeightsDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l00960"></a><span class="lineno"> 960</span>&#160; ConstTensor cellToOutputWeights(</div><div class="line"><a name="l00961"></a><span class="lineno"> 961</span>&#160; TensorInfo(4, cellToOutputWeightsDimensions.data(), DataType::Float32), cellToOutputWeightsData);</div><div class="line"><a name="l00962"></a><span class="lineno"> 962</span>&#160;</div><div class="line"><a name="l00963"></a><span class="lineno"> 963</span>&#160; LstmInputParams params;</div><div class="line"><a name="l00964"></a><span class="lineno"> 964</span>&#160; params.m_InputToForgetWeights = &amp;inputToForgetWeights;</div><div class="line"><a name="l00965"></a><span class="lineno"> 965</span>&#160; params.m_InputToCellWeights = &amp;inputToCellWeights;</div><div class="line"><a name="l00966"></a><span class="lineno"> 966</span>&#160; params.m_InputToOutputWeights = &amp;inputToOutputWeights;</div><div class="line"><a name="l00967"></a><span class="lineno"> 967</span>&#160; params.m_RecurrentToForgetWeights = &amp;recurrentToForgetWeights;</div><div class="line"><a name="l00968"></a><span class="lineno"> 968</span>&#160; params.m_RecurrentToCellWeights = &amp;recurrentToCellWeights;</div><div class="line"><a name="l00969"></a><span class="lineno"> 969</span>&#160; params.m_RecurrentToOutputWeights = &amp;recurrentToOutputWeights;</div><div class="line"><a name="l00970"></a><span class="lineno"> 970</span>&#160; params.m_ForgetGateBias = &amp;forgetGateBias;</div><div class="line"><a name="l00971"></a><span class="lineno"> 971</span>&#160; params.m_CellBias = &amp;cellBias;</div><div class="line"><a name="l00972"></a><span class="lineno"> 972</span>&#160; params.m_OutputGateBias = &amp;outputGateBias;</div><div class="line"><a name="l00973"></a><span class="lineno"> 973</span>&#160;</div><div class="line"><a name="l00974"></a><span class="lineno"> 974</span>&#160; params.m_CellToForgetWeights = &amp;cellToForgetWeights;</div><div class="line"><a name="l00975"></a><span class="lineno"> 975</span>&#160; params.m_CellToOutputWeights = &amp;cellToOutputWeights;</div><div class="line"><a name="l00976"></a><span class="lineno"> 976</span>&#160;</div><div class="line"><a name="l00977"></a><span class="lineno"> 977</span>&#160; TestLstmLayerVisitor visitor(descriptor, params);</div><div class="line"><a name="l00978"></a><span class="lineno"> 978</span>&#160;</div><div class="line"><a name="l00979"></a><span class="lineno"> 979</span>&#160; Network net;</div><div class="line"><a name="l00980"></a><span class="lineno"> 980</span>&#160;</div><div class="line"><a name="l00981"></a><span class="lineno"> 981</span>&#160; IConnectableLayer *<span class="keyword">const</span> layer = net.AddLstmLayer(descriptor, params);</div><div class="line"><a name="l00982"></a><span class="lineno"> 982</span>&#160; layer-&gt;Accept(visitor);</div><div class="line"><a name="l00983"></a><span class="lineno"> 983</span>&#160;}</div></div><!-- fragment -->
</div>
</div>
<a id="a6e97e093453fc053a5c82386927a0d6c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a6e97e093453fc053a5c82386927a0d6c">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[39/79]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
<td>(</td>
<td class="paramtype">OverrideInputRangeInputLayers&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_quantizer_test_8cpp_source.html#l00900">900</a> of file <a class="el" href="_quantizer_test_8cpp_source.html">QuantizerTest.cpp</a>.</p>
<p class="reference">References <a class="el" href="_network_8cpp_source.html#l01212">Network::AddAdditionLayer()</a>, <a class="el" href="_network_8cpp_source.html#l00953">Network::AddInputLayer()</a>, <a class="el" href="_network_8cpp_source.html#l01222">Network::AddOutputLayer()</a>, <a class="el" href="_file_only_profiling_decorator_tests_8cpp.html#a0c262ba6f6c189a2d092d127c1b7627b">BOOST_CHECK()</a>, <a class="el" href="classarmnn_1_1_i_output_slot.html#ac1835f8756a9f03c02fcf9664e3a0fce">IOutputSlot::Connect()</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">Float32</a>, <a class="el" href="_network_8hpp_source.html#l00033">Network::GetGraph()</a>, <a class="el" href="classarmnn_1_1_i_connectable_layer.html#afb5e65c770f6cee222db8af7581541a6">IConnectableLayer::GetGuid()</a>, <a class="el" href="_graph_8hpp_source.html#l00181">Graph::GetInputLayers()</a>, <a class="el" href="classarmnn_1_1_i_connectable_layer.html#a6ec9e0eb66d7d6a01240492a0b18104c">IConnectableLayer::GetInputSlot()</a>, <a class="el" href="classarmnn_1_1_i_connectable_layer.html#a80ac4eda2e7f2757ec9dd96fc96dbd16">IConnectableLayer::GetOutputSlot()</a>, <a class="el" href="_range_tracker_8cpp_source.html#l00029">RangeTracker::GetRange()</a>, <a class="el" href="_range_tracker_8hpp_source.html#l00032">RangeTracker::HasRanges()</a>, <a class="el" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>, <a class="el" href="_range_tracker_8hpp_source.html#l00029">RangeTracker::IsEmpty()</a>, <a class="el" href="classarmnn_1_1_i_output_slot.html#a5ee4a6c9a2481245487b1b1a70d20fd0">IOutputSlot::SetTensorInfo()</a>, and <a class="el" href="_network_quantizer_utils_8hpp_source.html#l00050">VisitLayers()</a>.</p>
<div class="fragment"><div class="line"><a name="l00901"></a><span class="lineno"> 901</span>&#160;{</div><div class="line"><a name="l00902"></a><span class="lineno"> 902</span>&#160; RangeTracker ranges;</div><div class="line"><a name="l00903"></a><span class="lineno"> 903</span>&#160; <a class="code" href="namespacearmnn.html#a997e96288bdb106c922202e3f33d5d7b">MinMaxRange</a> minMaxRange(-12.3f, 45.6f); <span class="comment">// Range to use for the override</span></div><div class="line"><a name="l00904"></a><span class="lineno"> 904</span>&#160;</div><div class="line"><a name="l00905"></a><span class="lineno"> 905</span>&#160; Network network;</div><div class="line"><a name="l00906"></a><span class="lineno"> 906</span>&#160;</div><div class="line"><a name="l00907"></a><span class="lineno"> 907</span>&#160; <span class="comment">// Adding the layers</span></div><div class="line"><a name="l00908"></a><span class="lineno"> 908</span>&#160; IConnectableLayer* input0 = network.AddInputLayer(0);</div><div class="line"><a name="l00909"></a><span class="lineno"> 909</span>&#160; IConnectableLayer* input1 = network.AddInputLayer(1);</div><div class="line"><a name="l00910"></a><span class="lineno"> 910</span>&#160; IConnectableLayer* addition = network.AddAdditionLayer();</div><div class="line"><a name="l00911"></a><span class="lineno"> 911</span>&#160; IConnectableLayer* output = network.AddOutputLayer(2);</div><div class="line"><a name="l00912"></a><span class="lineno"> 912</span>&#160;</div><div class="line"><a name="l00913"></a><span class="lineno"> 913</span>&#160; <span class="comment">// Connecting the layer</span></div><div class="line"><a name="l00914"></a><span class="lineno"> 914</span>&#160; input0-&gt;GetOutputSlot(0).Connect(addition-&gt;GetInputSlot(0));</div><div class="line"><a name="l00915"></a><span class="lineno"> 915</span>&#160; input1-&gt;GetOutputSlot(0).Connect(addition-&gt;GetInputSlot(1));</div><div class="line"><a name="l00916"></a><span class="lineno"> 916</span>&#160; addition-&gt;GetOutputSlot(0).Connect(output-&gt;GetInputSlot(0));</div><div class="line"><a name="l00917"></a><span class="lineno"> 917</span>&#160;</div><div class="line"><a name="l00918"></a><span class="lineno"> 918</span>&#160; <span class="comment">// Setting the TensorInfos</span></div><div class="line"><a name="l00919"></a><span class="lineno"> 919</span>&#160; TensorShape shape{1U};</div><div class="line"><a name="l00920"></a><span class="lineno"> 920</span>&#160; TensorInfo <a class="code" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>(shape, DataType::Float32);</div><div class="line"><a name="l00921"></a><span class="lineno"> 921</span>&#160; input0-&gt;GetOutputSlot(0).SetTensorInfo(info);</div><div class="line"><a name="l00922"></a><span class="lineno"> 922</span>&#160; input1-&gt;GetOutputSlot(0).SetTensorInfo(info);</div><div class="line"><a name="l00923"></a><span class="lineno"> 923</span>&#160; addition-&gt;GetOutputSlot(0).SetTensorInfo(info);</div><div class="line"><a name="l00924"></a><span class="lineno"> 924</span>&#160;</div><div class="line"><a name="l00925"></a><span class="lineno"> 925</span>&#160; <span class="keyword">auto</span> inputLayers = network.GetGraph().GetInputLayers(); <span class="comment">// List of input layers</span></div><div class="line"><a name="l00926"></a><span class="lineno"> 926</span>&#160;</div><div class="line"><a name="l00927"></a><span class="lineno"> 927</span>&#160; <span class="comment">// Trying to override the input range for the input layer with binding id 3 (does not exist in the network)</span></div><div class="line"><a name="l00928"></a><span class="lineno"> 928</span>&#160; OverrideInputRangeVisitor overrideInputRangeVisitorLayer3(ranges, 3, minMaxRange);</div><div class="line"><a name="l00929"></a><span class="lineno"> 929</span>&#160; <a class="code" href="namespacearmnn.html#a9835ef753dda5b5a2fe827680e41fda7">VisitLayers</a>(inputLayers, overrideInputRangeVisitorLayer3);</div><div class="line"><a name="l00930"></a><span class="lineno"> 930</span>&#160;</div><div class="line"><a name="l00931"></a><span class="lineno"> 931</span>&#160; <span class="comment">// Check that the map of ranges remained untouched</span></div><div class="line"><a name="l00932"></a><span class="lineno"> 932</span>&#160; <a class="code" href="_file_only_profiling_decorator_tests_8cpp.html#a0c262ba6f6c189a2d092d127c1b7627b">BOOST_CHECK</a>(ranges.IsEmpty());</div><div class="line"><a name="l00933"></a><span class="lineno"> 933</span>&#160;</div><div class="line"><a name="l00934"></a><span class="lineno"> 934</span>&#160; <span class="comment">// Override the input range for the input layer with binding id 1</span></div><div class="line"><a name="l00935"></a><span class="lineno"> 935</span>&#160; OverrideInputRangeVisitor overrideInputRangeVisitorLayer1(ranges, 1, minMaxRange);</div><div class="line"><a name="l00936"></a><span class="lineno"> 936</span>&#160; <a class="code" href="namespacearmnn.html#a9835ef753dda5b5a2fe827680e41fda7">VisitLayers</a>(inputLayers, overrideInputRangeVisitorLayer1);</div><div class="line"><a name="l00937"></a><span class="lineno"> 937</span>&#160;</div><div class="line"><a name="l00938"></a><span class="lineno"> 938</span>&#160; <span class="comment">// Check that the map of ranges has been populated</span></div><div class="line"><a name="l00939"></a><span class="lineno"> 939</span>&#160; <a class="code" href="_file_only_profiling_decorator_tests_8cpp.html#a0c262ba6f6c189a2d092d127c1b7627b">BOOST_CHECK</a>(!ranges.IsEmpty());</div><div class="line"><a name="l00940"></a><span class="lineno"> 940</span>&#160;</div><div class="line"><a name="l00941"></a><span class="lineno"> 941</span>&#160; <span class="comment">// Check that an entry for the input layer with binding id 0 does not exist</span></div><div class="line"><a name="l00942"></a><span class="lineno"> 942</span>&#160; <a class="code" href="_file_only_profiling_decorator_tests_8cpp.html#a0c262ba6f6c189a2d092d127c1b7627b">BOOST_CHECK</a>(!ranges.HasRanges(input0-&gt;GetGuid()));</div><div class="line"><a name="l00943"></a><span class="lineno"> 943</span>&#160;</div><div class="line"><a name="l00944"></a><span class="lineno"> 944</span>&#160; <span class="comment">// Check that an entry for the input layer with binding id 1 exists</span></div><div class="line"><a name="l00945"></a><span class="lineno"> 945</span>&#160; <a class="code" href="_file_only_profiling_decorator_tests_8cpp.html#a0c262ba6f6c189a2d092d127c1b7627b">BOOST_CHECK</a>(ranges.HasRanges(input1-&gt;GetGuid()));</div><div class="line"><a name="l00946"></a><span class="lineno"> 946</span>&#160;</div><div class="line"><a name="l00947"></a><span class="lineno"> 947</span>&#160; <span class="comment">// Check the the overridden values are what we intended to set</span></div><div class="line"><a name="l00948"></a><span class="lineno"> 948</span>&#160; <a class="code" href="_file_only_profiling_decorator_tests_8cpp.html#a0c262ba6f6c189a2d092d127c1b7627b">BOOST_CHECK</a>(ranges.GetRange(input1-&gt;GetGuid(), 0) == minMaxRange);</div><div class="line"><a name="l00949"></a><span class="lineno"> 949</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a9835ef753dda5b5a2fe827680e41fda7"><div class="ttname"><a href="namespacearmnn.html#a9835ef753dda5b5a2fe827680e41fda7">armnn::VisitLayers</a></div><div class="ttdeci">void VisitLayers(const LayerContainer &amp;layerContainer, ILayerVisitor &amp;visitor)</div><div class="ttdef"><b>Definition:</b> <a href="_network_quantizer_utils_8hpp_source.html#l00050">NetworkQuantizerUtils.hpp:50</a></div></div>
<div class="ttc" id="namespacearmnn_html_a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c"><div class="ttname"><a href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">armnn::BoostLogSeverityMapping::info</a></div></div>
<div class="ttc" id="namespacearmnn_html_a997e96288bdb106c922202e3f33d5d7b"><div class="ttname"><a href="namespacearmnn.html#a997e96288bdb106c922202e3f33d5d7b">armnn::MinMaxRange</a></div><div class="ttdeci">std::pair&lt; float, float &gt; MinMaxRange</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l00029">QuantizerTest.cpp:29</a></div></div>
<div class="ttc" id="_file_only_profiling_decorator_tests_8cpp_html_a0c262ba6f6c189a2d092d127c1b7627b"><div class="ttname"><a href="_file_only_profiling_decorator_tests_8cpp.html#a0c262ba6f6c189a2d092d127c1b7627b">BOOST_CHECK</a></div><div class="ttdeci">BOOST_CHECK(profilingService.GetCurrentState()==ProfilingState::WaitingForAck)</div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a0f1dc6ab5dccc96c5a4df37cc5bcb923"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a0f1dc6ab5dccc96c5a4df37cc5bcb923">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[40/79]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
<td>(</td>
<td class="paramtype">CheckNamedLstmLayerPeephole&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_const_tensor_layer_visitor_8cpp_source.html#l00985">985</a> of file <a class="el" href="_const_tensor_layer_visitor_8cpp_source.html">ConstTensorLayerVisitor.cpp</a>.</p>
<p class="reference">References <a class="el" href="classarmnn_1_1_i_connectable_layer.html#a8c9198a992b02e61a6777329d487dde3">IConnectableLayer::Accept()</a>, <a class="el" href="_network_8cpp_source.html#l01312">Network::AddLstmLayer()</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">Float32</a>, <a class="el" href="_descriptors_8hpp_source.html#l00861">LstmDescriptor::m_ActivationFunc</a>, <a class="el" href="_lstm_params_8hpp_source.html#l00053">LstmInputParams::m_CellBias</a>, <a class="el" href="_lstm_params_8hpp_source.html#l00049">LstmInputParams::m_CellToForgetWeights</a>, <a class="el" href="_lstm_params_8hpp_source.html#l00050">LstmInputParams::m_CellToOutputWeights</a>, <a class="el" href="_descriptors_8hpp_source.html#l00867">LstmDescriptor::m_CifgEnabled</a>, <a class="el" href="_descriptors_8hpp_source.html#l00863">LstmDescriptor::m_ClippingThresCell</a>, <a class="el" href="_descriptors_8hpp_source.html#l00865">LstmDescriptor::m_ClippingThresProj</a>, <a class="el" href="_lstm_params_8hpp_source.html#l00052">LstmInputParams::m_ForgetGateBias</a>, <a class="el" href="_lstm_params_8hpp_source.html#l00042">LstmInputParams::m_InputToCellWeights</a>, <a class="el" href="_lstm_params_8hpp_source.html#l00041">LstmInputParams::m_InputToForgetWeights</a>, <a class="el" href="_lstm_params_8hpp_source.html#l00043">LstmInputParams::m_InputToOutputWeights</a>, <a class="el" href="_lstm_params_8hpp_source.html#l00054">LstmInputParams::m_OutputGateBias</a>, <a class="el" href="_descriptors_8hpp_source.html#l00869">LstmDescriptor::m_PeepholeEnabled</a>, <a class="el" href="_lstm_params_8hpp_source.html#l00046">LstmInputParams::m_RecurrentToCellWeights</a>, <a class="el" href="_lstm_params_8hpp_source.html#l00045">LstmInputParams::m_RecurrentToForgetWeights</a>, and <a class="el" href="_lstm_params_8hpp_source.html#l00047">LstmInputParams::m_RecurrentToOutputWeights</a>.</p>
<div class="fragment"><div class="line"><a name="l00986"></a><span class="lineno"> 986</span>&#160;{</div><div class="line"><a name="l00987"></a><span class="lineno"> 987</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span>* layerName = <span class="stringliteral">&quot;LstmLayer&quot;</span>;</div><div class="line"><a name="l00988"></a><span class="lineno"> 988</span>&#160; LstmDescriptor descriptor;</div><div class="line"><a name="l00989"></a><span class="lineno"> 989</span>&#160; descriptor.m_ActivationFunc = 3;</div><div class="line"><a name="l00990"></a><span class="lineno"> 990</span>&#160; descriptor.m_ClippingThresProj = 0.5f;</div><div class="line"><a name="l00991"></a><span class="lineno"> 991</span>&#160; descriptor.m_ClippingThresCell = 0.3f;</div><div class="line"><a name="l00992"></a><span class="lineno"> 992</span>&#160; descriptor.m_CifgEnabled = <span class="keyword">true</span>; <span class="comment">// if this is true then we DON&#39;T need to set the OptCifgParams</span></div><div class="line"><a name="l00993"></a><span class="lineno"> 993</span>&#160; descriptor.m_PeepholeEnabled = <span class="keyword">true</span>;</div><div class="line"><a name="l00994"></a><span class="lineno"> 994</span>&#160;</div><div class="line"><a name="l00995"></a><span class="lineno"> 995</span>&#160; std::vector&lt;float&gt; inputToForgetWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l00996"></a><span class="lineno"> 996</span>&#160; std::vector&lt;unsigned int&gt; inputToForgetWeightsDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l00997"></a><span class="lineno"> 997</span>&#160; ConstTensor inputToForgetWeights(</div><div class="line"><a name="l00998"></a><span class="lineno"> 998</span>&#160; TensorInfo(4, inputToForgetWeightsDimensions.data(), DataType::Float32), inputToForgetWeightsData);</div><div class="line"><a name="l00999"></a><span class="lineno"> 999</span>&#160;</div><div class="line"><a name="l01000"></a><span class="lineno"> 1000</span>&#160; std::vector&lt;float&gt; inputToCellWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l01001"></a><span class="lineno"> 1001</span>&#160; std::vector&lt;unsigned int&gt; inputToCellWeightsDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l01002"></a><span class="lineno"> 1002</span>&#160; ConstTensor inputToCellWeights(</div><div class="line"><a name="l01003"></a><span class="lineno"> 1003</span>&#160; TensorInfo(4, inputToCellWeightsDimensions.data(), DataType::Float32), inputToCellWeightsData);</div><div class="line"><a name="l01004"></a><span class="lineno"> 1004</span>&#160;</div><div class="line"><a name="l01005"></a><span class="lineno"> 1005</span>&#160; std::vector&lt;float&gt; inputToOutputWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l01006"></a><span class="lineno"> 1006</span>&#160; std::vector&lt;unsigned int&gt; inputToOutputWeightsDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l01007"></a><span class="lineno"> 1007</span>&#160; ConstTensor inputToOutputWeights(</div><div class="line"><a name="l01008"></a><span class="lineno"> 1008</span>&#160; TensorInfo(4, inputToOutputWeightsDimensions.data(), DataType::Float32), inputToOutputWeightsData);</div><div class="line"><a name="l01009"></a><span class="lineno"> 1009</span>&#160;</div><div class="line"><a name="l01010"></a><span class="lineno"> 1010</span>&#160; std::vector&lt;float&gt; recurrentToForgetWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l01011"></a><span class="lineno"> 1011</span>&#160; std::vector&lt;unsigned int&gt; recurrentToForgetWeightsDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l01012"></a><span class="lineno"> 1012</span>&#160; ConstTensor recurrentToForgetWeights(TensorInfo(</div><div class="line"><a name="l01013"></a><span class="lineno"> 1013</span>&#160; 4, recurrentToForgetWeightsDimensions.data(), DataType::Float32), recurrentToForgetWeightsData);</div><div class="line"><a name="l01014"></a><span class="lineno"> 1014</span>&#160;</div><div class="line"><a name="l01015"></a><span class="lineno"> 1015</span>&#160; std::vector&lt;float&gt; recurrentToCellWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l01016"></a><span class="lineno"> 1016</span>&#160; std::vector&lt;unsigned int&gt; recurrentToCellWeightsDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l01017"></a><span class="lineno"> 1017</span>&#160; ConstTensor recurrentToCellWeights(TensorInfo(</div><div class="line"><a name="l01018"></a><span class="lineno"> 1018</span>&#160; 4, recurrentToCellWeightsDimensions.data(), DataType::Float32), recurrentToCellWeightsData);</div><div class="line"><a name="l01019"></a><span class="lineno"> 1019</span>&#160;</div><div class="line"><a name="l01020"></a><span class="lineno"> 1020</span>&#160; std::vector&lt;float&gt; recurrentToOutputWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l01021"></a><span class="lineno"> 1021</span>&#160; std::vector&lt;unsigned int&gt; recurrentToOutputWeightsDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l01022"></a><span class="lineno"> 1022</span>&#160; ConstTensor recurrentToOutputWeights(TensorInfo(</div><div class="line"><a name="l01023"></a><span class="lineno"> 1023</span>&#160; 4, recurrentToOutputWeightsDimensions.data(), DataType::Float32), recurrentToOutputWeightsData);</div><div class="line"><a name="l01024"></a><span class="lineno"> 1024</span>&#160;</div><div class="line"><a name="l01025"></a><span class="lineno"> 1025</span>&#160; std::vector&lt;float&gt; forgetGateBiasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l01026"></a><span class="lineno"> 1026</span>&#160; std::vector&lt;unsigned int&gt; forgetGateBiasDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l01027"></a><span class="lineno"> 1027</span>&#160; ConstTensor forgetGateBias(TensorInfo(</div><div class="line"><a name="l01028"></a><span class="lineno"> 1028</span>&#160; 4, forgetGateBiasDimensions.data(), DataType::Float32), forgetGateBiasData);</div><div class="line"><a name="l01029"></a><span class="lineno"> 1029</span>&#160;</div><div class="line"><a name="l01030"></a><span class="lineno"> 1030</span>&#160; std::vector&lt;float&gt; cellBiasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l01031"></a><span class="lineno"> 1031</span>&#160; std::vector&lt;unsigned int&gt; cellBiasDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l01032"></a><span class="lineno"> 1032</span>&#160; ConstTensor cellBias(TensorInfo(</div><div class="line"><a name="l01033"></a><span class="lineno"> 1033</span>&#160; 4, cellBiasDimensions.data(), DataType::Float32), cellBiasData);</div><div class="line"><a name="l01034"></a><span class="lineno"> 1034</span>&#160;</div><div class="line"><a name="l01035"></a><span class="lineno"> 1035</span>&#160; std::vector&lt;float&gt; outputGateBiasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l01036"></a><span class="lineno"> 1036</span>&#160; std::vector&lt;unsigned int&gt; outputGateBiasDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l01037"></a><span class="lineno"> 1037</span>&#160; ConstTensor outputGateBias(TensorInfo(</div><div class="line"><a name="l01038"></a><span class="lineno"> 1038</span>&#160; 4, outputGateBiasDimensions.data(), DataType::Float32), outputGateBiasData);</div><div class="line"><a name="l01039"></a><span class="lineno"> 1039</span>&#160;</div><div class="line"><a name="l01040"></a><span class="lineno"> 1040</span>&#160; std::vector&lt;float&gt; cellToForgetWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l01041"></a><span class="lineno"> 1041</span>&#160; std::vector&lt;unsigned int&gt; cellToForgetWeightsDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l01042"></a><span class="lineno"> 1042</span>&#160; ConstTensor cellToForgetWeights(</div><div class="line"><a name="l01043"></a><span class="lineno"> 1043</span>&#160; TensorInfo(4, cellToForgetWeightsDimensions.data(), DataType::Float32), cellToForgetWeightsData);</div><div class="line"><a name="l01044"></a><span class="lineno"> 1044</span>&#160;</div><div class="line"><a name="l01045"></a><span class="lineno"> 1045</span>&#160; std::vector&lt;float&gt; cellToOutputWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l01046"></a><span class="lineno"> 1046</span>&#160; std::vector&lt;unsigned int&gt; cellToOutputWeightsDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l01047"></a><span class="lineno"> 1047</span>&#160; ConstTensor cellToOutputWeights(</div><div class="line"><a name="l01048"></a><span class="lineno"> 1048</span>&#160; TensorInfo(4, cellToOutputWeightsDimensions.data(), DataType::Float32), cellToOutputWeightsData);</div><div class="line"><a name="l01049"></a><span class="lineno"> 1049</span>&#160;</div><div class="line"><a name="l01050"></a><span class="lineno"> 1050</span>&#160; LstmInputParams params;</div><div class="line"><a name="l01051"></a><span class="lineno"> 1051</span>&#160; params.m_InputToForgetWeights = &amp;inputToForgetWeights;</div><div class="line"><a name="l01052"></a><span class="lineno"> 1052</span>&#160; params.m_InputToCellWeights = &amp;inputToCellWeights;</div><div class="line"><a name="l01053"></a><span class="lineno"> 1053</span>&#160; params.m_InputToOutputWeights = &amp;inputToOutputWeights;</div><div class="line"><a name="l01054"></a><span class="lineno"> 1054</span>&#160; params.m_RecurrentToForgetWeights = &amp;recurrentToForgetWeights;</div><div class="line"><a name="l01055"></a><span class="lineno"> 1055</span>&#160; params.m_RecurrentToCellWeights = &amp;recurrentToCellWeights;</div><div class="line"><a name="l01056"></a><span class="lineno"> 1056</span>&#160; params.m_RecurrentToOutputWeights = &amp;recurrentToOutputWeights;</div><div class="line"><a name="l01057"></a><span class="lineno"> 1057</span>&#160; params.m_ForgetGateBias = &amp;forgetGateBias;</div><div class="line"><a name="l01058"></a><span class="lineno"> 1058</span>&#160; params.m_CellBias = &amp;cellBias;</div><div class="line"><a name="l01059"></a><span class="lineno"> 1059</span>&#160; params.m_OutputGateBias = &amp;outputGateBias;</div><div class="line"><a name="l01060"></a><span class="lineno"> 1060</span>&#160;</div><div class="line"><a name="l01061"></a><span class="lineno"> 1061</span>&#160; params.m_CellToForgetWeights = &amp;cellToForgetWeights;</div><div class="line"><a name="l01062"></a><span class="lineno"> 1062</span>&#160; params.m_CellToOutputWeights = &amp;cellToOutputWeights;</div><div class="line"><a name="l01063"></a><span class="lineno"> 1063</span>&#160;</div><div class="line"><a name="l01064"></a><span class="lineno"> 1064</span>&#160; TestLstmLayerVisitor visitor(descriptor, params, layerName);</div><div class="line"><a name="l01065"></a><span class="lineno"> 1065</span>&#160;</div><div class="line"><a name="l01066"></a><span class="lineno"> 1066</span>&#160; Network net;</div><div class="line"><a name="l01067"></a><span class="lineno"> 1067</span>&#160;</div><div class="line"><a name="l01068"></a><span class="lineno"> 1068</span>&#160; IConnectableLayer *<span class="keyword">const</span> layer = net.AddLstmLayer(descriptor, params, layerName);</div><div class="line"><a name="l01069"></a><span class="lineno"> 1069</span>&#160; layer-&gt;Accept(visitor);</div><div class="line"><a name="l01070"></a><span class="lineno"> 1070</span>&#160;}</div></div><!-- fragment -->
</div>
</div>
<a id="a881ab05533f917737509402730668e4a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a881ab05533f917737509402730668e4a">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[41/79]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
<td>(</td>
<td class="paramtype">QuantizeFullyConnected&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_quantizer_test_8cpp_source.html#l01036">1036</a> of file <a class="el" href="_quantizer_test_8cpp_source.html">QuantizerTest.cpp</a>.</p>
<p class="reference">References <a class="el" href="_quantizer_test_8cpp_source.html#l00989">ValidateFullyConnectedLayer()</a>.</p>
<div class="fragment"><div class="line"><a name="l01037"></a><span class="lineno"> 1037</span>&#160;{</div><div class="line"><a name="l01038"></a><span class="lineno"> 1038</span>&#160; <a class="code" href="namespacearmnn.html#a245661fc96c9c4a9b898e1d98c8c6962">ValidateFullyConnectedLayer</a>(<span class="keyword">false</span>);</div><div class="line"><a name="l01039"></a><span class="lineno"> 1039</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a245661fc96c9c4a9b898e1d98c8c6962"><div class="ttname"><a href="namespacearmnn.html#a245661fc96c9c4a9b898e1d98c8c6962">armnn::ValidateFullyConnectedLayer</a></div><div class="ttdeci">void ValidateFullyConnectedLayer(const bool biasEnabled)</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l00989">QuantizerTest.cpp:989</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a69dd8c7608ff0935a247f3aa07f98212"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a69dd8c7608ff0935a247f3aa07f98212">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[42/79]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
<td>(</td>
<td class="paramtype">QuantizeFullyConnectedBiasEnabled&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_quantizer_test_8cpp_source.html#l01041">1041</a> of file <a class="el" href="_quantizer_test_8cpp_source.html">QuantizerTest.cpp</a>.</p>
<p class="reference">References <a class="el" href="_quantizer_test_8cpp_source.html#l00989">ValidateFullyConnectedLayer()</a>.</p>
<div class="fragment"><div class="line"><a name="l01042"></a><span class="lineno"> 1042</span>&#160;{</div><div class="line"><a name="l01043"></a><span class="lineno"> 1043</span>&#160; <a class="code" href="namespacearmnn.html#a245661fc96c9c4a9b898e1d98c8c6962">ValidateFullyConnectedLayer</a>(<span class="keyword">true</span>);</div><div class="line"><a name="l01044"></a><span class="lineno"> 1044</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a245661fc96c9c4a9b898e1d98c8c6962"><div class="ttname"><a href="namespacearmnn.html#a245661fc96c9c4a9b898e1d98c8c6962">armnn::ValidateFullyConnectedLayer</a></div><div class="ttdeci">void ValidateFullyConnectedLayer(const bool biasEnabled)</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l00989">QuantizerTest.cpp:989</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a0d00c75b42e46b3a7dd78f9a40324c33"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a0d00c75b42e46b3a7dd78f9a40324c33">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[43/79]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
<td>(</td>
<td class="paramtype">CheckLstmLayerProjection&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_const_tensor_layer_visitor_8cpp_source.html#l01073">1073</a> of file <a class="el" href="_const_tensor_layer_visitor_8cpp_source.html">ConstTensorLayerVisitor.cpp</a>.</p>
<p class="reference">References <a class="el" href="classarmnn_1_1_i_connectable_layer.html#a8c9198a992b02e61a6777329d487dde3">IConnectableLayer::Accept()</a>, <a class="el" href="_network_8cpp_source.html#l01312">Network::AddLstmLayer()</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">Float32</a>, <a class="el" href="_descriptors_8hpp_source.html#l00861">LstmDescriptor::m_ActivationFunc</a>, <a class="el" href="_lstm_params_8hpp_source.html#l00053">LstmInputParams::m_CellBias</a>, <a class="el" href="_descriptors_8hpp_source.html#l00867">LstmDescriptor::m_CifgEnabled</a>, <a class="el" href="_descriptors_8hpp_source.html#l00863">LstmDescriptor::m_ClippingThresCell</a>, <a class="el" href="_descriptors_8hpp_source.html#l00865">LstmDescriptor::m_ClippingThresProj</a>, <a class="el" href="_lstm_params_8hpp_source.html#l00052">LstmInputParams::m_ForgetGateBias</a>, <a class="el" href="_lstm_params_8hpp_source.html#l00042">LstmInputParams::m_InputToCellWeights</a>, <a class="el" href="_lstm_params_8hpp_source.html#l00041">LstmInputParams::m_InputToForgetWeights</a>, <a class="el" href="_lstm_params_8hpp_source.html#l00043">LstmInputParams::m_InputToOutputWeights</a>, <a class="el" href="_lstm_params_8hpp_source.html#l00054">LstmInputParams::m_OutputGateBias</a>, <a class="el" href="_lstm_params_8hpp_source.html#l00056">LstmInputParams::m_ProjectionBias</a>, <a class="el" href="_descriptors_8hpp_source.html#l00871">LstmDescriptor::m_ProjectionEnabled</a>, <a class="el" href="_lstm_params_8hpp_source.html#l00055">LstmInputParams::m_ProjectionWeights</a>, <a class="el" href="_lstm_params_8hpp_source.html#l00046">LstmInputParams::m_RecurrentToCellWeights</a>, <a class="el" href="_lstm_params_8hpp_source.html#l00045">LstmInputParams::m_RecurrentToForgetWeights</a>, and <a class="el" href="_lstm_params_8hpp_source.html#l00047">LstmInputParams::m_RecurrentToOutputWeights</a>.</p>
<div class="fragment"><div class="line"><a name="l01074"></a><span class="lineno"> 1074</span>&#160;{</div><div class="line"><a name="l01075"></a><span class="lineno"> 1075</span>&#160; LstmDescriptor descriptor;</div><div class="line"><a name="l01076"></a><span class="lineno"> 1076</span>&#160; descriptor.m_ActivationFunc = 3;</div><div class="line"><a name="l01077"></a><span class="lineno"> 1077</span>&#160; descriptor.m_ClippingThresProj = 0.5f;</div><div class="line"><a name="l01078"></a><span class="lineno"> 1078</span>&#160; descriptor.m_ClippingThresCell = 0.3f;</div><div class="line"><a name="l01079"></a><span class="lineno"> 1079</span>&#160; descriptor.m_CifgEnabled = <span class="keyword">true</span>; <span class="comment">// if this is true then we DON&#39;T need to set the OptCifgParams</span></div><div class="line"><a name="l01080"></a><span class="lineno"> 1080</span>&#160; descriptor.m_ProjectionEnabled = <span class="keyword">true</span>;</div><div class="line"><a name="l01081"></a><span class="lineno"> 1081</span>&#160;</div><div class="line"><a name="l01082"></a><span class="lineno"> 1082</span>&#160; std::vector&lt;float&gt; inputToForgetWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l01083"></a><span class="lineno"> 1083</span>&#160; std::vector&lt;unsigned int&gt; inputToForgetWeightsDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l01084"></a><span class="lineno"> 1084</span>&#160; ConstTensor inputToForgetWeights(</div><div class="line"><a name="l01085"></a><span class="lineno"> 1085</span>&#160; TensorInfo(4, inputToForgetWeightsDimensions.data(), DataType::Float32), inputToForgetWeightsData);</div><div class="line"><a name="l01086"></a><span class="lineno"> 1086</span>&#160;</div><div class="line"><a name="l01087"></a><span class="lineno"> 1087</span>&#160; std::vector&lt;float&gt; inputToCellWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l01088"></a><span class="lineno"> 1088</span>&#160; std::vector&lt;unsigned int&gt; inputToCellWeightsDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l01089"></a><span class="lineno"> 1089</span>&#160; ConstTensor inputToCellWeights(</div><div class="line"><a name="l01090"></a><span class="lineno"> 1090</span>&#160; TensorInfo(4, inputToCellWeightsDimensions.data(), DataType::Float32), inputToCellWeightsData);</div><div class="line"><a name="l01091"></a><span class="lineno"> 1091</span>&#160;</div><div class="line"><a name="l01092"></a><span class="lineno"> 1092</span>&#160; std::vector&lt;float&gt; inputToOutputWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l01093"></a><span class="lineno"> 1093</span>&#160; std::vector&lt;unsigned int&gt; inputToOutputWeightsDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l01094"></a><span class="lineno"> 1094</span>&#160; ConstTensor inputToOutputWeights(</div><div class="line"><a name="l01095"></a><span class="lineno"> 1095</span>&#160; TensorInfo(4, inputToOutputWeightsDimensions.data(), DataType::Float32), inputToOutputWeightsData);</div><div class="line"><a name="l01096"></a><span class="lineno"> 1096</span>&#160;</div><div class="line"><a name="l01097"></a><span class="lineno"> 1097</span>&#160; std::vector&lt;float&gt; recurrentToForgetWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l01098"></a><span class="lineno"> 1098</span>&#160; std::vector&lt;unsigned int&gt; recurrentToForgetWeightsDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l01099"></a><span class="lineno"> 1099</span>&#160; ConstTensor recurrentToForgetWeights(TensorInfo(</div><div class="line"><a name="l01100"></a><span class="lineno"> 1100</span>&#160; 4, recurrentToForgetWeightsDimensions.data(), DataType::Float32), recurrentToForgetWeightsData);</div><div class="line"><a name="l01101"></a><span class="lineno"> 1101</span>&#160;</div><div class="line"><a name="l01102"></a><span class="lineno"> 1102</span>&#160; std::vector&lt;float&gt; recurrentToCellWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l01103"></a><span class="lineno"> 1103</span>&#160; std::vector&lt;unsigned int&gt; recurrentToCellWeightsDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l01104"></a><span class="lineno"> 1104</span>&#160; ConstTensor recurrentToCellWeights(TensorInfo(</div><div class="line"><a name="l01105"></a><span class="lineno"> 1105</span>&#160; 4, recurrentToCellWeightsDimensions.data(), DataType::Float32), recurrentToCellWeightsData);</div><div class="line"><a name="l01106"></a><span class="lineno"> 1106</span>&#160;</div><div class="line"><a name="l01107"></a><span class="lineno"> 1107</span>&#160; std::vector&lt;float&gt; recurrentToOutputWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l01108"></a><span class="lineno"> 1108</span>&#160; std::vector&lt;unsigned int&gt; recurrentToOutputWeightsDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l01109"></a><span class="lineno"> 1109</span>&#160; ConstTensor recurrentToOutputWeights(TensorInfo(</div><div class="line"><a name="l01110"></a><span class="lineno"> 1110</span>&#160; 4, recurrentToOutputWeightsDimensions.data(), DataType::Float32), recurrentToOutputWeightsData);</div><div class="line"><a name="l01111"></a><span class="lineno"> 1111</span>&#160;</div><div class="line"><a name="l01112"></a><span class="lineno"> 1112</span>&#160; std::vector&lt;float&gt; forgetGateBiasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l01113"></a><span class="lineno"> 1113</span>&#160; std::vector&lt;unsigned int&gt; forgetGateBiasDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l01114"></a><span class="lineno"> 1114</span>&#160; ConstTensor forgetGateBias(TensorInfo(</div><div class="line"><a name="l01115"></a><span class="lineno"> 1115</span>&#160; 4, forgetGateBiasDimensions.data(), DataType::Float32), forgetGateBiasData);</div><div class="line"><a name="l01116"></a><span class="lineno"> 1116</span>&#160;</div><div class="line"><a name="l01117"></a><span class="lineno"> 1117</span>&#160; std::vector&lt;float&gt; cellBiasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l01118"></a><span class="lineno"> 1118</span>&#160; std::vector&lt;unsigned int&gt; cellBiasDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l01119"></a><span class="lineno"> 1119</span>&#160; ConstTensor cellBias(TensorInfo(</div><div class="line"><a name="l01120"></a><span class="lineno"> 1120</span>&#160; 4, cellBiasDimensions.data(), DataType::Float32), cellBiasData);</div><div class="line"><a name="l01121"></a><span class="lineno"> 1121</span>&#160;</div><div class="line"><a name="l01122"></a><span class="lineno"> 1122</span>&#160; std::vector&lt;float&gt; outputGateBiasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l01123"></a><span class="lineno"> 1123</span>&#160; std::vector&lt;unsigned int&gt; outputGateBiasDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l01124"></a><span class="lineno"> 1124</span>&#160; ConstTensor outputGateBias(TensorInfo(</div><div class="line"><a name="l01125"></a><span class="lineno"> 1125</span>&#160; 4, outputGateBiasDimensions.data(), DataType::Float32), outputGateBiasData);</div><div class="line"><a name="l01126"></a><span class="lineno"> 1126</span>&#160;</div><div class="line"><a name="l01127"></a><span class="lineno"> 1127</span>&#160; std::vector&lt;float&gt; projectionBiasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l01128"></a><span class="lineno"> 1128</span>&#160; std::vector&lt;unsigned int&gt; projectionBiasDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l01129"></a><span class="lineno"> 1129</span>&#160; ConstTensor projectionBias(</div><div class="line"><a name="l01130"></a><span class="lineno"> 1130</span>&#160; TensorInfo(4, projectionBiasDimensions.data(), DataType::Float32), projectionBiasData);</div><div class="line"><a name="l01131"></a><span class="lineno"> 1131</span>&#160;</div><div class="line"><a name="l01132"></a><span class="lineno"> 1132</span>&#160; std::vector&lt;float&gt; projectionWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l01133"></a><span class="lineno"> 1133</span>&#160; std::vector&lt;unsigned int&gt; projectionWeightsDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l01134"></a><span class="lineno"> 1134</span>&#160; ConstTensor projectionWeights(</div><div class="line"><a name="l01135"></a><span class="lineno"> 1135</span>&#160; TensorInfo(4, projectionWeightsDimensions.data(), DataType::Float32), projectionWeightsData);</div><div class="line"><a name="l01136"></a><span class="lineno"> 1136</span>&#160;</div><div class="line"><a name="l01137"></a><span class="lineno"> 1137</span>&#160; LstmInputParams params;</div><div class="line"><a name="l01138"></a><span class="lineno"> 1138</span>&#160; params.m_InputToForgetWeights = &amp;inputToForgetWeights;</div><div class="line"><a name="l01139"></a><span class="lineno"> 1139</span>&#160; params.m_InputToCellWeights = &amp;inputToCellWeights;</div><div class="line"><a name="l01140"></a><span class="lineno"> 1140</span>&#160; params.m_InputToOutputWeights = &amp;inputToOutputWeights;</div><div class="line"><a name="l01141"></a><span class="lineno"> 1141</span>&#160; params.m_RecurrentToForgetWeights = &amp;recurrentToForgetWeights;</div><div class="line"><a name="l01142"></a><span class="lineno"> 1142</span>&#160; params.m_RecurrentToCellWeights = &amp;recurrentToCellWeights;</div><div class="line"><a name="l01143"></a><span class="lineno"> 1143</span>&#160; params.m_RecurrentToOutputWeights = &amp;recurrentToOutputWeights;</div><div class="line"><a name="l01144"></a><span class="lineno"> 1144</span>&#160; params.m_ForgetGateBias = &amp;forgetGateBias;</div><div class="line"><a name="l01145"></a><span class="lineno"> 1145</span>&#160; params.m_CellBias = &amp;cellBias;</div><div class="line"><a name="l01146"></a><span class="lineno"> 1146</span>&#160; params.m_OutputGateBias = &amp;outputGateBias;</div><div class="line"><a name="l01147"></a><span class="lineno"> 1147</span>&#160;</div><div class="line"><a name="l01148"></a><span class="lineno"> 1148</span>&#160; params.m_ProjectionWeights = &amp;projectionWeights;</div><div class="line"><a name="l01149"></a><span class="lineno"> 1149</span>&#160; params.m_ProjectionBias = &amp;projectionBias;</div><div class="line"><a name="l01150"></a><span class="lineno"> 1150</span>&#160;</div><div class="line"><a name="l01151"></a><span class="lineno"> 1151</span>&#160; TestLstmLayerVisitor visitor(descriptor, params);</div><div class="line"><a name="l01152"></a><span class="lineno"> 1152</span>&#160;</div><div class="line"><a name="l01153"></a><span class="lineno"> 1153</span>&#160; Network net;</div><div class="line"><a name="l01154"></a><span class="lineno"> 1154</span>&#160;</div><div class="line"><a name="l01155"></a><span class="lineno"> 1155</span>&#160; IConnectableLayer *<span class="keyword">const</span> layer = net.AddLstmLayer(descriptor, params);</div><div class="line"><a name="l01156"></a><span class="lineno"> 1156</span>&#160; layer-&gt;Accept(visitor);</div><div class="line"><a name="l01157"></a><span class="lineno"> 1157</span>&#160;}</div></div><!-- fragment -->
</div>
</div>
<a id="aa117e0112fdc02a7a011cfb39dc596ab"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa117e0112fdc02a7a011cfb39dc596ab">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[44/79]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
<td>(</td>
<td class="paramtype">QuantizeConvolution2d&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_quantizer_test_8cpp_source.html#l01122">1122</a> of file <a class="el" href="_quantizer_test_8cpp_source.html">QuantizerTest.cpp</a>.</p>
<p class="reference">References <a class="el" href="_quantizer_test_8cpp_source.html#l01046">TestQuantizeConvolution2d()</a>.</p>
<div class="fragment"><div class="line"><a name="l01123"></a><span class="lineno"> 1123</span>&#160;{</div><div class="line"><a name="l01124"></a><span class="lineno"> 1124</span>&#160; <a class="code" href="namespacearmnn.html#a14cfd39cfc30682fa821ade3dd298426">TestQuantizeConvolution2d</a>(<span class="keyword">false</span>);</div><div class="line"><a name="l01125"></a><span class="lineno"> 1125</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a14cfd39cfc30682fa821ade3dd298426"><div class="ttname"><a href="namespacearmnn.html#a14cfd39cfc30682fa821ade3dd298426">armnn::TestQuantizeConvolution2d</a></div><div class="ttdeci">void TestQuantizeConvolution2d(bool useBiases)</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l01046">QuantizerTest.cpp:1046</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a9827adb2cf787460578999e0484568fa"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a9827adb2cf787460578999e0484568fa">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[45/79]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
<td>(</td>
<td class="paramtype">QuantizeConvolution2dWithBiases&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_quantizer_test_8cpp_source.html#l01127">1127</a> of file <a class="el" href="_quantizer_test_8cpp_source.html">QuantizerTest.cpp</a>.</p>
<p class="reference">References <a class="el" href="_quantizer_test_8cpp_source.html#l01046">TestQuantizeConvolution2d()</a>.</p>
<div class="fragment"><div class="line"><a name="l01128"></a><span class="lineno"> 1128</span>&#160;{</div><div class="line"><a name="l01129"></a><span class="lineno"> 1129</span>&#160; <a class="code" href="namespacearmnn.html#a14cfd39cfc30682fa821ade3dd298426">TestQuantizeConvolution2d</a>(<span class="keyword">true</span>);</div><div class="line"><a name="l01130"></a><span class="lineno"> 1130</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a14cfd39cfc30682fa821ade3dd298426"><div class="ttname"><a href="namespacearmnn.html#a14cfd39cfc30682fa821ade3dd298426">armnn::TestQuantizeConvolution2d</a></div><div class="ttdeci">void TestQuantizeConvolution2d(bool useBiases)</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l01046">QuantizerTest.cpp:1046</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a3a3105d08231d5f2e53511bab46224c9"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a3a3105d08231d5f2e53511bab46224c9">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[46/79]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
<td>(</td>
<td class="paramtype">CheckNamedLstmLayerProjection&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_const_tensor_layer_visitor_8cpp_source.html#l01159">1159</a> of file <a class="el" href="_const_tensor_layer_visitor_8cpp_source.html">ConstTensorLayerVisitor.cpp</a>.</p>
<p class="reference">References <a class="el" href="classarmnn_1_1_i_connectable_layer.html#a8c9198a992b02e61a6777329d487dde3">IConnectableLayer::Accept()</a>, <a class="el" href="_network_8cpp_source.html#l01312">Network::AddLstmLayer()</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">Float32</a>, <a class="el" href="_descriptors_8hpp_source.html#l00861">LstmDescriptor::m_ActivationFunc</a>, <a class="el" href="_lstm_params_8hpp_source.html#l00053">LstmInputParams::m_CellBias</a>, <a class="el" href="_descriptors_8hpp_source.html#l00867">LstmDescriptor::m_CifgEnabled</a>, <a class="el" href="_descriptors_8hpp_source.html#l00863">LstmDescriptor::m_ClippingThresCell</a>, <a class="el" href="_descriptors_8hpp_source.html#l00865">LstmDescriptor::m_ClippingThresProj</a>, <a class="el" href="_lstm_params_8hpp_source.html#l00052">LstmInputParams::m_ForgetGateBias</a>, <a class="el" href="_lstm_params_8hpp_source.html#l00042">LstmInputParams::m_InputToCellWeights</a>, <a class="el" href="_lstm_params_8hpp_source.html#l00041">LstmInputParams::m_InputToForgetWeights</a>, <a class="el" href="_lstm_params_8hpp_source.html#l00043">LstmInputParams::m_InputToOutputWeights</a>, <a class="el" href="_lstm_params_8hpp_source.html#l00054">LstmInputParams::m_OutputGateBias</a>, <a class="el" href="_lstm_params_8hpp_source.html#l00056">LstmInputParams::m_ProjectionBias</a>, <a class="el" href="_descriptors_8hpp_source.html#l00871">LstmDescriptor::m_ProjectionEnabled</a>, <a class="el" href="_lstm_params_8hpp_source.html#l00055">LstmInputParams::m_ProjectionWeights</a>, <a class="el" href="_lstm_params_8hpp_source.html#l00046">LstmInputParams::m_RecurrentToCellWeights</a>, <a class="el" href="_lstm_params_8hpp_source.html#l00045">LstmInputParams::m_RecurrentToForgetWeights</a>, and <a class="el" href="_lstm_params_8hpp_source.html#l00047">LstmInputParams::m_RecurrentToOutputWeights</a>.</p>
<div class="fragment"><div class="line"><a name="l01160"></a><span class="lineno"> 1160</span>&#160;{</div><div class="line"><a name="l01161"></a><span class="lineno"> 1161</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span>* layerName = <span class="stringliteral">&quot;LstmLayer&quot;</span>;</div><div class="line"><a name="l01162"></a><span class="lineno"> 1162</span>&#160; LstmDescriptor descriptor;</div><div class="line"><a name="l01163"></a><span class="lineno"> 1163</span>&#160; descriptor.m_ActivationFunc = 3;</div><div class="line"><a name="l01164"></a><span class="lineno"> 1164</span>&#160; descriptor.m_ClippingThresProj = 0.5f;</div><div class="line"><a name="l01165"></a><span class="lineno"> 1165</span>&#160; descriptor.m_ClippingThresCell = 0.3f;</div><div class="line"><a name="l01166"></a><span class="lineno"> 1166</span>&#160; descriptor.m_CifgEnabled = <span class="keyword">true</span>; <span class="comment">// if this is true then we DON&#39;T need to set the OptCifgParams</span></div><div class="line"><a name="l01167"></a><span class="lineno"> 1167</span>&#160; descriptor.m_ProjectionEnabled = <span class="keyword">true</span>;</div><div class="line"><a name="l01168"></a><span class="lineno"> 1168</span>&#160;</div><div class="line"><a name="l01169"></a><span class="lineno"> 1169</span>&#160; std::vector&lt;float&gt; inputToForgetWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l01170"></a><span class="lineno"> 1170</span>&#160; std::vector&lt;unsigned int&gt; inputToForgetWeightsDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l01171"></a><span class="lineno"> 1171</span>&#160; ConstTensor inputToForgetWeights(</div><div class="line"><a name="l01172"></a><span class="lineno"> 1172</span>&#160; TensorInfo(4, inputToForgetWeightsDimensions.data(), DataType::Float32), inputToForgetWeightsData);</div><div class="line"><a name="l01173"></a><span class="lineno"> 1173</span>&#160;</div><div class="line"><a name="l01174"></a><span class="lineno"> 1174</span>&#160; std::vector&lt;float&gt; inputToCellWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l01175"></a><span class="lineno"> 1175</span>&#160; std::vector&lt;unsigned int&gt; inputToCellWeightsDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l01176"></a><span class="lineno"> 1176</span>&#160; ConstTensor inputToCellWeights(</div><div class="line"><a name="l01177"></a><span class="lineno"> 1177</span>&#160; TensorInfo(4, inputToCellWeightsDimensions.data(), DataType::Float32), inputToCellWeightsData);</div><div class="line"><a name="l01178"></a><span class="lineno"> 1178</span>&#160;</div><div class="line"><a name="l01179"></a><span class="lineno"> 1179</span>&#160; std::vector&lt;float&gt; inputToOutputWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l01180"></a><span class="lineno"> 1180</span>&#160; std::vector&lt;unsigned int&gt; inputToOutputWeightsDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l01181"></a><span class="lineno"> 1181</span>&#160; ConstTensor inputToOutputWeights(</div><div class="line"><a name="l01182"></a><span class="lineno"> 1182</span>&#160; TensorInfo(4, inputToOutputWeightsDimensions.data(), DataType::Float32), inputToOutputWeightsData);</div><div class="line"><a name="l01183"></a><span class="lineno"> 1183</span>&#160;</div><div class="line"><a name="l01184"></a><span class="lineno"> 1184</span>&#160; std::vector&lt;float&gt; recurrentToForgetWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l01185"></a><span class="lineno"> 1185</span>&#160; std::vector&lt;unsigned int&gt; recurrentToForgetWeightsDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l01186"></a><span class="lineno"> 1186</span>&#160; ConstTensor recurrentToForgetWeights(TensorInfo(</div><div class="line"><a name="l01187"></a><span class="lineno"> 1187</span>&#160; 4, recurrentToForgetWeightsDimensions.data(), DataType::Float32), recurrentToForgetWeightsData);</div><div class="line"><a name="l01188"></a><span class="lineno"> 1188</span>&#160;</div><div class="line"><a name="l01189"></a><span class="lineno"> 1189</span>&#160; std::vector&lt;float&gt; recurrentToCellWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l01190"></a><span class="lineno"> 1190</span>&#160; std::vector&lt;unsigned int&gt; recurrentToCellWeightsDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l01191"></a><span class="lineno"> 1191</span>&#160; ConstTensor recurrentToCellWeights(TensorInfo(</div><div class="line"><a name="l01192"></a><span class="lineno"> 1192</span>&#160; 4, recurrentToCellWeightsDimensions.data(), DataType::Float32), recurrentToCellWeightsData);</div><div class="line"><a name="l01193"></a><span class="lineno"> 1193</span>&#160;</div><div class="line"><a name="l01194"></a><span class="lineno"> 1194</span>&#160; std::vector&lt;float&gt; recurrentToOutputWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l01195"></a><span class="lineno"> 1195</span>&#160; std::vector&lt;unsigned int&gt; recurrentToOutputWeightsDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l01196"></a><span class="lineno"> 1196</span>&#160; ConstTensor recurrentToOutputWeights(TensorInfo(</div><div class="line"><a name="l01197"></a><span class="lineno"> 1197</span>&#160; 4, recurrentToOutputWeightsDimensions.data(), DataType::Float32), recurrentToOutputWeightsData);</div><div class="line"><a name="l01198"></a><span class="lineno"> 1198</span>&#160;</div><div class="line"><a name="l01199"></a><span class="lineno"> 1199</span>&#160; std::vector&lt;float&gt; forgetGateBiasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l01200"></a><span class="lineno"> 1200</span>&#160; std::vector&lt;unsigned int&gt; forgetGateBiasDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l01201"></a><span class="lineno"> 1201</span>&#160; ConstTensor forgetGateBias(TensorInfo(</div><div class="line"><a name="l01202"></a><span class="lineno"> 1202</span>&#160; 4, forgetGateBiasDimensions.data(), DataType::Float32), forgetGateBiasData);</div><div class="line"><a name="l01203"></a><span class="lineno"> 1203</span>&#160;</div><div class="line"><a name="l01204"></a><span class="lineno"> 1204</span>&#160; std::vector&lt;float&gt; cellBiasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l01205"></a><span class="lineno"> 1205</span>&#160; std::vector&lt;unsigned int&gt; cellBiasDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l01206"></a><span class="lineno"> 1206</span>&#160; ConstTensor cellBias(TensorInfo(</div><div class="line"><a name="l01207"></a><span class="lineno"> 1207</span>&#160; 4, cellBiasDimensions.data(), DataType::Float32), cellBiasData);</div><div class="line"><a name="l01208"></a><span class="lineno"> 1208</span>&#160;</div><div class="line"><a name="l01209"></a><span class="lineno"> 1209</span>&#160; std::vector&lt;float&gt; outputGateBiasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l01210"></a><span class="lineno"> 1210</span>&#160; std::vector&lt;unsigned int&gt; outputGateBiasDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l01211"></a><span class="lineno"> 1211</span>&#160; ConstTensor outputGateBias(TensorInfo(</div><div class="line"><a name="l01212"></a><span class="lineno"> 1212</span>&#160; 4, outputGateBiasDimensions.data(), DataType::Float32), outputGateBiasData);</div><div class="line"><a name="l01213"></a><span class="lineno"> 1213</span>&#160;</div><div class="line"><a name="l01214"></a><span class="lineno"> 1214</span>&#160; std::vector&lt;float&gt; projectionBiasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l01215"></a><span class="lineno"> 1215</span>&#160; std::vector&lt;unsigned int&gt; projectionBiasDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l01216"></a><span class="lineno"> 1216</span>&#160; ConstTensor projectionBias(</div><div class="line"><a name="l01217"></a><span class="lineno"> 1217</span>&#160; TensorInfo(4, projectionBiasDimensions.data(), DataType::Float32), projectionBiasData);</div><div class="line"><a name="l01218"></a><span class="lineno"> 1218</span>&#160;</div><div class="line"><a name="l01219"></a><span class="lineno"> 1219</span>&#160; std::vector&lt;float&gt; projectionWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l01220"></a><span class="lineno"> 1220</span>&#160; std::vector&lt;unsigned int&gt; projectionWeightsDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l01221"></a><span class="lineno"> 1221</span>&#160; ConstTensor projectionWeights(</div><div class="line"><a name="l01222"></a><span class="lineno"> 1222</span>&#160; TensorInfo(4, projectionWeightsDimensions.data(), DataType::Float32), projectionWeightsData);</div><div class="line"><a name="l01223"></a><span class="lineno"> 1223</span>&#160;</div><div class="line"><a name="l01224"></a><span class="lineno"> 1224</span>&#160; LstmInputParams params;</div><div class="line"><a name="l01225"></a><span class="lineno"> 1225</span>&#160; params.m_InputToForgetWeights = &amp;inputToForgetWeights;</div><div class="line"><a name="l01226"></a><span class="lineno"> 1226</span>&#160; params.m_InputToCellWeights = &amp;inputToCellWeights;</div><div class="line"><a name="l01227"></a><span class="lineno"> 1227</span>&#160; params.m_InputToOutputWeights = &amp;inputToOutputWeights;</div><div class="line"><a name="l01228"></a><span class="lineno"> 1228</span>&#160; params.m_RecurrentToForgetWeights = &amp;recurrentToForgetWeights;</div><div class="line"><a name="l01229"></a><span class="lineno"> 1229</span>&#160; params.m_RecurrentToCellWeights = &amp;recurrentToCellWeights;</div><div class="line"><a name="l01230"></a><span class="lineno"> 1230</span>&#160; params.m_RecurrentToOutputWeights = &amp;recurrentToOutputWeights;</div><div class="line"><a name="l01231"></a><span class="lineno"> 1231</span>&#160; params.m_ForgetGateBias = &amp;forgetGateBias;</div><div class="line"><a name="l01232"></a><span class="lineno"> 1232</span>&#160; params.m_CellBias = &amp;cellBias;</div><div class="line"><a name="l01233"></a><span class="lineno"> 1233</span>&#160; params.m_OutputGateBias = &amp;outputGateBias;</div><div class="line"><a name="l01234"></a><span class="lineno"> 1234</span>&#160;</div><div class="line"><a name="l01235"></a><span class="lineno"> 1235</span>&#160; params.m_ProjectionWeights = &amp;projectionWeights;</div><div class="line"><a name="l01236"></a><span class="lineno"> 1236</span>&#160; params.m_ProjectionBias = &amp;projectionBias;</div><div class="line"><a name="l01237"></a><span class="lineno"> 1237</span>&#160;</div><div class="line"><a name="l01238"></a><span class="lineno"> 1238</span>&#160; TestLstmLayerVisitor visitor(descriptor, params, layerName);</div><div class="line"><a name="l01239"></a><span class="lineno"> 1239</span>&#160;</div><div class="line"><a name="l01240"></a><span class="lineno"> 1240</span>&#160; Network net;</div><div class="line"><a name="l01241"></a><span class="lineno"> 1241</span>&#160;</div><div class="line"><a name="l01242"></a><span class="lineno"> 1242</span>&#160; IConnectableLayer *<span class="keyword">const</span> layer = net.AddLstmLayer(descriptor, params, layerName);</div><div class="line"><a name="l01243"></a><span class="lineno"> 1243</span>&#160; layer-&gt;Accept(visitor);</div><div class="line"><a name="l01244"></a><span class="lineno"> 1244</span>&#160;}</div></div><!-- fragment -->
</div>
</div>
<a id="a1db5d836b83fc71602a7993616de5b42"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a1db5d836b83fc71602a7993616de5b42">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[47/79]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
<td>(</td>
<td class="paramtype">QuantizeDepthwiseConvolution2d&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_quantizer_test_8cpp_source.html#l01208">1208</a> of file <a class="el" href="_quantizer_test_8cpp_source.html">QuantizerTest.cpp</a>.</p>
<p class="reference">References <a class="el" href="_quantizer_test_8cpp_source.html#l01132">TestQuantizeDepthwiseConvolution2d()</a>.</p>
<div class="fragment"><div class="line"><a name="l01209"></a><span class="lineno"> 1209</span>&#160;{</div><div class="line"><a name="l01210"></a><span class="lineno"> 1210</span>&#160; <a class="code" href="namespacearmnn.html#a5abbe8a9ee003c1379a921dbe2745b81">TestQuantizeDepthwiseConvolution2d</a>(<span class="keyword">false</span>);</div><div class="line"><a name="l01211"></a><span class="lineno"> 1211</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a5abbe8a9ee003c1379a921dbe2745b81"><div class="ttname"><a href="namespacearmnn.html#a5abbe8a9ee003c1379a921dbe2745b81">armnn::TestQuantizeDepthwiseConvolution2d</a></div><div class="ttdeci">void TestQuantizeDepthwiseConvolution2d(bool useBiases)</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l01132">QuantizerTest.cpp:1132</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a891abdb9079715cbcf85792e2b450652"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a891abdb9079715cbcf85792e2b450652">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[48/79]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
<td>(</td>
<td class="paramtype">QuantizeDepthwiseConvolution2dWithBiases&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_quantizer_test_8cpp_source.html#l01213">1213</a> of file <a class="el" href="_quantizer_test_8cpp_source.html">QuantizerTest.cpp</a>.</p>
<p class="reference">References <a class="el" href="_quantizer_test_8cpp_source.html#l01132">TestQuantizeDepthwiseConvolution2d()</a>.</p>
<div class="fragment"><div class="line"><a name="l01214"></a><span class="lineno"> 1214</span>&#160;{</div><div class="line"><a name="l01215"></a><span class="lineno"> 1215</span>&#160; <a class="code" href="namespacearmnn.html#a5abbe8a9ee003c1379a921dbe2745b81">TestQuantizeDepthwiseConvolution2d</a>(<span class="keyword">true</span>);</div><div class="line"><a name="l01216"></a><span class="lineno"> 1216</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a5abbe8a9ee003c1379a921dbe2745b81"><div class="ttname"><a href="namespacearmnn.html#a5abbe8a9ee003c1379a921dbe2745b81">armnn::TestQuantizeDepthwiseConvolution2d</a></div><div class="ttdeci">void TestQuantizeDepthwiseConvolution2d(bool useBiases)</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l01132">QuantizerTest.cpp:1132</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="abd033569519fec65077ea983f6c75a9d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#abd033569519fec65077ea983f6c75a9d">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[49/79]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
<td>(</td>
<td class="paramtype">QuantizeInstanceNormalization&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_quantizer_test_8cpp_source.html#l01218">1218</a> of file <a class="el" href="_quantizer_test_8cpp_source.html">QuantizerTest.cpp</a>.</p>
<p class="reference">References <a class="el" href="classarmnn_1_1_i_output_slot.html#ac1835f8756a9f03c02fcf9664e3a0fce">IOutputSlot::Connect()</a>, <a class="el" href="_network_quantizer_8cpp_source.html#l00040">INetworkQuantizer::Create()</a>, <a class="el" href="_network_8cpp_source.html#l00048">INetwork::Create()</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">Float32</a>, <a class="el" href="_quantizer_test_8cpp_source.html#l00035">g_AsymmS8QuantizationBase</a>, <a class="el" href="_quantizer_test_8cpp_source.html#l00033">g_AsymmU8QuantizationBase</a>, <a class="el" href="_quantizer_test_8cpp_source.html#l00037">g_SymmS16QuantizationBase</a>, <a class="el" href="_quantizer_test_8cpp_source.html#l00036">g_SymmS8QuantizationBase</a>, <a class="el" href="classarmnn_1_1_i_connectable_layer.html#a6ec9e0eb66d7d6a01240492a0b18104c">IConnectableLayer::GetInputSlot()</a>, <a class="el" href="classarmnn_1_1_i_connectable_layer.html#a80ac4eda2e7f2757ec9dd96fc96dbd16">IConnectableLayer::GetOutputSlot()</a>, <a class="el" href="classarmnn_1_1_i_output_slot.html#a9943775a364fc4ab53b85ac88f311886">IOutputSlot::GetTensorInfo()</a>, <a class="el" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>, <a class="el" href="_file_only_profiling_decorator_tests_8cpp_source.html#l00045">options</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a9d02ea768c081d4bdb2b7cab0b3f510d">QAsymmS8</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7">QSymmS16</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a9945327825b115e93a3b89f4302e76db">QSymmS8</a>, <a class="el" href="classarmnn_1_1_i_output_slot.html#a5ee4a6c9a2481245487b1b1a70d20fd0">IOutputSlot::SetTensorInfo()</a>, and <a class="el" href="_quantizer_test_8cpp_source.html#l00193">VisitLayersTopologically()</a>.</p>
<div class="fragment"><div class="line"><a name="l01219"></a><span class="lineno"> 1219</span>&#160;{</div><div class="line"><a name="l01220"></a><span class="lineno"> 1220</span>&#160; <span class="keyword">class </span>TestInstanceNormalizationQuantization : <span class="keyword">public</span> TestQuantization</div><div class="line"><a name="l01221"></a><span class="lineno"> 1221</span>&#160; {</div><div class="line"><a name="l01222"></a><span class="lineno"> 1222</span>&#160; <span class="keyword">public</span>:</div><div class="line"><a name="l01223"></a><span class="lineno"> 1223</span>&#160; TestInstanceNormalizationQuantization(<span class="keyword">const</span> TensorShape&amp; inputShape, <span class="keyword">const</span> TensorShape&amp; outputShape)</div><div class="line"><a name="l01224"></a><span class="lineno"> 1224</span>&#160; : TestQuantization(inputShape, outputShape) {}</div><div class="line"><a name="l01225"></a><span class="lineno"> 1225</span>&#160;</div><div class="line"><a name="l01226"></a><span class="lineno"> 1226</span>&#160; TestInstanceNormalizationQuantization(<span class="keyword">const</span> QuantizerOptions&amp; <a class="code" href="_file_only_profiling_decorator_tests_8cpp.html#a6560146509197f3e197d8d36f76c1347">options</a>,</div><div class="line"><a name="l01227"></a><span class="lineno"> 1227</span>&#160; <span class="keyword">const</span> TensorShape&amp; inputShape,</div><div class="line"><a name="l01228"></a><span class="lineno"> 1228</span>&#160; <span class="keyword">const</span> TensorShape&amp; outputShape)</div><div class="line"><a name="l01229"></a><span class="lineno"> 1229</span>&#160; : TestQuantization(options, inputShape, outputShape) {}</div><div class="line"><a name="l01230"></a><span class="lineno"> 1230</span>&#160;</div><div class="line"><a name="l01231"></a><span class="lineno"> 1231</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> VisitInstanceNormalizationLayer(<span class="keyword">const</span> IConnectableLayer* layer,</div><div class="line"><a name="l01232"></a><span class="lineno"> 1232</span>&#160; <span class="keyword">const</span> InstanceNormalizationDescriptor&amp; descriptor,</div><div class="line"><a name="l01233"></a><span class="lineno"> 1233</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span>* name = <span class="keyword">nullptr</span>)</div><div class="line"><a name="l01234"></a><span class="lineno"> 1234</span>&#160; {</div><div class="line"><a name="l01235"></a><span class="lineno"> 1235</span>&#160; boost::ignore_unused(descriptor, name);</div><div class="line"><a name="l01236"></a><span class="lineno"> 1236</span>&#160; <span class="keyword">const</span> TensorInfo&amp; <a class="code" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a> = layer-&gt;GetOutputSlot(0).GetTensorInfo();</div><div class="line"><a name="l01237"></a><span class="lineno"> 1237</span>&#160;</div><div class="line"><a name="l01238"></a><span class="lineno"> 1238</span>&#160; <span class="keyword">const</span> <a class="code" href="namespacearmnn.html#a9b8e5a95f8c061bbbcdb036915dcb61a">OffsetScalePair</a> qAsymmU8Params{ 30.0f / <a class="code" href="namespacearmnn.html#a19994153bdbd7710f0af3973403bc4cc">g_AsymmU8QuantizationBase</a>, 128 };</div><div class="line"><a name="l01239"></a><span class="lineno"> 1239</span>&#160; <span class="keyword">const</span> <a class="code" href="namespacearmnn.html#a9b8e5a95f8c061bbbcdb036915dcb61a">OffsetScalePair</a> qAsymmS8Params { 30.0f / <a class="code" href="namespacearmnn.html#a09bdfaa922d72ce0d9ec014dfa8f8c95">g_AsymmS8QuantizationBase</a>, 0};</div><div class="line"><a name="l01240"></a><span class="lineno"> 1240</span>&#160; <span class="keyword">const</span> <a class="code" href="namespacearmnn.html#a9b8e5a95f8c061bbbcdb036915dcb61a">OffsetScalePair</a> qSymmS8Params { 15.0f / <a class="code" href="namespacearmnn.html#acd7f8820d124166a38c95bc8ad38811b">g_SymmS8QuantizationBase</a>, 0};</div><div class="line"><a name="l01241"></a><span class="lineno"> 1241</span>&#160; <span class="keyword">const</span> <a class="code" href="namespacearmnn.html#a9b8e5a95f8c061bbbcdb036915dcb61a">OffsetScalePair</a> qSymmS16Params{ 15.0f / <a class="code" href="namespacearmnn.html#a1465480794787d2278d3f0d2e6d887b4">g_SymmS16QuantizationBase</a>, 0 };</div><div class="line"><a name="l01242"></a><span class="lineno"> 1242</span>&#160;</div><div class="line"><a name="l01243"></a><span class="lineno"> 1243</span>&#160; TestQuantizationParams(info, qAsymmU8Params, qAsymmS8Params, qSymmS8Params, qSymmS16Params);</div><div class="line"><a name="l01244"></a><span class="lineno"> 1244</span>&#160; }</div><div class="line"><a name="l01245"></a><span class="lineno"> 1245</span>&#160; };</div><div class="line"><a name="l01246"></a><span class="lineno"> 1246</span>&#160;</div><div class="line"><a name="l01247"></a><span class="lineno"> 1247</span>&#160; <span class="keyword">const</span> TensorShape tensorShape{ 1, 4, 4, 1 };</div><div class="line"><a name="l01248"></a><span class="lineno"> 1248</span>&#160; <span class="keyword">const</span> TensorInfo tensorInfo(tensorShape, DataType::Float32);</div><div class="line"><a name="l01249"></a><span class="lineno"> 1249</span>&#160;</div><div class="line"><a name="l01250"></a><span class="lineno"> 1250</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> network = INetwork::Create();</div><div class="line"><a name="l01251"></a><span class="lineno"> 1251</span>&#160;</div><div class="line"><a name="l01252"></a><span class="lineno"> 1252</span>&#160; IConnectableLayer* inputLayer = network-&gt;AddInputLayer(0);</div><div class="line"><a name="l01253"></a><span class="lineno"> 1253</span>&#160; IConnectableLayer* instanceNormLayer = network-&gt;AddInstanceNormalizationLayer(InstanceNormalizationDescriptor());</div><div class="line"><a name="l01254"></a><span class="lineno"> 1254</span>&#160; IConnectableLayer* outputLayer = network-&gt;AddOutputLayer(0);</div><div class="line"><a name="l01255"></a><span class="lineno"> 1255</span>&#160;</div><div class="line"><a name="l01256"></a><span class="lineno"> 1256</span>&#160; inputLayer-&gt;GetOutputSlot(0).Connect(instanceNormLayer-&gt;GetInputSlot(0));</div><div class="line"><a name="l01257"></a><span class="lineno"> 1257</span>&#160; instanceNormLayer-&gt;GetOutputSlot(0).Connect(outputLayer-&gt;GetInputSlot(0));</div><div class="line"><a name="l01258"></a><span class="lineno"> 1258</span>&#160;</div><div class="line"><a name="l01259"></a><span class="lineno"> 1259</span>&#160; inputLayer-&gt;GetOutputSlot(0).SetTensorInfo(tensorInfo);</div><div class="line"><a name="l01260"></a><span class="lineno"> 1260</span>&#160; instanceNormLayer-&gt;GetOutputSlot(0).SetTensorInfo(tensorInfo);</div><div class="line"><a name="l01261"></a><span class="lineno"> 1261</span>&#160;</div><div class="line"><a name="l01262"></a><span class="lineno"> 1262</span>&#160; <span class="comment">// test QAsymmU8 quantization</span></div><div class="line"><a name="l01263"></a><span class="lineno"> 1263</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQAsymmU8 = INetworkQuantizer::Create(network.get())-&gt;ExportNetwork();</div><div class="line"><a name="l01264"></a><span class="lineno"> 1264</span>&#160; TestInstanceNormalizationQuantization validatorQAsymmU8(tensorShape, tensorShape);</div><div class="line"><a name="l01265"></a><span class="lineno"> 1265</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQAsymmU8.get(), validatorQAsymmU8);</div><div class="line"><a name="l01266"></a><span class="lineno"> 1266</span>&#160;</div><div class="line"><a name="l01267"></a><span class="lineno"> 1267</span>&#160; <span class="comment">//test QAsymmS8 quantization</span></div><div class="line"><a name="l01268"></a><span class="lineno"> 1268</span>&#160; <span class="keyword">const</span> QuantizerOptions qAsymmS8Options(DataType::QAsymmS8);</div><div class="line"><a name="l01269"></a><span class="lineno"> 1269</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQAsymmS8 = INetworkQuantizer::Create(network.get(), qAsymmS8Options)-&gt;ExportNetwork();</div><div class="line"><a name="l01270"></a><span class="lineno"> 1270</span>&#160; TestInstanceNormalizationQuantization validatorQAsymmS8(qAsymmS8Options, tensorShape, tensorShape);</div><div class="line"><a name="l01271"></a><span class="lineno"> 1271</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQAsymmS8.get(), validatorQAsymmS8);</div><div class="line"><a name="l01272"></a><span class="lineno"> 1272</span>&#160;</div><div class="line"><a name="l01273"></a><span class="lineno"> 1273</span>&#160; <span class="comment">// test QSymmS8 quantization</span></div><div class="line"><a name="l01274"></a><span class="lineno"> 1274</span>&#160; <span class="keyword">const</span> QuantizerOptions qSymmS8Options(DataType::QSymmS8);</div><div class="line"><a name="l01275"></a><span class="lineno"> 1275</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQSymmS8 = INetworkQuantizer::Create(network.get(), qSymmS8Options)-&gt;ExportNetwork();</div><div class="line"><a name="l01276"></a><span class="lineno"> 1276</span>&#160; TestInstanceNormalizationQuantization validatorQSymmS8(qSymmS8Options, tensorShape, tensorShape);</div><div class="line"><a name="l01277"></a><span class="lineno"> 1277</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQSymmS8.get(), validatorQSymmS8);</div><div class="line"><a name="l01278"></a><span class="lineno"> 1278</span>&#160;</div><div class="line"><a name="l01279"></a><span class="lineno"> 1279</span>&#160; <span class="comment">// test QSymmS16 quantization</span></div><div class="line"><a name="l01280"></a><span class="lineno"> 1280</span>&#160; <span class="keyword">const</span> QuantizerOptions qSymmS16Options(DataType::QSymmS16);</div><div class="line"><a name="l01281"></a><span class="lineno"> 1281</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQSymmS16 = INetworkQuantizer::Create(network.get(), qSymmS16Options)-&gt;ExportNetwork();</div><div class="line"><a name="l01282"></a><span class="lineno"> 1282</span>&#160; TestInstanceNormalizationQuantization validatorQSymmS16(qSymmS16Options, tensorShape, tensorShape);</div><div class="line"><a name="l01283"></a><span class="lineno"> 1283</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQSymmS16.get(), validatorQSymmS16);</div><div class="line"><a name="l01284"></a><span class="lineno"> 1284</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a1465480794787d2278d3f0d2e6d887b4"><div class="ttname"><a href="namespacearmnn.html#a1465480794787d2278d3f0d2e6d887b4">armnn::g_SymmS16QuantizationBase</a></div><div class="ttdeci">const float g_SymmS16QuantizationBase</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l00037">QuantizerTest.cpp:37</a></div></div>
<div class="ttc" id="namespacearmnn_html_acd7f8820d124166a38c95bc8ad38811b"><div class="ttname"><a href="namespacearmnn.html#acd7f8820d124166a38c95bc8ad38811b">armnn::g_SymmS8QuantizationBase</a></div><div class="ttdeci">const float g_SymmS8QuantizationBase</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l00036">QuantizerTest.cpp:36</a></div></div>
<div class="ttc" id="namespacearmnn_html_a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c"><div class="ttname"><a href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">armnn::BoostLogSeverityMapping::info</a></div></div>
<div class="ttc" id="namespacearmnn_html_a6482907b4c57873e197324f5cb66fd4d"><div class="ttname"><a href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">armnn::VisitLayersTopologically</a></div><div class="ttdeci">void VisitLayersTopologically(const INetwork *inputNetwork, ILayerVisitor &amp;visitor)</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l00193">QuantizerTest.cpp:193</a></div></div>
<div class="ttc" id="namespacearmnn_html_ace74f6f9feb95a964a49d79458232703"><div class="ttname"><a href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">armnn::INetworkPtr</a></div><div class="ttdeci">std::unique_ptr&lt; INetwork, void(*)(INetwork *network)&gt; INetworkPtr</div><div class="ttdef"><b>Definition:</b> <a href="_i_network_8hpp_source.html#l00085">INetwork.hpp:85</a></div></div>
<div class="ttc" id="namespacearmnn_html_a09bdfaa922d72ce0d9ec014dfa8f8c95"><div class="ttname"><a href="namespacearmnn.html#a09bdfaa922d72ce0d9ec014dfa8f8c95">armnn::g_AsymmS8QuantizationBase</a></div><div class="ttdeci">const float g_AsymmS8QuantizationBase</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l00035">QuantizerTest.cpp:35</a></div></div>
<div class="ttc" id="namespacearmnn_html_a19994153bdbd7710f0af3973403bc4cc"><div class="ttname"><a href="namespacearmnn.html#a19994153bdbd7710f0af3973403bc4cc">armnn::g_AsymmU8QuantizationBase</a></div><div class="ttdeci">const float g_AsymmU8QuantizationBase</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l00033">QuantizerTest.cpp:33</a></div></div>
<div class="ttc" id="namespacearmnn_html_a9b8e5a95f8c061bbbcdb036915dcb61a"><div class="ttname"><a href="namespacearmnn.html#a9b8e5a95f8c061bbbcdb036915dcb61a">armnn::OffsetScalePair</a></div><div class="ttdeci">std::pair&lt; float, int &gt; OffsetScalePair</div><div class="ttdef"><b>Definition:</b> <a href="_network_quantization_scheme_8hpp_source.html#l00016">NetworkQuantizationScheme.hpp:16</a></div></div>
<div class="ttc" id="_file_only_profiling_decorator_tests_8cpp_html_a6560146509197f3e197d8d36f76c1347"><div class="ttname"><a href="_file_only_profiling_decorator_tests_8cpp.html#a6560146509197f3e197d8d36f76c1347">options</a></div><div class="ttdeci">armnn::Runtime::CreationOptions::ExternalProfilingOptions options</div><div class="ttdef"><b>Definition:</b> <a href="_file_only_profiling_decorator_tests_8cpp_source.html#l00045">FileOnlyProfilingDecoratorTests.cpp:45</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a84e5356296be66aa930ec53118f5ef6b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a84e5356296be66aa930ec53118f5ef6b">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[50/79]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
<td>(</td>
<td class="paramtype">CheckQuantizedLstmLayer&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_const_tensor_layer_visitor_8cpp_source.html#l01246">1246</a> of file <a class="el" href="_const_tensor_layer_visitor_8cpp_source.html">ConstTensorLayerVisitor.cpp</a>.</p>
<p class="reference">References <a class="el" href="classarmnn_1_1_i_connectable_layer.html#a8c9198a992b02e61a6777329d487dde3">IConnectableLayer::Accept()</a>, <a class="el" href="_network_8cpp_source.html#l01542">Network::AddQuantizedLstmLayer()</a>, <a class="el" href="_quantized_lstm_params_8hpp_source.html#l00045">QuantizedLstmInputParams::m_CellBias</a>, <a class="el" href="_quantized_lstm_params_8hpp_source.html#l00044">QuantizedLstmInputParams::m_ForgetGateBias</a>, <a class="el" href="_quantized_lstm_params_8hpp_source.html#l00043">QuantizedLstmInputParams::m_InputGateBias</a>, <a class="el" href="_quantized_lstm_params_8hpp_source.html#l00035">QuantizedLstmInputParams::m_InputToCellWeights</a>, <a class="el" href="_quantized_lstm_params_8hpp_source.html#l00034">QuantizedLstmInputParams::m_InputToForgetWeights</a>, <a class="el" href="_quantized_lstm_params_8hpp_source.html#l00033">QuantizedLstmInputParams::m_InputToInputWeights</a>, <a class="el" href="_quantized_lstm_params_8hpp_source.html#l00036">QuantizedLstmInputParams::m_InputToOutputWeights</a>, <a class="el" href="_quantized_lstm_params_8hpp_source.html#l00046">QuantizedLstmInputParams::m_OutputGateBias</a>, <a class="el" href="_quantized_lstm_params_8hpp_source.html#l00040">QuantizedLstmInputParams::m_RecurrentToCellWeights</a>, <a class="el" href="_quantized_lstm_params_8hpp_source.html#l00039">QuantizedLstmInputParams::m_RecurrentToForgetWeights</a>, <a class="el" href="_quantized_lstm_params_8hpp_source.html#l00038">QuantizedLstmInputParams::m_RecurrentToInputWeights</a>, <a class="el" href="_quantized_lstm_params_8hpp_source.html#l00041">QuantizedLstmInputParams::m_RecurrentToOutputWeights</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a0a3f57c876f5a230244c38e1453a8a6e">QAsymmU8</a>, and <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6accedffbc6e5308e33d3843e8bdc0dad7">Signed32</a>.</p>
<div class="fragment"><div class="line"><a name="l01247"></a><span class="lineno"> 1247</span>&#160;{</div><div class="line"><a name="l01248"></a><span class="lineno"> 1248</span>&#160; std::vector&lt;uint8_t&gt; inputToInputWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};</div><div class="line"><a name="l01249"></a><span class="lineno"> 1249</span>&#160; std::vector&lt;unsigned int&gt; inputToInputWeightsDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l01250"></a><span class="lineno"> 1250</span>&#160; ConstTensor inputToInputWeights(</div><div class="line"><a name="l01251"></a><span class="lineno"> 1251</span>&#160; TensorInfo(4, inputToInputWeightsDimensions.data(), DataType::QAsymmU8), inputToInputWeightsData);</div><div class="line"><a name="l01252"></a><span class="lineno"> 1252</span>&#160;</div><div class="line"><a name="l01253"></a><span class="lineno"> 1253</span>&#160; std::vector&lt;uint8_t&gt; inputToForgetWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};</div><div class="line"><a name="l01254"></a><span class="lineno"> 1254</span>&#160; std::vector&lt;unsigned int&gt; inputToForgetWeightsDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l01255"></a><span class="lineno"> 1255</span>&#160; ConstTensor inputToForgetWeights(</div><div class="line"><a name="l01256"></a><span class="lineno"> 1256</span>&#160; TensorInfo(4, inputToForgetWeightsDimensions.data(), DataType::QAsymmU8), inputToForgetWeightsData);</div><div class="line"><a name="l01257"></a><span class="lineno"> 1257</span>&#160;</div><div class="line"><a name="l01258"></a><span class="lineno"> 1258</span>&#160; std::vector&lt;uint8_t&gt; inputToCellWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};</div><div class="line"><a name="l01259"></a><span class="lineno"> 1259</span>&#160; std::vector&lt;unsigned int&gt; inputToCellWeightsDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l01260"></a><span class="lineno"> 1260</span>&#160; ConstTensor inputToCellWeights(</div><div class="line"><a name="l01261"></a><span class="lineno"> 1261</span>&#160; TensorInfo(4, inputToCellWeightsDimensions.data(), DataType::QAsymmU8), inputToCellWeightsData);</div><div class="line"><a name="l01262"></a><span class="lineno"> 1262</span>&#160;</div><div class="line"><a name="l01263"></a><span class="lineno"> 1263</span>&#160; std::vector&lt;uint8_t&gt; inputToOutputWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};</div><div class="line"><a name="l01264"></a><span class="lineno"> 1264</span>&#160; std::vector&lt;unsigned int&gt; inputToOutputWeightsDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l01265"></a><span class="lineno"> 1265</span>&#160; ConstTensor inputToOutputWeights(</div><div class="line"><a name="l01266"></a><span class="lineno"> 1266</span>&#160; TensorInfo(4, inputToOutputWeightsDimensions.data(), DataType::QAsymmU8), inputToOutputWeightsData);</div><div class="line"><a name="l01267"></a><span class="lineno"> 1267</span>&#160;</div><div class="line"><a name="l01268"></a><span class="lineno"> 1268</span>&#160;</div><div class="line"><a name="l01269"></a><span class="lineno"> 1269</span>&#160; std::vector&lt;uint8_t&gt; recurrentToInputWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};</div><div class="line"><a name="l01270"></a><span class="lineno"> 1270</span>&#160; std::vector&lt;unsigned int&gt; recurrentToInputWeightsDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l01271"></a><span class="lineno"> 1271</span>&#160; ConstTensor recurrentToInputWeights(TensorInfo(</div><div class="line"><a name="l01272"></a><span class="lineno"> 1272</span>&#160; 4, recurrentToInputWeightsDimensions.data(), DataType::QAsymmU8), recurrentToInputWeightsData);</div><div class="line"><a name="l01273"></a><span class="lineno"> 1273</span>&#160;</div><div class="line"><a name="l01274"></a><span class="lineno"> 1274</span>&#160; std::vector&lt;uint8_t&gt; recurrentToForgetWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};</div><div class="line"><a name="l01275"></a><span class="lineno"> 1275</span>&#160; std::vector&lt;unsigned int&gt; recurrentToForgetWeightsDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l01276"></a><span class="lineno"> 1276</span>&#160; ConstTensor recurrentToForgetWeights(TensorInfo(</div><div class="line"><a name="l01277"></a><span class="lineno"> 1277</span>&#160; 4, recurrentToForgetWeightsDimensions.data(), DataType::QAsymmU8), recurrentToForgetWeightsData);</div><div class="line"><a name="l01278"></a><span class="lineno"> 1278</span>&#160;</div><div class="line"><a name="l01279"></a><span class="lineno"> 1279</span>&#160; std::vector&lt;uint8_t&gt; recurrentToCellWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};</div><div class="line"><a name="l01280"></a><span class="lineno"> 1280</span>&#160; std::vector&lt;unsigned int&gt; recurrentToCellWeightsDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l01281"></a><span class="lineno"> 1281</span>&#160; ConstTensor recurrentToCellWeights(TensorInfo(</div><div class="line"><a name="l01282"></a><span class="lineno"> 1282</span>&#160; 4, recurrentToCellWeightsDimensions.data(), DataType::QAsymmU8), recurrentToCellWeightsData);</div><div class="line"><a name="l01283"></a><span class="lineno"> 1283</span>&#160;</div><div class="line"><a name="l01284"></a><span class="lineno"> 1284</span>&#160; std::vector&lt;uint8_t&gt; recurrentToOutputWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};</div><div class="line"><a name="l01285"></a><span class="lineno"> 1285</span>&#160; std::vector&lt;unsigned int&gt; recurrentToOutputWeightsDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l01286"></a><span class="lineno"> 1286</span>&#160; ConstTensor recurrentToOutputWeights(TensorInfo(</div><div class="line"><a name="l01287"></a><span class="lineno"> 1287</span>&#160; 4, recurrentToOutputWeightsDimensions.data(), DataType::QAsymmU8), recurrentToOutputWeightsData);</div><div class="line"><a name="l01288"></a><span class="lineno"> 1288</span>&#160;</div><div class="line"><a name="l01289"></a><span class="lineno"> 1289</span>&#160;</div><div class="line"><a name="l01290"></a><span class="lineno"> 1290</span>&#160; std::vector&lt;int32_t&gt; inputGateBiasData = {1, 2, 3, 4, 5, 6, 7, 8, 9};</div><div class="line"><a name="l01291"></a><span class="lineno"> 1291</span>&#160; std::vector&lt;unsigned int&gt; inputGateBiasDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l01292"></a><span class="lineno"> 1292</span>&#160; ConstTensor inputGateBias(</div><div class="line"><a name="l01293"></a><span class="lineno"> 1293</span>&#160; TensorInfo(4, inputGateBiasDimensions.data(), DataType::Signed32), inputGateBiasData);</div><div class="line"><a name="l01294"></a><span class="lineno"> 1294</span>&#160;</div><div class="line"><a name="l01295"></a><span class="lineno"> 1295</span>&#160; std::vector&lt;int32_t&gt; forgetGateBiasData = {1, 2, 3, 4, 5, 6, 7, 8, 9};</div><div class="line"><a name="l01296"></a><span class="lineno"> 1296</span>&#160; std::vector&lt;unsigned int&gt; forgetGateBiasDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l01297"></a><span class="lineno"> 1297</span>&#160; ConstTensor forgetGateBias(TensorInfo(</div><div class="line"><a name="l01298"></a><span class="lineno"> 1298</span>&#160; 4, forgetGateBiasDimensions.data(), DataType::Signed32), forgetGateBiasData);</div><div class="line"><a name="l01299"></a><span class="lineno"> 1299</span>&#160;</div><div class="line"><a name="l01300"></a><span class="lineno"> 1300</span>&#160; std::vector&lt;int32_t&gt; cellBiasData = {1, 2, 3, 4, 5, 6, 7, 8, 9};</div><div class="line"><a name="l01301"></a><span class="lineno"> 1301</span>&#160; std::vector&lt;unsigned int&gt; cellBiasDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l01302"></a><span class="lineno"> 1302</span>&#160; ConstTensor cellBias(TensorInfo(</div><div class="line"><a name="l01303"></a><span class="lineno"> 1303</span>&#160; 4, cellBiasDimensions.data(), DataType::Signed32), cellBiasData);</div><div class="line"><a name="l01304"></a><span class="lineno"> 1304</span>&#160;</div><div class="line"><a name="l01305"></a><span class="lineno"> 1305</span>&#160; std::vector&lt;int32_t&gt; outputGateBiasData = {1, 2, 3, 4, 5, 6, 7, 8, 9};</div><div class="line"><a name="l01306"></a><span class="lineno"> 1306</span>&#160; std::vector&lt;unsigned int&gt; outputGateBiasDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l01307"></a><span class="lineno"> 1307</span>&#160; ConstTensor outputGateBias(TensorInfo(</div><div class="line"><a name="l01308"></a><span class="lineno"> 1308</span>&#160; 4, outputGateBiasDimensions.data(), DataType::Signed32), outputGateBiasData);</div><div class="line"><a name="l01309"></a><span class="lineno"> 1309</span>&#160;</div><div class="line"><a name="l01310"></a><span class="lineno"> 1310</span>&#160; QuantizedLstmInputParams params;</div><div class="line"><a name="l01311"></a><span class="lineno"> 1311</span>&#160;</div><div class="line"><a name="l01312"></a><span class="lineno"> 1312</span>&#160; params.m_InputToInputWeights = &amp;inputToInputWeights;</div><div class="line"><a name="l01313"></a><span class="lineno"> 1313</span>&#160; params.m_InputToForgetWeights = &amp;inputToForgetWeights;</div><div class="line"><a name="l01314"></a><span class="lineno"> 1314</span>&#160; params.m_InputToCellWeights = &amp;inputToCellWeights;</div><div class="line"><a name="l01315"></a><span class="lineno"> 1315</span>&#160; params.m_InputToOutputWeights = &amp;inputToOutputWeights;</div><div class="line"><a name="l01316"></a><span class="lineno"> 1316</span>&#160;</div><div class="line"><a name="l01317"></a><span class="lineno"> 1317</span>&#160; params.m_RecurrentToInputWeights = &amp;recurrentToInputWeights;</div><div class="line"><a name="l01318"></a><span class="lineno"> 1318</span>&#160; params.m_RecurrentToForgetWeights = &amp;recurrentToForgetWeights;</div><div class="line"><a name="l01319"></a><span class="lineno"> 1319</span>&#160; params.m_RecurrentToCellWeights = &amp;recurrentToCellWeights;</div><div class="line"><a name="l01320"></a><span class="lineno"> 1320</span>&#160; params.m_RecurrentToOutputWeights = &amp;recurrentToOutputWeights;</div><div class="line"><a name="l01321"></a><span class="lineno"> 1321</span>&#160;</div><div class="line"><a name="l01322"></a><span class="lineno"> 1322</span>&#160; params.m_InputGateBias = &amp;inputGateBias;</div><div class="line"><a name="l01323"></a><span class="lineno"> 1323</span>&#160; params.m_ForgetGateBias = &amp;forgetGateBias;</div><div class="line"><a name="l01324"></a><span class="lineno"> 1324</span>&#160; params.m_CellBias = &amp;cellBias;</div><div class="line"><a name="l01325"></a><span class="lineno"> 1325</span>&#160; params.m_OutputGateBias = &amp;outputGateBias;</div><div class="line"><a name="l01326"></a><span class="lineno"> 1326</span>&#160;</div><div class="line"><a name="l01327"></a><span class="lineno"> 1327</span>&#160; TestQuantizedLstmLayerVisitor visitor(params);</div><div class="line"><a name="l01328"></a><span class="lineno"> 1328</span>&#160;</div><div class="line"><a name="l01329"></a><span class="lineno"> 1329</span>&#160; Network net;</div><div class="line"><a name="l01330"></a><span class="lineno"> 1330</span>&#160;</div><div class="line"><a name="l01331"></a><span class="lineno"> 1331</span>&#160; IConnectableLayer* <span class="keyword">const</span> layer = net.AddQuantizedLstmLayer(params);</div><div class="line"><a name="l01332"></a><span class="lineno"> 1332</span>&#160; layer-&gt;Accept(visitor);</div><div class="line"><a name="l01333"></a><span class="lineno"> 1333</span>&#160;}</div></div><!-- fragment -->
</div>
</div>
<a id="a46d045b35ad6b8c2ffe0c04684f97779"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a46d045b35ad6b8c2ffe0c04684f97779">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[51/79]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
<td>(</td>
<td class="paramtype">QuantizeLogSoftmax&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_quantizer_test_8cpp_source.html#l01286">1286</a> of file <a class="el" href="_quantizer_test_8cpp_source.html">QuantizerTest.cpp</a>.</p>
<p class="reference">References <a class="el" href="classarmnn_1_1_i_output_slot.html#ac1835f8756a9f03c02fcf9664e3a0fce">IOutputSlot::Connect()</a>, <a class="el" href="_network_quantizer_8cpp_source.html#l00040">INetworkQuantizer::Create()</a>, <a class="el" href="_network_8cpp_source.html#l00048">INetwork::Create()</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">Float32</a>, <a class="el" href="_quantizer_test_8cpp_source.html#l00035">g_AsymmS8QuantizationBase</a>, <a class="el" href="_quantizer_test_8cpp_source.html#l00033">g_AsymmU8QuantizationBase</a>, <a class="el" href="_quantizer_test_8cpp_source.html#l00037">g_SymmS16QuantizationBase</a>, <a class="el" href="_quantizer_test_8cpp_source.html#l00036">g_SymmS8QuantizationBase</a>, <a class="el" href="classarmnn_1_1_i_connectable_layer.html#a6ec9e0eb66d7d6a01240492a0b18104c">IConnectableLayer::GetInputSlot()</a>, <a class="el" href="classarmnn_1_1_i_connectable_layer.html#a80ac4eda2e7f2757ec9dd96fc96dbd16">IConnectableLayer::GetOutputSlot()</a>, <a class="el" href="classarmnn_1_1_i_output_slot.html#a9943775a364fc4ab53b85ac88f311886">IOutputSlot::GetTensorInfo()</a>, <a class="el" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>, <a class="el" href="_descriptors_8hpp_source.html#l00136">SoftmaxDescriptor::m_Beta</a>, <a class="el" href="_file_only_profiling_decorator_tests_8cpp_source.html#l00045">options</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a9d02ea768c081d4bdb2b7cab0b3f510d">QAsymmS8</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7">QSymmS16</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a9945327825b115e93a3b89f4302e76db">QSymmS8</a>, <a class="el" href="classarmnn_1_1_i_output_slot.html#a5ee4a6c9a2481245487b1b1a70d20fd0">IOutputSlot::SetTensorInfo()</a>, and <a class="el" href="_quantizer_test_8cpp_source.html#l00193">VisitLayersTopologically()</a>.</p>
<div class="fragment"><div class="line"><a name="l01287"></a><span class="lineno"> 1287</span>&#160;{</div><div class="line"><a name="l01288"></a><span class="lineno"> 1288</span>&#160; <span class="keyword">class </span>TestLogSoftmaxQuantization : <span class="keyword">public</span> TestQuantization</div><div class="line"><a name="l01289"></a><span class="lineno"> 1289</span>&#160; {</div><div class="line"><a name="l01290"></a><span class="lineno"> 1290</span>&#160; <span class="keyword">public</span>:</div><div class="line"><a name="l01291"></a><span class="lineno"> 1291</span>&#160; TestLogSoftmaxQuantization(<span class="keyword">const</span> TensorShape&amp; inputShape, <span class="keyword">const</span> TensorShape&amp; outputShape)</div><div class="line"><a name="l01292"></a><span class="lineno"> 1292</span>&#160; : TestQuantization(inputShape, outputShape) {}</div><div class="line"><a name="l01293"></a><span class="lineno"> 1293</span>&#160;</div><div class="line"><a name="l01294"></a><span class="lineno"> 1294</span>&#160; TestLogSoftmaxQuantization(<span class="keyword">const</span> QuantizerOptions&amp; <a class="code" href="_file_only_profiling_decorator_tests_8cpp.html#a6560146509197f3e197d8d36f76c1347">options</a>,</div><div class="line"><a name="l01295"></a><span class="lineno"> 1295</span>&#160; <span class="keyword">const</span> TensorShape&amp; inputShape,</div><div class="line"><a name="l01296"></a><span class="lineno"> 1296</span>&#160; <span class="keyword">const</span> TensorShape&amp; outputShape)</div><div class="line"><a name="l01297"></a><span class="lineno"> 1297</span>&#160; : TestQuantization(options, inputShape, outputShape) {}</div><div class="line"><a name="l01298"></a><span class="lineno"> 1298</span>&#160;</div><div class="line"><a name="l01299"></a><span class="lineno"> 1299</span>&#160; <span class="keywordtype">void</span> VisitLogSoftmaxLayer(<span class="keyword">const</span> IConnectableLayer* layer,</div><div class="line"><a name="l01300"></a><span class="lineno"> 1300</span>&#160; <span class="keyword">const</span> SoftmaxDescriptor&amp; descriptor,</div><div class="line"><a name="l01301"></a><span class="lineno"> 1301</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span>* name = <span class="keyword">nullptr</span>)<span class="keyword"> override</span></div><div class="line"><a name="l01302"></a><span class="lineno"> 1302</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l01303"></a><span class="lineno"> 1303</span>&#160; boost::ignore_unused(descriptor, name);</div><div class="line"><a name="l01304"></a><span class="lineno"> 1304</span>&#160; TensorInfo <a class="code" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a> = layer-&gt;GetOutputSlot(0).GetTensorInfo();</div><div class="line"><a name="l01305"></a><span class="lineno"> 1305</span>&#160;</div><div class="line"><a name="l01306"></a><span class="lineno"> 1306</span>&#160; <span class="keyword">const</span> <a class="code" href="namespacearmnn.html#a9b8e5a95f8c061bbbcdb036915dcb61a">OffsetScalePair</a> qAsymmU8Params{ 30.0f / <a class="code" href="namespacearmnn.html#a19994153bdbd7710f0af3973403bc4cc">g_AsymmU8QuantizationBase</a>, 128 };</div><div class="line"><a name="l01307"></a><span class="lineno"> 1307</span>&#160; <span class="keyword">const</span> <a class="code" href="namespacearmnn.html#a9b8e5a95f8c061bbbcdb036915dcb61a">OffsetScalePair</a> qAsymmS8Params { 30.0f / <a class="code" href="namespacearmnn.html#a09bdfaa922d72ce0d9ec014dfa8f8c95">g_AsymmS8QuantizationBase</a>, 0};</div><div class="line"><a name="l01308"></a><span class="lineno"> 1308</span>&#160; <span class="keyword">const</span> <a class="code" href="namespacearmnn.html#a9b8e5a95f8c061bbbcdb036915dcb61a">OffsetScalePair</a> qSymmS8Params { 15.0f / <a class="code" href="namespacearmnn.html#acd7f8820d124166a38c95bc8ad38811b">g_SymmS8QuantizationBase</a>, 0};</div><div class="line"><a name="l01309"></a><span class="lineno"> 1309</span>&#160; <span class="keyword">const</span> <a class="code" href="namespacearmnn.html#a9b8e5a95f8c061bbbcdb036915dcb61a">OffsetScalePair</a> qSymmS16Params{ 15.0f / <a class="code" href="namespacearmnn.html#a1465480794787d2278d3f0d2e6d887b4">g_SymmS16QuantizationBase</a>, 0 };</div><div class="line"><a name="l01310"></a><span class="lineno"> 1310</span>&#160;</div><div class="line"><a name="l01311"></a><span class="lineno"> 1311</span>&#160; TestQuantizationParams(info, qAsymmU8Params, qAsymmS8Params, qSymmS8Params, qSymmS16Params);</div><div class="line"><a name="l01312"></a><span class="lineno"> 1312</span>&#160; }</div><div class="line"><a name="l01313"></a><span class="lineno"> 1313</span>&#160; };</div><div class="line"><a name="l01314"></a><span class="lineno"> 1314</span>&#160;</div><div class="line"><a name="l01315"></a><span class="lineno"> 1315</span>&#160; <span class="keyword">const</span> TensorShape tensorShape{ 1U };</div><div class="line"><a name="l01316"></a><span class="lineno"> 1316</span>&#160; <span class="keyword">const</span> TensorInfo tensorInfo(tensorShape, DataType::Float32);</div><div class="line"><a name="l01317"></a><span class="lineno"> 1317</span>&#160;</div><div class="line"><a name="l01318"></a><span class="lineno"> 1318</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> network = INetwork::Create();</div><div class="line"><a name="l01319"></a><span class="lineno"> 1319</span>&#160;</div><div class="line"><a name="l01320"></a><span class="lineno"> 1320</span>&#160; <a class="code" href="namespacearmnn.html#ac14705405cbcdd580df613de6766fe65">LogSoftmaxDescriptor</a> descriptor;</div><div class="line"><a name="l01321"></a><span class="lineno"> 1321</span>&#160; descriptor.<a class="code" href="structarmnn_1_1_softmax_descriptor.html#a8275d51ef9a584feb95726ea0522f6e5">m_Beta</a> = 1.0f;</div><div class="line"><a name="l01322"></a><span class="lineno"> 1322</span>&#160;</div><div class="line"><a name="l01323"></a><span class="lineno"> 1323</span>&#160; IConnectableLayer* inputLayer = network-&gt;AddInputLayer(0);</div><div class="line"><a name="l01324"></a><span class="lineno"> 1324</span>&#160; IConnectableLayer* logSoftmaxLayer = network-&gt;AddLogSoftmaxLayer(descriptor);</div><div class="line"><a name="l01325"></a><span class="lineno"> 1325</span>&#160; IConnectableLayer* outputLayer = network-&gt;AddOutputLayer(0);</div><div class="line"><a name="l01326"></a><span class="lineno"> 1326</span>&#160;</div><div class="line"><a name="l01327"></a><span class="lineno"> 1327</span>&#160; inputLayer-&gt;GetOutputSlot(0).Connect(logSoftmaxLayer-&gt;GetInputSlot(0));</div><div class="line"><a name="l01328"></a><span class="lineno"> 1328</span>&#160; logSoftmaxLayer-&gt;GetOutputSlot(0).Connect(outputLayer-&gt;GetInputSlot(0));</div><div class="line"><a name="l01329"></a><span class="lineno"> 1329</span>&#160;</div><div class="line"><a name="l01330"></a><span class="lineno"> 1330</span>&#160; inputLayer-&gt;GetOutputSlot(0).SetTensorInfo(tensorInfo);</div><div class="line"><a name="l01331"></a><span class="lineno"> 1331</span>&#160; logSoftmaxLayer-&gt;GetOutputSlot(0).SetTensorInfo(tensorInfo);</div><div class="line"><a name="l01332"></a><span class="lineno"> 1332</span>&#160;</div><div class="line"><a name="l01333"></a><span class="lineno"> 1333</span>&#160; <span class="comment">// test QAsymmU8 quantization</span></div><div class="line"><a name="l01334"></a><span class="lineno"> 1334</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQAsymmU8 = INetworkQuantizer::Create(network.get())-&gt;ExportNetwork();</div><div class="line"><a name="l01335"></a><span class="lineno"> 1335</span>&#160; TestLogSoftmaxQuantization validatorQAsymmU8(tensorShape, tensorShape);</div><div class="line"><a name="l01336"></a><span class="lineno"> 1336</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQAsymmU8.get(), validatorQAsymmU8);</div><div class="line"><a name="l01337"></a><span class="lineno"> 1337</span>&#160;</div><div class="line"><a name="l01338"></a><span class="lineno"> 1338</span>&#160; <span class="comment">// test QAsymmS8 quantization</span></div><div class="line"><a name="l01339"></a><span class="lineno"> 1339</span>&#160; <span class="keyword">const</span> QuantizerOptions qAsymmS8Options(DataType::QAsymmS8);</div><div class="line"><a name="l01340"></a><span class="lineno"> 1340</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQAsymmS8 = INetworkQuantizer::Create(network.get(), qAsymmS8Options)-&gt;ExportNetwork();</div><div class="line"><a name="l01341"></a><span class="lineno"> 1341</span>&#160; TestLogSoftmaxQuantization validatorQAsymmS8(qAsymmS8Options, tensorShape, tensorShape);</div><div class="line"><a name="l01342"></a><span class="lineno"> 1342</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQAsymmS8.get(), validatorQAsymmS8);</div><div class="line"><a name="l01343"></a><span class="lineno"> 1343</span>&#160;</div><div class="line"><a name="l01344"></a><span class="lineno"> 1344</span>&#160; <span class="comment">// test QSymmS8 quantization</span></div><div class="line"><a name="l01345"></a><span class="lineno"> 1345</span>&#160; <span class="keyword">const</span> QuantizerOptions qSymmS8Options(DataType::QSymmS8);</div><div class="line"><a name="l01346"></a><span class="lineno"> 1346</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQSymmS8 = INetworkQuantizer::Create(network.get(), qSymmS8Options)-&gt;ExportNetwork();</div><div class="line"><a name="l01347"></a><span class="lineno"> 1347</span>&#160; TestLogSoftmaxQuantization validatorQSymmS8(qSymmS8Options, tensorShape, tensorShape);</div><div class="line"><a name="l01348"></a><span class="lineno"> 1348</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQSymmS8.get(), validatorQSymmS8);</div><div class="line"><a name="l01349"></a><span class="lineno"> 1349</span>&#160;</div><div class="line"><a name="l01350"></a><span class="lineno"> 1350</span>&#160; <span class="comment">// test QuantisedSymmS16 quantization</span></div><div class="line"><a name="l01351"></a><span class="lineno"> 1351</span>&#160; <span class="keyword">const</span> QuantizerOptions qSymmS16options(DataType::QSymmS16);</div><div class="line"><a name="l01352"></a><span class="lineno"> 1352</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQSymmS16 = INetworkQuantizer::Create(network.get(), qSymmS16options)-&gt;ExportNetwork();</div><div class="line"><a name="l01353"></a><span class="lineno"> 1353</span>&#160; TestLogSoftmaxQuantization validatorQSymmS16(qSymmS16options, tensorShape, tensorShape);</div><div class="line"><a name="l01354"></a><span class="lineno"> 1354</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQSymmS16.get(), validatorQSymmS16);</div><div class="line"><a name="l01355"></a><span class="lineno"> 1355</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a1465480794787d2278d3f0d2e6d887b4"><div class="ttname"><a href="namespacearmnn.html#a1465480794787d2278d3f0d2e6d887b4">armnn::g_SymmS16QuantizationBase</a></div><div class="ttdeci">const float g_SymmS16QuantizationBase</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l00037">QuantizerTest.cpp:37</a></div></div>
<div class="ttc" id="namespacearmnn_html_acd7f8820d124166a38c95bc8ad38811b"><div class="ttname"><a href="namespacearmnn.html#acd7f8820d124166a38c95bc8ad38811b">armnn::g_SymmS8QuantizationBase</a></div><div class="ttdeci">const float g_SymmS8QuantizationBase</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l00036">QuantizerTest.cpp:36</a></div></div>
<div class="ttc" id="namespacearmnn_html_a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c"><div class="ttname"><a href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">armnn::BoostLogSeverityMapping::info</a></div></div>
<div class="ttc" id="structarmnn_1_1_softmax_descriptor_html_a8275d51ef9a584feb95726ea0522f6e5"><div class="ttname"><a href="structarmnn_1_1_softmax_descriptor.html#a8275d51ef9a584feb95726ea0522f6e5">armnn::SoftmaxDescriptor::m_Beta</a></div><div class="ttdeci">float m_Beta</div><div class="ttdoc">Exponentiation value. </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.html#l00136">Descriptors.hpp:136</a></div></div>
<div class="ttc" id="namespacearmnn_html_ac14705405cbcdd580df613de6766fe65"><div class="ttname"><a href="namespacearmnn.html#ac14705405cbcdd580df613de6766fe65">armnn::LogSoftmaxDescriptor</a></div><div class="ttdeci">SoftmaxDescriptor LogSoftmaxDescriptor</div><div class="ttdoc">A LogSoftmaxDescriptor for the LogSoftmaxLayer. </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.html#l00142">Descriptors.hpp:142</a></div></div>
<div class="ttc" id="namespacearmnn_html_a6482907b4c57873e197324f5cb66fd4d"><div class="ttname"><a href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">armnn::VisitLayersTopologically</a></div><div class="ttdeci">void VisitLayersTopologically(const INetwork *inputNetwork, ILayerVisitor &amp;visitor)</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l00193">QuantizerTest.cpp:193</a></div></div>
<div class="ttc" id="namespacearmnn_html_ace74f6f9feb95a964a49d79458232703"><div class="ttname"><a href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">armnn::INetworkPtr</a></div><div class="ttdeci">std::unique_ptr&lt; INetwork, void(*)(INetwork *network)&gt; INetworkPtr</div><div class="ttdef"><b>Definition:</b> <a href="_i_network_8hpp_source.html#l00085">INetwork.hpp:85</a></div></div>
<div class="ttc" id="namespacearmnn_html_a09bdfaa922d72ce0d9ec014dfa8f8c95"><div class="ttname"><a href="namespacearmnn.html#a09bdfaa922d72ce0d9ec014dfa8f8c95">armnn::g_AsymmS8QuantizationBase</a></div><div class="ttdeci">const float g_AsymmS8QuantizationBase</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l00035">QuantizerTest.cpp:35</a></div></div>
<div class="ttc" id="namespacearmnn_html_a19994153bdbd7710f0af3973403bc4cc"><div class="ttname"><a href="namespacearmnn.html#a19994153bdbd7710f0af3973403bc4cc">armnn::g_AsymmU8QuantizationBase</a></div><div class="ttdeci">const float g_AsymmU8QuantizationBase</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l00033">QuantizerTest.cpp:33</a></div></div>
<div class="ttc" id="namespacearmnn_html_a9b8e5a95f8c061bbbcdb036915dcb61a"><div class="ttname"><a href="namespacearmnn.html#a9b8e5a95f8c061bbbcdb036915dcb61a">armnn::OffsetScalePair</a></div><div class="ttdeci">std::pair&lt; float, int &gt; OffsetScalePair</div><div class="ttdef"><b>Definition:</b> <a href="_network_quantization_scheme_8hpp_source.html#l00016">NetworkQuantizationScheme.hpp:16</a></div></div>
<div class="ttc" id="_file_only_profiling_decorator_tests_8cpp_html_a6560146509197f3e197d8d36f76c1347"><div class="ttname"><a href="_file_only_profiling_decorator_tests_8cpp.html#a6560146509197f3e197d8d36f76c1347">options</a></div><div class="ttdeci">armnn::Runtime::CreationOptions::ExternalProfilingOptions options</div><div class="ttdef"><b>Definition:</b> <a href="_file_only_profiling_decorator_tests_8cpp_source.html#l00045">FileOnlyProfilingDecoratorTests.cpp:45</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a492fae0605d06684297540bb9af319dc"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a492fae0605d06684297540bb9af319dc">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[52/79]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
<td>(</td>
<td class="paramtype">CheckNamedQuantizedLstmLayer&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_const_tensor_layer_visitor_8cpp_source.html#l01335">1335</a> of file <a class="el" href="_const_tensor_layer_visitor_8cpp_source.html">ConstTensorLayerVisitor.cpp</a>.</p>
<p class="reference">References <a class="el" href="classarmnn_1_1_i_connectable_layer.html#a8c9198a992b02e61a6777329d487dde3">IConnectableLayer::Accept()</a>, <a class="el" href="_network_8cpp_source.html#l01542">Network::AddQuantizedLstmLayer()</a>, <a class="el" href="_profiler_tests_8cpp.html#af7f71af5c6c124222dd1c42c5df892f4">BOOST_AUTO_TEST_SUITE_END()</a>, <a class="el" href="_quantized_lstm_params_8hpp_source.html#l00045">QuantizedLstmInputParams::m_CellBias</a>, <a class="el" href="_quantized_lstm_params_8hpp_source.html#l00044">QuantizedLstmInputParams::m_ForgetGateBias</a>, <a class="el" href="_quantized_lstm_params_8hpp_source.html#l00043">QuantizedLstmInputParams::m_InputGateBias</a>, <a class="el" href="_quantized_lstm_params_8hpp_source.html#l00035">QuantizedLstmInputParams::m_InputToCellWeights</a>, <a class="el" href="_quantized_lstm_params_8hpp_source.html#l00034">QuantizedLstmInputParams::m_InputToForgetWeights</a>, <a class="el" href="_quantized_lstm_params_8hpp_source.html#l00033">QuantizedLstmInputParams::m_InputToInputWeights</a>, <a class="el" href="_quantized_lstm_params_8hpp_source.html#l00036">QuantizedLstmInputParams::m_InputToOutputWeights</a>, <a class="el" href="_quantized_lstm_params_8hpp_source.html#l00046">QuantizedLstmInputParams::m_OutputGateBias</a>, <a class="el" href="_quantized_lstm_params_8hpp_source.html#l00040">QuantizedLstmInputParams::m_RecurrentToCellWeights</a>, <a class="el" href="_quantized_lstm_params_8hpp_source.html#l00039">QuantizedLstmInputParams::m_RecurrentToForgetWeights</a>, <a class="el" href="_quantized_lstm_params_8hpp_source.html#l00038">QuantizedLstmInputParams::m_RecurrentToInputWeights</a>, <a class="el" href="_quantized_lstm_params_8hpp_source.html#l00041">QuantizedLstmInputParams::m_RecurrentToOutputWeights</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a0a3f57c876f5a230244c38e1453a8a6e">QAsymmU8</a>, and <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6accedffbc6e5308e33d3843e8bdc0dad7">Signed32</a>.</p>
<div class="fragment"><div class="line"><a name="l01336"></a><span class="lineno"> 1336</span>&#160;{</div><div class="line"><a name="l01337"></a><span class="lineno"> 1337</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span>* layerName = <span class="stringliteral">&quot;LstmLayer&quot;</span>;</div><div class="line"><a name="l01338"></a><span class="lineno"> 1338</span>&#160; std::vector&lt;uint8_t&gt; inputToInputWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};</div><div class="line"><a name="l01339"></a><span class="lineno"> 1339</span>&#160; std::vector&lt;unsigned int&gt; inputToInputWeightsDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l01340"></a><span class="lineno"> 1340</span>&#160; ConstTensor inputToInputWeights(</div><div class="line"><a name="l01341"></a><span class="lineno"> 1341</span>&#160; TensorInfo(4, inputToInputWeightsDimensions.data(), DataType::QAsymmU8), inputToInputWeightsData);</div><div class="line"><a name="l01342"></a><span class="lineno"> 1342</span>&#160;</div><div class="line"><a name="l01343"></a><span class="lineno"> 1343</span>&#160; std::vector&lt;uint8_t&gt; inputToForgetWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};</div><div class="line"><a name="l01344"></a><span class="lineno"> 1344</span>&#160; std::vector&lt;unsigned int&gt; inputToForgetWeightsDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l01345"></a><span class="lineno"> 1345</span>&#160; ConstTensor inputToForgetWeights(</div><div class="line"><a name="l01346"></a><span class="lineno"> 1346</span>&#160; TensorInfo(4, inputToForgetWeightsDimensions.data(), DataType::QAsymmU8), inputToForgetWeightsData);</div><div class="line"><a name="l01347"></a><span class="lineno"> 1347</span>&#160;</div><div class="line"><a name="l01348"></a><span class="lineno"> 1348</span>&#160; std::vector&lt;uint8_t&gt; inputToCellWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};</div><div class="line"><a name="l01349"></a><span class="lineno"> 1349</span>&#160; std::vector&lt;unsigned int&gt; inputToCellWeightsDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l01350"></a><span class="lineno"> 1350</span>&#160; ConstTensor inputToCellWeights(</div><div class="line"><a name="l01351"></a><span class="lineno"> 1351</span>&#160; TensorInfo(4, inputToCellWeightsDimensions.data(), DataType::QAsymmU8), inputToCellWeightsData);</div><div class="line"><a name="l01352"></a><span class="lineno"> 1352</span>&#160;</div><div class="line"><a name="l01353"></a><span class="lineno"> 1353</span>&#160; std::vector&lt;uint8_t&gt; inputToOutputWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};</div><div class="line"><a name="l01354"></a><span class="lineno"> 1354</span>&#160; std::vector&lt;unsigned int&gt; inputToOutputWeightsDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l01355"></a><span class="lineno"> 1355</span>&#160; ConstTensor inputToOutputWeights(</div><div class="line"><a name="l01356"></a><span class="lineno"> 1356</span>&#160; TensorInfo(4, inputToOutputWeightsDimensions.data(), DataType::QAsymmU8), inputToOutputWeightsData);</div><div class="line"><a name="l01357"></a><span class="lineno"> 1357</span>&#160;</div><div class="line"><a name="l01358"></a><span class="lineno"> 1358</span>&#160;</div><div class="line"><a name="l01359"></a><span class="lineno"> 1359</span>&#160; std::vector&lt;uint8_t&gt; recurrentToInputWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};</div><div class="line"><a name="l01360"></a><span class="lineno"> 1360</span>&#160; std::vector&lt;unsigned int&gt; recurrentToInputWeightsDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l01361"></a><span class="lineno"> 1361</span>&#160; ConstTensor recurrentToInputWeights(TensorInfo(</div><div class="line"><a name="l01362"></a><span class="lineno"> 1362</span>&#160; 4, recurrentToInputWeightsDimensions.data(), DataType::QAsymmU8), recurrentToInputWeightsData);</div><div class="line"><a name="l01363"></a><span class="lineno"> 1363</span>&#160;</div><div class="line"><a name="l01364"></a><span class="lineno"> 1364</span>&#160; std::vector&lt;uint8_t&gt; recurrentToForgetWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};</div><div class="line"><a name="l01365"></a><span class="lineno"> 1365</span>&#160; std::vector&lt;unsigned int&gt; recurrentToForgetWeightsDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l01366"></a><span class="lineno"> 1366</span>&#160; ConstTensor recurrentToForgetWeights(TensorInfo(</div><div class="line"><a name="l01367"></a><span class="lineno"> 1367</span>&#160; 4, recurrentToForgetWeightsDimensions.data(), DataType::QAsymmU8), recurrentToForgetWeightsData);</div><div class="line"><a name="l01368"></a><span class="lineno"> 1368</span>&#160;</div><div class="line"><a name="l01369"></a><span class="lineno"> 1369</span>&#160; std::vector&lt;uint8_t&gt; recurrentToCellWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};</div><div class="line"><a name="l01370"></a><span class="lineno"> 1370</span>&#160; std::vector&lt;unsigned int&gt; recurrentToCellWeightsDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l01371"></a><span class="lineno"> 1371</span>&#160; ConstTensor recurrentToCellWeights(TensorInfo(</div><div class="line"><a name="l01372"></a><span class="lineno"> 1372</span>&#160; 4, recurrentToCellWeightsDimensions.data(), DataType::QAsymmU8), recurrentToCellWeightsData);</div><div class="line"><a name="l01373"></a><span class="lineno"> 1373</span>&#160;</div><div class="line"><a name="l01374"></a><span class="lineno"> 1374</span>&#160; std::vector&lt;uint8_t&gt; recurrentToOutputWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};</div><div class="line"><a name="l01375"></a><span class="lineno"> 1375</span>&#160; std::vector&lt;unsigned int&gt; recurrentToOutputWeightsDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l01376"></a><span class="lineno"> 1376</span>&#160; ConstTensor recurrentToOutputWeights(TensorInfo(</div><div class="line"><a name="l01377"></a><span class="lineno"> 1377</span>&#160; 4, recurrentToOutputWeightsDimensions.data(), DataType::QAsymmU8), recurrentToOutputWeightsData);</div><div class="line"><a name="l01378"></a><span class="lineno"> 1378</span>&#160;</div><div class="line"><a name="l01379"></a><span class="lineno"> 1379</span>&#160;</div><div class="line"><a name="l01380"></a><span class="lineno"> 1380</span>&#160; std::vector&lt;int32_t&gt; inputGateBiasData = {1, 2, 3, 4, 5, 6, 7, 8, 9};</div><div class="line"><a name="l01381"></a><span class="lineno"> 1381</span>&#160; std::vector&lt;unsigned int&gt; inputGateBiasDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l01382"></a><span class="lineno"> 1382</span>&#160; ConstTensor inputGateBias(</div><div class="line"><a name="l01383"></a><span class="lineno"> 1383</span>&#160; TensorInfo(4, inputGateBiasDimensions.data(), DataType::Signed32), inputGateBiasData);</div><div class="line"><a name="l01384"></a><span class="lineno"> 1384</span>&#160;</div><div class="line"><a name="l01385"></a><span class="lineno"> 1385</span>&#160; std::vector&lt;int32_t&gt; forgetGateBiasData = {1, 2, 3, 4, 5, 6, 7, 8, 9};</div><div class="line"><a name="l01386"></a><span class="lineno"> 1386</span>&#160; std::vector&lt;unsigned int&gt; forgetGateBiasDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l01387"></a><span class="lineno"> 1387</span>&#160; ConstTensor forgetGateBias(TensorInfo(</div><div class="line"><a name="l01388"></a><span class="lineno"> 1388</span>&#160; 4, forgetGateBiasDimensions.data(), DataType::Signed32), forgetGateBiasData);</div><div class="line"><a name="l01389"></a><span class="lineno"> 1389</span>&#160;</div><div class="line"><a name="l01390"></a><span class="lineno"> 1390</span>&#160; std::vector&lt;int32_t&gt; cellBiasData = {1, 2, 3, 4, 5, 6, 7, 8, 9};</div><div class="line"><a name="l01391"></a><span class="lineno"> 1391</span>&#160; std::vector&lt;unsigned int&gt; cellBiasDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l01392"></a><span class="lineno"> 1392</span>&#160; ConstTensor cellBias(TensorInfo(</div><div class="line"><a name="l01393"></a><span class="lineno"> 1393</span>&#160; 4, cellBiasDimensions.data(), DataType::Signed32), cellBiasData);</div><div class="line"><a name="l01394"></a><span class="lineno"> 1394</span>&#160;</div><div class="line"><a name="l01395"></a><span class="lineno"> 1395</span>&#160; std::vector&lt;int32_t&gt; outputGateBiasData = {1, 2, 3, 4, 5, 6, 7, 8, 9};</div><div class="line"><a name="l01396"></a><span class="lineno"> 1396</span>&#160; std::vector&lt;unsigned int&gt; outputGateBiasDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l01397"></a><span class="lineno"> 1397</span>&#160; ConstTensor outputGateBias(TensorInfo(</div><div class="line"><a name="l01398"></a><span class="lineno"> 1398</span>&#160; 4, outputGateBiasDimensions.data(), DataType::Signed32), outputGateBiasData);</div><div class="line"><a name="l01399"></a><span class="lineno"> 1399</span>&#160;</div><div class="line"><a name="l01400"></a><span class="lineno"> 1400</span>&#160; QuantizedLstmInputParams params;</div><div class="line"><a name="l01401"></a><span class="lineno"> 1401</span>&#160;</div><div class="line"><a name="l01402"></a><span class="lineno"> 1402</span>&#160; params.m_InputToInputWeights = &amp;inputToInputWeights;</div><div class="line"><a name="l01403"></a><span class="lineno"> 1403</span>&#160; params.m_InputToForgetWeights = &amp;inputToForgetWeights;</div><div class="line"><a name="l01404"></a><span class="lineno"> 1404</span>&#160; params.m_InputToCellWeights = &amp;inputToCellWeights;</div><div class="line"><a name="l01405"></a><span class="lineno"> 1405</span>&#160; params.m_InputToOutputWeights = &amp;inputToOutputWeights;</div><div class="line"><a name="l01406"></a><span class="lineno"> 1406</span>&#160;</div><div class="line"><a name="l01407"></a><span class="lineno"> 1407</span>&#160; params.m_RecurrentToInputWeights = &amp;recurrentToInputWeights;</div><div class="line"><a name="l01408"></a><span class="lineno"> 1408</span>&#160; params.m_RecurrentToForgetWeights = &amp;recurrentToForgetWeights;</div><div class="line"><a name="l01409"></a><span class="lineno"> 1409</span>&#160; params.m_RecurrentToCellWeights = &amp;recurrentToCellWeights;</div><div class="line"><a name="l01410"></a><span class="lineno"> 1410</span>&#160; params.m_RecurrentToOutputWeights = &amp;recurrentToOutputWeights;</div><div class="line"><a name="l01411"></a><span class="lineno"> 1411</span>&#160;</div><div class="line"><a name="l01412"></a><span class="lineno"> 1412</span>&#160; params.m_InputGateBias = &amp;inputGateBias;</div><div class="line"><a name="l01413"></a><span class="lineno"> 1413</span>&#160; params.m_ForgetGateBias = &amp;forgetGateBias;</div><div class="line"><a name="l01414"></a><span class="lineno"> 1414</span>&#160; params.m_CellBias = &amp;cellBias;</div><div class="line"><a name="l01415"></a><span class="lineno"> 1415</span>&#160; params.m_OutputGateBias = &amp;outputGateBias;</div><div class="line"><a name="l01416"></a><span class="lineno"> 1416</span>&#160;</div><div class="line"><a name="l01417"></a><span class="lineno"> 1417</span>&#160; TestQuantizedLstmLayerVisitor visitor(params, layerName);</div><div class="line"><a name="l01418"></a><span class="lineno"> 1418</span>&#160;</div><div class="line"><a name="l01419"></a><span class="lineno"> 1419</span>&#160; Network net;</div><div class="line"><a name="l01420"></a><span class="lineno"> 1420</span>&#160;</div><div class="line"><a name="l01421"></a><span class="lineno"> 1421</span>&#160; IConnectableLayer* <span class="keyword">const</span> layer = net.AddQuantizedLstmLayer(params, layerName);</div><div class="line"><a name="l01422"></a><span class="lineno"> 1422</span>&#160; layer-&gt;Accept(visitor);</div><div class="line"><a name="l01423"></a><span class="lineno"> 1423</span>&#160;}</div></div><!-- fragment -->
</div>
</div>
<a id="a7e94e9ab356805c498f5fc2fba87e4e6"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a7e94e9ab356805c498f5fc2fba87e4e6">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[53/79]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
<td>(</td>
<td class="paramtype">QuantizeSoftmax&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_quantizer_test_8cpp_source.html#l01378">1378</a> of file <a class="el" href="_quantizer_test_8cpp_source.html">QuantizerTest.cpp</a>.</p>
<p class="reference">References <a class="el" href="_network_quantizer_8cpp_source.html#l00040">INetworkQuantizer::Create()</a>, <a class="el" href="_quantizer_test_8cpp_source.html#l01357">CreateNetworkWithSoftmaxLayer()</a>, <a class="el" href="_quantizer_test_8cpp_source.html#l00035">g_AsymmS8QuantizationBase</a>, <a class="el" href="_quantizer_test_8cpp_source.html#l00033">g_AsymmU8QuantizationBase</a>, <a class="el" href="_quantizer_test_8cpp_source.html#l00037">g_SymmS16QuantizationBase</a>, <a class="el" href="_quantizer_test_8cpp_source.html#l00036">g_SymmS8QuantizationBase</a>, <a class="el" href="classarmnn_1_1_i_connectable_layer.html#a80ac4eda2e7f2757ec9dd96fc96dbd16">IConnectableLayer::GetOutputSlot()</a>, <a class="el" href="classarmnn_1_1_i_output_slot.html#a9943775a364fc4ab53b85ac88f311886">IOutputSlot::GetTensorInfo()</a>, <a class="el" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>, <a class="el" href="_descriptors_8hpp_source.html#l00136">SoftmaxDescriptor::m_Beta</a>, <a class="el" href="_file_only_profiling_decorator_tests_8cpp_source.html#l00045">options</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a9d02ea768c081d4bdb2b7cab0b3f510d">QAsymmS8</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7">QSymmS16</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a9945327825b115e93a3b89f4302e76db">QSymmS8</a>, and <a class="el" href="_quantizer_test_8cpp_source.html#l00193">VisitLayersTopologically()</a>.</p>
<div class="fragment"><div class="line"><a name="l01379"></a><span class="lineno"> 1379</span>&#160;{</div><div class="line"><a name="l01380"></a><span class="lineno"> 1380</span>&#160; <span class="keyword">class </span>TestSoftmaxQuantization : <span class="keyword">public</span> TestQuantization</div><div class="line"><a name="l01381"></a><span class="lineno"> 1381</span>&#160; {</div><div class="line"><a name="l01382"></a><span class="lineno"> 1382</span>&#160; <span class="keyword">public</span>:</div><div class="line"><a name="l01383"></a><span class="lineno"> 1383</span>&#160; TestSoftmaxQuantization(<span class="keyword">const</span> TensorShape&amp; inputShape, <span class="keyword">const</span> TensorShape&amp; outputShape)</div><div class="line"><a name="l01384"></a><span class="lineno"> 1384</span>&#160; : TestQuantization(inputShape, outputShape) {}</div><div class="line"><a name="l01385"></a><span class="lineno"> 1385</span>&#160;</div><div class="line"><a name="l01386"></a><span class="lineno"> 1386</span>&#160; TestSoftmaxQuantization(<span class="keyword">const</span> QuantizerOptions&amp; <a class="code" href="_file_only_profiling_decorator_tests_8cpp.html#a6560146509197f3e197d8d36f76c1347">options</a>,</div><div class="line"><a name="l01387"></a><span class="lineno"> 1387</span>&#160; <span class="keyword">const</span> TensorShape&amp; inputShape,</div><div class="line"><a name="l01388"></a><span class="lineno"> 1388</span>&#160; <span class="keyword">const</span> TensorShape&amp; outputShape)</div><div class="line"><a name="l01389"></a><span class="lineno"> 1389</span>&#160; : TestQuantization(options, inputShape, outputShape) {}</div><div class="line"><a name="l01390"></a><span class="lineno"> 1390</span>&#160;</div><div class="line"><a name="l01391"></a><span class="lineno"> 1391</span>&#160; <span class="keywordtype">void</span> VisitSoftmaxLayer(<span class="keyword">const</span> IConnectableLayer* layer,</div><div class="line"><a name="l01392"></a><span class="lineno"> 1392</span>&#160; <span class="keyword">const</span> SoftmaxDescriptor&amp; descriptor,</div><div class="line"><a name="l01393"></a><span class="lineno"> 1393</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span>* name = <span class="keyword">nullptr</span>)<span class="keyword"> override</span></div><div class="line"><a name="l01394"></a><span class="lineno"> 1394</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l01395"></a><span class="lineno"> 1395</span>&#160; boost::ignore_unused(descriptor, name);</div><div class="line"><a name="l01396"></a><span class="lineno"> 1396</span>&#160; TensorInfo <a class="code" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a> = layer-&gt;GetOutputSlot(0).GetTensorInfo();</div><div class="line"><a name="l01397"></a><span class="lineno"> 1397</span>&#160;</div><div class="line"><a name="l01398"></a><span class="lineno"> 1398</span>&#160; <span class="comment">// Based off default static range [0.0f, 1.0f]</span></div><div class="line"><a name="l01399"></a><span class="lineno"> 1399</span>&#160; TestQuantizationParams(info, {1.0f / <a class="code" href="namespacearmnn.html#a19994153bdbd7710f0af3973403bc4cc">g_AsymmU8QuantizationBase</a>, 0},</div><div class="line"><a name="l01400"></a><span class="lineno"> 1400</span>&#160; {1.0f / <a class="code" href="namespacearmnn.html#a09bdfaa922d72ce0d9ec014dfa8f8c95">g_AsymmS8QuantizationBase</a>, -128},</div><div class="line"><a name="l01401"></a><span class="lineno"> 1401</span>&#160; {1.0f / <a class="code" href="namespacearmnn.html#acd7f8820d124166a38c95bc8ad38811b">g_SymmS8QuantizationBase</a>, 0},</div><div class="line"><a name="l01402"></a><span class="lineno"> 1402</span>&#160; {1.0f / <a class="code" href="namespacearmnn.html#a1465480794787d2278d3f0d2e6d887b4">g_SymmS16QuantizationBase</a>, 0});</div><div class="line"><a name="l01403"></a><span class="lineno"> 1403</span>&#160; }</div><div class="line"><a name="l01404"></a><span class="lineno"> 1404</span>&#160; };</div><div class="line"><a name="l01405"></a><span class="lineno"> 1405</span>&#160;</div><div class="line"><a name="l01406"></a><span class="lineno"> 1406</span>&#160; SoftmaxDescriptor descriptor;</div><div class="line"><a name="l01407"></a><span class="lineno"> 1407</span>&#160; descriptor.m_Beta = 1.0f;</div><div class="line"><a name="l01408"></a><span class="lineno"> 1408</span>&#160;</div><div class="line"><a name="l01409"></a><span class="lineno"> 1409</span>&#160; <span class="keyword">const</span> TensorShape shape{1U};</div><div class="line"><a name="l01410"></a><span class="lineno"> 1410</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> network = <a class="code" href="namespacearmnn.html#a9c91b774c3089c55df77cc3a42da72de">CreateNetworkWithSoftmaxLayer</a>(descriptor, shape);</div><div class="line"><a name="l01411"></a><span class="lineno"> 1411</span>&#160;</div><div class="line"><a name="l01412"></a><span class="lineno"> 1412</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQAsymmU8 = INetworkQuantizer::Create(network.get())-&gt;ExportNetwork();</div><div class="line"><a name="l01413"></a><span class="lineno"> 1413</span>&#160; TestSoftmaxQuantization validatorQAsymmU8(shape, shape);</div><div class="line"><a name="l01414"></a><span class="lineno"> 1414</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQAsymmU8.get(), validatorQAsymmU8);</div><div class="line"><a name="l01415"></a><span class="lineno"> 1415</span>&#160;</div><div class="line"><a name="l01416"></a><span class="lineno"> 1416</span>&#160; <span class="keyword">const</span> QuantizerOptions qAsymmS8Options(DataType::QAsymmS8);</div><div class="line"><a name="l01417"></a><span class="lineno"> 1417</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQAsymmS8 = INetworkQuantizer::Create(network.get(), qAsymmS8Options)-&gt;ExportNetwork();</div><div class="line"><a name="l01418"></a><span class="lineno"> 1418</span>&#160; TestSoftmaxQuantization validatorQAsymmS8(qAsymmS8Options, shape, shape);</div><div class="line"><a name="l01419"></a><span class="lineno"> 1419</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQAsymmS8.get(), validatorQAsymmS8);</div><div class="line"><a name="l01420"></a><span class="lineno"> 1420</span>&#160;</div><div class="line"><a name="l01421"></a><span class="lineno"> 1421</span>&#160; <span class="comment">// test QSymmS8 quantization</span></div><div class="line"><a name="l01422"></a><span class="lineno"> 1422</span>&#160; <span class="keyword">const</span> QuantizerOptions qSymmS8Options(DataType::QSymmS8);</div><div class="line"><a name="l01423"></a><span class="lineno"> 1423</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQSymmS8 = INetworkQuantizer::Create(network.get(), qSymmS8Options)-&gt;ExportNetwork();</div><div class="line"><a name="l01424"></a><span class="lineno"> 1424</span>&#160; TestSoftmaxQuantization validatorQSymmS8(qSymmS8Options, shape, shape);</div><div class="line"><a name="l01425"></a><span class="lineno"> 1425</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQSymmS8.get(), validatorQSymmS8);</div><div class="line"><a name="l01426"></a><span class="lineno"> 1426</span>&#160;</div><div class="line"><a name="l01427"></a><span class="lineno"> 1427</span>&#160; <span class="keyword">const</span> QuantizerOptions qSymmS16options(DataType::QSymmS16);</div><div class="line"><a name="l01428"></a><span class="lineno"> 1428</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQSymmS16 = INetworkQuantizer::Create(network.get(), qSymmS16options)-&gt;ExportNetwork();</div><div class="line"><a name="l01429"></a><span class="lineno"> 1429</span>&#160; TestSoftmaxQuantization validatorQSymmS16(qSymmS16options, shape, shape);</div><div class="line"><a name="l01430"></a><span class="lineno"> 1430</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQSymmS16.get(), validatorQSymmS16);</div><div class="line"><a name="l01431"></a><span class="lineno"> 1431</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a1465480794787d2278d3f0d2e6d887b4"><div class="ttname"><a href="namespacearmnn.html#a1465480794787d2278d3f0d2e6d887b4">armnn::g_SymmS16QuantizationBase</a></div><div class="ttdeci">const float g_SymmS16QuantizationBase</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l00037">QuantizerTest.cpp:37</a></div></div>
<div class="ttc" id="namespacearmnn_html_acd7f8820d124166a38c95bc8ad38811b"><div class="ttname"><a href="namespacearmnn.html#acd7f8820d124166a38c95bc8ad38811b">armnn::g_SymmS8QuantizationBase</a></div><div class="ttdeci">const float g_SymmS8QuantizationBase</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l00036">QuantizerTest.cpp:36</a></div></div>
<div class="ttc" id="namespacearmnn_html_a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c"><div class="ttname"><a href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">armnn::BoostLogSeverityMapping::info</a></div></div>
<div class="ttc" id="namespacearmnn_html_a6482907b4c57873e197324f5cb66fd4d"><div class="ttname"><a href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">armnn::VisitLayersTopologically</a></div><div class="ttdeci">void VisitLayersTopologically(const INetwork *inputNetwork, ILayerVisitor &amp;visitor)</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l00193">QuantizerTest.cpp:193</a></div></div>
<div class="ttc" id="namespacearmnn_html_ace74f6f9feb95a964a49d79458232703"><div class="ttname"><a href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">armnn::INetworkPtr</a></div><div class="ttdeci">std::unique_ptr&lt; INetwork, void(*)(INetwork *network)&gt; INetworkPtr</div><div class="ttdef"><b>Definition:</b> <a href="_i_network_8hpp_source.html#l00085">INetwork.hpp:85</a></div></div>
<div class="ttc" id="namespacearmnn_html_a09bdfaa922d72ce0d9ec014dfa8f8c95"><div class="ttname"><a href="namespacearmnn.html#a09bdfaa922d72ce0d9ec014dfa8f8c95">armnn::g_AsymmS8QuantizationBase</a></div><div class="ttdeci">const float g_AsymmS8QuantizationBase</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l00035">QuantizerTest.cpp:35</a></div></div>
<div class="ttc" id="namespacearmnn_html_a19994153bdbd7710f0af3973403bc4cc"><div class="ttname"><a href="namespacearmnn.html#a19994153bdbd7710f0af3973403bc4cc">armnn::g_AsymmU8QuantizationBase</a></div><div class="ttdeci">const float g_AsymmU8QuantizationBase</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l00033">QuantizerTest.cpp:33</a></div></div>
<div class="ttc" id="namespacearmnn_html_a9c91b774c3089c55df77cc3a42da72de"><div class="ttname"><a href="namespacearmnn.html#a9c91b774c3089c55df77cc3a42da72de">armnn::CreateNetworkWithSoftmaxLayer</a></div><div class="ttdeci">INetworkPtr CreateNetworkWithSoftmaxLayer(const SoftmaxDescriptor &amp;descriptor, const TensorShape &amp;shape)</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l01357">QuantizerTest.cpp:1357</a></div></div>
<div class="ttc" id="_file_only_profiling_decorator_tests_8cpp_html_a6560146509197f3e197d8d36f76c1347"><div class="ttname"><a href="_file_only_profiling_decorator_tests_8cpp.html#a6560146509197f3e197d8d36f76c1347">options</a></div><div class="ttdeci">armnn::Runtime::CreationOptions::ExternalProfilingOptions options</div><div class="ttdef"><b>Definition:</b> <a href="_file_only_profiling_decorator_tests_8cpp_source.html#l00045">FileOnlyProfilingDecoratorTests.cpp:45</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a4734542212b5811d0511ea6b16f35168"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a4734542212b5811d0511ea6b16f35168">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[54/79]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
<td>(</td>
<td class="paramtype">QuantizeStandIn&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_quantizer_test_8cpp_source.html#l01433">1433</a> of file <a class="el" href="_quantizer_test_8cpp_source.html">QuantizerTest.cpp</a>.</p>
<p class="reference">References <a class="el" href="classarmnn_1_1_i_output_slot.html#ac1835f8756a9f03c02fcf9664e3a0fce">IOutputSlot::Connect()</a>, <a class="el" href="_network_quantizer_8cpp_source.html#l00040">INetworkQuantizer::Create()</a>, <a class="el" href="_network_8cpp_source.html#l00048">INetwork::Create()</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">Float32</a>, <a class="el" href="classarmnn_1_1_i_connectable_layer.html#a6ec9e0eb66d7d6a01240492a0b18104c">IConnectableLayer::GetInputSlot()</a>, <a class="el" href="classarmnn_1_1_i_connectable_layer.html#a80ac4eda2e7f2757ec9dd96fc96dbd16">IConnectableLayer::GetOutputSlot()</a>, <a class="el" href="_descriptors_8hpp_source.html#l00996">StandInDescriptor::m_NumInputs</a>, <a class="el" href="_descriptors_8hpp_source.html#l00998">StandInDescriptor::m_NumOutputs</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a9d02ea768c081d4bdb2b7cab0b3f510d">QAsymmS8</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7">QSymmS16</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a9945327825b115e93a3b89f4302e76db">QSymmS8</a>, and <a class="el" href="classarmnn_1_1_i_output_slot.html#a5ee4a6c9a2481245487b1b1a70d20fd0">IOutputSlot::SetTensorInfo()</a>.</p>
<div class="fragment"><div class="line"><a name="l01434"></a><span class="lineno"> 1434</span>&#160;{</div><div class="line"><a name="l01435"></a><span class="lineno"> 1435</span>&#160; <span class="keyword">const</span> TensorShape tensorShape{ 1U };</div><div class="line"><a name="l01436"></a><span class="lineno"> 1436</span>&#160; <span class="keyword">const</span> TensorInfo tensorInfo(tensorShape, DataType::Float32);</div><div class="line"><a name="l01437"></a><span class="lineno"> 1437</span>&#160;</div><div class="line"><a name="l01438"></a><span class="lineno"> 1438</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> network = INetwork::Create();</div><div class="line"><a name="l01439"></a><span class="lineno"> 1439</span>&#160;</div><div class="line"><a name="l01440"></a><span class="lineno"> 1440</span>&#160; StandInDescriptor descriptor;</div><div class="line"><a name="l01441"></a><span class="lineno"> 1441</span>&#160; descriptor.m_NumInputs = 1;</div><div class="line"><a name="l01442"></a><span class="lineno"> 1442</span>&#160; descriptor.m_NumOutputs = 1;</div><div class="line"><a name="l01443"></a><span class="lineno"> 1443</span>&#160;</div><div class="line"><a name="l01444"></a><span class="lineno"> 1444</span>&#160; IConnectableLayer* inputLayer = network-&gt;AddInputLayer(0);</div><div class="line"><a name="l01445"></a><span class="lineno"> 1445</span>&#160; IConnectableLayer* standInLayer = network-&gt;AddStandInLayer(descriptor);</div><div class="line"><a name="l01446"></a><span class="lineno"> 1446</span>&#160; IConnectableLayer* outputLayer = network-&gt;AddOutputLayer(0);</div><div class="line"><a name="l01447"></a><span class="lineno"> 1447</span>&#160;</div><div class="line"><a name="l01448"></a><span class="lineno"> 1448</span>&#160; inputLayer-&gt;GetOutputSlot(0).Connect(standInLayer-&gt;GetInputSlot(0));</div><div class="line"><a name="l01449"></a><span class="lineno"> 1449</span>&#160; standInLayer-&gt;GetOutputSlot(0).Connect(outputLayer-&gt;GetInputSlot(0));</div><div class="line"><a name="l01450"></a><span class="lineno"> 1450</span>&#160;</div><div class="line"><a name="l01451"></a><span class="lineno"> 1451</span>&#160; inputLayer-&gt;GetOutputSlot(0).SetTensorInfo(tensorInfo);</div><div class="line"><a name="l01452"></a><span class="lineno"> 1452</span>&#160; standInLayer-&gt;GetOutputSlot(0).SetTensorInfo(tensorInfo);</div><div class="line"><a name="l01453"></a><span class="lineno"> 1453</span>&#160;</div><div class="line"><a name="l01454"></a><span class="lineno"> 1454</span>&#160; <span class="comment">// test QAsymmU8 quantization</span></div><div class="line"><a name="l01455"></a><span class="lineno"> 1455</span>&#160; BOOST_CHECK_THROW(INetworkQuantizer::Create(network.get())-&gt;ExportNetwork(),</div><div class="line"><a name="l01456"></a><span class="lineno"> 1456</span>&#160; <a class="code" href="classarmnn_1_1_unimplemented_exception.html">armnn::UnimplementedException</a>);</div><div class="line"><a name="l01457"></a><span class="lineno"> 1457</span>&#160;</div><div class="line"><a name="l01458"></a><span class="lineno"> 1458</span>&#160; <span class="comment">// test QAsymmS8 quantization</span></div><div class="line"><a name="l01459"></a><span class="lineno"> 1459</span>&#160; <span class="keyword">const</span> QuantizerOptions qAsymmS8Options(DataType::QAsymmS8);</div><div class="line"><a name="l01460"></a><span class="lineno"> 1460</span>&#160; BOOST_CHECK_THROW(INetworkQuantizer::Create(network.get(), qAsymmS8Options)-&gt;ExportNetwork(),</div><div class="line"><a name="l01461"></a><span class="lineno"> 1461</span>&#160; <a class="code" href="classarmnn_1_1_unimplemented_exception.html">armnn::UnimplementedException</a>);</div><div class="line"><a name="l01462"></a><span class="lineno"> 1462</span>&#160;</div><div class="line"><a name="l01463"></a><span class="lineno"> 1463</span>&#160; <span class="comment">// test QuantisedSymmS16 quantization</span></div><div class="line"><a name="l01464"></a><span class="lineno"> 1464</span>&#160; <span class="keyword">const</span> QuantizerOptions qSymmS8Options(DataType::QSymmS8);</div><div class="line"><a name="l01465"></a><span class="lineno"> 1465</span>&#160; BOOST_CHECK_THROW(INetworkQuantizer::Create(network.get(), qSymmS8Options)-&gt;ExportNetwork(),</div><div class="line"><a name="l01466"></a><span class="lineno"> 1466</span>&#160; <a class="code" href="classarmnn_1_1_unimplemented_exception.html">armnn::UnimplementedException</a>);</div><div class="line"><a name="l01467"></a><span class="lineno"> 1467</span>&#160;</div><div class="line"><a name="l01468"></a><span class="lineno"> 1468</span>&#160; <span class="comment">// test QuantisedSymmS16 quantization</span></div><div class="line"><a name="l01469"></a><span class="lineno"> 1469</span>&#160; <span class="keyword">const</span> QuantizerOptions qSymmS16options(DataType::QSymmS16);</div><div class="line"><a name="l01470"></a><span class="lineno"> 1470</span>&#160; BOOST_CHECK_THROW(INetworkQuantizer::Create(network.get(), qSymmS16options)-&gt;ExportNetwork(),</div><div class="line"><a name="l01471"></a><span class="lineno"> 1471</span>&#160; <a class="code" href="classarmnn_1_1_unimplemented_exception.html">armnn::UnimplementedException</a>);</div><div class="line"><a name="l01472"></a><span class="lineno"> 1472</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_ace74f6f9feb95a964a49d79458232703"><div class="ttname"><a href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">armnn::INetworkPtr</a></div><div class="ttdeci">std::unique_ptr&lt; INetwork, void(*)(INetwork *network)&gt; INetworkPtr</div><div class="ttdef"><b>Definition:</b> <a href="_i_network_8hpp_source.html#l00085">INetwork.hpp:85</a></div></div>
<div class="ttc" id="classarmnn_1_1_unimplemented_exception_html"><div class="ttname"><a href="classarmnn_1_1_unimplemented_exception.html">armnn::UnimplementedException</a></div><div class="ttdef"><b>Definition:</b> <a href="_exceptions_8hpp_source.html#l00098">Exceptions.hpp:98</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="add22da50dd35a100548dde4c57ae89d1"></a>
<h2 class="memtitle"><span class="permalink"><a href="#add22da50dd35a100548dde4c57ae89d1">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[55/79]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
<td>(</td>
<td class="paramtype">QuantizePermute&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_quantizer_test_8cpp_source.html#l01511">1511</a> of file <a class="el" href="_quantizer_test_8cpp_source.html">QuantizerTest.cpp</a>.</p>
<p class="reference">References <a class="el" href="_quantizer_test_8cpp_source.html#l01495">CompleteLeakyReluNetwork()</a>, <a class="el" href="_network_quantizer_8cpp_source.html#l00040">INetworkQuantizer::Create()</a>, <a class="el" href="_network_8cpp_source.html#l00048">INetwork::Create()</a>, <a class="el" href="_quantizer_test_8cpp_source.html#l01474">CreateStartOfLeakyReluNetwork()</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">Float32</a>, <a class="el" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>, <a class="el" href="_file_only_profiling_decorator_tests_8cpp_source.html#l00045">options</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a9d02ea768c081d4bdb2b7cab0b3f510d">QAsymmS8</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7">QSymmS16</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a9945327825b115e93a3b89f4302e76db">QSymmS8</a>, and <a class="el" href="_quantizer_test_8cpp_source.html#l00193">VisitLayersTopologically()</a>.</p>
<div class="fragment"><div class="line"><a name="l01512"></a><span class="lineno"> 1512</span>&#160;{</div><div class="line"><a name="l01513"></a><span class="lineno"> 1513</span>&#160; <span class="keyword">class </span>TestPermuteQuantization : <span class="keyword">public</span> TestLeakyReLuActivationQuantization</div><div class="line"><a name="l01514"></a><span class="lineno"> 1514</span>&#160; {</div><div class="line"><a name="l01515"></a><span class="lineno"> 1515</span>&#160; <span class="keyword">public</span>:</div><div class="line"><a name="l01516"></a><span class="lineno"> 1516</span>&#160; TestPermuteQuantization(<span class="keyword">const</span> TensorShape&amp; inputShape, <span class="keyword">const</span> TensorShape&amp; outputShape)</div><div class="line"><a name="l01517"></a><span class="lineno"> 1517</span>&#160; : TestLeakyReLuActivationQuantization(inputShape, outputShape) {}</div><div class="line"><a name="l01518"></a><span class="lineno"> 1518</span>&#160;</div><div class="line"><a name="l01519"></a><span class="lineno"> 1519</span>&#160; TestPermuteQuantization(<span class="keyword">const</span> QuantizerOptions&amp; <a class="code" href="_file_only_profiling_decorator_tests_8cpp.html#a6560146509197f3e197d8d36f76c1347">options</a>,</div><div class="line"><a name="l01520"></a><span class="lineno"> 1520</span>&#160; <span class="keyword">const</span> TensorShape&amp; inputShape,</div><div class="line"><a name="l01521"></a><span class="lineno"> 1521</span>&#160; <span class="keyword">const</span> TensorShape&amp; outputShape)</div><div class="line"><a name="l01522"></a><span class="lineno"> 1522</span>&#160; : TestLeakyReLuActivationQuantization(options, inputShape, outputShape) {}</div><div class="line"><a name="l01523"></a><span class="lineno"> 1523</span>&#160;</div><div class="line"><a name="l01524"></a><span class="lineno"> 1524</span>&#160; <span class="keywordtype">void</span> VisitPermuteLayer(<span class="keyword">const</span> IConnectableLayer* layer,</div><div class="line"><a name="l01525"></a><span class="lineno"> 1525</span>&#160; <span class="keyword">const</span> PermuteDescriptor&amp; desc,</div><div class="line"><a name="l01526"></a><span class="lineno"> 1526</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span>* name = <span class="keyword">nullptr</span>)<span class="keyword"> override</span></div><div class="line"><a name="l01527"></a><span class="lineno"> 1527</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l01528"></a><span class="lineno"> 1528</span>&#160; boost::ignore_unused(desc, name);</div><div class="line"><a name="l01529"></a><span class="lineno"> 1529</span>&#160; CheckForwardedQuantizationSettings(layer);</div><div class="line"><a name="l01530"></a><span class="lineno"> 1530</span>&#160; }</div><div class="line"><a name="l01531"></a><span class="lineno"> 1531</span>&#160; };</div><div class="line"><a name="l01532"></a><span class="lineno"> 1532</span>&#160;</div><div class="line"><a name="l01533"></a><span class="lineno"> 1533</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> network = INetwork::Create();</div><div class="line"><a name="l01534"></a><span class="lineno"> 1534</span>&#160;</div><div class="line"><a name="l01535"></a><span class="lineno"> 1535</span>&#160; <span class="keyword">const</span> TensorShape shape{1U};</div><div class="line"><a name="l01536"></a><span class="lineno"> 1536</span>&#160; TensorInfo <a class="code" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>(shape, DataType::Float32);</div><div class="line"><a name="l01537"></a><span class="lineno"> 1537</span>&#160;</div><div class="line"><a name="l01538"></a><span class="lineno"> 1538</span>&#160; IConnectableLayer* activation = <a class="code" href="namespacearmnn.html#a120c131df35d78b3a56cb0f07decaf35">CreateStartOfLeakyReluNetwork</a>(network.get(), <a class="code" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>);</div><div class="line"><a name="l01539"></a><span class="lineno"> 1539</span>&#160;</div><div class="line"><a name="l01540"></a><span class="lineno"> 1540</span>&#160; <span class="comment">// Add the layer under test</span></div><div class="line"><a name="l01541"></a><span class="lineno"> 1541</span>&#160; PermuteDescriptor desc;</div><div class="line"><a name="l01542"></a><span class="lineno"> 1542</span>&#160; IConnectableLayer* permute = network-&gt;AddPermuteLayer(desc);</div><div class="line"><a name="l01543"></a><span class="lineno"> 1543</span>&#160;</div><div class="line"><a name="l01544"></a><span class="lineno"> 1544</span>&#160; <a class="code" href="namespacearmnn.html#a6fff4b4b1b5d4d37c9cf53d0e31c05dd">CompleteLeakyReluNetwork</a>(network.get(), activation, permute, <a class="code" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>);</div><div class="line"><a name="l01545"></a><span class="lineno"> 1545</span>&#160;</div><div class="line"><a name="l01546"></a><span class="lineno"> 1546</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQAsymmU8 = INetworkQuantizer::Create(network.get())-&gt;ExportNetwork();</div><div class="line"><a name="l01547"></a><span class="lineno"> 1547</span>&#160; TestPermuteQuantization validatorQAsymmU8(shape, shape);</div><div class="line"><a name="l01548"></a><span class="lineno"> 1548</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQAsymmU8.get(), validatorQAsymmU8);</div><div class="line"><a name="l01549"></a><span class="lineno"> 1549</span>&#160;</div><div class="line"><a name="l01550"></a><span class="lineno"> 1550</span>&#160; <span class="keyword">const</span> QuantizerOptions qAsymmS8Options(DataType::QAsymmS8);</div><div class="line"><a name="l01551"></a><span class="lineno"> 1551</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQAsymmS8 = INetworkQuantizer::Create(network.get(), qAsymmS8Options)-&gt;ExportNetwork();</div><div class="line"><a name="l01552"></a><span class="lineno"> 1552</span>&#160; TestPermuteQuantization validatorQAsymmS8(qAsymmS8Options, shape, shape);</div><div class="line"><a name="l01553"></a><span class="lineno"> 1553</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQAsymmS8.get(), validatorQAsymmS8);</div><div class="line"><a name="l01554"></a><span class="lineno"> 1554</span>&#160;</div><div class="line"><a name="l01555"></a><span class="lineno"> 1555</span>&#160; <span class="keyword">const</span> QuantizerOptions qSymmS8Options(DataType::QSymmS8);</div><div class="line"><a name="l01556"></a><span class="lineno"> 1556</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQSymmS8 = INetworkQuantizer::Create(network.get(), qSymmS8Options)-&gt;ExportNetwork();</div><div class="line"><a name="l01557"></a><span class="lineno"> 1557</span>&#160; TestPermuteQuantization validatorQSymmS8(qSymmS8Options, shape, shape);</div><div class="line"><a name="l01558"></a><span class="lineno"> 1558</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQSymmS8.get(), validatorQSymmS8);</div><div class="line"><a name="l01559"></a><span class="lineno"> 1559</span>&#160;</div><div class="line"><a name="l01560"></a><span class="lineno"> 1560</span>&#160; <span class="keyword">const</span> QuantizerOptions qSymmS16options(DataType::QSymmS16);</div><div class="line"><a name="l01561"></a><span class="lineno"> 1561</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQSymmS16 = INetworkQuantizer::Create(network.get(), qSymmS16options)-&gt;ExportNetwork();</div><div class="line"><a name="l01562"></a><span class="lineno"> 1562</span>&#160; TestPermuteQuantization validatorQSymmS16(qSymmS16options, shape, shape);</div><div class="line"><a name="l01563"></a><span class="lineno"> 1563</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQSymmS16.get(), validatorQSymmS16);</div><div class="line"><a name="l01564"></a><span class="lineno"> 1564</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c"><div class="ttname"><a href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">armnn::BoostLogSeverityMapping::info</a></div></div>
<div class="ttc" id="namespacearmnn_html_a120c131df35d78b3a56cb0f07decaf35"><div class="ttname"><a href="namespacearmnn.html#a120c131df35d78b3a56cb0f07decaf35">armnn::CreateStartOfLeakyReluNetwork</a></div><div class="ttdeci">IConnectableLayer * CreateStartOfLeakyReluNetwork(INetwork *network, const TensorInfo &amp;info)</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l01474">QuantizerTest.cpp:1474</a></div></div>
<div class="ttc" id="namespacearmnn_html_a6482907b4c57873e197324f5cb66fd4d"><div class="ttname"><a href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">armnn::VisitLayersTopologically</a></div><div class="ttdeci">void VisitLayersTopologically(const INetwork *inputNetwork, ILayerVisitor &amp;visitor)</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l00193">QuantizerTest.cpp:193</a></div></div>
<div class="ttc" id="namespacearmnn_html_ace74f6f9feb95a964a49d79458232703"><div class="ttname"><a href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">armnn::INetworkPtr</a></div><div class="ttdeci">std::unique_ptr&lt; INetwork, void(*)(INetwork *network)&gt; INetworkPtr</div><div class="ttdef"><b>Definition:</b> <a href="_i_network_8hpp_source.html#l00085">INetwork.hpp:85</a></div></div>
<div class="ttc" id="namespacearmnn_html_a6fff4b4b1b5d4d37c9cf53d0e31c05dd"><div class="ttname"><a href="namespacearmnn.html#a6fff4b4b1b5d4d37c9cf53d0e31c05dd">armnn::CompleteLeakyReluNetwork</a></div><div class="ttdeci">void CompleteLeakyReluNetwork(INetwork *network, IConnectableLayer *activation, IConnectableLayer *layerUnderTest, const TensorInfo &amp;info)</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l01495">QuantizerTest.cpp:1495</a></div></div>
<div class="ttc" id="_file_only_profiling_decorator_tests_8cpp_html_a6560146509197f3e197d8d36f76c1347"><div class="ttname"><a href="_file_only_profiling_decorator_tests_8cpp.html#a6560146509197f3e197d8d36f76c1347">options</a></div><div class="ttdeci">armnn::Runtime::CreationOptions::ExternalProfilingOptions options</div><div class="ttdef"><b>Definition:</b> <a href="_file_only_profiling_decorator_tests_8cpp_source.html#l00045">FileOnlyProfilingDecoratorTests.cpp:45</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a9a6bc66017eb7c132fd6e13ff0dcb540"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a9a6bc66017eb7c132fd6e13ff0dcb540">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[56/79]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
<td>(</td>
<td class="paramtype">QuantizeSpaceToBatch&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_quantizer_test_8cpp_source.html#l01566">1566</a> of file <a class="el" href="_quantizer_test_8cpp_source.html">QuantizerTest.cpp</a>.</p>
<p class="reference">References <a class="el" href="_quantizer_test_8cpp_source.html#l01495">CompleteLeakyReluNetwork()</a>, <a class="el" href="_network_quantizer_8cpp_source.html#l00040">INetworkQuantizer::Create()</a>, <a class="el" href="_network_8cpp_source.html#l00048">INetwork::Create()</a>, <a class="el" href="_quantizer_test_8cpp_source.html#l01474">CreateStartOfLeakyReluNetwork()</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">Float32</a>, <a class="el" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>, <a class="el" href="_file_only_profiling_decorator_tests_8cpp_source.html#l00045">options</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a9d02ea768c081d4bdb2b7cab0b3f510d">QAsymmS8</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7">QSymmS16</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a9945327825b115e93a3b89f4302e76db">QSymmS8</a>, and <a class="el" href="_quantizer_test_8cpp_source.html#l00193">VisitLayersTopologically()</a>.</p>
<div class="fragment"><div class="line"><a name="l01567"></a><span class="lineno"> 1567</span>&#160;{</div><div class="line"><a name="l01568"></a><span class="lineno"> 1568</span>&#160; <span class="keyword">class </span>TestSpaceToBatchQuantization : <span class="keyword">public</span> TestLeakyReLuActivationQuantization</div><div class="line"><a name="l01569"></a><span class="lineno"> 1569</span>&#160; {</div><div class="line"><a name="l01570"></a><span class="lineno"> 1570</span>&#160; <span class="keyword">public</span>:</div><div class="line"><a name="l01571"></a><span class="lineno"> 1571</span>&#160; TestSpaceToBatchQuantization(<span class="keyword">const</span> TensorShape&amp; inputShape, <span class="keyword">const</span> TensorShape&amp; outputShape)</div><div class="line"><a name="l01572"></a><span class="lineno"> 1572</span>&#160; : TestLeakyReLuActivationQuantization(inputShape, outputShape) {}</div><div class="line"><a name="l01573"></a><span class="lineno"> 1573</span>&#160;</div><div class="line"><a name="l01574"></a><span class="lineno"> 1574</span>&#160; TestSpaceToBatchQuantization(<span class="keyword">const</span> QuantizerOptions&amp; <a class="code" href="_file_only_profiling_decorator_tests_8cpp.html#a6560146509197f3e197d8d36f76c1347">options</a>,</div><div class="line"><a name="l01575"></a><span class="lineno"> 1575</span>&#160; <span class="keyword">const</span> TensorShape&amp; inputShape,</div><div class="line"><a name="l01576"></a><span class="lineno"> 1576</span>&#160; <span class="keyword">const</span> TensorShape&amp; outputShape)</div><div class="line"><a name="l01577"></a><span class="lineno"> 1577</span>&#160; : TestLeakyReLuActivationQuantization(options, inputShape, outputShape) {}</div><div class="line"><a name="l01578"></a><span class="lineno"> 1578</span>&#160;</div><div class="line"><a name="l01579"></a><span class="lineno"> 1579</span>&#160; <span class="keywordtype">void</span> VisitSpaceToBatchNdLayer(<span class="keyword">const</span> IConnectableLayer* layer,</div><div class="line"><a name="l01580"></a><span class="lineno"> 1580</span>&#160; <span class="keyword">const</span> SpaceToBatchNdDescriptor&amp; spaceToBatchNdDescriptor,</div><div class="line"><a name="l01581"></a><span class="lineno"> 1581</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span>* name = <span class="keyword">nullptr</span>)<span class="keyword"> override</span></div><div class="line"><a name="l01582"></a><span class="lineno"> 1582</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l01583"></a><span class="lineno"> 1583</span>&#160; boost::ignore_unused(spaceToBatchNdDescriptor, name);</div><div class="line"><a name="l01584"></a><span class="lineno"> 1584</span>&#160; CheckForwardedQuantizationSettings(layer);</div><div class="line"><a name="l01585"></a><span class="lineno"> 1585</span>&#160; }</div><div class="line"><a name="l01586"></a><span class="lineno"> 1586</span>&#160; };</div><div class="line"><a name="l01587"></a><span class="lineno"> 1587</span>&#160;</div><div class="line"><a name="l01588"></a><span class="lineno"> 1588</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> network = INetwork::Create();</div><div class="line"><a name="l01589"></a><span class="lineno"> 1589</span>&#160;</div><div class="line"><a name="l01590"></a><span class="lineno"> 1590</span>&#160; <span class="keyword">const</span> TensorShape shape{1U};</div><div class="line"><a name="l01591"></a><span class="lineno"> 1591</span>&#160; TensorInfo <a class="code" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>(shape, DataType::Float32);</div><div class="line"><a name="l01592"></a><span class="lineno"> 1592</span>&#160;</div><div class="line"><a name="l01593"></a><span class="lineno"> 1593</span>&#160; IConnectableLayer* activation = <a class="code" href="namespacearmnn.html#a120c131df35d78b3a56cb0f07decaf35">CreateStartOfLeakyReluNetwork</a>(network.get(), <a class="code" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>);</div><div class="line"><a name="l01594"></a><span class="lineno"> 1594</span>&#160;</div><div class="line"><a name="l01595"></a><span class="lineno"> 1595</span>&#160; <span class="comment">// Add the layer under test</span></div><div class="line"><a name="l01596"></a><span class="lineno"> 1596</span>&#160; SpaceToBatchNdDescriptor descriptor;</div><div class="line"><a name="l01597"></a><span class="lineno"> 1597</span>&#160; IConnectableLayer* spaceToBatch = network-&gt;AddSpaceToBatchNdLayer(descriptor);</div><div class="line"><a name="l01598"></a><span class="lineno"> 1598</span>&#160;</div><div class="line"><a name="l01599"></a><span class="lineno"> 1599</span>&#160; <a class="code" href="namespacearmnn.html#a6fff4b4b1b5d4d37c9cf53d0e31c05dd">CompleteLeakyReluNetwork</a>(network.get(), activation, spaceToBatch, <a class="code" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>);</div><div class="line"><a name="l01600"></a><span class="lineno"> 1600</span>&#160;</div><div class="line"><a name="l01601"></a><span class="lineno"> 1601</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQAsymmU8 = INetworkQuantizer::Create(network.get())-&gt;ExportNetwork();</div><div class="line"><a name="l01602"></a><span class="lineno"> 1602</span>&#160; TestSpaceToBatchQuantization validatorQAsymmU8(shape, shape);</div><div class="line"><a name="l01603"></a><span class="lineno"> 1603</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQAsymmU8.get(), validatorQAsymmU8);</div><div class="line"><a name="l01604"></a><span class="lineno"> 1604</span>&#160;</div><div class="line"><a name="l01605"></a><span class="lineno"> 1605</span>&#160; <span class="keyword">const</span> QuantizerOptions qAsymmS8Options(DataType::QAsymmS8);</div><div class="line"><a name="l01606"></a><span class="lineno"> 1606</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQAsymmS8 = INetworkQuantizer::Create(network.get(), qAsymmS8Options)-&gt;ExportNetwork();</div><div class="line"><a name="l01607"></a><span class="lineno"> 1607</span>&#160; TestSpaceToBatchQuantization validatorQAsymmS8(qAsymmS8Options, shape, shape);</div><div class="line"><a name="l01608"></a><span class="lineno"> 1608</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQAsymmS8.get(), validatorQAsymmS8);</div><div class="line"><a name="l01609"></a><span class="lineno"> 1609</span>&#160;</div><div class="line"><a name="l01610"></a><span class="lineno"> 1610</span>&#160; <span class="keyword">const</span> QuantizerOptions qSymmS8Options(DataType::QSymmS8);</div><div class="line"><a name="l01611"></a><span class="lineno"> 1611</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQSymmS8 = INetworkQuantizer::Create(network.get(), qSymmS8Options)-&gt;ExportNetwork();</div><div class="line"><a name="l01612"></a><span class="lineno"> 1612</span>&#160; TestSpaceToBatchQuantization validatorQSymmS8(qSymmS8Options, shape, shape);</div><div class="line"><a name="l01613"></a><span class="lineno"> 1613</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQSymmS8.get(), validatorQSymmS8);</div><div class="line"><a name="l01614"></a><span class="lineno"> 1614</span>&#160;</div><div class="line"><a name="l01615"></a><span class="lineno"> 1615</span>&#160; <span class="keyword">const</span> QuantizerOptions qSymmS16options(DataType::QSymmS16);</div><div class="line"><a name="l01616"></a><span class="lineno"> 1616</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQSymmS16 = INetworkQuantizer::Create(network.get(), qSymmS16options)-&gt;ExportNetwork();</div><div class="line"><a name="l01617"></a><span class="lineno"> 1617</span>&#160; TestSpaceToBatchQuantization validatorQSymmS16(qSymmS16options, shape, shape);</div><div class="line"><a name="l01618"></a><span class="lineno"> 1618</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQSymmS16.get(), validatorQSymmS16);</div><div class="line"><a name="l01619"></a><span class="lineno"> 1619</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c"><div class="ttname"><a href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">armnn::BoostLogSeverityMapping::info</a></div></div>
<div class="ttc" id="namespacearmnn_html_a120c131df35d78b3a56cb0f07decaf35"><div class="ttname"><a href="namespacearmnn.html#a120c131df35d78b3a56cb0f07decaf35">armnn::CreateStartOfLeakyReluNetwork</a></div><div class="ttdeci">IConnectableLayer * CreateStartOfLeakyReluNetwork(INetwork *network, const TensorInfo &amp;info)</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l01474">QuantizerTest.cpp:1474</a></div></div>
<div class="ttc" id="namespacearmnn_html_a6482907b4c57873e197324f5cb66fd4d"><div class="ttname"><a href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">armnn::VisitLayersTopologically</a></div><div class="ttdeci">void VisitLayersTopologically(const INetwork *inputNetwork, ILayerVisitor &amp;visitor)</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l00193">QuantizerTest.cpp:193</a></div></div>
<div class="ttc" id="namespacearmnn_html_ace74f6f9feb95a964a49d79458232703"><div class="ttname"><a href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">armnn::INetworkPtr</a></div><div class="ttdeci">std::unique_ptr&lt; INetwork, void(*)(INetwork *network)&gt; INetworkPtr</div><div class="ttdef"><b>Definition:</b> <a href="_i_network_8hpp_source.html#l00085">INetwork.hpp:85</a></div></div>
<div class="ttc" id="namespacearmnn_html_a6fff4b4b1b5d4d37c9cf53d0e31c05dd"><div class="ttname"><a href="namespacearmnn.html#a6fff4b4b1b5d4d37c9cf53d0e31c05dd">armnn::CompleteLeakyReluNetwork</a></div><div class="ttdeci">void CompleteLeakyReluNetwork(INetwork *network, IConnectableLayer *activation, IConnectableLayer *layerUnderTest, const TensorInfo &amp;info)</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l01495">QuantizerTest.cpp:1495</a></div></div>
<div class="ttc" id="_file_only_profiling_decorator_tests_8cpp_html_a6560146509197f3e197d8d36f76c1347"><div class="ttname"><a href="_file_only_profiling_decorator_tests_8cpp.html#a6560146509197f3e197d8d36f76c1347">options</a></div><div class="ttdeci">armnn::Runtime::CreationOptions::ExternalProfilingOptions options</div><div class="ttdef"><b>Definition:</b> <a href="_file_only_profiling_decorator_tests_8cpp_source.html#l00045">FileOnlyProfilingDecoratorTests.cpp:45</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="aa78ce2bbe65cae8f3d60839467dbfc83"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa78ce2bbe65cae8f3d60839467dbfc83">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[57/79]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
<td>(</td>
<td class="paramtype">QuantizeSpaceToDepth&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_quantizer_test_8cpp_source.html#l01621">1621</a> of file <a class="el" href="_quantizer_test_8cpp_source.html">QuantizerTest.cpp</a>.</p>
<p class="reference">References <a class="el" href="_quantizer_test_8cpp_source.html#l01495">CompleteLeakyReluNetwork()</a>, <a class="el" href="_network_quantizer_8cpp_source.html#l00040">INetworkQuantizer::Create()</a>, <a class="el" href="_network_8cpp_source.html#l00048">INetwork::Create()</a>, <a class="el" href="_quantizer_test_8cpp_source.html#l01474">CreateStartOfLeakyReluNetwork()</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">Float32</a>, <a class="el" href="_quantizer_test_8cpp_source.html#l00035">g_AsymmS8QuantizationBase</a>, <a class="el" href="_quantizer_test_8cpp_source.html#l00033">g_AsymmU8QuantizationBase</a>, <a class="el" href="_quantizer_test_8cpp_source.html#l00037">g_SymmS16QuantizationBase</a>, <a class="el" href="_quantizer_test_8cpp_source.html#l00036">g_SymmS8QuantizationBase</a>, <a class="el" href="classarmnn_1_1_i_connectable_layer.html#a80ac4eda2e7f2757ec9dd96fc96dbd16">IConnectableLayer::GetOutputSlot()</a>, <a class="el" href="classarmnn_1_1_i_output_slot.html#a9943775a364fc4ab53b85ac88f311886">IOutputSlot::GetTensorInfo()</a>, <a class="el" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>, <a class="el" href="_file_only_profiling_decorator_tests_8cpp_source.html#l00045">options</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a9d02ea768c081d4bdb2b7cab0b3f510d">QAsymmS8</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7">QSymmS16</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a9945327825b115e93a3b89f4302e76db">QSymmS8</a>, and <a class="el" href="_quantizer_test_8cpp_source.html#l00193">VisitLayersTopologically()</a>.</p>
<div class="fragment"><div class="line"><a name="l01622"></a><span class="lineno"> 1622</span>&#160;{</div><div class="line"><a name="l01623"></a><span class="lineno"> 1623</span>&#160; <span class="keyword">class </span>TestSpaceToDepthQuantization : <span class="keyword">public</span> TestLeakyReLuActivationQuantization</div><div class="line"><a name="l01624"></a><span class="lineno"> 1624</span>&#160; {</div><div class="line"><a name="l01625"></a><span class="lineno"> 1625</span>&#160; <span class="keyword">public</span>:</div><div class="line"><a name="l01626"></a><span class="lineno"> 1626</span>&#160; TestSpaceToDepthQuantization(<span class="keyword">const</span> TensorShape&amp; inputShape, <span class="keyword">const</span> TensorShape&amp; outputShape)</div><div class="line"><a name="l01627"></a><span class="lineno"> 1627</span>&#160; : TestLeakyReLuActivationQuantization(inputShape, outputShape)</div><div class="line"><a name="l01628"></a><span class="lineno"> 1628</span>&#160; {}</div><div class="line"><a name="l01629"></a><span class="lineno"> 1629</span>&#160;</div><div class="line"><a name="l01630"></a><span class="lineno"> 1630</span>&#160; TestSpaceToDepthQuantization(<span class="keyword">const</span> QuantizerOptions&amp; <a class="code" href="_file_only_profiling_decorator_tests_8cpp.html#a6560146509197f3e197d8d36f76c1347">options</a>,</div><div class="line"><a name="l01631"></a><span class="lineno"> 1631</span>&#160; <span class="keyword">const</span> TensorShape&amp; inputShape,</div><div class="line"><a name="l01632"></a><span class="lineno"> 1632</span>&#160; <span class="keyword">const</span> TensorShape&amp; outputShape)</div><div class="line"><a name="l01633"></a><span class="lineno"> 1633</span>&#160; : TestLeakyReLuActivationQuantization(options, inputShape, outputShape)</div><div class="line"><a name="l01634"></a><span class="lineno"> 1634</span>&#160; {}</div><div class="line"><a name="l01635"></a><span class="lineno"> 1635</span>&#160;</div><div class="line"><a name="l01636"></a><span class="lineno"> 1636</span>&#160; <span class="keywordtype">void</span> VisitSpaceToDepthLayer(<span class="keyword">const</span> IConnectableLayer* layer,</div><div class="line"><a name="l01637"></a><span class="lineno"> 1637</span>&#160; <span class="keyword">const</span> SpaceToDepthDescriptor&amp;,</div><div class="line"><a name="l01638"></a><span class="lineno"> 1638</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span>* = <span class="keyword">nullptr</span>)<span class="keyword"> override</span></div><div class="line"><a name="l01639"></a><span class="lineno"> 1639</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l01640"></a><span class="lineno"> 1640</span>&#160; TensorInfo <a class="code" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a> = layer-&gt;GetOutputSlot(0).GetTensorInfo();</div><div class="line"><a name="l01641"></a><span class="lineno"> 1641</span>&#160; TestQuantizationParams(info,</div><div class="line"><a name="l01642"></a><span class="lineno"> 1642</span>&#160; { 30.0f / <a class="code" href="namespacearmnn.html#a19994153bdbd7710f0af3973403bc4cc">g_AsymmU8QuantizationBase</a>, 128 },</div><div class="line"><a name="l01643"></a><span class="lineno"> 1643</span>&#160; { 30.0f / <a class="code" href="namespacearmnn.html#a09bdfaa922d72ce0d9ec014dfa8f8c95">g_AsymmS8QuantizationBase</a>, 0 },</div><div class="line"><a name="l01644"></a><span class="lineno"> 1644</span>&#160; { 15.0f / <a class="code" href="namespacearmnn.html#acd7f8820d124166a38c95bc8ad38811b">g_SymmS8QuantizationBase</a>, 0 },</div><div class="line"><a name="l01645"></a><span class="lineno"> 1645</span>&#160; { 15.0f / <a class="code" href="namespacearmnn.html#a1465480794787d2278d3f0d2e6d887b4">g_SymmS16QuantizationBase</a>, 0 });</div><div class="line"><a name="l01646"></a><span class="lineno"> 1646</span>&#160; }</div><div class="line"><a name="l01647"></a><span class="lineno"> 1647</span>&#160; };</div><div class="line"><a name="l01648"></a><span class="lineno"> 1648</span>&#160;</div><div class="line"><a name="l01649"></a><span class="lineno"> 1649</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> network = INetwork::Create();</div><div class="line"><a name="l01650"></a><span class="lineno"> 1650</span>&#160;</div><div class="line"><a name="l01651"></a><span class="lineno"> 1651</span>&#160; <span class="keyword">const</span> TensorShape shape{ 1u };</div><div class="line"><a name="l01652"></a><span class="lineno"> 1652</span>&#160; TensorInfo info(shape, DataType::Float32);</div><div class="line"><a name="l01653"></a><span class="lineno"> 1653</span>&#160;</div><div class="line"><a name="l01654"></a><span class="lineno"> 1654</span>&#160; IConnectableLayer* activation = <a class="code" href="namespacearmnn.html#a120c131df35d78b3a56cb0f07decaf35">CreateStartOfLeakyReluNetwork</a>(network.get(), info);</div><div class="line"><a name="l01655"></a><span class="lineno"> 1655</span>&#160; IConnectableLayer* spaceToDepth = network-&gt;AddSpaceToDepthLayer(SpaceToDepthDescriptor());</div><div class="line"><a name="l01656"></a><span class="lineno"> 1656</span>&#160;</div><div class="line"><a name="l01657"></a><span class="lineno"> 1657</span>&#160; <a class="code" href="namespacearmnn.html#a6fff4b4b1b5d4d37c9cf53d0e31c05dd">CompleteLeakyReluNetwork</a>(network.get(), activation, spaceToDepth, info);</div><div class="line"><a name="l01658"></a><span class="lineno"> 1658</span>&#160;</div><div class="line"><a name="l01659"></a><span class="lineno"> 1659</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQAsymmU8 = INetworkQuantizer::Create(network.get())-&gt;ExportNetwork();</div><div class="line"><a name="l01660"></a><span class="lineno"> 1660</span>&#160; TestSpaceToDepthQuantization validatorQAsymmU8(shape, shape);</div><div class="line"><a name="l01661"></a><span class="lineno"> 1661</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQAsymmU8.get(), validatorQAsymmU8);</div><div class="line"><a name="l01662"></a><span class="lineno"> 1662</span>&#160;</div><div class="line"><a name="l01663"></a><span class="lineno"> 1663</span>&#160; <span class="keyword">const</span> QuantizerOptions qAsymmS8Options(DataType::QAsymmS8);</div><div class="line"><a name="l01664"></a><span class="lineno"> 1664</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQAsymmS8 = INetworkQuantizer::Create(network.get(), qAsymmS8Options)-&gt;ExportNetwork();</div><div class="line"><a name="l01665"></a><span class="lineno"> 1665</span>&#160; TestSpaceToDepthQuantization validatorQAsymmS8(qAsymmS8Options, shape, shape);</div><div class="line"><a name="l01666"></a><span class="lineno"> 1666</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQAsymmS8.get(), validatorQAsymmS8);</div><div class="line"><a name="l01667"></a><span class="lineno"> 1667</span>&#160;</div><div class="line"><a name="l01668"></a><span class="lineno"> 1668</span>&#160; <span class="keyword">const</span> QuantizerOptions qSymmS8Options(DataType::QSymmS8);</div><div class="line"><a name="l01669"></a><span class="lineno"> 1669</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQSymmS8 = INetworkQuantizer::Create(network.get(), qSymmS8Options)-&gt;ExportNetwork();</div><div class="line"><a name="l01670"></a><span class="lineno"> 1670</span>&#160; TestSpaceToDepthQuantization validatorQSymmS8(qSymmS8Options, shape, shape);</div><div class="line"><a name="l01671"></a><span class="lineno"> 1671</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQSymmS8.get(), validatorQSymmS8);</div><div class="line"><a name="l01672"></a><span class="lineno"> 1672</span>&#160;</div><div class="line"><a name="l01673"></a><span class="lineno"> 1673</span>&#160; <span class="keyword">const</span> QuantizerOptions qSymmS16options(DataType::QSymmS16);</div><div class="line"><a name="l01674"></a><span class="lineno"> 1674</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQSymmS16 = INetworkQuantizer::Create(network.get(), qSymmS16options)-&gt;ExportNetwork();</div><div class="line"><a name="l01675"></a><span class="lineno"> 1675</span>&#160; TestSpaceToDepthQuantization validatorQSymmS16(qSymmS16options, shape, shape);</div><div class="line"><a name="l01676"></a><span class="lineno"> 1676</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQSymmS16.get(), validatorQSymmS16);</div><div class="line"><a name="l01677"></a><span class="lineno"> 1677</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a1465480794787d2278d3f0d2e6d887b4"><div class="ttname"><a href="namespacearmnn.html#a1465480794787d2278d3f0d2e6d887b4">armnn::g_SymmS16QuantizationBase</a></div><div class="ttdeci">const float g_SymmS16QuantizationBase</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l00037">QuantizerTest.cpp:37</a></div></div>
<div class="ttc" id="namespacearmnn_html_acd7f8820d124166a38c95bc8ad38811b"><div class="ttname"><a href="namespacearmnn.html#acd7f8820d124166a38c95bc8ad38811b">armnn::g_SymmS8QuantizationBase</a></div><div class="ttdeci">const float g_SymmS8QuantizationBase</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l00036">QuantizerTest.cpp:36</a></div></div>
<div class="ttc" id="namespacearmnn_html_a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c"><div class="ttname"><a href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">armnn::BoostLogSeverityMapping::info</a></div></div>
<div class="ttc" id="namespacearmnn_html_a120c131df35d78b3a56cb0f07decaf35"><div class="ttname"><a href="namespacearmnn.html#a120c131df35d78b3a56cb0f07decaf35">armnn::CreateStartOfLeakyReluNetwork</a></div><div class="ttdeci">IConnectableLayer * CreateStartOfLeakyReluNetwork(INetwork *network, const TensorInfo &amp;info)</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l01474">QuantizerTest.cpp:1474</a></div></div>
<div class="ttc" id="namespacearmnn_html_a6482907b4c57873e197324f5cb66fd4d"><div class="ttname"><a href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">armnn::VisitLayersTopologically</a></div><div class="ttdeci">void VisitLayersTopologically(const INetwork *inputNetwork, ILayerVisitor &amp;visitor)</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l00193">QuantizerTest.cpp:193</a></div></div>
<div class="ttc" id="namespacearmnn_html_ace74f6f9feb95a964a49d79458232703"><div class="ttname"><a href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">armnn::INetworkPtr</a></div><div class="ttdeci">std::unique_ptr&lt; INetwork, void(*)(INetwork *network)&gt; INetworkPtr</div><div class="ttdef"><b>Definition:</b> <a href="_i_network_8hpp_source.html#l00085">INetwork.hpp:85</a></div></div>
<div class="ttc" id="namespacearmnn_html_a09bdfaa922d72ce0d9ec014dfa8f8c95"><div class="ttname"><a href="namespacearmnn.html#a09bdfaa922d72ce0d9ec014dfa8f8c95">armnn::g_AsymmS8QuantizationBase</a></div><div class="ttdeci">const float g_AsymmS8QuantizationBase</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l00035">QuantizerTest.cpp:35</a></div></div>
<div class="ttc" id="namespacearmnn_html_a19994153bdbd7710f0af3973403bc4cc"><div class="ttname"><a href="namespacearmnn.html#a19994153bdbd7710f0af3973403bc4cc">armnn::g_AsymmU8QuantizationBase</a></div><div class="ttdeci">const float g_AsymmU8QuantizationBase</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l00033">QuantizerTest.cpp:33</a></div></div>
<div class="ttc" id="namespacearmnn_html_a6fff4b4b1b5d4d37c9cf53d0e31c05dd"><div class="ttname"><a href="namespacearmnn.html#a6fff4b4b1b5d4d37c9cf53d0e31c05dd">armnn::CompleteLeakyReluNetwork</a></div><div class="ttdeci">void CompleteLeakyReluNetwork(INetwork *network, IConnectableLayer *activation, IConnectableLayer *layerUnderTest, const TensorInfo &amp;info)</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l01495">QuantizerTest.cpp:1495</a></div></div>
<div class="ttc" id="_file_only_profiling_decorator_tests_8cpp_html_a6560146509197f3e197d8d36f76c1347"><div class="ttname"><a href="_file_only_profiling_decorator_tests_8cpp.html#a6560146509197f3e197d8d36f76c1347">options</a></div><div class="ttdeci">armnn::Runtime::CreationOptions::ExternalProfilingOptions options</div><div class="ttdef"><b>Definition:</b> <a href="_file_only_profiling_decorator_tests_8cpp_source.html#l00045">FileOnlyProfilingDecoratorTests.cpp:45</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="aaa86b6903e41d2d2828e00b32f872375"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aaa86b6903e41d2d2828e00b32f872375">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[58/79]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
<td>(</td>
<td class="paramtype">QuantizePooling2d&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_quantizer_test_8cpp_source.html#l01679">1679</a> of file <a class="el" href="_quantizer_test_8cpp_source.html">QuantizerTest.cpp</a>.</p>
<p class="reference">References <a class="el" href="classarmnn_1_1_i_output_slot.html#ac1835f8756a9f03c02fcf9664e3a0fce">IOutputSlot::Connect()</a>, <a class="el" href="_network_quantizer_8cpp_source.html#l00040">INetworkQuantizer::Create()</a>, <a class="el" href="_network_8cpp_source.html#l00048">INetwork::Create()</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">Float32</a>, <a class="el" href="classarmnn_1_1_i_connectable_layer.html#a6ec9e0eb66d7d6a01240492a0b18104c">IConnectableLayer::GetInputSlot()</a>, <a class="el" href="classarmnn_1_1_i_connectable_layer.html#a80ac4eda2e7f2757ec9dd96fc96dbd16">IConnectableLayer::GetOutputSlot()</a>, <a class="el" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>, <a class="el" href="namespacearmnn.html#a56297e0f7b215eea46c818cb7528d9eaacb7667f5ec2f6e8a5943b781ba6c2735">LeakyReLu</a>, <a class="el" href="_descriptors_8hpp_source.html#l00037">ActivationDescriptor::m_A</a>, <a class="el" href="_descriptors_8hpp_source.html#l00039">ActivationDescriptor::m_B</a>, <a class="el" href="_descriptors_8hpp_source.html#l00035">ActivationDescriptor::m_Function</a>, <a class="el" href="_file_only_profiling_decorator_tests_8cpp_source.html#l00045">options</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a9d02ea768c081d4bdb2b7cab0b3f510d">QAsymmS8</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7">QSymmS16</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a9945327825b115e93a3b89f4302e76db">QSymmS8</a>, <a class="el" href="classarmnn_1_1_i_output_slot.html#a5ee4a6c9a2481245487b1b1a70d20fd0">IOutputSlot::SetTensorInfo()</a>, and <a class="el" href="_quantizer_test_8cpp_source.html#l00193">VisitLayersTopologically()</a>.</p>
<div class="fragment"><div class="line"><a name="l01680"></a><span class="lineno"> 1680</span>&#160;{</div><div class="line"><a name="l01681"></a><span class="lineno"> 1681</span>&#160; <span class="keyword">class </span>TestPooling2dQuantization : <span class="keyword">public</span> TestLeakyReLuActivationQuantization</div><div class="line"><a name="l01682"></a><span class="lineno"> 1682</span>&#160; {</div><div class="line"><a name="l01683"></a><span class="lineno"> 1683</span>&#160; <span class="keyword">public</span>:</div><div class="line"><a name="l01684"></a><span class="lineno"> 1684</span>&#160; TestPooling2dQuantization(<span class="keyword">const</span> TensorShape&amp; inputShape, <span class="keyword">const</span> TensorShape&amp; outputShape)</div><div class="line"><a name="l01685"></a><span class="lineno"> 1685</span>&#160; : TestLeakyReLuActivationQuantization(inputShape, outputShape) {}</div><div class="line"><a name="l01686"></a><span class="lineno"> 1686</span>&#160;</div><div class="line"><a name="l01687"></a><span class="lineno"> 1687</span>&#160; TestPooling2dQuantization(<span class="keyword">const</span> QuantizerOptions&amp; <a class="code" href="_file_only_profiling_decorator_tests_8cpp.html#a6560146509197f3e197d8d36f76c1347">options</a>,</div><div class="line"><a name="l01688"></a><span class="lineno"> 1688</span>&#160; <span class="keyword">const</span> TensorShape&amp; inputShape,</div><div class="line"><a name="l01689"></a><span class="lineno"> 1689</span>&#160; <span class="keyword">const</span> TensorShape&amp; outputShape)</div><div class="line"><a name="l01690"></a><span class="lineno"> 1690</span>&#160; : TestLeakyReLuActivationQuantization(options, inputShape, outputShape) {}</div><div class="line"><a name="l01691"></a><span class="lineno"> 1691</span>&#160;</div><div class="line"><a name="l01692"></a><span class="lineno"> 1692</span>&#160; <span class="keywordtype">void</span> VisitPooling2dLayer(<span class="keyword">const</span> IConnectableLayer* layer,</div><div class="line"><a name="l01693"></a><span class="lineno"> 1693</span>&#160; <span class="keyword">const</span> Pooling2dDescriptor&amp; desc,</div><div class="line"><a name="l01694"></a><span class="lineno"> 1694</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span>* name = <span class="keyword">nullptr</span>)<span class="keyword"> override</span></div><div class="line"><a name="l01695"></a><span class="lineno"> 1695</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l01696"></a><span class="lineno"> 1696</span>&#160; boost::ignore_unused(desc, name);</div><div class="line"><a name="l01697"></a><span class="lineno"> 1697</span>&#160; CheckForwardedQuantizationSettings(layer);</div><div class="line"><a name="l01698"></a><span class="lineno"> 1698</span>&#160; }</div><div class="line"><a name="l01699"></a><span class="lineno"> 1699</span>&#160; };</div><div class="line"><a name="l01700"></a><span class="lineno"> 1700</span>&#160;</div><div class="line"><a name="l01701"></a><span class="lineno"> 1701</span>&#160; <span class="keyword">auto</span> network = INetwork::Create();</div><div class="line"><a name="l01702"></a><span class="lineno"> 1702</span>&#160;</div><div class="line"><a name="l01703"></a><span class="lineno"> 1703</span>&#160; TensorShape shape{1U};</div><div class="line"><a name="l01704"></a><span class="lineno"> 1704</span>&#160; TensorInfo <a class="code" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>(shape, DataType::Float32);</div><div class="line"><a name="l01705"></a><span class="lineno"> 1705</span>&#160;</div><div class="line"><a name="l01706"></a><span class="lineno"> 1706</span>&#160; Pooling2dDescriptor desc;</div><div class="line"><a name="l01707"></a><span class="lineno"> 1707</span>&#160; ActivationDescriptor activationDescriptor;</div><div class="line"><a name="l01708"></a><span class="lineno"> 1708</span>&#160; activationDescriptor.m_Function = ActivationFunction::LeakyReLu;</div><div class="line"><a name="l01709"></a><span class="lineno"> 1709</span>&#160; activationDescriptor.m_A = 3.5f;</div><div class="line"><a name="l01710"></a><span class="lineno"> 1710</span>&#160; activationDescriptor.m_B = -10.0f;</div><div class="line"><a name="l01711"></a><span class="lineno"> 1711</span>&#160;</div><div class="line"><a name="l01712"></a><span class="lineno"> 1712</span>&#160; <span class="comment">// Add the layers</span></div><div class="line"><a name="l01713"></a><span class="lineno"> 1713</span>&#160; IConnectableLayer* input0 = network-&gt;AddInputLayer(0);</div><div class="line"><a name="l01714"></a><span class="lineno"> 1714</span>&#160; IConnectableLayer* activation = network-&gt;AddActivationLayer(activationDescriptor);</div><div class="line"><a name="l01715"></a><span class="lineno"> 1715</span>&#160; IConnectableLayer* pooling2d = network-&gt;AddPooling2dLayer(desc);</div><div class="line"><a name="l01716"></a><span class="lineno"> 1716</span>&#160; IConnectableLayer* output = network-&gt;AddOutputLayer(3);</div><div class="line"><a name="l01717"></a><span class="lineno"> 1717</span>&#160;</div><div class="line"><a name="l01718"></a><span class="lineno"> 1718</span>&#160; <span class="comment">// Establish connections</span></div><div class="line"><a name="l01719"></a><span class="lineno"> 1719</span>&#160; input0-&gt;GetOutputSlot(0).Connect(activation-&gt;GetInputSlot(0));</div><div class="line"><a name="l01720"></a><span class="lineno"> 1720</span>&#160; activation-&gt;GetOutputSlot(0).Connect(pooling2d-&gt;GetInputSlot(0));</div><div class="line"><a name="l01721"></a><span class="lineno"> 1721</span>&#160; pooling2d-&gt;GetOutputSlot(0).Connect(output-&gt;GetInputSlot(0));</div><div class="line"><a name="l01722"></a><span class="lineno"> 1722</span>&#160;</div><div class="line"><a name="l01723"></a><span class="lineno"> 1723</span>&#160; <span class="comment">// Set TensorInfo</span></div><div class="line"><a name="l01724"></a><span class="lineno"> 1724</span>&#160; input0-&gt;GetOutputSlot(0).SetTensorInfo(info);</div><div class="line"><a name="l01725"></a><span class="lineno"> 1725</span>&#160; activation-&gt;GetOutputSlot(0).SetTensorInfo(info);</div><div class="line"><a name="l01726"></a><span class="lineno"> 1726</span>&#160; pooling2d-&gt;GetOutputSlot(0).SetTensorInfo(info);</div><div class="line"><a name="l01727"></a><span class="lineno"> 1727</span>&#160;</div><div class="line"><a name="l01728"></a><span class="lineno"> 1728</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQAsymmU8 = INetworkQuantizer::Create(network.get())-&gt;ExportNetwork();</div><div class="line"><a name="l01729"></a><span class="lineno"> 1729</span>&#160; TestPooling2dQuantization validatorQAsymmU8(shape, shape);</div><div class="line"><a name="l01730"></a><span class="lineno"> 1730</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQAsymmU8.get(), validatorQAsymmU8);</div><div class="line"><a name="l01731"></a><span class="lineno"> 1731</span>&#160;</div><div class="line"><a name="l01732"></a><span class="lineno"> 1732</span>&#160; <span class="keyword">const</span> QuantizerOptions qAsymmS8Options(DataType::QAsymmS8);</div><div class="line"><a name="l01733"></a><span class="lineno"> 1733</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQAsymmS8 = INetworkQuantizer::Create(network.get(), qAsymmS8Options)-&gt;ExportNetwork();</div><div class="line"><a name="l01734"></a><span class="lineno"> 1734</span>&#160; TestPooling2dQuantization validatorQAsymmS8(qAsymmS8Options, shape, shape);</div><div class="line"><a name="l01735"></a><span class="lineno"> 1735</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQAsymmS8.get(), validatorQAsymmS8);</div><div class="line"><a name="l01736"></a><span class="lineno"> 1736</span>&#160;</div><div class="line"><a name="l01737"></a><span class="lineno"> 1737</span>&#160; <span class="keyword">const</span> QuantizerOptions qSymmS8Options(DataType::QSymmS8);</div><div class="line"><a name="l01738"></a><span class="lineno"> 1738</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQSymmS8 = INetworkQuantizer::Create(network.get(), qSymmS8Options)-&gt;ExportNetwork();</div><div class="line"><a name="l01739"></a><span class="lineno"> 1739</span>&#160; TestPooling2dQuantization validatorQSymmS8(qSymmS8Options, shape, shape);</div><div class="line"><a name="l01740"></a><span class="lineno"> 1740</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQSymmS8.get(), validatorQSymmS8);</div><div class="line"><a name="l01741"></a><span class="lineno"> 1741</span>&#160;</div><div class="line"><a name="l01742"></a><span class="lineno"> 1742</span>&#160; <span class="keyword">const</span> QuantizerOptions qSymmS16options(DataType::QSymmS16);</div><div class="line"><a name="l01743"></a><span class="lineno"> 1743</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQSymmS16 = INetworkQuantizer::Create(network.get(), qSymmS16options)-&gt;ExportNetwork();</div><div class="line"><a name="l01744"></a><span class="lineno"> 1744</span>&#160; TestPooling2dQuantization validatorQSymmS16(qSymmS16options, shape, shape);</div><div class="line"><a name="l01745"></a><span class="lineno"> 1745</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQSymmS16.get(), validatorQSymmS16);</div><div class="line"><a name="l01746"></a><span class="lineno"> 1746</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c"><div class="ttname"><a href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">armnn::BoostLogSeverityMapping::info</a></div></div>
<div class="ttc" id="namespacearmnn_html_a6482907b4c57873e197324f5cb66fd4d"><div class="ttname"><a href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">armnn::VisitLayersTopologically</a></div><div class="ttdeci">void VisitLayersTopologically(const INetwork *inputNetwork, ILayerVisitor &amp;visitor)</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l00193">QuantizerTest.cpp:193</a></div></div>
<div class="ttc" id="namespacearmnn_html_ace74f6f9feb95a964a49d79458232703"><div class="ttname"><a href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">armnn::INetworkPtr</a></div><div class="ttdeci">std::unique_ptr&lt; INetwork, void(*)(INetwork *network)&gt; INetworkPtr</div><div class="ttdef"><b>Definition:</b> <a href="_i_network_8hpp_source.html#l00085">INetwork.hpp:85</a></div></div>
<div class="ttc" id="_file_only_profiling_decorator_tests_8cpp_html_a6560146509197f3e197d8d36f76c1347"><div class="ttname"><a href="_file_only_profiling_decorator_tests_8cpp.html#a6560146509197f3e197d8d36f76c1347">options</a></div><div class="ttdeci">armnn::Runtime::CreationOptions::ExternalProfilingOptions options</div><div class="ttdef"><b>Definition:</b> <a href="_file_only_profiling_decorator_tests_8cpp_source.html#l00045">FileOnlyProfilingDecoratorTests.cpp:45</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a369051e180246c66b20c93de5fecee8c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a369051e180246c66b20c93de5fecee8c">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[59/79]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
<td>(</td>
<td class="paramtype"><a class="el" href="namespacearmnn.html#a0e2bce68a1f7eff47ead4d9a2804eb91">QuantizeConstant</a>&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_quantizer_test_8cpp_source.html#l01748">1748</a> of file <a class="el" href="_quantizer_test_8cpp_source.html">QuantizerTest.cpp</a>.</p>
<p class="reference">References <a class="el" href="classarmnn_1_1_i_output_slot.html#ac1835f8756a9f03c02fcf9664e3a0fce">IOutputSlot::Connect()</a>, <a class="el" href="_network_quantizer_8cpp_source.html#l00040">INetworkQuantizer::Create()</a>, <a class="el" href="_network_8cpp_source.html#l00048">INetwork::Create()</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">Float32</a>, <a class="el" href="_quantizer_test_8cpp_source.html#l00035">g_AsymmS8QuantizationBase</a>, <a class="el" href="_quantizer_test_8cpp_source.html#l00033">g_AsymmU8QuantizationBase</a>, <a class="el" href="_quantizer_test_8cpp_source.html#l00037">g_SymmS16QuantizationBase</a>, <a class="el" href="_quantizer_test_8cpp_source.html#l00036">g_SymmS8QuantizationBase</a>, <a class="el" href="classarmnn_1_1_i_connectable_layer.html#a6ec9e0eb66d7d6a01240492a0b18104c">IConnectableLayer::GetInputSlot()</a>, <a class="el" href="classarmnn_1_1_i_connectable_layer.html#a80ac4eda2e7f2757ec9dd96fc96dbd16">IConnectableLayer::GetOutputSlot()</a>, <a class="el" href="classarmnn_1_1_i_output_slot.html#a9943775a364fc4ab53b85ac88f311886">IOutputSlot::GetTensorInfo()</a>, <a class="el" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>, <a class="el" href="_file_only_profiling_decorator_tests_8cpp_source.html#l00045">options</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a9d02ea768c081d4bdb2b7cab0b3f510d">QAsymmS8</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7">QSymmS16</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a9945327825b115e93a3b89f4302e76db">QSymmS8</a>, <a class="el" href="classarmnn_1_1_i_output_slot.html#a5ee4a6c9a2481245487b1b1a70d20fd0">IOutputSlot::SetTensorInfo()</a>, and <a class="el" href="_quantizer_test_8cpp_source.html#l00193">VisitLayersTopologically()</a>.</p>
<div class="fragment"><div class="line"><a name="l01749"></a><span class="lineno"> 1749</span>&#160;{</div><div class="line"><a name="l01750"></a><span class="lineno"> 1750</span>&#160; <span class="keyword">class </span>TestConstantQuantization : <span class="keyword">public</span> TestAdditionQuantization</div><div class="line"><a name="l01751"></a><span class="lineno"> 1751</span>&#160; {</div><div class="line"><a name="l01752"></a><span class="lineno"> 1752</span>&#160; <span class="keyword">public</span>:</div><div class="line"><a name="l01753"></a><span class="lineno"> 1753</span>&#160; TestConstantQuantization(<span class="keyword">const</span> TensorShape&amp; inputShape, <span class="keyword">const</span> TensorShape&amp; outputShape)</div><div class="line"><a name="l01754"></a><span class="lineno"> 1754</span>&#160; : TestAdditionQuantization(inputShape, outputShape) {}</div><div class="line"><a name="l01755"></a><span class="lineno"> 1755</span>&#160;</div><div class="line"><a name="l01756"></a><span class="lineno"> 1756</span>&#160; TestConstantQuantization(<span class="keyword">const</span> QuantizerOptions&amp; <a class="code" href="_file_only_profiling_decorator_tests_8cpp.html#a6560146509197f3e197d8d36f76c1347">options</a>,</div><div class="line"><a name="l01757"></a><span class="lineno"> 1757</span>&#160; <span class="keyword">const</span> TensorShape&amp; inputShape,</div><div class="line"><a name="l01758"></a><span class="lineno"> 1758</span>&#160; <span class="keyword">const</span> TensorShape&amp; outputShape)</div><div class="line"><a name="l01759"></a><span class="lineno"> 1759</span>&#160; : TestAdditionQuantization(options, inputShape, outputShape) {}</div><div class="line"><a name="l01760"></a><span class="lineno"> 1760</span>&#160;</div><div class="line"><a name="l01761"></a><span class="lineno"> 1761</span>&#160; <span class="keywordtype">void</span> VisitConstantLayer(<span class="keyword">const</span> IConnectableLayer* layer,</div><div class="line"><a name="l01762"></a><span class="lineno"> 1762</span>&#160; <span class="keyword">const</span> ConstTensor&amp; input,</div><div class="line"><a name="l01763"></a><span class="lineno"> 1763</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span>* name = <span class="keyword">nullptr</span>)<span class="keyword"> override</span></div><div class="line"><a name="l01764"></a><span class="lineno"> 1764</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l01765"></a><span class="lineno"> 1765</span>&#160; boost::ignore_unused(input, name);</div><div class="line"><a name="l01766"></a><span class="lineno"> 1766</span>&#160; TensorInfo <a class="code" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a> = layer-&gt;GetOutputSlot(0).GetTensorInfo();</div><div class="line"><a name="l01767"></a><span class="lineno"> 1767</span>&#160;</div><div class="line"><a name="l01768"></a><span class="lineno"> 1768</span>&#160; <span class="comment">// Based off the range of values in the const tensor used for the test: [-2.0f, 6.0f]</span></div><div class="line"><a name="l01769"></a><span class="lineno"> 1769</span>&#160; TestQuantizationParams(info, {8.0f / <a class="code" href="namespacearmnn.html#a19994153bdbd7710f0af3973403bc4cc">g_AsymmU8QuantizationBase</a>, 64},</div><div class="line"><a name="l01770"></a><span class="lineno"> 1770</span>&#160; {8.0f / <a class="code" href="namespacearmnn.html#a09bdfaa922d72ce0d9ec014dfa8f8c95">g_AsymmS8QuantizationBase</a>, -64},</div><div class="line"><a name="l01771"></a><span class="lineno"> 1771</span>&#160; {6.0f / <a class="code" href="namespacearmnn.html#acd7f8820d124166a38c95bc8ad38811b">g_SymmS8QuantizationBase</a>, 0},</div><div class="line"><a name="l01772"></a><span class="lineno"> 1772</span>&#160; {6.0f / <a class="code" href="namespacearmnn.html#a1465480794787d2278d3f0d2e6d887b4">g_SymmS16QuantizationBase</a>, 0});</div><div class="line"><a name="l01773"></a><span class="lineno"> 1773</span>&#160; }</div><div class="line"><a name="l01774"></a><span class="lineno"> 1774</span>&#160; };</div><div class="line"><a name="l01775"></a><span class="lineno"> 1775</span>&#160;</div><div class="line"><a name="l01776"></a><span class="lineno"> 1776</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> network = INetwork::Create();</div><div class="line"><a name="l01777"></a><span class="lineno"> 1777</span>&#160;</div><div class="line"><a name="l01778"></a><span class="lineno"> 1778</span>&#160; <span class="comment">// Constant layer data</span></div><div class="line"><a name="l01779"></a><span class="lineno"> 1779</span>&#160; std::vector&lt;float&gt; data = {-2.0f, -1.0f, 0.0f, 1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f};</div><div class="line"><a name="l01780"></a><span class="lineno"> 1780</span>&#160; <span class="keyword">const</span> TensorShape shape{1U, 1U, 3U, 3U};</div><div class="line"><a name="l01781"></a><span class="lineno"> 1781</span>&#160; TensorInfo tensorInfo(shape, DataType::Float32);</div><div class="line"><a name="l01782"></a><span class="lineno"> 1782</span>&#160; ConstTensor constantTensor(tensorInfo, data);</div><div class="line"><a name="l01783"></a><span class="lineno"> 1783</span>&#160;</div><div class="line"><a name="l01784"></a><span class="lineno"> 1784</span>&#160; <span class="comment">// Add the layers</span></div><div class="line"><a name="l01785"></a><span class="lineno"> 1785</span>&#160; IConnectableLayer* input = network-&gt;AddInputLayer(0);</div><div class="line"><a name="l01786"></a><span class="lineno"> 1786</span>&#160; IConnectableLayer* constant = network-&gt;AddConstantLayer(constantTensor);</div><div class="line"><a name="l01787"></a><span class="lineno"> 1787</span>&#160; IConnectableLayer* addition = network-&gt;AddAdditionLayer();</div><div class="line"><a name="l01788"></a><span class="lineno"> 1788</span>&#160; IConnectableLayer* output = network-&gt;AddOutputLayer(1);</div><div class="line"><a name="l01789"></a><span class="lineno"> 1789</span>&#160;</div><div class="line"><a name="l01790"></a><span class="lineno"> 1790</span>&#160; <span class="comment">// Establish connections</span></div><div class="line"><a name="l01791"></a><span class="lineno"> 1791</span>&#160; input-&gt;GetOutputSlot(0).Connect(addition-&gt;GetInputSlot(0));</div><div class="line"><a name="l01792"></a><span class="lineno"> 1792</span>&#160; constant-&gt;GetOutputSlot(0).Connect(addition-&gt;GetInputSlot(1));</div><div class="line"><a name="l01793"></a><span class="lineno"> 1793</span>&#160; addition-&gt;GetOutputSlot(0).Connect(output-&gt;GetInputSlot(0));</div><div class="line"><a name="l01794"></a><span class="lineno"> 1794</span>&#160;</div><div class="line"><a name="l01795"></a><span class="lineno"> 1795</span>&#160; <span class="comment">// Set TensorInfo in the remaining layers</span></div><div class="line"><a name="l01796"></a><span class="lineno"> 1796</span>&#160; input-&gt;GetOutputSlot(0).SetTensorInfo(tensorInfo);</div><div class="line"><a name="l01797"></a><span class="lineno"> 1797</span>&#160; addition-&gt;GetOutputSlot(0).SetTensorInfo(tensorInfo);</div><div class="line"><a name="l01798"></a><span class="lineno"> 1798</span>&#160; constant-&gt;GetOutputSlot(0).SetTensorInfo(tensorInfo);</div><div class="line"><a name="l01799"></a><span class="lineno"> 1799</span>&#160;</div><div class="line"><a name="l01800"></a><span class="lineno"> 1800</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQAsymmU8 = INetworkQuantizer::Create(network.get())-&gt;ExportNetwork();</div><div class="line"><a name="l01801"></a><span class="lineno"> 1801</span>&#160; TestConstantQuantization validatorQAsymmU8(shape, shape);</div><div class="line"><a name="l01802"></a><span class="lineno"> 1802</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQAsymmU8.get(), validatorQAsymmU8);</div><div class="line"><a name="l01803"></a><span class="lineno"> 1803</span>&#160;</div><div class="line"><a name="l01804"></a><span class="lineno"> 1804</span>&#160; <span class="keyword">const</span> QuantizerOptions qAsymmS8Options(DataType::QAsymmS8);</div><div class="line"><a name="l01805"></a><span class="lineno"> 1805</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQAsymmS8 = INetworkQuantizer::Create(network.get(), qAsymmS8Options)-&gt;ExportNetwork();</div><div class="line"><a name="l01806"></a><span class="lineno"> 1806</span>&#160; TestConstantQuantization validatorQAsymmS8(qAsymmS8Options, shape, shape);</div><div class="line"><a name="l01807"></a><span class="lineno"> 1807</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQAsymmS8.get(), validatorQAsymmS8);</div><div class="line"><a name="l01808"></a><span class="lineno"> 1808</span>&#160;</div><div class="line"><a name="l01809"></a><span class="lineno"> 1809</span>&#160; <span class="keyword">const</span> QuantizerOptions qSymmS8Options(DataType::QSymmS8);</div><div class="line"><a name="l01810"></a><span class="lineno"> 1810</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQSymmS8 = INetworkQuantizer::Create(network.get(), qSymmS8Options)-&gt;ExportNetwork();</div><div class="line"><a name="l01811"></a><span class="lineno"> 1811</span>&#160; TestConstantQuantization validatorQSymmS8(qSymmS8Options, shape, shape);</div><div class="line"><a name="l01812"></a><span class="lineno"> 1812</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQSymmS8.get(), validatorQSymmS8);</div><div class="line"><a name="l01813"></a><span class="lineno"> 1813</span>&#160;</div><div class="line"><a name="l01814"></a><span class="lineno"> 1814</span>&#160; <span class="keyword">const</span> QuantizerOptions qSymmS16options(DataType::QSymmS16);</div><div class="line"><a name="l01815"></a><span class="lineno"> 1815</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQSymmS16 = INetworkQuantizer::Create(network.get(), qSymmS16options)-&gt;ExportNetwork();</div><div class="line"><a name="l01816"></a><span class="lineno"> 1816</span>&#160; TestConstantQuantization validatorQSymmS16(qSymmS16options, shape, shape);</div><div class="line"><a name="l01817"></a><span class="lineno"> 1817</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQSymmS16.get(), validatorQSymmS16);</div><div class="line"><a name="l01818"></a><span class="lineno"> 1818</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a1465480794787d2278d3f0d2e6d887b4"><div class="ttname"><a href="namespacearmnn.html#a1465480794787d2278d3f0d2e6d887b4">armnn::g_SymmS16QuantizationBase</a></div><div class="ttdeci">const float g_SymmS16QuantizationBase</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l00037">QuantizerTest.cpp:37</a></div></div>
<div class="ttc" id="namespacearmnn_html_acd7f8820d124166a38c95bc8ad38811b"><div class="ttname"><a href="namespacearmnn.html#acd7f8820d124166a38c95bc8ad38811b">armnn::g_SymmS8QuantizationBase</a></div><div class="ttdeci">const float g_SymmS8QuantizationBase</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l00036">QuantizerTest.cpp:36</a></div></div>
<div class="ttc" id="namespacearmnn_html_a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c"><div class="ttname"><a href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">armnn::BoostLogSeverityMapping::info</a></div></div>
<div class="ttc" id="namespacearmnn_html_a6482907b4c57873e197324f5cb66fd4d"><div class="ttname"><a href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">armnn::VisitLayersTopologically</a></div><div class="ttdeci">void VisitLayersTopologically(const INetwork *inputNetwork, ILayerVisitor &amp;visitor)</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l00193">QuantizerTest.cpp:193</a></div></div>
<div class="ttc" id="namespacearmnn_html_ace74f6f9feb95a964a49d79458232703"><div class="ttname"><a href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">armnn::INetworkPtr</a></div><div class="ttdeci">std::unique_ptr&lt; INetwork, void(*)(INetwork *network)&gt; INetworkPtr</div><div class="ttdef"><b>Definition:</b> <a href="_i_network_8hpp_source.html#l00085">INetwork.hpp:85</a></div></div>
<div class="ttc" id="namespacearmnn_html_a09bdfaa922d72ce0d9ec014dfa8f8c95"><div class="ttname"><a href="namespacearmnn.html#a09bdfaa922d72ce0d9ec014dfa8f8c95">armnn::g_AsymmS8QuantizationBase</a></div><div class="ttdeci">const float g_AsymmS8QuantizationBase</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l00035">QuantizerTest.cpp:35</a></div></div>
<div class="ttc" id="namespacearmnn_html_a19994153bdbd7710f0af3973403bc4cc"><div class="ttname"><a href="namespacearmnn.html#a19994153bdbd7710f0af3973403bc4cc">armnn::g_AsymmU8QuantizationBase</a></div><div class="ttdeci">const float g_AsymmU8QuantizationBase</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l00033">QuantizerTest.cpp:33</a></div></div>
<div class="ttc" id="_file_only_profiling_decorator_tests_8cpp_html_a6560146509197f3e197d8d36f76c1347"><div class="ttname"><a href="_file_only_profiling_decorator_tests_8cpp.html#a6560146509197f3e197d8d36f76c1347">options</a></div><div class="ttdeci">armnn::Runtime::CreationOptions::ExternalProfilingOptions options</div><div class="ttdef"><b>Definition:</b> <a href="_file_only_profiling_decorator_tests_8cpp_source.html#l00045">FileOnlyProfilingDecoratorTests.cpp:45</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="ae3af95ea62252012cf93a98167afef64"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae3af95ea62252012cf93a98167afef64">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[60/79]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
<td>(</td>
<td class="paramtype">QuantizeArgMinMax&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_quantizer_test_8cpp_source.html#l01820">1820</a> of file <a class="el" href="_quantizer_test_8cpp_source.html">QuantizerTest.cpp</a>.</p>
<p class="reference">References <a class="el" href="classarmnn_1_1_i_output_slot.html#ac1835f8756a9f03c02fcf9664e3a0fce">IOutputSlot::Connect()</a>, <a class="el" href="_network_quantizer_8cpp_source.html#l00040">INetworkQuantizer::Create()</a>, <a class="el" href="_network_8cpp_source.html#l00048">INetwork::Create()</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">Float32</a>, <a class="el" href="_quantizer_test_8cpp_source.html#l00035">g_AsymmS8QuantizationBase</a>, <a class="el" href="_quantizer_test_8cpp_source.html#l00033">g_AsymmU8QuantizationBase</a>, <a class="el" href="_quantizer_test_8cpp_source.html#l00037">g_SymmS16QuantizationBase</a>, <a class="el" href="_quantizer_test_8cpp_source.html#l00036">g_SymmS8QuantizationBase</a>, <a class="el" href="classarmnn_1_1_i_connectable_layer.html#a6ec9e0eb66d7d6a01240492a0b18104c">IConnectableLayer::GetInputSlot()</a>, <a class="el" href="classarmnn_1_1_i_connectable_layer.html#a80ac4eda2e7f2757ec9dd96fc96dbd16">IConnectableLayer::GetOutputSlot()</a>, <a class="el" href="classarmnn_1_1_i_output_slot.html#a9943775a364fc4ab53b85ac88f311886">IOutputSlot::GetTensorInfo()</a>, <a class="el" href="_descriptors_8hpp_source.html#l00056">ArgMinMaxDescriptor::m_Function</a>, <a class="el" href="namespacearmnn.html#ae7e8cbf71db6a490789ca6dcaa8deeaea6a061313d22e51e0f25b7cd4dc065233">Max</a>, <a class="el" href="_file_only_profiling_decorator_tests_8cpp_source.html#l00045">options</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a9d02ea768c081d4bdb2b7cab0b3f510d">QAsymmS8</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7">QSymmS16</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a9945327825b115e93a3b89f4302e76db">QSymmS8</a>, <a class="el" href="classarmnn_1_1_i_output_slot.html#a5ee4a6c9a2481245487b1b1a70d20fd0">IOutputSlot::SetTensorInfo()</a>, and <a class="el" href="_quantizer_test_8cpp_source.html#l00193">VisitLayersTopologically()</a>.</p>
<div class="fragment"><div class="line"><a name="l01821"></a><span class="lineno"> 1821</span>&#160;{</div><div class="line"><a name="l01822"></a><span class="lineno"> 1822</span>&#160; <span class="keyword">class </span>TestArgMinMaxQuantization : <span class="keyword">public</span> TestQuantization</div><div class="line"><a name="l01823"></a><span class="lineno"> 1823</span>&#160; {</div><div class="line"><a name="l01824"></a><span class="lineno"> 1824</span>&#160; <span class="keyword">public</span>:</div><div class="line"><a name="l01825"></a><span class="lineno"> 1825</span>&#160; TestArgMinMaxQuantization(<span class="keyword">const</span> TensorShape&amp; inputShape, <span class="keyword">const</span> TensorShape&amp; outputShape) :</div><div class="line"><a name="l01826"></a><span class="lineno"> 1826</span>&#160; TestQuantization(inputShape, outputShape) {}</div><div class="line"><a name="l01827"></a><span class="lineno"> 1827</span>&#160;</div><div class="line"><a name="l01828"></a><span class="lineno"> 1828</span>&#160; TestArgMinMaxQuantization(<span class="keyword">const</span> QuantizerOptions&amp; <a class="code" href="_file_only_profiling_decorator_tests_8cpp.html#a6560146509197f3e197d8d36f76c1347">options</a>,</div><div class="line"><a name="l01829"></a><span class="lineno"> 1829</span>&#160; <span class="keyword">const</span> TensorShape&amp; inputShape,</div><div class="line"><a name="l01830"></a><span class="lineno"> 1830</span>&#160; <span class="keyword">const</span> TensorShape&amp; outputShape) :</div><div class="line"><a name="l01831"></a><span class="lineno"> 1831</span>&#160; TestQuantization(options, inputShape, outputShape)</div><div class="line"><a name="l01832"></a><span class="lineno"> 1832</span>&#160; {}</div><div class="line"><a name="l01833"></a><span class="lineno"> 1833</span>&#160;</div><div class="line"><a name="l01834"></a><span class="lineno"> 1834</span>&#160; <span class="keywordtype">void</span> VisitInputLayer(<span class="keyword">const</span> IConnectableLayer* layer,</div><div class="line"><a name="l01835"></a><span class="lineno"> 1835</span>&#160; <a class="code" href="namespacearmnn.html#ab8cf8f9fb6792e654c2d8d8382f6f01b">LayerBindingId</a> <span class="keywordtype">id</span>,</div><div class="line"><a name="l01836"></a><span class="lineno"> 1836</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span>* name = <span class="keyword">nullptr</span>)<span class="keyword"> override</span></div><div class="line"><a name="l01837"></a><span class="lineno"> 1837</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l01838"></a><span class="lineno"> 1838</span>&#160; boost::ignore_unused(layer, <span class="keywordtype">id</span>, name);</div><div class="line"><a name="l01839"></a><span class="lineno"> 1839</span>&#160; }</div><div class="line"><a name="l01840"></a><span class="lineno"> 1840</span>&#160;</div><div class="line"><a name="l01841"></a><span class="lineno"> 1841</span>&#160; <span class="keywordtype">void</span> VisitOutputLayer(<span class="keyword">const</span> IConnectableLayer* layer,</div><div class="line"><a name="l01842"></a><span class="lineno"> 1842</span>&#160; <a class="code" href="namespacearmnn.html#ab8cf8f9fb6792e654c2d8d8382f6f01b">LayerBindingId</a> <span class="keywordtype">id</span>,</div><div class="line"><a name="l01843"></a><span class="lineno"> 1843</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span>* name = <span class="keyword">nullptr</span>)<span class="keyword"> override</span></div><div class="line"><a name="l01844"></a><span class="lineno"> 1844</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l01845"></a><span class="lineno"> 1845</span>&#160; boost::ignore_unused(layer, <span class="keywordtype">id</span>, name);</div><div class="line"><a name="l01846"></a><span class="lineno"> 1846</span>&#160; }</div><div class="line"><a name="l01847"></a><span class="lineno"> 1847</span>&#160; <span class="keywordtype">void</span> VisitArgMinMaxLayer(<span class="keyword">const</span> IConnectableLayer* layer,</div><div class="line"><a name="l01848"></a><span class="lineno"> 1848</span>&#160; <span class="keyword">const</span> ArgMinMaxDescriptor&amp; argMinMaxDescriptor,</div><div class="line"><a name="l01849"></a><span class="lineno"> 1849</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span>* name = <span class="keyword">nullptr</span>)<span class="keyword"> override</span></div><div class="line"><a name="l01850"></a><span class="lineno"> 1850</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l01851"></a><span class="lineno"> 1851</span>&#160; boost::ignore_unused(argMinMaxDescriptor, name);</div><div class="line"><a name="l01852"></a><span class="lineno"> 1852</span>&#160; TensorInfo outputInfo = layer-&gt;GetOutputSlot(0).GetTensorInfo();</div><div class="line"><a name="l01853"></a><span class="lineno"> 1853</span>&#160;</div><div class="line"><a name="l01854"></a><span class="lineno"> 1854</span>&#160; TestQuantizationParams(outputInfo,</div><div class="line"><a name="l01855"></a><span class="lineno"> 1855</span>&#160; { 30.0f / <a class="code" href="namespacearmnn.html#a19994153bdbd7710f0af3973403bc4cc">g_AsymmU8QuantizationBase</a>, 128 },</div><div class="line"><a name="l01856"></a><span class="lineno"> 1856</span>&#160; { 30.0f / <a class="code" href="namespacearmnn.html#a09bdfaa922d72ce0d9ec014dfa8f8c95">g_AsymmS8QuantizationBase</a>, 0},</div><div class="line"><a name="l01857"></a><span class="lineno"> 1857</span>&#160; { 15.0f / <a class="code" href="namespacearmnn.html#acd7f8820d124166a38c95bc8ad38811b">g_SymmS8QuantizationBase</a>, 0},</div><div class="line"><a name="l01858"></a><span class="lineno"> 1858</span>&#160; { 15.0f / <a class="code" href="namespacearmnn.html#a1465480794787d2278d3f0d2e6d887b4">g_SymmS16QuantizationBase</a>, 0 });</div><div class="line"><a name="l01859"></a><span class="lineno"> 1859</span>&#160; }</div><div class="line"><a name="l01860"></a><span class="lineno"> 1860</span>&#160; };</div><div class="line"><a name="l01861"></a><span class="lineno"> 1861</span>&#160;</div><div class="line"><a name="l01862"></a><span class="lineno"> 1862</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> network = INetwork::Create();</div><div class="line"><a name="l01863"></a><span class="lineno"> 1863</span>&#160;</div><div class="line"><a name="l01864"></a><span class="lineno"> 1864</span>&#160; <span class="keyword">const</span> TensorShape inputShape{ 1, 1, 1, 5 };</div><div class="line"><a name="l01865"></a><span class="lineno"> 1865</span>&#160; <span class="keyword">const</span> TensorShape outputShape{ 1, 1, 1 };</div><div class="line"><a name="l01866"></a><span class="lineno"> 1866</span>&#160;</div><div class="line"><a name="l01867"></a><span class="lineno"> 1867</span>&#160; TensorInfo inputInfo(inputShape, DataType::Float32);</div><div class="line"><a name="l01868"></a><span class="lineno"> 1868</span>&#160; TensorInfo outputInfo(outputShape, DataType::Float32);</div><div class="line"><a name="l01869"></a><span class="lineno"> 1869</span>&#160;</div><div class="line"><a name="l01870"></a><span class="lineno"> 1870</span>&#160; <span class="comment">// Add the input layers</span></div><div class="line"><a name="l01871"></a><span class="lineno"> 1871</span>&#160; IConnectableLayer* input = network-&gt;AddInputLayer(0);</div><div class="line"><a name="l01872"></a><span class="lineno"> 1872</span>&#160;</div><div class="line"><a name="l01873"></a><span class="lineno"> 1873</span>&#160; <span class="comment">// Add the layer under test</span></div><div class="line"><a name="l01874"></a><span class="lineno"> 1874</span>&#160; ArgMinMaxDescriptor argMinMaxDescriptor;</div><div class="line"><a name="l01875"></a><span class="lineno"> 1875</span>&#160; argMinMaxDescriptor.m_Function = ArgMinMaxFunction::Max;</div><div class="line"><a name="l01876"></a><span class="lineno"> 1876</span>&#160; IConnectableLayer* argMinMaxLayer = network-&gt;AddArgMinMaxLayer(argMinMaxDescriptor);</div><div class="line"><a name="l01877"></a><span class="lineno"> 1877</span>&#160;</div><div class="line"><a name="l01878"></a><span class="lineno"> 1878</span>&#160; <span class="comment">// Add the output layers</span></div><div class="line"><a name="l01879"></a><span class="lineno"> 1879</span>&#160; IConnectableLayer* output = network-&gt;AddOutputLayer(1);</div><div class="line"><a name="l01880"></a><span class="lineno"> 1880</span>&#160;</div><div class="line"><a name="l01881"></a><span class="lineno"> 1881</span>&#160; <span class="comment">// Establish connections</span></div><div class="line"><a name="l01882"></a><span class="lineno"> 1882</span>&#160; input-&gt;GetOutputSlot(0).Connect(argMinMaxLayer-&gt;GetInputSlot(0));</div><div class="line"><a name="l01883"></a><span class="lineno"> 1883</span>&#160; argMinMaxLayer-&gt;GetOutputSlot(0).Connect(output-&gt;GetInputSlot(0));</div><div class="line"><a name="l01884"></a><span class="lineno"> 1884</span>&#160;</div><div class="line"><a name="l01885"></a><span class="lineno"> 1885</span>&#160; <span class="comment">// Set tensor info</span></div><div class="line"><a name="l01886"></a><span class="lineno"> 1886</span>&#160; input-&gt;GetOutputSlot(0).SetTensorInfo(inputInfo);</div><div class="line"><a name="l01887"></a><span class="lineno"> 1887</span>&#160; argMinMaxLayer-&gt;GetOutputSlot(0).SetTensorInfo(outputInfo);</div><div class="line"><a name="l01888"></a><span class="lineno"> 1888</span>&#160;</div><div class="line"><a name="l01889"></a><span class="lineno"> 1889</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQAsymmU8 = INetworkQuantizer::Create(network.get())-&gt;ExportNetwork();</div><div class="line"><a name="l01890"></a><span class="lineno"> 1890</span>&#160; TestArgMinMaxQuantization validatorQAsymmU8(inputShape, outputShape);</div><div class="line"><a name="l01891"></a><span class="lineno"> 1891</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQAsymmU8.get(), validatorQAsymmU8);</div><div class="line"><a name="l01892"></a><span class="lineno"> 1892</span>&#160;</div><div class="line"><a name="l01893"></a><span class="lineno"> 1893</span>&#160; <span class="keyword">const</span> QuantizerOptions qAsymmS8Options(DataType::QAsymmS8);</div><div class="line"><a name="l01894"></a><span class="lineno"> 1894</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQAsymmS8 = INetworkQuantizer::Create(network.get(), qAsymmS8Options)-&gt;ExportNetwork();</div><div class="line"><a name="l01895"></a><span class="lineno"> 1895</span>&#160; TestArgMinMaxQuantization validatorQAsymmS8(qAsymmS8Options, inputShape, outputShape);</div><div class="line"><a name="l01896"></a><span class="lineno"> 1896</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQAsymmS8.get(), validatorQAsymmS8);</div><div class="line"><a name="l01897"></a><span class="lineno"> 1897</span>&#160;</div><div class="line"><a name="l01898"></a><span class="lineno"> 1898</span>&#160; <span class="keyword">const</span> QuantizerOptions qSymmS8Options(DataType::QSymmS8);</div><div class="line"><a name="l01899"></a><span class="lineno"> 1899</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQSymmS8 = INetworkQuantizer::Create(network.get(), qSymmS8Options)-&gt;ExportNetwork();</div><div class="line"><a name="l01900"></a><span class="lineno"> 1900</span>&#160; TestArgMinMaxQuantization validatorQSymmS8(qSymmS8Options, inputShape, outputShape);</div><div class="line"><a name="l01901"></a><span class="lineno"> 1901</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQSymmS8.get(), validatorQSymmS8);</div><div class="line"><a name="l01902"></a><span class="lineno"> 1902</span>&#160;</div><div class="line"><a name="l01903"></a><span class="lineno"> 1903</span>&#160; <span class="keyword">const</span> QuantizerOptions qSymmS16options(DataType::QSymmS16);</div><div class="line"><a name="l01904"></a><span class="lineno"> 1904</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQSymmS16 = INetworkQuantizer::Create(network.get(), qSymmS16options)-&gt;ExportNetwork();</div><div class="line"><a name="l01905"></a><span class="lineno"> 1905</span>&#160; TestArgMinMaxQuantization validatorQSymmS16(qSymmS16options, inputShape, outputShape);</div><div class="line"><a name="l01906"></a><span class="lineno"> 1906</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQSymmS16.get(), validatorQSymmS16);</div><div class="line"><a name="l01907"></a><span class="lineno"> 1907</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a1465480794787d2278d3f0d2e6d887b4"><div class="ttname"><a href="namespacearmnn.html#a1465480794787d2278d3f0d2e6d887b4">armnn::g_SymmS16QuantizationBase</a></div><div class="ttdeci">const float g_SymmS16QuantizationBase</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l00037">QuantizerTest.cpp:37</a></div></div>
<div class="ttc" id="namespacearmnn_html_acd7f8820d124166a38c95bc8ad38811b"><div class="ttname"><a href="namespacearmnn.html#acd7f8820d124166a38c95bc8ad38811b">armnn::g_SymmS8QuantizationBase</a></div><div class="ttdeci">const float g_SymmS8QuantizationBase</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l00036">QuantizerTest.cpp:36</a></div></div>
<div class="ttc" id="namespacearmnn_html_a6482907b4c57873e197324f5cb66fd4d"><div class="ttname"><a href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">armnn::VisitLayersTopologically</a></div><div class="ttdeci">void VisitLayersTopologically(const INetwork *inputNetwork, ILayerVisitor &amp;visitor)</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l00193">QuantizerTest.cpp:193</a></div></div>
<div class="ttc" id="namespacearmnn_html_ace74f6f9feb95a964a49d79458232703"><div class="ttname"><a href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">armnn::INetworkPtr</a></div><div class="ttdeci">std::unique_ptr&lt; INetwork, void(*)(INetwork *network)&gt; INetworkPtr</div><div class="ttdef"><b>Definition:</b> <a href="_i_network_8hpp_source.html#l00085">INetwork.hpp:85</a></div></div>
<div class="ttc" id="namespacearmnn_html_a09bdfaa922d72ce0d9ec014dfa8f8c95"><div class="ttname"><a href="namespacearmnn.html#a09bdfaa922d72ce0d9ec014dfa8f8c95">armnn::g_AsymmS8QuantizationBase</a></div><div class="ttdeci">const float g_AsymmS8QuantizationBase</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l00035">QuantizerTest.cpp:35</a></div></div>
<div class="ttc" id="namespacearmnn_html_a19994153bdbd7710f0af3973403bc4cc"><div class="ttname"><a href="namespacearmnn.html#a19994153bdbd7710f0af3973403bc4cc">armnn::g_AsymmU8QuantizationBase</a></div><div class="ttdeci">const float g_AsymmU8QuantizationBase</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l00033">QuantizerTest.cpp:33</a></div></div>
<div class="ttc" id="_file_only_profiling_decorator_tests_8cpp_html_a6560146509197f3e197d8d36f76c1347"><div class="ttname"><a href="_file_only_profiling_decorator_tests_8cpp.html#a6560146509197f3e197d8d36f76c1347">options</a></div><div class="ttdeci">armnn::Runtime::CreationOptions::ExternalProfilingOptions options</div><div class="ttdef"><b>Definition:</b> <a href="_file_only_profiling_decorator_tests_8cpp_source.html#l00045">FileOnlyProfilingDecoratorTests.cpp:45</a></div></div>
<div class="ttc" id="namespacearmnn_html_ab8cf8f9fb6792e654c2d8d8382f6f01b"><div class="ttname"><a href="namespacearmnn.html#ab8cf8f9fb6792e654c2d8d8382f6f01b">armnn::LayerBindingId</a></div><div class="ttdeci">int LayerBindingId</div><div class="ttdoc">Type of identifiers for bindable layers (inputs, outputs). </div><div class="ttdef"><b>Definition:</b> <a href="_types_8hpp_source.html#l00168">Types.hpp:168</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="ab83f837cdd5bfcff537dae72a96d6fc8"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab83f837cdd5bfcff537dae72a96d6fc8">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[61/79]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
<td>(</td>
<td class="paramtype">QuantizeComparison&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_quantizer_test_8cpp_source.html#l01909">1909</a> of file <a class="el" href="_quantizer_test_8cpp_source.html">QuantizerTest.cpp</a>.</p>
<p class="reference">References <a class="el" href="classarmnn_1_1_i_output_slot.html#ac1835f8756a9f03c02fcf9664e3a0fce">IOutputSlot::Connect()</a>, <a class="el" href="_network_quantizer_8cpp_source.html#l00040">INetworkQuantizer::Create()</a>, <a class="el" href="_network_8cpp_source.html#l00048">INetwork::Create()</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">Float32</a>, <a class="el" href="_quantizer_test_8cpp_source.html#l00035">g_AsymmS8QuantizationBase</a>, <a class="el" href="_quantizer_test_8cpp_source.html#l00033">g_AsymmU8QuantizationBase</a>, <a class="el" href="_quantizer_test_8cpp_source.html#l00037">g_SymmS16QuantizationBase</a>, <a class="el" href="_quantizer_test_8cpp_source.html#l00036">g_SymmS8QuantizationBase</a>, <a class="el" href="classarmnn_1_1_i_connectable_layer.html#a6ec9e0eb66d7d6a01240492a0b18104c">IConnectableLayer::GetInputSlot()</a>, <a class="el" href="classarmnn_1_1_i_connectable_layer.html#a80ac4eda2e7f2757ec9dd96fc96dbd16">IConnectableLayer::GetOutputSlot()</a>, <a class="el" href="classarmnn_1_1_i_output_slot.html#a9943775a364fc4ab53b85ac88f311886">IOutputSlot::GetTensorInfo()</a>, <a class="el" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>, <a class="el" href="namespacearmnn.html#a2d299363c9fc33334c571fa29ca4f58caa4cbdbb6070a5abb35fc95ecf1e22c14">LessOrEqual</a>, <a class="el" href="_file_only_profiling_decorator_tests_8cpp_source.html#l00045">options</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a9d02ea768c081d4bdb2b7cab0b3f510d">QAsymmS8</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7">QSymmS16</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a9945327825b115e93a3b89f4302e76db">QSymmS8</a>, <a class="el" href="classarmnn_1_1_i_output_slot.html#a5ee4a6c9a2481245487b1b1a70d20fd0">IOutputSlot::SetTensorInfo()</a>, and <a class="el" href="_quantizer_test_8cpp_source.html#l00193">VisitLayersTopologically()</a>.</p>
<div class="fragment"><div class="line"><a name="l01910"></a><span class="lineno"> 1910</span>&#160;{</div><div class="line"><a name="l01911"></a><span class="lineno"> 1911</span>&#160; <span class="keyword">class </span>TestComparisonQuantization : <span class="keyword">public</span> TestQuantization</div><div class="line"><a name="l01912"></a><span class="lineno"> 1912</span>&#160; {</div><div class="line"><a name="l01913"></a><span class="lineno"> 1913</span>&#160; <span class="keyword">public</span>:</div><div class="line"><a name="l01914"></a><span class="lineno"> 1914</span>&#160; TestComparisonQuantization(<span class="keyword">const</span> TensorShape&amp; inputShape, <span class="keyword">const</span> TensorShape&amp; outputShape)</div><div class="line"><a name="l01915"></a><span class="lineno"> 1915</span>&#160; : TestQuantization(inputShape, outputShape) {}</div><div class="line"><a name="l01916"></a><span class="lineno"> 1916</span>&#160;</div><div class="line"><a name="l01917"></a><span class="lineno"> 1917</span>&#160; TestComparisonQuantization(<span class="keyword">const</span> QuantizerOptions&amp; <a class="code" href="_file_only_profiling_decorator_tests_8cpp.html#a6560146509197f3e197d8d36f76c1347">options</a>,</div><div class="line"><a name="l01918"></a><span class="lineno"> 1918</span>&#160; <span class="keyword">const</span> TensorShape&amp; inputShape,</div><div class="line"><a name="l01919"></a><span class="lineno"> 1919</span>&#160; <span class="keyword">const</span> TensorShape&amp; outputShape)</div><div class="line"><a name="l01920"></a><span class="lineno"> 1920</span>&#160; : TestQuantization(options, inputShape, outputShape) {}</div><div class="line"><a name="l01921"></a><span class="lineno"> 1921</span>&#160;</div><div class="line"><a name="l01922"></a><span class="lineno"> 1922</span>&#160; <span class="keywordtype">void</span> VisitComparisonLayer(<span class="keyword">const</span> IConnectableLayer* layer,</div><div class="line"><a name="l01923"></a><span class="lineno"> 1923</span>&#160; <span class="keyword">const</span> ComparisonDescriptor&amp; descriptor,</div><div class="line"><a name="l01924"></a><span class="lineno"> 1924</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span>* name = <span class="keyword">nullptr</span>)<span class="keyword"> override</span></div><div class="line"><a name="l01925"></a><span class="lineno"> 1925</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l01926"></a><span class="lineno"> 1926</span>&#160; boost::ignore_unused(descriptor, name);</div><div class="line"><a name="l01927"></a><span class="lineno"> 1927</span>&#160; TensorInfo <a class="code" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a> = layer-&gt;GetOutputSlot(0).GetTensorInfo();</div><div class="line"><a name="l01928"></a><span class="lineno"> 1928</span>&#160;</div><div class="line"><a name="l01929"></a><span class="lineno"> 1929</span>&#160; <span class="keyword">const</span> <a class="code" href="namespacearmnn.html#a9b8e5a95f8c061bbbcdb036915dcb61a">OffsetScalePair</a> qAsymmU8Params{ 30.0f / <a class="code" href="namespacearmnn.html#a19994153bdbd7710f0af3973403bc4cc">g_AsymmU8QuantizationBase</a>, 128 };</div><div class="line"><a name="l01930"></a><span class="lineno"> 1930</span>&#160; <span class="keyword">const</span> <a class="code" href="namespacearmnn.html#a9b8e5a95f8c061bbbcdb036915dcb61a">OffsetScalePair</a> qAsymmS8Params { 30.0f / <a class="code" href="namespacearmnn.html#a09bdfaa922d72ce0d9ec014dfa8f8c95">g_AsymmS8QuantizationBase</a>, 0};</div><div class="line"><a name="l01931"></a><span class="lineno"> 1931</span>&#160; <span class="keyword">const</span> <a class="code" href="namespacearmnn.html#a9b8e5a95f8c061bbbcdb036915dcb61a">OffsetScalePair</a> qSymmS8Params { 15.0f / <a class="code" href="namespacearmnn.html#acd7f8820d124166a38c95bc8ad38811b">g_SymmS8QuantizationBase</a>, 0};</div><div class="line"><a name="l01932"></a><span class="lineno"> 1932</span>&#160; <span class="keyword">const</span> <a class="code" href="namespacearmnn.html#a9b8e5a95f8c061bbbcdb036915dcb61a">OffsetScalePair</a> qSymmS16Params{ 15.0f / <a class="code" href="namespacearmnn.html#a1465480794787d2278d3f0d2e6d887b4">g_SymmS16QuantizationBase</a>, 0 };</div><div class="line"><a name="l01933"></a><span class="lineno"> 1933</span>&#160;</div><div class="line"><a name="l01934"></a><span class="lineno"> 1934</span>&#160; TestQuantizationParams(info, qAsymmU8Params, qAsymmS8Params, qSymmS8Params, qSymmS16Params);</div><div class="line"><a name="l01935"></a><span class="lineno"> 1935</span>&#160; }</div><div class="line"><a name="l01936"></a><span class="lineno"> 1936</span>&#160; };</div><div class="line"><a name="l01937"></a><span class="lineno"> 1937</span>&#160;</div><div class="line"><a name="l01938"></a><span class="lineno"> 1938</span>&#160; <span class="keyword">const</span> TensorShape tensorShape{ 1u };</div><div class="line"><a name="l01939"></a><span class="lineno"> 1939</span>&#160; <span class="keyword">const</span> TensorInfo tensorInfo(tensorShape, DataType::Float32);</div><div class="line"><a name="l01940"></a><span class="lineno"> 1940</span>&#160;</div><div class="line"><a name="l01941"></a><span class="lineno"> 1941</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> network = INetwork::Create();</div><div class="line"><a name="l01942"></a><span class="lineno"> 1942</span>&#160; ComparisonDescriptor descriptor(ComparisonOperation::LessOrEqual);</div><div class="line"><a name="l01943"></a><span class="lineno"> 1943</span>&#160;</div><div class="line"><a name="l01944"></a><span class="lineno"> 1944</span>&#160; IConnectableLayer* inputLayer0 = network-&gt;AddInputLayer(0);</div><div class="line"><a name="l01945"></a><span class="lineno"> 1945</span>&#160; IConnectableLayer* inputLayer1 = network-&gt;AddInputLayer(1);</div><div class="line"><a name="l01946"></a><span class="lineno"> 1946</span>&#160; IConnectableLayer* comparisonLayer = network-&gt;AddComparisonLayer(descriptor);</div><div class="line"><a name="l01947"></a><span class="lineno"> 1947</span>&#160; IConnectableLayer* outputLayer = network-&gt;AddOutputLayer(0);</div><div class="line"><a name="l01948"></a><span class="lineno"> 1948</span>&#160;</div><div class="line"><a name="l01949"></a><span class="lineno"> 1949</span>&#160; inputLayer0-&gt;GetOutputSlot(0).Connect(comparisonLayer-&gt;GetInputSlot(0));</div><div class="line"><a name="l01950"></a><span class="lineno"> 1950</span>&#160; inputLayer1-&gt;GetOutputSlot(0).Connect(comparisonLayer-&gt;GetInputSlot(1));</div><div class="line"><a name="l01951"></a><span class="lineno"> 1951</span>&#160; comparisonLayer-&gt;GetOutputSlot(0).Connect(outputLayer-&gt;GetInputSlot(0));</div><div class="line"><a name="l01952"></a><span class="lineno"> 1952</span>&#160;</div><div class="line"><a name="l01953"></a><span class="lineno"> 1953</span>&#160; inputLayer0-&gt;GetOutputSlot(0).SetTensorInfo(tensorInfo);</div><div class="line"><a name="l01954"></a><span class="lineno"> 1954</span>&#160; inputLayer1-&gt;GetOutputSlot(0).SetTensorInfo(tensorInfo);</div><div class="line"><a name="l01955"></a><span class="lineno"> 1955</span>&#160; comparisonLayer-&gt;GetOutputSlot(0).SetTensorInfo(tensorInfo);</div><div class="line"><a name="l01956"></a><span class="lineno"> 1956</span>&#160;</div><div class="line"><a name="l01957"></a><span class="lineno"> 1957</span>&#160; <span class="comment">// test QAsymmU8 quantization</span></div><div class="line"><a name="l01958"></a><span class="lineno"> 1958</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQAsymmU8 = INetworkQuantizer::Create(network.get())-&gt;ExportNetwork();</div><div class="line"><a name="l01959"></a><span class="lineno"> 1959</span>&#160; TestComparisonQuantization validatorQAsymmU8(tensorShape, tensorShape);</div><div class="line"><a name="l01960"></a><span class="lineno"> 1960</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQAsymmU8.get(), validatorQAsymmU8);</div><div class="line"><a name="l01961"></a><span class="lineno"> 1961</span>&#160;</div><div class="line"><a name="l01962"></a><span class="lineno"> 1962</span>&#160; <span class="comment">// test QAsymmS8 quantization</span></div><div class="line"><a name="l01963"></a><span class="lineno"> 1963</span>&#160; <span class="keyword">const</span> QuantizerOptions qAsymmS8Options(DataType::QAsymmS8);</div><div class="line"><a name="l01964"></a><span class="lineno"> 1964</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQAsymmS8 = INetworkQuantizer::Create(network.get(), qAsymmS8Options)-&gt;ExportNetwork();</div><div class="line"><a name="l01965"></a><span class="lineno"> 1965</span>&#160; TestComparisonQuantization validatorQAsymmS8(qAsymmS8Options, tensorShape, tensorShape);</div><div class="line"><a name="l01966"></a><span class="lineno"> 1966</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQAsymmS8.get(), validatorQAsymmS8);</div><div class="line"><a name="l01967"></a><span class="lineno"> 1967</span>&#160;</div><div class="line"><a name="l01968"></a><span class="lineno"> 1968</span>&#160; <span class="comment">// test QSymmS8 quantization</span></div><div class="line"><a name="l01969"></a><span class="lineno"> 1969</span>&#160; <span class="keyword">const</span> QuantizerOptions qSymmS8Options(DataType::QSymmS8);</div><div class="line"><a name="l01970"></a><span class="lineno"> 1970</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQSymmS8 = INetworkQuantizer::Create(network.get(), qSymmS8Options)-&gt;ExportNetwork();</div><div class="line"><a name="l01971"></a><span class="lineno"> 1971</span>&#160; TestComparisonQuantization validatorQSymmS8(qSymmS8Options, tensorShape, tensorShape);</div><div class="line"><a name="l01972"></a><span class="lineno"> 1972</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQSymmS8.get(), validatorQSymmS8);</div><div class="line"><a name="l01973"></a><span class="lineno"> 1973</span>&#160;</div><div class="line"><a name="l01974"></a><span class="lineno"> 1974</span>&#160; <span class="comment">// test QuantisedSymmS16 quantization</span></div><div class="line"><a name="l01975"></a><span class="lineno"> 1975</span>&#160; <span class="keyword">const</span> QuantizerOptions qSymmS16options(DataType::QSymmS16);</div><div class="line"><a name="l01976"></a><span class="lineno"> 1976</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQSymmS16 = INetworkQuantizer::Create(network.get(), qSymmS16options)-&gt;ExportNetwork();</div><div class="line"><a name="l01977"></a><span class="lineno"> 1977</span>&#160; TestComparisonQuantization validatorQSymmS16(qSymmS16options, tensorShape, tensorShape);</div><div class="line"><a name="l01978"></a><span class="lineno"> 1978</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQSymmS16.get(), validatorQSymmS16);</div><div class="line"><a name="l01979"></a><span class="lineno"> 1979</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a1465480794787d2278d3f0d2e6d887b4"><div class="ttname"><a href="namespacearmnn.html#a1465480794787d2278d3f0d2e6d887b4">armnn::g_SymmS16QuantizationBase</a></div><div class="ttdeci">const float g_SymmS16QuantizationBase</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l00037">QuantizerTest.cpp:37</a></div></div>
<div class="ttc" id="namespacearmnn_html_acd7f8820d124166a38c95bc8ad38811b"><div class="ttname"><a href="namespacearmnn.html#acd7f8820d124166a38c95bc8ad38811b">armnn::g_SymmS8QuantizationBase</a></div><div class="ttdeci">const float g_SymmS8QuantizationBase</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l00036">QuantizerTest.cpp:36</a></div></div>
<div class="ttc" id="namespacearmnn_html_a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c"><div class="ttname"><a href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">armnn::BoostLogSeverityMapping::info</a></div></div>
<div class="ttc" id="namespacearmnn_html_a6482907b4c57873e197324f5cb66fd4d"><div class="ttname"><a href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">armnn::VisitLayersTopologically</a></div><div class="ttdeci">void VisitLayersTopologically(const INetwork *inputNetwork, ILayerVisitor &amp;visitor)</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l00193">QuantizerTest.cpp:193</a></div></div>
<div class="ttc" id="namespacearmnn_html_ace74f6f9feb95a964a49d79458232703"><div class="ttname"><a href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">armnn::INetworkPtr</a></div><div class="ttdeci">std::unique_ptr&lt; INetwork, void(*)(INetwork *network)&gt; INetworkPtr</div><div class="ttdef"><b>Definition:</b> <a href="_i_network_8hpp_source.html#l00085">INetwork.hpp:85</a></div></div>
<div class="ttc" id="namespacearmnn_html_a09bdfaa922d72ce0d9ec014dfa8f8c95"><div class="ttname"><a href="namespacearmnn.html#a09bdfaa922d72ce0d9ec014dfa8f8c95">armnn::g_AsymmS8QuantizationBase</a></div><div class="ttdeci">const float g_AsymmS8QuantizationBase</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l00035">QuantizerTest.cpp:35</a></div></div>
<div class="ttc" id="namespacearmnn_html_a19994153bdbd7710f0af3973403bc4cc"><div class="ttname"><a href="namespacearmnn.html#a19994153bdbd7710f0af3973403bc4cc">armnn::g_AsymmU8QuantizationBase</a></div><div class="ttdeci">const float g_AsymmU8QuantizationBase</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l00033">QuantizerTest.cpp:33</a></div></div>
<div class="ttc" id="namespacearmnn_html_a9b8e5a95f8c061bbbcdb036915dcb61a"><div class="ttname"><a href="namespacearmnn.html#a9b8e5a95f8c061bbbcdb036915dcb61a">armnn::OffsetScalePair</a></div><div class="ttdeci">std::pair&lt; float, int &gt; OffsetScalePair</div><div class="ttdef"><b>Definition:</b> <a href="_network_quantization_scheme_8hpp_source.html#l00016">NetworkQuantizationScheme.hpp:16</a></div></div>
<div class="ttc" id="_file_only_profiling_decorator_tests_8cpp_html_a6560146509197f3e197d8d36f76c1347"><div class="ttname"><a href="_file_only_profiling_decorator_tests_8cpp.html#a6560146509197f3e197d8d36f76c1347">options</a></div><div class="ttdeci">armnn::Runtime::CreationOptions::ExternalProfilingOptions options</div><div class="ttdef"><b>Definition:</b> <a href="_file_only_profiling_decorator_tests_8cpp_source.html#l00045">FileOnlyProfilingDecoratorTests.cpp:45</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="add47ebcd4a59304a25c71996aea2b38b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#add47ebcd4a59304a25c71996aea2b38b">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[62/79]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
<td>(</td>
<td class="paramtype">QuantizeConcat&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_quantizer_test_8cpp_source.html#l01981">1981</a> of file <a class="el" href="_quantizer_test_8cpp_source.html">QuantizerTest.cpp</a>.</p>
<p class="reference">References <a class="el" href="classarmnn_1_1_i_output_slot.html#ac1835f8756a9f03c02fcf9664e3a0fce">IOutputSlot::Connect()</a>, <a class="el" href="_network_quantizer_8cpp_source.html#l00040">INetworkQuantizer::Create()</a>, <a class="el" href="_network_8cpp_source.html#l00048">INetwork::Create()</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">Float32</a>, <a class="el" href="_quantizer_test_8cpp_source.html#l00033">g_AsymmU8QuantizationBase</a>, <a class="el" href="_quantizer_test_8cpp_source.html#l00037">g_SymmS16QuantizationBase</a>, <a class="el" href="_quantizer_test_8cpp_source.html#l00036">g_SymmS8QuantizationBase</a>, <a class="el" href="classarmnn_1_1_i_input_slot.html#a81fbf6103761e55061b62ba989b00f10">IInputSlot::GetConnection()</a>, <a class="el" href="classarmnn_1_1_i_connectable_layer.html#a6ec9e0eb66d7d6a01240492a0b18104c">IConnectableLayer::GetInputSlot()</a>, <a class="el" href="classarmnn_1_1_i_connectable_layer.html#a80ac4eda2e7f2757ec9dd96fc96dbd16">IConnectableLayer::GetOutputSlot()</a>, <a class="el" href="classarmnn_1_1_i_output_slot.html#a9943775a364fc4ab53b85ac88f311886">IOutputSlot::GetTensorInfo()</a>, <a class="el" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>, <a class="el" href="_file_only_profiling_decorator_tests_8cpp_source.html#l00045">options</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7">QSymmS16</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a9945327825b115e93a3b89f4302e76db">QSymmS8</a>, <a class="el" href="classarmnn_1_1_i_output_slot.html#a5ee4a6c9a2481245487b1b1a70d20fd0">IOutputSlot::SetTensorInfo()</a>, and <a class="el" href="_quantizer_test_8cpp_source.html#l00193">VisitLayersTopologically()</a>.</p>
<div class="fragment"><div class="line"><a name="l01982"></a><span class="lineno"> 1982</span>&#160;{</div><div class="line"><a name="l01983"></a><span class="lineno"> 1983</span>&#160; <span class="keyword">class </span>TestConcatQuantization : <span class="keyword">public</span> TestQuantization</div><div class="line"><a name="l01984"></a><span class="lineno"> 1984</span>&#160; {</div><div class="line"><a name="l01985"></a><span class="lineno"> 1985</span>&#160; <span class="keyword">public</span>:</div><div class="line"><a name="l01986"></a><span class="lineno"> 1986</span>&#160; TestConcatQuantization(<span class="keyword">const</span> TensorShape&amp; inputShape, <span class="keyword">const</span> TensorShape&amp; outputShape)</div><div class="line"><a name="l01987"></a><span class="lineno"> 1987</span>&#160; : TestQuantization(inputShape, outputShape) {}</div><div class="line"><a name="l01988"></a><span class="lineno"> 1988</span>&#160;</div><div class="line"><a name="l01989"></a><span class="lineno"> 1989</span>&#160; TestConcatQuantization(<span class="keyword">const</span> QuantizerOptions&amp; <a class="code" href="_file_only_profiling_decorator_tests_8cpp.html#a6560146509197f3e197d8d36f76c1347">options</a>,</div><div class="line"><a name="l01990"></a><span class="lineno"> 1990</span>&#160; <span class="keyword">const</span> TensorShape&amp; inputShape,</div><div class="line"><a name="l01991"></a><span class="lineno"> 1991</span>&#160; <span class="keyword">const</span> TensorShape&amp; outputShape)</div><div class="line"><a name="l01992"></a><span class="lineno"> 1992</span>&#160; : TestQuantization(options, inputShape, outputShape) {}</div><div class="line"><a name="l01993"></a><span class="lineno"> 1993</span>&#160;</div><div class="line"><a name="l01994"></a><span class="lineno"> 1994</span>&#160; <span class="keywordtype">void</span> VisitInputLayer(<span class="keyword">const</span> IConnectableLayer* layer,</div><div class="line"><a name="l01995"></a><span class="lineno"> 1995</span>&#160; <a class="code" href="namespacearmnn.html#ab8cf8f9fb6792e654c2d8d8382f6f01b">LayerBindingId</a> <span class="keywordtype">id</span>,</div><div class="line"><a name="l01996"></a><span class="lineno"> 1996</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span>* name = <span class="keyword">nullptr</span>)<span class="keyword"> override</span></div><div class="line"><a name="l01997"></a><span class="lineno"> 1997</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l01998"></a><span class="lineno"> 1998</span>&#160; boost::ignore_unused(layer, <span class="keywordtype">id</span>, name);</div><div class="line"><a name="l01999"></a><span class="lineno"> 1999</span>&#160; }</div><div class="line"><a name="l02000"></a><span class="lineno"> 2000</span>&#160; <span class="keywordtype">void</span> VisitOutputLayer(<span class="keyword">const</span> IConnectableLayer* layer,</div><div class="line"><a name="l02001"></a><span class="lineno"> 2001</span>&#160; <a class="code" href="namespacearmnn.html#ab8cf8f9fb6792e654c2d8d8382f6f01b">LayerBindingId</a> <span class="keywordtype">id</span>,</div><div class="line"><a name="l02002"></a><span class="lineno"> 2002</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span>* name = <span class="keyword">nullptr</span>)<span class="keyword"> override</span></div><div class="line"><a name="l02003"></a><span class="lineno"> 2003</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l02004"></a><span class="lineno"> 2004</span>&#160; boost::ignore_unused(layer, <span class="keywordtype">id</span>, name);</div><div class="line"><a name="l02005"></a><span class="lineno"> 2005</span>&#160; }</div><div class="line"><a name="l02006"></a><span class="lineno"> 2006</span>&#160; <span class="keywordtype">void</span> VisitConcatLayer(<span class="keyword">const</span> IConnectableLayer* layer,</div><div class="line"><a name="l02007"></a><span class="lineno"> 2007</span>&#160; <span class="keyword">const</span> OriginsDescriptor&amp; originsDescriptor,</div><div class="line"><a name="l02008"></a><span class="lineno"> 2008</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span>* name = <span class="keyword">nullptr</span>)<span class="keyword"> override</span></div><div class="line"><a name="l02009"></a><span class="lineno"> 2009</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l02010"></a><span class="lineno"> 2010</span>&#160; boost::ignore_unused(originsDescriptor, name);</div><div class="line"><a name="l02011"></a><span class="lineno"> 2011</span>&#160; TensorInfo outputInfo = layer-&gt;GetOutputSlot(0).GetTensorInfo();</div><div class="line"><a name="l02012"></a><span class="lineno"> 2012</span>&#160; TestQuantizationParams(</div><div class="line"><a name="l02013"></a><span class="lineno"> 2013</span>&#160; outputInfo, {60.8f / <a class="code" href="namespacearmnn.html#a19994153bdbd7710f0af3973403bc4cc">g_AsymmU8QuantizationBase</a>, 65},</div><div class="line"><a name="l02014"></a><span class="lineno"> 2014</span>&#160; {60.8f / <a class="code" href="namespacearmnn.html#acd7f8820d124166a38c95bc8ad38811b">g_SymmS8QuantizationBase</a>, -63},</div><div class="line"><a name="l02015"></a><span class="lineno"> 2015</span>&#160; {45.3f / <a class="code" href="namespacearmnn.html#acd7f8820d124166a38c95bc8ad38811b">g_SymmS8QuantizationBase</a>, 0},</div><div class="line"><a name="l02016"></a><span class="lineno"> 2016</span>&#160; {45.3f / <a class="code" href="namespacearmnn.html#a1465480794787d2278d3f0d2e6d887b4">g_SymmS16QuantizationBase</a>, 0});</div><div class="line"><a name="l02017"></a><span class="lineno"> 2017</span>&#160;</div><div class="line"><a name="l02018"></a><span class="lineno"> 2018</span>&#160; TensorInfo inputInfo0 = layer-&gt;GetInputSlot(0).GetConnection()-&gt;GetTensorInfo();</div><div class="line"><a name="l02019"></a><span class="lineno"> 2019</span>&#160; TensorInfo inputInfo1 = layer-&gt;GetInputSlot(1).GetConnection()-&gt;GetTensorInfo();</div><div class="line"><a name="l02020"></a><span class="lineno"> 2020</span>&#160; TensorInfo inputInfo2 = layer-&gt;GetInputSlot(2).GetConnection()-&gt;GetTensorInfo();</div><div class="line"><a name="l02021"></a><span class="lineno"> 2021</span>&#160;</div><div class="line"><a name="l02022"></a><span class="lineno"> 2022</span>&#160; TestDifferentQuantizationScale(inputInfo0, inputInfo1);</div><div class="line"><a name="l02023"></a><span class="lineno"> 2023</span>&#160; TestDifferentQuantizationScale(inputInfo0, inputInfo2);</div><div class="line"><a name="l02024"></a><span class="lineno"> 2024</span>&#160; TestDifferentQuantizationScale(inputInfo1, inputInfo2);</div><div class="line"><a name="l02025"></a><span class="lineno"> 2025</span>&#160; TestDifferentQuantizationScale(inputInfo0, outputInfo);</div><div class="line"><a name="l02026"></a><span class="lineno"> 2026</span>&#160; }</div><div class="line"><a name="l02027"></a><span class="lineno"> 2027</span>&#160; };</div><div class="line"><a name="l02028"></a><span class="lineno"> 2028</span>&#160;</div><div class="line"><a name="l02029"></a><span class="lineno"> 2029</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> network = INetwork::Create();</div><div class="line"><a name="l02030"></a><span class="lineno"> 2030</span>&#160;</div><div class="line"><a name="l02031"></a><span class="lineno"> 2031</span>&#160; IConnectableLayer* input0 = network-&gt;AddInputLayer(0);</div><div class="line"><a name="l02032"></a><span class="lineno"> 2032</span>&#160; IConnectableLayer* input1 = network-&gt;AddInputLayer(1);</div><div class="line"><a name="l02033"></a><span class="lineno"> 2033</span>&#160; IConnectableLayer* input2 = network-&gt;AddInputLayer(2);</div><div class="line"><a name="l02034"></a><span class="lineno"> 2034</span>&#160;</div><div class="line"><a name="l02035"></a><span class="lineno"> 2035</span>&#160; OriginsDescriptor descriptor(3, 1);</div><div class="line"><a name="l02036"></a><span class="lineno"> 2036</span>&#160; IConnectableLayer* concatLayer = network-&gt;AddConcatLayer(descriptor);</div><div class="line"><a name="l02037"></a><span class="lineno"> 2037</span>&#160;</div><div class="line"><a name="l02038"></a><span class="lineno"> 2038</span>&#160; IConnectableLayer* output0 = network-&gt;AddOutputLayer(3);</div><div class="line"><a name="l02039"></a><span class="lineno"> 2039</span>&#160;</div><div class="line"><a name="l02040"></a><span class="lineno"> 2040</span>&#160; <span class="comment">// Establish connections</span></div><div class="line"><a name="l02041"></a><span class="lineno"> 2041</span>&#160; input0-&gt;GetOutputSlot(0).Connect(concatLayer-&gt;GetInputSlot(0));</div><div class="line"><a name="l02042"></a><span class="lineno"> 2042</span>&#160; input1-&gt;GetOutputSlot(0).Connect(concatLayer-&gt;GetInputSlot(1));</div><div class="line"><a name="l02043"></a><span class="lineno"> 2043</span>&#160; input2-&gt;GetOutputSlot(0).Connect(concatLayer-&gt;GetInputSlot(2));</div><div class="line"><a name="l02044"></a><span class="lineno"> 2044</span>&#160; concatLayer-&gt;GetOutputSlot(0).Connect(output0-&gt;GetInputSlot(0));</div><div class="line"><a name="l02045"></a><span class="lineno"> 2045</span>&#160;</div><div class="line"><a name="l02046"></a><span class="lineno"> 2046</span>&#160; <span class="comment">// Set TensorInfo</span></div><div class="line"><a name="l02047"></a><span class="lineno"> 2047</span>&#160; <span class="keyword">const</span> TensorShape shape{1U};</div><div class="line"><a name="l02048"></a><span class="lineno"> 2048</span>&#160; TensorInfo <a class="code" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>(shape, DataType::Float32);</div><div class="line"><a name="l02049"></a><span class="lineno"> 2049</span>&#160;</div><div class="line"><a name="l02050"></a><span class="lineno"> 2050</span>&#160; input0-&gt;GetOutputSlot(0).SetTensorInfo(info);</div><div class="line"><a name="l02051"></a><span class="lineno"> 2051</span>&#160; input1-&gt;GetOutputSlot(0).SetTensorInfo(info);</div><div class="line"><a name="l02052"></a><span class="lineno"> 2052</span>&#160; input2-&gt;GetOutputSlot(0).SetTensorInfo(info);</div><div class="line"><a name="l02053"></a><span class="lineno"> 2053</span>&#160; concatLayer-&gt;GetOutputSlot(0).SetTensorInfo(info);</div><div class="line"><a name="l02054"></a><span class="lineno"> 2054</span>&#160;</div><div class="line"><a name="l02055"></a><span class="lineno"> 2055</span>&#160; <span class="keyword">const</span> QuantizerOptions qSymmS8Options(DataType::QSymmS8);</div><div class="line"><a name="l02056"></a><span class="lineno"> 2056</span>&#160; <span class="keyword">const</span> QuantizerOptions qSymmS16options(DataType::QSymmS16);</div><div class="line"><a name="l02057"></a><span class="lineno"> 2057</span>&#160; <a class="code" href="namespacearmnn.html#a41119e261eec9343888d2ceab1e4999a">INetworkQuantizerPtr</a> quantizerPtrQAsymmU8 = INetworkQuantizer::Create(network.get());</div><div class="line"><a name="l02058"></a><span class="lineno"> 2058</span>&#160; <a class="code" href="namespacearmnn.html#a41119e261eec9343888d2ceab1e4999a">INetworkQuantizerPtr</a> quantizerPtrQSymmS8 = INetworkQuantizer::Create(network.get(), qSymmS8Options);</div><div class="line"><a name="l02059"></a><span class="lineno"> 2059</span>&#160; <a class="code" href="namespacearmnn.html#a41119e261eec9343888d2ceab1e4999a">INetworkQuantizerPtr</a> quantizerPtrQSymmS16 = INetworkQuantizer::Create(network.get(), qSymmS16options);</div><div class="line"><a name="l02060"></a><span class="lineno"> 2060</span>&#160; <span class="comment">// Override the input ranges</span></div><div class="line"><a name="l02061"></a><span class="lineno"> 2061</span>&#160; <span class="keywordtype">float</span> min = -15.5f;</div><div class="line"><a name="l02062"></a><span class="lineno"> 2062</span>&#160; <span class="keywordtype">float</span> max = 45.3f;</div><div class="line"><a name="l02063"></a><span class="lineno"> 2063</span>&#160;</div><div class="line"><a name="l02064"></a><span class="lineno"> 2064</span>&#160; quantizerPtrQAsymmU8-&gt;OverrideInputRange(0, (min + 2.1f), (max - 3.2f));</div><div class="line"><a name="l02065"></a><span class="lineno"> 2065</span>&#160; quantizerPtrQAsymmU8-&gt;OverrideInputRange(1, (min + 6.7f), max);</div><div class="line"><a name="l02066"></a><span class="lineno"> 2066</span>&#160; quantizerPtrQAsymmU8-&gt;OverrideInputRange(2, min, (max - 7.8f));</div><div class="line"><a name="l02067"></a><span class="lineno"> 2067</span>&#160;</div><div class="line"><a name="l02068"></a><span class="lineno"> 2068</span>&#160; quantizerPtrQSymmS8-&gt;OverrideInputRange(0, (min + 2.1f), (max - 3.2f));</div><div class="line"><a name="l02069"></a><span class="lineno"> 2069</span>&#160; quantizerPtrQSymmS8-&gt;OverrideInputRange(1, (min + 6.7f), max);</div><div class="line"><a name="l02070"></a><span class="lineno"> 2070</span>&#160; quantizerPtrQSymmS8-&gt;OverrideInputRange(2, min, (max - 7.8f));</div><div class="line"><a name="l02071"></a><span class="lineno"> 2071</span>&#160;</div><div class="line"><a name="l02072"></a><span class="lineno"> 2072</span>&#160; quantizerPtrQSymmS16-&gt;OverrideInputRange(0, (min + 2.1f), (max - 3.2f));</div><div class="line"><a name="l02073"></a><span class="lineno"> 2073</span>&#160; quantizerPtrQSymmS16-&gt;OverrideInputRange(1, (min + 6.7f), max);</div><div class="line"><a name="l02074"></a><span class="lineno"> 2074</span>&#160; quantizerPtrQSymmS16-&gt;OverrideInputRange(2, min, (max - 7.8f));</div><div class="line"><a name="l02075"></a><span class="lineno"> 2075</span>&#160;</div><div class="line"><a name="l02076"></a><span class="lineno"> 2076</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQAsymmU8 = quantizerPtrQAsymmU8-&gt;ExportNetwork();</div><div class="line"><a name="l02077"></a><span class="lineno"> 2077</span>&#160; TestConcatQuantization validatorQAsymmU8(shape, shape);</div><div class="line"><a name="l02078"></a><span class="lineno"> 2078</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQAsymmU8.get(), validatorQAsymmU8);</div><div class="line"><a name="l02079"></a><span class="lineno"> 2079</span>&#160;</div><div class="line"><a name="l02080"></a><span class="lineno"> 2080</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQSymmS8 = quantizerPtrQSymmS8-&gt;ExportNetwork();</div><div class="line"><a name="l02081"></a><span class="lineno"> 2081</span>&#160; TestConcatQuantization validatorQSymmS8(qSymmS8Options, shape, shape);</div><div class="line"><a name="l02082"></a><span class="lineno"> 2082</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQSymmS8.get(), validatorQSymmS8);</div><div class="line"><a name="l02083"></a><span class="lineno"> 2083</span>&#160;</div><div class="line"><a name="l02084"></a><span class="lineno"> 2084</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQSymmS16 = quantizerPtrQSymmS16-&gt;ExportNetwork();</div><div class="line"><a name="l02085"></a><span class="lineno"> 2085</span>&#160; TestConcatQuantization validatorQSymmS16(qSymmS16options, shape, shape);</div><div class="line"><a name="l02086"></a><span class="lineno"> 2086</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQSymmS16.get(), validatorQSymmS16);</div><div class="line"><a name="l02087"></a><span class="lineno"> 2087</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a1465480794787d2278d3f0d2e6d887b4"><div class="ttname"><a href="namespacearmnn.html#a1465480794787d2278d3f0d2e6d887b4">armnn::g_SymmS16QuantizationBase</a></div><div class="ttdeci">const float g_SymmS16QuantizationBase</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l00037">QuantizerTest.cpp:37</a></div></div>
<div class="ttc" id="namespacearmnn_html_acd7f8820d124166a38c95bc8ad38811b"><div class="ttname"><a href="namespacearmnn.html#acd7f8820d124166a38c95bc8ad38811b">armnn::g_SymmS8QuantizationBase</a></div><div class="ttdeci">const float g_SymmS8QuantizationBase</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l00036">QuantizerTest.cpp:36</a></div></div>
<div class="ttc" id="namespacearmnn_html_a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c"><div class="ttname"><a href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">armnn::BoostLogSeverityMapping::info</a></div></div>
<div class="ttc" id="namespacearmnn_html_a41119e261eec9343888d2ceab1e4999a"><div class="ttname"><a href="namespacearmnn.html#a41119e261eec9343888d2ceab1e4999a">armnn::INetworkQuantizerPtr</a></div><div class="ttdeci">std::unique_ptr&lt; class INetworkQuantizer, void(*)(INetworkQuantizer *quantizer)&gt; INetworkQuantizerPtr</div><div class="ttdef"><b>Definition:</b> <a href="_i_network_quantizer_8hpp_source.html#l00029">INetworkQuantizer.hpp:29</a></div></div>
<div class="ttc" id="namespacearmnn_html_a6482907b4c57873e197324f5cb66fd4d"><div class="ttname"><a href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">armnn::VisitLayersTopologically</a></div><div class="ttdeci">void VisitLayersTopologically(const INetwork *inputNetwork, ILayerVisitor &amp;visitor)</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l00193">QuantizerTest.cpp:193</a></div></div>
<div class="ttc" id="namespacearmnn_html_ace74f6f9feb95a964a49d79458232703"><div class="ttname"><a href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">armnn::INetworkPtr</a></div><div class="ttdeci">std::unique_ptr&lt; INetwork, void(*)(INetwork *network)&gt; INetworkPtr</div><div class="ttdef"><b>Definition:</b> <a href="_i_network_8hpp_source.html#l00085">INetwork.hpp:85</a></div></div>
<div class="ttc" id="namespacearmnn_html_a19994153bdbd7710f0af3973403bc4cc"><div class="ttname"><a href="namespacearmnn.html#a19994153bdbd7710f0af3973403bc4cc">armnn::g_AsymmU8QuantizationBase</a></div><div class="ttdeci">const float g_AsymmU8QuantizationBase</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l00033">QuantizerTest.cpp:33</a></div></div>
<div class="ttc" id="_file_only_profiling_decorator_tests_8cpp_html_a6560146509197f3e197d8d36f76c1347"><div class="ttname"><a href="_file_only_profiling_decorator_tests_8cpp.html#a6560146509197f3e197d8d36f76c1347">options</a></div><div class="ttdeci">armnn::Runtime::CreationOptions::ExternalProfilingOptions options</div><div class="ttdef"><b>Definition:</b> <a href="_file_only_profiling_decorator_tests_8cpp_source.html#l00045">FileOnlyProfilingDecoratorTests.cpp:45</a></div></div>
<div class="ttc" id="namespacearmnn_html_ab8cf8f9fb6792e654c2d8d8382f6f01b"><div class="ttname"><a href="namespacearmnn.html#ab8cf8f9fb6792e654c2d8d8382f6f01b">armnn::LayerBindingId</a></div><div class="ttdeci">int LayerBindingId</div><div class="ttdoc">Type of identifiers for bindable layers (inputs, outputs). </div><div class="ttdef"><b>Definition:</b> <a href="_types_8hpp_source.html#l00168">Types.hpp:168</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a9258afcd4c6d8443c9130d8c9bf26442"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a9258afcd4c6d8443c9130d8c9bf26442">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[63/79]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
<td>(</td>
<td class="paramtype">QuantizeReshape&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_quantizer_test_8cpp_source.html#l02089">2089</a> of file <a class="el" href="_quantizer_test_8cpp_source.html">QuantizerTest.cpp</a>.</p>
<p class="reference">References <a class="el" href="_quantizer_test_8cpp_source.html#l01495">CompleteLeakyReluNetwork()</a>, <a class="el" href="_network_quantizer_8cpp_source.html#l00040">INetworkQuantizer::Create()</a>, <a class="el" href="_network_8cpp_source.html#l00048">INetwork::Create()</a>, <a class="el" href="_quantizer_test_8cpp_source.html#l01474">CreateStartOfLeakyReluNetwork()</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">Float32</a>, <a class="el" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>, <a class="el" href="_file_only_profiling_decorator_tests_8cpp_source.html#l00045">options</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a9d02ea768c081d4bdb2b7cab0b3f510d">QAsymmS8</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7">QSymmS16</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a9945327825b115e93a3b89f4302e76db">QSymmS8</a>, and <a class="el" href="_quantizer_test_8cpp_source.html#l00193">VisitLayersTopologically()</a>.</p>
<div class="fragment"><div class="line"><a name="l02090"></a><span class="lineno"> 2090</span>&#160;{</div><div class="line"><a name="l02091"></a><span class="lineno"> 2091</span>&#160; <span class="keyword">class </span>TestReshapeQuantization : <span class="keyword">public</span> TestLeakyReLuActivationQuantization</div><div class="line"><a name="l02092"></a><span class="lineno"> 2092</span>&#160; {</div><div class="line"><a name="l02093"></a><span class="lineno"> 2093</span>&#160; <span class="keyword">public</span>:</div><div class="line"><a name="l02094"></a><span class="lineno"> 2094</span>&#160; TestReshapeQuantization(<span class="keyword">const</span> TensorShape&amp; inputShape, <span class="keyword">const</span> TensorShape&amp; outputShape)</div><div class="line"><a name="l02095"></a><span class="lineno"> 2095</span>&#160; : TestLeakyReLuActivationQuantization(inputShape, outputShape) {}</div><div class="line"><a name="l02096"></a><span class="lineno"> 2096</span>&#160;</div><div class="line"><a name="l02097"></a><span class="lineno"> 2097</span>&#160; TestReshapeQuantization(<span class="keyword">const</span> QuantizerOptions&amp; <a class="code" href="_file_only_profiling_decorator_tests_8cpp.html#a6560146509197f3e197d8d36f76c1347">options</a>,</div><div class="line"><a name="l02098"></a><span class="lineno"> 2098</span>&#160; <span class="keyword">const</span> TensorShape&amp; inputShape,</div><div class="line"><a name="l02099"></a><span class="lineno"> 2099</span>&#160; <span class="keyword">const</span> TensorShape&amp; outputShape)</div><div class="line"><a name="l02100"></a><span class="lineno"> 2100</span>&#160; : TestLeakyReLuActivationQuantization(options, inputShape, outputShape) {}</div><div class="line"><a name="l02101"></a><span class="lineno"> 2101</span>&#160;</div><div class="line"><a name="l02102"></a><span class="lineno"> 2102</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> VisitReshapeLayer(<span class="keyword">const</span> IConnectableLayer* layer,</div><div class="line"><a name="l02103"></a><span class="lineno"> 2103</span>&#160; <span class="keyword">const</span> ReshapeDescriptor&amp; reshapeDescriptor,</div><div class="line"><a name="l02104"></a><span class="lineno"> 2104</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span>* name = <span class="keyword">nullptr</span>)<span class="keyword"> override</span></div><div class="line"><a name="l02105"></a><span class="lineno"> 2105</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l02106"></a><span class="lineno"> 2106</span>&#160; boost::ignore_unused(reshapeDescriptor, name);</div><div class="line"><a name="l02107"></a><span class="lineno"> 2107</span>&#160; CheckForwardedQuantizationSettings(layer);</div><div class="line"><a name="l02108"></a><span class="lineno"> 2108</span>&#160; }</div><div class="line"><a name="l02109"></a><span class="lineno"> 2109</span>&#160; };</div><div class="line"><a name="l02110"></a><span class="lineno"> 2110</span>&#160;</div><div class="line"><a name="l02111"></a><span class="lineno"> 2111</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> network = INetwork::Create();</div><div class="line"><a name="l02112"></a><span class="lineno"> 2112</span>&#160;</div><div class="line"><a name="l02113"></a><span class="lineno"> 2113</span>&#160; <span class="keyword">const</span> TensorShape shape{1U};</div><div class="line"><a name="l02114"></a><span class="lineno"> 2114</span>&#160; TensorInfo <a class="code" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>(shape, DataType::Float32);</div><div class="line"><a name="l02115"></a><span class="lineno"> 2115</span>&#160;</div><div class="line"><a name="l02116"></a><span class="lineno"> 2116</span>&#160; IConnectableLayer* activation = <a class="code" href="namespacearmnn.html#a120c131df35d78b3a56cb0f07decaf35">CreateStartOfLeakyReluNetwork</a>(network.get(), <a class="code" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>);</div><div class="line"><a name="l02117"></a><span class="lineno"> 2117</span>&#160;</div><div class="line"><a name="l02118"></a><span class="lineno"> 2118</span>&#160; <span class="comment">// Add the layer under test</span></div><div class="line"><a name="l02119"></a><span class="lineno"> 2119</span>&#160; ReshapeDescriptor descriptor({1, 2, 3, 4});</div><div class="line"><a name="l02120"></a><span class="lineno"> 2120</span>&#160; IConnectableLayer* reshape = network-&gt;AddReshapeLayer(descriptor);</div><div class="line"><a name="l02121"></a><span class="lineno"> 2121</span>&#160;</div><div class="line"><a name="l02122"></a><span class="lineno"> 2122</span>&#160; <a class="code" href="namespacearmnn.html#a6fff4b4b1b5d4d37c9cf53d0e31c05dd">CompleteLeakyReluNetwork</a>(network.get(), activation, reshape, <a class="code" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>);</div><div class="line"><a name="l02123"></a><span class="lineno"> 2123</span>&#160;</div><div class="line"><a name="l02124"></a><span class="lineno"> 2124</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQAsymmU8 = INetworkQuantizer::Create(network.get())-&gt;ExportNetwork();</div><div class="line"><a name="l02125"></a><span class="lineno"> 2125</span>&#160; TestReshapeQuantization validatorQAsymmU8(shape, shape);</div><div class="line"><a name="l02126"></a><span class="lineno"> 2126</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQAsymmU8.get(), validatorQAsymmU8);</div><div class="line"><a name="l02127"></a><span class="lineno"> 2127</span>&#160;</div><div class="line"><a name="l02128"></a><span class="lineno"> 2128</span>&#160; <span class="keyword">const</span> QuantizerOptions qAsymmS8Options(DataType::QAsymmS8);</div><div class="line"><a name="l02129"></a><span class="lineno"> 2129</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQAsymmS8 = INetworkQuantizer::Create(network.get(), qAsymmS8Options)-&gt;ExportNetwork();</div><div class="line"><a name="l02130"></a><span class="lineno"> 2130</span>&#160; TestReshapeQuantization validatorQAsymmS8(qAsymmS8Options, shape, shape);</div><div class="line"><a name="l02131"></a><span class="lineno"> 2131</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQAsymmS8.get(), validatorQAsymmS8);</div><div class="line"><a name="l02132"></a><span class="lineno"> 2132</span>&#160;</div><div class="line"><a name="l02133"></a><span class="lineno"> 2133</span>&#160; <span class="keyword">const</span> QuantizerOptions qSymmS8Options(DataType::QSymmS8);</div><div class="line"><a name="l02134"></a><span class="lineno"> 2134</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQSymmS8 = INetworkQuantizer::Create(network.get(), qSymmS8Options)-&gt;ExportNetwork();</div><div class="line"><a name="l02135"></a><span class="lineno"> 2135</span>&#160; TestReshapeQuantization validatorQSymmS8(qSymmS8Options, shape, shape);</div><div class="line"><a name="l02136"></a><span class="lineno"> 2136</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQSymmS8.get(), validatorQSymmS8);</div><div class="line"><a name="l02137"></a><span class="lineno"> 2137</span>&#160;</div><div class="line"><a name="l02138"></a><span class="lineno"> 2138</span>&#160; <span class="keyword">const</span> QuantizerOptions qSymmS16options(DataType::QSymmS16);</div><div class="line"><a name="l02139"></a><span class="lineno"> 2139</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQSymmS16 = INetworkQuantizer::Create(network.get(), qSymmS16options)-&gt;ExportNetwork();</div><div class="line"><a name="l02140"></a><span class="lineno"> 2140</span>&#160; TestReshapeQuantization validatorQSymmS16(qSymmS16options, shape, shape);</div><div class="line"><a name="l02141"></a><span class="lineno"> 2141</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQSymmS16.get(), validatorQSymmS16);</div><div class="line"><a name="l02142"></a><span class="lineno"> 2142</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c"><div class="ttname"><a href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">armnn::BoostLogSeverityMapping::info</a></div></div>
<div class="ttc" id="namespacearmnn_html_a120c131df35d78b3a56cb0f07decaf35"><div class="ttname"><a href="namespacearmnn.html#a120c131df35d78b3a56cb0f07decaf35">armnn::CreateStartOfLeakyReluNetwork</a></div><div class="ttdeci">IConnectableLayer * CreateStartOfLeakyReluNetwork(INetwork *network, const TensorInfo &amp;info)</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l01474">QuantizerTest.cpp:1474</a></div></div>
<div class="ttc" id="namespacearmnn_html_a6482907b4c57873e197324f5cb66fd4d"><div class="ttname"><a href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">armnn::VisitLayersTopologically</a></div><div class="ttdeci">void VisitLayersTopologically(const INetwork *inputNetwork, ILayerVisitor &amp;visitor)</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l00193">QuantizerTest.cpp:193</a></div></div>
<div class="ttc" id="namespacearmnn_html_ace74f6f9feb95a964a49d79458232703"><div class="ttname"><a href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">armnn::INetworkPtr</a></div><div class="ttdeci">std::unique_ptr&lt; INetwork, void(*)(INetwork *network)&gt; INetworkPtr</div><div class="ttdef"><b>Definition:</b> <a href="_i_network_8hpp_source.html#l00085">INetwork.hpp:85</a></div></div>
<div class="ttc" id="namespacearmnn_html_a6fff4b4b1b5d4d37c9cf53d0e31c05dd"><div class="ttname"><a href="namespacearmnn.html#a6fff4b4b1b5d4d37c9cf53d0e31c05dd">armnn::CompleteLeakyReluNetwork</a></div><div class="ttdeci">void CompleteLeakyReluNetwork(INetwork *network, IConnectableLayer *activation, IConnectableLayer *layerUnderTest, const TensorInfo &amp;info)</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l01495">QuantizerTest.cpp:1495</a></div></div>
<div class="ttc" id="_file_only_profiling_decorator_tests_8cpp_html_a6560146509197f3e197d8d36f76c1347"><div class="ttname"><a href="_file_only_profiling_decorator_tests_8cpp.html#a6560146509197f3e197d8d36f76c1347">options</a></div><div class="ttdeci">armnn::Runtime::CreationOptions::ExternalProfilingOptions options</div><div class="ttdef"><b>Definition:</b> <a href="_file_only_profiling_decorator_tests_8cpp_source.html#l00045">FileOnlyProfilingDecoratorTests.cpp:45</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a23a4f3c387a2a3a035e97764e34277c6"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a23a4f3c387a2a3a035e97764e34277c6">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[64/79]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
<td>(</td>
<td class="paramtype">QuantizeSplitter&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_quantizer_test_8cpp_source.html#l02144">2144</a> of file <a class="el" href="_quantizer_test_8cpp_source.html">QuantizerTest.cpp</a>.</p>
<p class="reference">References <a class="el" href="_quantizer_test_8cpp_source.html#l01495">CompleteLeakyReluNetwork()</a>, <a class="el" href="_network_quantizer_8cpp_source.html#l00040">INetworkQuantizer::Create()</a>, <a class="el" href="_network_8cpp_source.html#l00048">INetwork::Create()</a>, <a class="el" href="_quantizer_test_8cpp_source.html#l01474">CreateStartOfLeakyReluNetwork()</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">Float32</a>, <a class="el" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>, <a class="el" href="_file_only_profiling_decorator_tests_8cpp_source.html#l00045">options</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a9d02ea768c081d4bdb2b7cab0b3f510d">QAsymmS8</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7">QSymmS16</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a9945327825b115e93a3b89f4302e76db">QSymmS8</a>, and <a class="el" href="_quantizer_test_8cpp_source.html#l00193">VisitLayersTopologically()</a>.</p>
<div class="fragment"><div class="line"><a name="l02145"></a><span class="lineno"> 2145</span>&#160;{</div><div class="line"><a name="l02146"></a><span class="lineno"> 2146</span>&#160; <span class="keyword">class </span>TestSplitterQuantization : <span class="keyword">public</span> TestLeakyReLuActivationQuantization</div><div class="line"><a name="l02147"></a><span class="lineno"> 2147</span>&#160; {</div><div class="line"><a name="l02148"></a><span class="lineno"> 2148</span>&#160; <span class="keyword">public</span>:</div><div class="line"><a name="l02149"></a><span class="lineno"> 2149</span>&#160; TestSplitterQuantization(<span class="keyword">const</span> TensorShape&amp; inputShape, <span class="keyword">const</span> TensorShape&amp; outputShape)</div><div class="line"><a name="l02150"></a><span class="lineno"> 2150</span>&#160; : TestLeakyReLuActivationQuantization(inputShape, outputShape) {}</div><div class="line"><a name="l02151"></a><span class="lineno"> 2151</span>&#160;</div><div class="line"><a name="l02152"></a><span class="lineno"> 2152</span>&#160; TestSplitterQuantization(<span class="keyword">const</span> QuantizerOptions&amp; <a class="code" href="_file_only_profiling_decorator_tests_8cpp.html#a6560146509197f3e197d8d36f76c1347">options</a>,</div><div class="line"><a name="l02153"></a><span class="lineno"> 2153</span>&#160; <span class="keyword">const</span> TensorShape&amp; inputShape,</div><div class="line"><a name="l02154"></a><span class="lineno"> 2154</span>&#160; <span class="keyword">const</span> TensorShape&amp; outputShape)</div><div class="line"><a name="l02155"></a><span class="lineno"> 2155</span>&#160; : TestLeakyReLuActivationQuantization(options, inputShape, outputShape) {}</div><div class="line"><a name="l02156"></a><span class="lineno"> 2156</span>&#160;</div><div class="line"><a name="l02157"></a><span class="lineno"> 2157</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> VisitSplitterLayer(<span class="keyword">const</span> IConnectableLayer* layer,</div><div class="line"><a name="l02158"></a><span class="lineno"> 2158</span>&#160; <span class="keyword">const</span> <a class="code" href="namespacearmnn.html#a60291543fe872b795e71e05bcd835fd1">SplitterDescriptor</a>&amp; desc,</div><div class="line"><a name="l02159"></a><span class="lineno"> 2159</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span>* name = <span class="keyword">nullptr</span>)</div><div class="line"><a name="l02160"></a><span class="lineno"> 2160</span>&#160; {</div><div class="line"><a name="l02161"></a><span class="lineno"> 2161</span>&#160; boost::ignore_unused(desc, name);</div><div class="line"><a name="l02162"></a><span class="lineno"> 2162</span>&#160; CheckForwardedQuantizationSettings(layer);</div><div class="line"><a name="l02163"></a><span class="lineno"> 2163</span>&#160; }</div><div class="line"><a name="l02164"></a><span class="lineno"> 2164</span>&#160; };</div><div class="line"><a name="l02165"></a><span class="lineno"> 2165</span>&#160;</div><div class="line"><a name="l02166"></a><span class="lineno"> 2166</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> network = INetwork::Create();</div><div class="line"><a name="l02167"></a><span class="lineno"> 2167</span>&#160;</div><div class="line"><a name="l02168"></a><span class="lineno"> 2168</span>&#160; <span class="keyword">const</span> TensorShape shape{3U};</div><div class="line"><a name="l02169"></a><span class="lineno"> 2169</span>&#160; TensorInfo <a class="code" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>(shape, DataType::Float32);</div><div class="line"><a name="l02170"></a><span class="lineno"> 2170</span>&#160;</div><div class="line"><a name="l02171"></a><span class="lineno"> 2171</span>&#160; IConnectableLayer* activation = <a class="code" href="namespacearmnn.html#a120c131df35d78b3a56cb0f07decaf35">CreateStartOfLeakyReluNetwork</a>(network.get(), <a class="code" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>);</div><div class="line"><a name="l02172"></a><span class="lineno"> 2172</span>&#160;</div><div class="line"><a name="l02173"></a><span class="lineno"> 2173</span>&#160; <span class="comment">// Add the layer under test</span></div><div class="line"><a name="l02174"></a><span class="lineno"> 2174</span>&#160; ViewsDescriptor splitterDesc(2,4);</div><div class="line"><a name="l02175"></a><span class="lineno"> 2175</span>&#160; IConnectableLayer* splitter = network-&gt;AddSplitterLayer(splitterDesc);</div><div class="line"><a name="l02176"></a><span class="lineno"> 2176</span>&#160; <a class="code" href="namespacearmnn.html#a6fff4b4b1b5d4d37c9cf53d0e31c05dd">CompleteLeakyReluNetwork</a>(network.get(), activation, splitter, <a class="code" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>);</div><div class="line"><a name="l02177"></a><span class="lineno"> 2177</span>&#160;</div><div class="line"><a name="l02178"></a><span class="lineno"> 2178</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQAsymmU8 = INetworkQuantizer::Create(network.get())-&gt;ExportNetwork();</div><div class="line"><a name="l02179"></a><span class="lineno"> 2179</span>&#160; TestSplitterQuantization validatorQAsymmU8(shape, shape);</div><div class="line"><a name="l02180"></a><span class="lineno"> 2180</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQAsymmU8.get(), validatorQAsymmU8);</div><div class="line"><a name="l02181"></a><span class="lineno"> 2181</span>&#160;</div><div class="line"><a name="l02182"></a><span class="lineno"> 2182</span>&#160; <span class="keyword">const</span> QuantizerOptions qAsymmS8Options(DataType::QAsymmS8);</div><div class="line"><a name="l02183"></a><span class="lineno"> 2183</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQAsymmS8 = INetworkQuantizer::Create(network.get(), qAsymmS8Options)-&gt;ExportNetwork();</div><div class="line"><a name="l02184"></a><span class="lineno"> 2184</span>&#160; TestSplitterQuantization validatorQAsymmS8(qAsymmS8Options, shape, shape);</div><div class="line"><a name="l02185"></a><span class="lineno"> 2185</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQAsymmS8.get(), validatorQAsymmS8);</div><div class="line"><a name="l02186"></a><span class="lineno"> 2186</span>&#160;</div><div class="line"><a name="l02187"></a><span class="lineno"> 2187</span>&#160; <span class="keyword">const</span> QuantizerOptions qSymmS8Options(DataType::QSymmS8);</div><div class="line"><a name="l02188"></a><span class="lineno"> 2188</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQSymmS8 = INetworkQuantizer::Create(network.get(), qSymmS8Options)-&gt;ExportNetwork();</div><div class="line"><a name="l02189"></a><span class="lineno"> 2189</span>&#160; TestSplitterQuantization validatorQSymmS8(qSymmS8Options, shape, shape);</div><div class="line"><a name="l02190"></a><span class="lineno"> 2190</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQSymmS8.get(), validatorQSymmS8);</div><div class="line"><a name="l02191"></a><span class="lineno"> 2191</span>&#160;</div><div class="line"><a name="l02192"></a><span class="lineno"> 2192</span>&#160; <span class="keyword">const</span> QuantizerOptions qSymmS16options(DataType::QSymmS16);</div><div class="line"><a name="l02193"></a><span class="lineno"> 2193</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQSymmS16 = INetworkQuantizer::Create(network.get(), qSymmS16options)-&gt;ExportNetwork();</div><div class="line"><a name="l02194"></a><span class="lineno"> 2194</span>&#160; TestSplitterQuantization validatorQSymmS16(qSymmS16options, shape, shape);</div><div class="line"><a name="l02195"></a><span class="lineno"> 2195</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQSymmS16.get(), validatorQSymmS16);</div><div class="line"><a name="l02196"></a><span class="lineno"> 2196</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c"><div class="ttname"><a href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">armnn::BoostLogSeverityMapping::info</a></div></div>
<div class="ttc" id="namespacearmnn_html_a60291543fe872b795e71e05bcd835fd1"><div class="ttname"><a href="namespacearmnn.html#a60291543fe872b795e71e05bcd835fd1">armnn::SplitterDescriptor</a></div><div class="ttdeci">ViewsDescriptor SplitterDescriptor</div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_fwd_8hpp_source.html#l00050">DescriptorsFwd.hpp:50</a></div></div>
<div class="ttc" id="namespacearmnn_html_a120c131df35d78b3a56cb0f07decaf35"><div class="ttname"><a href="namespacearmnn.html#a120c131df35d78b3a56cb0f07decaf35">armnn::CreateStartOfLeakyReluNetwork</a></div><div class="ttdeci">IConnectableLayer * CreateStartOfLeakyReluNetwork(INetwork *network, const TensorInfo &amp;info)</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l01474">QuantizerTest.cpp:1474</a></div></div>
<div class="ttc" id="namespacearmnn_html_a6482907b4c57873e197324f5cb66fd4d"><div class="ttname"><a href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">armnn::VisitLayersTopologically</a></div><div class="ttdeci">void VisitLayersTopologically(const INetwork *inputNetwork, ILayerVisitor &amp;visitor)</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l00193">QuantizerTest.cpp:193</a></div></div>
<div class="ttc" id="namespacearmnn_html_ace74f6f9feb95a964a49d79458232703"><div class="ttname"><a href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">armnn::INetworkPtr</a></div><div class="ttdeci">std::unique_ptr&lt; INetwork, void(*)(INetwork *network)&gt; INetworkPtr</div><div class="ttdef"><b>Definition:</b> <a href="_i_network_8hpp_source.html#l00085">INetwork.hpp:85</a></div></div>
<div class="ttc" id="namespacearmnn_html_a6fff4b4b1b5d4d37c9cf53d0e31c05dd"><div class="ttname"><a href="namespacearmnn.html#a6fff4b4b1b5d4d37c9cf53d0e31c05dd">armnn::CompleteLeakyReluNetwork</a></div><div class="ttdeci">void CompleteLeakyReluNetwork(INetwork *network, IConnectableLayer *activation, IConnectableLayer *layerUnderTest, const TensorInfo &amp;info)</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l01495">QuantizerTest.cpp:1495</a></div></div>
<div class="ttc" id="_file_only_profiling_decorator_tests_8cpp_html_a6560146509197f3e197d8d36f76c1347"><div class="ttname"><a href="_file_only_profiling_decorator_tests_8cpp.html#a6560146509197f3e197d8d36f76c1347">options</a></div><div class="ttdeci">armnn::Runtime::CreationOptions::ExternalProfilingOptions options</div><div class="ttdef"><b>Definition:</b> <a href="_file_only_profiling_decorator_tests_8cpp_source.html#l00045">FileOnlyProfilingDecoratorTests.cpp:45</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a102f37a09de1b0d4d78740a3c12902bf"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a102f37a09de1b0d4d78740a3c12902bf">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[65/79]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
<td>(</td>
<td class="paramtype">QuantizeResize&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_quantizer_test_8cpp_source.html#l02198">2198</a> of file <a class="el" href="_quantizer_test_8cpp_source.html">QuantizerTest.cpp</a>.</p>
<p class="reference">References <a class="el" href="_quantizer_test_8cpp_source.html#l01495">CompleteLeakyReluNetwork()</a>, <a class="el" href="_network_quantizer_8cpp_source.html#l00040">INetworkQuantizer::Create()</a>, <a class="el" href="_network_8cpp_source.html#l00048">INetwork::Create()</a>, <a class="el" href="_quantizer_test_8cpp_source.html#l01474">CreateStartOfLeakyReluNetwork()</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">Float32</a>, <a class="el" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>, <a class="el" href="_descriptors_8hpp_source.html#l00746">ResizeDescriptor::m_TargetHeight</a>, <a class="el" href="_file_only_profiling_decorator_tests_8cpp_source.html#l00045">options</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a9d02ea768c081d4bdb2b7cab0b3f510d">QAsymmS8</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7">QSymmS16</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a9945327825b115e93a3b89f4302e76db">QSymmS8</a>, and <a class="el" href="_quantizer_test_8cpp_source.html#l00193">VisitLayersTopologically()</a>.</p>
<div class="fragment"><div class="line"><a name="l02199"></a><span class="lineno"> 2199</span>&#160;{</div><div class="line"><a name="l02200"></a><span class="lineno"> 2200</span>&#160; <span class="keyword">class </span>TestResizeQuantization : <span class="keyword">public</span> TestLeakyReLuActivationQuantization</div><div class="line"><a name="l02201"></a><span class="lineno"> 2201</span>&#160; {</div><div class="line"><a name="l02202"></a><span class="lineno"> 2202</span>&#160; <span class="keyword">public</span>:</div><div class="line"><a name="l02203"></a><span class="lineno"> 2203</span>&#160; TestResizeQuantization(<span class="keyword">const</span> TensorShape&amp; inputShape, <span class="keyword">const</span> TensorShape&amp; outputShape)</div><div class="line"><a name="l02204"></a><span class="lineno"> 2204</span>&#160; : TestLeakyReLuActivationQuantization(inputShape, outputShape)</div><div class="line"><a name="l02205"></a><span class="lineno"> 2205</span>&#160; {}</div><div class="line"><a name="l02206"></a><span class="lineno"> 2206</span>&#160;</div><div class="line"><a name="l02207"></a><span class="lineno"> 2207</span>&#160; TestResizeQuantization(<span class="keyword">const</span> QuantizerOptions&amp; <a class="code" href="_file_only_profiling_decorator_tests_8cpp.html#a6560146509197f3e197d8d36f76c1347">options</a>,</div><div class="line"><a name="l02208"></a><span class="lineno"> 2208</span>&#160; <span class="keyword">const</span> TensorShape&amp; inputShape,</div><div class="line"><a name="l02209"></a><span class="lineno"> 2209</span>&#160; <span class="keyword">const</span> TensorShape&amp; outputShape)</div><div class="line"><a name="l02210"></a><span class="lineno"> 2210</span>&#160; : TestLeakyReLuActivationQuantization(options, inputShape, outputShape)</div><div class="line"><a name="l02211"></a><span class="lineno"> 2211</span>&#160; {}</div><div class="line"><a name="l02212"></a><span class="lineno"> 2212</span>&#160;</div><div class="line"><a name="l02213"></a><span class="lineno"> 2213</span>&#160; <span class="keywordtype">void</span> VisitResizeLayer(<span class="keyword">const</span> IConnectableLayer* layer,</div><div class="line"><a name="l02214"></a><span class="lineno"> 2214</span>&#160; <span class="keyword">const</span> ResizeDescriptor&amp; resizeDescriptor,</div><div class="line"><a name="l02215"></a><span class="lineno"> 2215</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span>* name = <span class="keyword">nullptr</span>)<span class="keyword"> override</span></div><div class="line"><a name="l02216"></a><span class="lineno"> 2216</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l02217"></a><span class="lineno"> 2217</span>&#160; boost::ignore_unused(resizeDescriptor, name);</div><div class="line"><a name="l02218"></a><span class="lineno"> 2218</span>&#160; CheckForwardedQuantizationSettings(layer);</div><div class="line"><a name="l02219"></a><span class="lineno"> 2219</span>&#160; }</div><div class="line"><a name="l02220"></a><span class="lineno"> 2220</span>&#160; };</div><div class="line"><a name="l02221"></a><span class="lineno"> 2221</span>&#160;</div><div class="line"><a name="l02222"></a><span class="lineno"> 2222</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> network = INetwork::Create();</div><div class="line"><a name="l02223"></a><span class="lineno"> 2223</span>&#160;</div><div class="line"><a name="l02224"></a><span class="lineno"> 2224</span>&#160; <span class="keyword">const</span> TensorShape shape{1U};</div><div class="line"><a name="l02225"></a><span class="lineno"> 2225</span>&#160; TensorInfo <a class="code" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>(shape, DataType::Float32);</div><div class="line"><a name="l02226"></a><span class="lineno"> 2226</span>&#160;</div><div class="line"><a name="l02227"></a><span class="lineno"> 2227</span>&#160; IConnectableLayer* activation = <a class="code" href="namespacearmnn.html#a120c131df35d78b3a56cb0f07decaf35">CreateStartOfLeakyReluNetwork</a>(network.get(), <a class="code" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>);</div><div class="line"><a name="l02228"></a><span class="lineno"> 2228</span>&#160;</div><div class="line"><a name="l02229"></a><span class="lineno"> 2229</span>&#160; <span class="comment">// Add the layer under test</span></div><div class="line"><a name="l02230"></a><span class="lineno"> 2230</span>&#160; ResizeDescriptor descriptor;</div><div class="line"><a name="l02231"></a><span class="lineno"> 2231</span>&#160; descriptor.m_TargetHeight = 3;</div><div class="line"><a name="l02232"></a><span class="lineno"> 2232</span>&#160; descriptor.m_TargetWidth = 3;</div><div class="line"><a name="l02233"></a><span class="lineno"> 2233</span>&#160; IConnectableLayer* resizeLayer = network-&gt;AddResizeLayer(descriptor);</div><div class="line"><a name="l02234"></a><span class="lineno"> 2234</span>&#160;</div><div class="line"><a name="l02235"></a><span class="lineno"> 2235</span>&#160; <a class="code" href="namespacearmnn.html#a6fff4b4b1b5d4d37c9cf53d0e31c05dd">CompleteLeakyReluNetwork</a>(network.get(), activation, resizeLayer, <a class="code" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>);</div><div class="line"><a name="l02236"></a><span class="lineno"> 2236</span>&#160;</div><div class="line"><a name="l02237"></a><span class="lineno"> 2237</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQAsymmU8 = INetworkQuantizer::Create(network.get())-&gt;ExportNetwork();</div><div class="line"><a name="l02238"></a><span class="lineno"> 2238</span>&#160; TestResizeQuantization validatorQAsymmU8(shape, shape);</div><div class="line"><a name="l02239"></a><span class="lineno"> 2239</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQAsymmU8.get(), validatorQAsymmU8);</div><div class="line"><a name="l02240"></a><span class="lineno"> 2240</span>&#160;</div><div class="line"><a name="l02241"></a><span class="lineno"> 2241</span>&#160; <span class="keyword">const</span> QuantizerOptions qAsymmS8Options(DataType::QAsymmS8);</div><div class="line"><a name="l02242"></a><span class="lineno"> 2242</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQAsymmS8 = INetworkQuantizer::Create(network.get(), qAsymmS8Options)-&gt;ExportNetwork();</div><div class="line"><a name="l02243"></a><span class="lineno"> 2243</span>&#160; TestResizeQuantization validatorQAsymmS8(qAsymmS8Options, shape, shape);</div><div class="line"><a name="l02244"></a><span class="lineno"> 2244</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQAsymmS8.get(), validatorQAsymmS8);</div><div class="line"><a name="l02245"></a><span class="lineno"> 2245</span>&#160;</div><div class="line"><a name="l02246"></a><span class="lineno"> 2246</span>&#160; <span class="keyword">const</span> QuantizerOptions qSymmS8Options(DataType::QSymmS8);</div><div class="line"><a name="l02247"></a><span class="lineno"> 2247</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQSymmS8 = INetworkQuantizer::Create(network.get(), qSymmS8Options)-&gt;ExportNetwork();</div><div class="line"><a name="l02248"></a><span class="lineno"> 2248</span>&#160; TestResizeQuantization validatorQSymmS8(qSymmS8Options, shape, shape);</div><div class="line"><a name="l02249"></a><span class="lineno"> 2249</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQSymmS8.get(), validatorQSymmS8);</div><div class="line"><a name="l02250"></a><span class="lineno"> 2250</span>&#160;</div><div class="line"><a name="l02251"></a><span class="lineno"> 2251</span>&#160; <span class="keyword">const</span> QuantizerOptions qSymmS16options(DataType::QSymmS16);</div><div class="line"><a name="l02252"></a><span class="lineno"> 2252</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQSymmS16 = INetworkQuantizer::Create(network.get(), qSymmS16options)-&gt;ExportNetwork();</div><div class="line"><a name="l02253"></a><span class="lineno"> 2253</span>&#160; TestResizeQuantization validatorQSymmS16(qSymmS16options, shape, shape);</div><div class="line"><a name="l02254"></a><span class="lineno"> 2254</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQSymmS16.get(), validatorQSymmS16);</div><div class="line"><a name="l02255"></a><span class="lineno"> 2255</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c"><div class="ttname"><a href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">armnn::BoostLogSeverityMapping::info</a></div></div>
<div class="ttc" id="namespacearmnn_html_a120c131df35d78b3a56cb0f07decaf35"><div class="ttname"><a href="namespacearmnn.html#a120c131df35d78b3a56cb0f07decaf35">armnn::CreateStartOfLeakyReluNetwork</a></div><div class="ttdeci">IConnectableLayer * CreateStartOfLeakyReluNetwork(INetwork *network, const TensorInfo &amp;info)</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l01474">QuantizerTest.cpp:1474</a></div></div>
<div class="ttc" id="namespacearmnn_html_a6482907b4c57873e197324f5cb66fd4d"><div class="ttname"><a href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">armnn::VisitLayersTopologically</a></div><div class="ttdeci">void VisitLayersTopologically(const INetwork *inputNetwork, ILayerVisitor &amp;visitor)</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l00193">QuantizerTest.cpp:193</a></div></div>
<div class="ttc" id="namespacearmnn_html_ace74f6f9feb95a964a49d79458232703"><div class="ttname"><a href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">armnn::INetworkPtr</a></div><div class="ttdeci">std::unique_ptr&lt; INetwork, void(*)(INetwork *network)&gt; INetworkPtr</div><div class="ttdef"><b>Definition:</b> <a href="_i_network_8hpp_source.html#l00085">INetwork.hpp:85</a></div></div>
<div class="ttc" id="namespacearmnn_html_a6fff4b4b1b5d4d37c9cf53d0e31c05dd"><div class="ttname"><a href="namespacearmnn.html#a6fff4b4b1b5d4d37c9cf53d0e31c05dd">armnn::CompleteLeakyReluNetwork</a></div><div class="ttdeci">void CompleteLeakyReluNetwork(INetwork *network, IConnectableLayer *activation, IConnectableLayer *layerUnderTest, const TensorInfo &amp;info)</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l01495">QuantizerTest.cpp:1495</a></div></div>
<div class="ttc" id="_file_only_profiling_decorator_tests_8cpp_html_a6560146509197f3e197d8d36f76c1347"><div class="ttname"><a href="_file_only_profiling_decorator_tests_8cpp.html#a6560146509197f3e197d8d36f76c1347">options</a></div><div class="ttdeci">armnn::Runtime::CreationOptions::ExternalProfilingOptions options</div><div class="ttdef"><b>Definition:</b> <a href="_file_only_profiling_decorator_tests_8cpp_source.html#l00045">FileOnlyProfilingDecoratorTests.cpp:45</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a5f9c6094ae666c8e14907307d0481fac"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a5f9c6094ae666c8e14907307d0481fac">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[66/79]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
<td>(</td>
<td class="paramtype">QuantizeStridedSlice&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_quantizer_test_8cpp_source.html#l02257">2257</a> of file <a class="el" href="_quantizer_test_8cpp_source.html">QuantizerTest.cpp</a>.</p>
<p class="reference">References <a class="el" href="_quantizer_test_8cpp_source.html#l01495">CompleteLeakyReluNetwork()</a>, <a class="el" href="_network_quantizer_8cpp_source.html#l00040">INetworkQuantizer::Create()</a>, <a class="el" href="_network_8cpp_source.html#l00048">INetwork::Create()</a>, <a class="el" href="_quantizer_test_8cpp_source.html#l01474">CreateStartOfLeakyReluNetwork()</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">Float32</a>, <a class="el" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>, <a class="el" href="_file_only_profiling_decorator_tests_8cpp_source.html#l00045">options</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a9d02ea768c081d4bdb2b7cab0b3f510d">QAsymmS8</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7">QSymmS16</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a9945327825b115e93a3b89f4302e76db">QSymmS8</a>, and <a class="el" href="_quantizer_test_8cpp_source.html#l00193">VisitLayersTopologically()</a>.</p>
<div class="fragment"><div class="line"><a name="l02258"></a><span class="lineno"> 2258</span>&#160;{</div><div class="line"><a name="l02259"></a><span class="lineno"> 2259</span>&#160; <span class="keyword">class </span>TestStridedSliceQuantization : <span class="keyword">public</span> TestLeakyReLuActivationQuantization</div><div class="line"><a name="l02260"></a><span class="lineno"> 2260</span>&#160; {</div><div class="line"><a name="l02261"></a><span class="lineno"> 2261</span>&#160; <span class="keyword">public</span>:</div><div class="line"><a name="l02262"></a><span class="lineno"> 2262</span>&#160; TestStridedSliceQuantization(<span class="keyword">const</span> TensorShape&amp; inputShape, <span class="keyword">const</span> TensorShape&amp; outputShape)</div><div class="line"><a name="l02263"></a><span class="lineno"> 2263</span>&#160; : TestLeakyReLuActivationQuantization(inputShape, outputShape) {}</div><div class="line"><a name="l02264"></a><span class="lineno"> 2264</span>&#160;</div><div class="line"><a name="l02265"></a><span class="lineno"> 2265</span>&#160; TestStridedSliceQuantization(<span class="keyword">const</span> QuantizerOptions&amp; <a class="code" href="_file_only_profiling_decorator_tests_8cpp.html#a6560146509197f3e197d8d36f76c1347">options</a>,</div><div class="line"><a name="l02266"></a><span class="lineno"> 2266</span>&#160; <span class="keyword">const</span> TensorShape&amp; inputShape,</div><div class="line"><a name="l02267"></a><span class="lineno"> 2267</span>&#160; <span class="keyword">const</span> TensorShape&amp; outputShape)</div><div class="line"><a name="l02268"></a><span class="lineno"> 2268</span>&#160; : TestLeakyReLuActivationQuantization(options, inputShape, outputShape) {}</div><div class="line"><a name="l02269"></a><span class="lineno"> 2269</span>&#160;</div><div class="line"><a name="l02270"></a><span class="lineno"> 2270</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> VisitStridedSliceLayer(<span class="keyword">const</span> IConnectableLayer* layer,</div><div class="line"><a name="l02271"></a><span class="lineno"> 2271</span>&#160; <span class="keyword">const</span> StridedSliceDescriptor&amp; desc,</div><div class="line"><a name="l02272"></a><span class="lineno"> 2272</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span>* name = <span class="keyword">nullptr</span>)</div><div class="line"><a name="l02273"></a><span class="lineno"> 2273</span>&#160; {</div><div class="line"><a name="l02274"></a><span class="lineno"> 2274</span>&#160; boost::ignore_unused(desc, name);</div><div class="line"><a name="l02275"></a><span class="lineno"> 2275</span>&#160; CheckForwardedQuantizationSettings(layer);</div><div class="line"><a name="l02276"></a><span class="lineno"> 2276</span>&#160; }</div><div class="line"><a name="l02277"></a><span class="lineno"> 2277</span>&#160; };</div><div class="line"><a name="l02278"></a><span class="lineno"> 2278</span>&#160;</div><div class="line"><a name="l02279"></a><span class="lineno"> 2279</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> network = INetwork::Create();</div><div class="line"><a name="l02280"></a><span class="lineno"> 2280</span>&#160;</div><div class="line"><a name="l02281"></a><span class="lineno"> 2281</span>&#160; <span class="keyword">const</span> TensorShape shape{3U};</div><div class="line"><a name="l02282"></a><span class="lineno"> 2282</span>&#160; TensorInfo <a class="code" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>(shape, DataType::Float32);</div><div class="line"><a name="l02283"></a><span class="lineno"> 2283</span>&#160;</div><div class="line"><a name="l02284"></a><span class="lineno"> 2284</span>&#160; IConnectableLayer* activation = <a class="code" href="namespacearmnn.html#a120c131df35d78b3a56cb0f07decaf35">CreateStartOfLeakyReluNetwork</a>(network.get(), <a class="code" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>);</div><div class="line"><a name="l02285"></a><span class="lineno"> 2285</span>&#160;</div><div class="line"><a name="l02286"></a><span class="lineno"> 2286</span>&#160; <span class="comment">// Add the layer under test</span></div><div class="line"><a name="l02287"></a><span class="lineno"> 2287</span>&#160; StridedSliceDescriptor stridedSliceDesc;</div><div class="line"><a name="l02288"></a><span class="lineno"> 2288</span>&#160; IConnectableLayer* stridedSlice = network-&gt;AddStridedSliceLayer(stridedSliceDesc);</div><div class="line"><a name="l02289"></a><span class="lineno"> 2289</span>&#160;</div><div class="line"><a name="l02290"></a><span class="lineno"> 2290</span>&#160; <a class="code" href="namespacearmnn.html#a6fff4b4b1b5d4d37c9cf53d0e31c05dd">CompleteLeakyReluNetwork</a>(network.get(), activation, stridedSlice, <a class="code" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>);</div><div class="line"><a name="l02291"></a><span class="lineno"> 2291</span>&#160;</div><div class="line"><a name="l02292"></a><span class="lineno"> 2292</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQAsymmU8 = INetworkQuantizer::Create(network.get())-&gt;ExportNetwork();</div><div class="line"><a name="l02293"></a><span class="lineno"> 2293</span>&#160; TestStridedSliceQuantization validatorQAsymmU8(shape, shape);</div><div class="line"><a name="l02294"></a><span class="lineno"> 2294</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQAsymmU8.get(), validatorQAsymmU8);</div><div class="line"><a name="l02295"></a><span class="lineno"> 2295</span>&#160;</div><div class="line"><a name="l02296"></a><span class="lineno"> 2296</span>&#160; <span class="keyword">const</span> QuantizerOptions qAsymmS8Options(DataType::QAsymmS8);</div><div class="line"><a name="l02297"></a><span class="lineno"> 2297</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQAsymmS8 = INetworkQuantizer::Create(network.get(), qAsymmS8Options)-&gt;ExportNetwork();</div><div class="line"><a name="l02298"></a><span class="lineno"> 2298</span>&#160; TestStridedSliceQuantization validatorQAsymmS8(qAsymmS8Options, shape, shape);</div><div class="line"><a name="l02299"></a><span class="lineno"> 2299</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQAsymmS8.get(), validatorQAsymmS8);</div><div class="line"><a name="l02300"></a><span class="lineno"> 2300</span>&#160;</div><div class="line"><a name="l02301"></a><span class="lineno"> 2301</span>&#160; <span class="keyword">const</span> QuantizerOptions qSymmS8Options(DataType::QSymmS8);</div><div class="line"><a name="l02302"></a><span class="lineno"> 2302</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQSymmS8 = INetworkQuantizer::Create(network.get(), qSymmS8Options)-&gt;ExportNetwork();</div><div class="line"><a name="l02303"></a><span class="lineno"> 2303</span>&#160; TestStridedSliceQuantization validatorQSymmS8(qSymmS8Options, shape, shape);</div><div class="line"><a name="l02304"></a><span class="lineno"> 2304</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQSymmS8.get(), validatorQSymmS8);</div><div class="line"><a name="l02305"></a><span class="lineno"> 2305</span>&#160;</div><div class="line"><a name="l02306"></a><span class="lineno"> 2306</span>&#160; <span class="keyword">const</span> QuantizerOptions qSymmS16options(DataType::QSymmS16);</div><div class="line"><a name="l02307"></a><span class="lineno"> 2307</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQSymmS16 = INetworkQuantizer::Create(network.get(), qSymmS16options)-&gt;ExportNetwork();</div><div class="line"><a name="l02308"></a><span class="lineno"> 2308</span>&#160; TestStridedSliceQuantization validatorQSymmS16(qSymmS16options, shape, shape);</div><div class="line"><a name="l02309"></a><span class="lineno"> 2309</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQSymmS16.get(), validatorQSymmS16);</div><div class="line"><a name="l02310"></a><span class="lineno"> 2310</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c"><div class="ttname"><a href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">armnn::BoostLogSeverityMapping::info</a></div></div>
<div class="ttc" id="namespacearmnn_html_a120c131df35d78b3a56cb0f07decaf35"><div class="ttname"><a href="namespacearmnn.html#a120c131df35d78b3a56cb0f07decaf35">armnn::CreateStartOfLeakyReluNetwork</a></div><div class="ttdeci">IConnectableLayer * CreateStartOfLeakyReluNetwork(INetwork *network, const TensorInfo &amp;info)</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l01474">QuantizerTest.cpp:1474</a></div></div>
<div class="ttc" id="namespacearmnn_html_a6482907b4c57873e197324f5cb66fd4d"><div class="ttname"><a href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">armnn::VisitLayersTopologically</a></div><div class="ttdeci">void VisitLayersTopologically(const INetwork *inputNetwork, ILayerVisitor &amp;visitor)</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l00193">QuantizerTest.cpp:193</a></div></div>
<div class="ttc" id="namespacearmnn_html_ace74f6f9feb95a964a49d79458232703"><div class="ttname"><a href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">armnn::INetworkPtr</a></div><div class="ttdeci">std::unique_ptr&lt; INetwork, void(*)(INetwork *network)&gt; INetworkPtr</div><div class="ttdef"><b>Definition:</b> <a href="_i_network_8hpp_source.html#l00085">INetwork.hpp:85</a></div></div>
<div class="ttc" id="namespacearmnn_html_a6fff4b4b1b5d4d37c9cf53d0e31c05dd"><div class="ttname"><a href="namespacearmnn.html#a6fff4b4b1b5d4d37c9cf53d0e31c05dd">armnn::CompleteLeakyReluNetwork</a></div><div class="ttdeci">void CompleteLeakyReluNetwork(INetwork *network, IConnectableLayer *activation, IConnectableLayer *layerUnderTest, const TensorInfo &amp;info)</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l01495">QuantizerTest.cpp:1495</a></div></div>
<div class="ttc" id="_file_only_profiling_decorator_tests_8cpp_html_a6560146509197f3e197d8d36f76c1347"><div class="ttname"><a href="_file_only_profiling_decorator_tests_8cpp.html#a6560146509197f3e197d8d36f76c1347">options</a></div><div class="ttdeci">armnn::Runtime::CreationOptions::ExternalProfilingOptions options</div><div class="ttdef"><b>Definition:</b> <a href="_file_only_profiling_decorator_tests_8cpp_source.html#l00045">FileOnlyProfilingDecoratorTests.cpp:45</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="aec7cf8e3927ee7d24f8b19d206ce3e84"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aec7cf8e3927ee7d24f8b19d206ce3e84">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[67/79]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
<td>(</td>
<td class="paramtype">QuantizeBatchToSpace&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_quantizer_test_8cpp_source.html#l02312">2312</a> of file <a class="el" href="_quantizer_test_8cpp_source.html">QuantizerTest.cpp</a>.</p>
<p class="reference">References <a class="el" href="_quantizer_test_8cpp_source.html#l01495">CompleteLeakyReluNetwork()</a>, <a class="el" href="_network_quantizer_8cpp_source.html#l00040">INetworkQuantizer::Create()</a>, <a class="el" href="_network_8cpp_source.html#l00048">INetwork::Create()</a>, <a class="el" href="_quantizer_test_8cpp_source.html#l01474">CreateStartOfLeakyReluNetwork()</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">Float32</a>, <a class="el" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>, <a class="el" href="_file_only_profiling_decorator_tests_8cpp_source.html#l00045">options</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a9d02ea768c081d4bdb2b7cab0b3f510d">QAsymmS8</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7">QSymmS16</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a9945327825b115e93a3b89f4302e76db">QSymmS8</a>, and <a class="el" href="_quantizer_test_8cpp_source.html#l00193">VisitLayersTopologically()</a>.</p>
<div class="fragment"><div class="line"><a name="l02313"></a><span class="lineno"> 2313</span>&#160;{</div><div class="line"><a name="l02314"></a><span class="lineno"> 2314</span>&#160; <span class="keyword">class </span>TestBatchToSpaceQuantization : <span class="keyword">public</span> TestLeakyReLuActivationQuantization</div><div class="line"><a name="l02315"></a><span class="lineno"> 2315</span>&#160; {</div><div class="line"><a name="l02316"></a><span class="lineno"> 2316</span>&#160; <span class="keyword">public</span>:</div><div class="line"><a name="l02317"></a><span class="lineno"> 2317</span>&#160; TestBatchToSpaceQuantization(<span class="keyword">const</span> TensorShape&amp; inputShape, <span class="keyword">const</span> TensorShape&amp; outputShape)</div><div class="line"><a name="l02318"></a><span class="lineno"> 2318</span>&#160; : TestLeakyReLuActivationQuantization(inputShape, outputShape) {}</div><div class="line"><a name="l02319"></a><span class="lineno"> 2319</span>&#160;</div><div class="line"><a name="l02320"></a><span class="lineno"> 2320</span>&#160; TestBatchToSpaceQuantization(<span class="keyword">const</span> QuantizerOptions&amp; <a class="code" href="_file_only_profiling_decorator_tests_8cpp.html#a6560146509197f3e197d8d36f76c1347">options</a>,</div><div class="line"><a name="l02321"></a><span class="lineno"> 2321</span>&#160; <span class="keyword">const</span> TensorShape&amp; inputShape,</div><div class="line"><a name="l02322"></a><span class="lineno"> 2322</span>&#160; <span class="keyword">const</span> TensorShape&amp; outputShape)</div><div class="line"><a name="l02323"></a><span class="lineno"> 2323</span>&#160; : TestLeakyReLuActivationQuantization(options, inputShape, outputShape) {}</div><div class="line"><a name="l02324"></a><span class="lineno"> 2324</span>&#160;</div><div class="line"><a name="l02325"></a><span class="lineno"> 2325</span>&#160; <span class="keywordtype">void</span> VisitBatchToSpaceNdLayer(<span class="keyword">const</span> IConnectableLayer* layer,</div><div class="line"><a name="l02326"></a><span class="lineno"> 2326</span>&#160; <span class="keyword">const</span> BatchToSpaceNdDescriptor&amp; batchToSpaceNdDescriptor,</div><div class="line"><a name="l02327"></a><span class="lineno"> 2327</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span>* name = <span class="keyword">nullptr</span>)<span class="keyword"> override</span></div><div class="line"><a name="l02328"></a><span class="lineno"> 2328</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l02329"></a><span class="lineno"> 2329</span>&#160; boost::ignore_unused(batchToSpaceNdDescriptor, name);</div><div class="line"><a name="l02330"></a><span class="lineno"> 2330</span>&#160; CheckForwardedQuantizationSettings(layer);</div><div class="line"><a name="l02331"></a><span class="lineno"> 2331</span>&#160; }</div><div class="line"><a name="l02332"></a><span class="lineno"> 2332</span>&#160; };</div><div class="line"><a name="l02333"></a><span class="lineno"> 2333</span>&#160;</div><div class="line"><a name="l02334"></a><span class="lineno"> 2334</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> network = INetwork::Create();</div><div class="line"><a name="l02335"></a><span class="lineno"> 2335</span>&#160;</div><div class="line"><a name="l02336"></a><span class="lineno"> 2336</span>&#160; <span class="keyword">const</span> TensorShape shape{1U};</div><div class="line"><a name="l02337"></a><span class="lineno"> 2337</span>&#160; TensorInfo <a class="code" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>(shape, DataType::Float32);</div><div class="line"><a name="l02338"></a><span class="lineno"> 2338</span>&#160;</div><div class="line"><a name="l02339"></a><span class="lineno"> 2339</span>&#160; IConnectableLayer* activation = <a class="code" href="namespacearmnn.html#a120c131df35d78b3a56cb0f07decaf35">CreateStartOfLeakyReluNetwork</a>(network.get(), <a class="code" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>);</div><div class="line"><a name="l02340"></a><span class="lineno"> 2340</span>&#160;</div><div class="line"><a name="l02341"></a><span class="lineno"> 2341</span>&#160; <span class="comment">// Add the layer under test</span></div><div class="line"><a name="l02342"></a><span class="lineno"> 2342</span>&#160; BatchToSpaceNdDescriptor descriptor;</div><div class="line"><a name="l02343"></a><span class="lineno"> 2343</span>&#160; IConnectableLayer* batchToSpace = network-&gt;AddBatchToSpaceNdLayer(descriptor);</div><div class="line"><a name="l02344"></a><span class="lineno"> 2344</span>&#160;</div><div class="line"><a name="l02345"></a><span class="lineno"> 2345</span>&#160; <a class="code" href="namespacearmnn.html#a6fff4b4b1b5d4d37c9cf53d0e31c05dd">CompleteLeakyReluNetwork</a>(network.get(), activation, batchToSpace, <a class="code" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>);</div><div class="line"><a name="l02346"></a><span class="lineno"> 2346</span>&#160;</div><div class="line"><a name="l02347"></a><span class="lineno"> 2347</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQAsymmU8 = INetworkQuantizer::Create(network.get())-&gt;ExportNetwork();</div><div class="line"><a name="l02348"></a><span class="lineno"> 2348</span>&#160; TestBatchToSpaceQuantization validatorQAsymmU8(shape, shape);</div><div class="line"><a name="l02349"></a><span class="lineno"> 2349</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQAsymmU8.get(), validatorQAsymmU8);</div><div class="line"><a name="l02350"></a><span class="lineno"> 2350</span>&#160;</div><div class="line"><a name="l02351"></a><span class="lineno"> 2351</span>&#160; <span class="keyword">const</span> QuantizerOptions qAsymmS8Options(DataType::QAsymmS8);</div><div class="line"><a name="l02352"></a><span class="lineno"> 2352</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQAsymmS8 = INetworkQuantizer::Create(network.get(), qAsymmS8Options)-&gt;ExportNetwork();</div><div class="line"><a name="l02353"></a><span class="lineno"> 2353</span>&#160; TestBatchToSpaceQuantization validatorQAsymmS8(qAsymmS8Options, shape, shape);</div><div class="line"><a name="l02354"></a><span class="lineno"> 2354</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQAsymmS8.get(), validatorQAsymmS8);</div><div class="line"><a name="l02355"></a><span class="lineno"> 2355</span>&#160;</div><div class="line"><a name="l02356"></a><span class="lineno"> 2356</span>&#160; <span class="keyword">const</span> QuantizerOptions qSymmS8Options(DataType::QSymmS8);</div><div class="line"><a name="l02357"></a><span class="lineno"> 2357</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQSymmS8 = INetworkQuantizer::Create(network.get(), qSymmS8Options)-&gt;ExportNetwork();</div><div class="line"><a name="l02358"></a><span class="lineno"> 2358</span>&#160; TestBatchToSpaceQuantization validatorQSymmS8(qSymmS8Options, shape, shape);</div><div class="line"><a name="l02359"></a><span class="lineno"> 2359</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQSymmS8.get(), validatorQSymmS8);</div><div class="line"><a name="l02360"></a><span class="lineno"> 2360</span>&#160;</div><div class="line"><a name="l02361"></a><span class="lineno"> 2361</span>&#160; <span class="keyword">const</span> QuantizerOptions qSymmS16options(DataType::QSymmS16);</div><div class="line"><a name="l02362"></a><span class="lineno"> 2362</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQSymmS16 = INetworkQuantizer::Create(network.get(), qSymmS16options)-&gt;ExportNetwork();</div><div class="line"><a name="l02363"></a><span class="lineno"> 2363</span>&#160; TestBatchToSpaceQuantization validatorQSymmS16(qSymmS16options, shape, shape);</div><div class="line"><a name="l02364"></a><span class="lineno"> 2364</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQSymmS16.get(), validatorQSymmS16);</div><div class="line"><a name="l02365"></a><span class="lineno"> 2365</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c"><div class="ttname"><a href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">armnn::BoostLogSeverityMapping::info</a></div></div>
<div class="ttc" id="namespacearmnn_html_a120c131df35d78b3a56cb0f07decaf35"><div class="ttname"><a href="namespacearmnn.html#a120c131df35d78b3a56cb0f07decaf35">armnn::CreateStartOfLeakyReluNetwork</a></div><div class="ttdeci">IConnectableLayer * CreateStartOfLeakyReluNetwork(INetwork *network, const TensorInfo &amp;info)</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l01474">QuantizerTest.cpp:1474</a></div></div>
<div class="ttc" id="namespacearmnn_html_a6482907b4c57873e197324f5cb66fd4d"><div class="ttname"><a href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">armnn::VisitLayersTopologically</a></div><div class="ttdeci">void VisitLayersTopologically(const INetwork *inputNetwork, ILayerVisitor &amp;visitor)</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l00193">QuantizerTest.cpp:193</a></div></div>
<div class="ttc" id="namespacearmnn_html_ace74f6f9feb95a964a49d79458232703"><div class="ttname"><a href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">armnn::INetworkPtr</a></div><div class="ttdeci">std::unique_ptr&lt; INetwork, void(*)(INetwork *network)&gt; INetworkPtr</div><div class="ttdef"><b>Definition:</b> <a href="_i_network_8hpp_source.html#l00085">INetwork.hpp:85</a></div></div>
<div class="ttc" id="namespacearmnn_html_a6fff4b4b1b5d4d37c9cf53d0e31c05dd"><div class="ttname"><a href="namespacearmnn.html#a6fff4b4b1b5d4d37c9cf53d0e31c05dd">armnn::CompleteLeakyReluNetwork</a></div><div class="ttdeci">void CompleteLeakyReluNetwork(INetwork *network, IConnectableLayer *activation, IConnectableLayer *layerUnderTest, const TensorInfo &amp;info)</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l01495">QuantizerTest.cpp:1495</a></div></div>
<div class="ttc" id="_file_only_profiling_decorator_tests_8cpp_html_a6560146509197f3e197d8d36f76c1347"><div class="ttname"><a href="_file_only_profiling_decorator_tests_8cpp.html#a6560146509197f3e197d8d36f76c1347">options</a></div><div class="ttdeci">armnn::Runtime::CreationOptions::ExternalProfilingOptions options</div><div class="ttdef"><b>Definition:</b> <a href="_file_only_profiling_decorator_tests_8cpp_source.html#l00045">FileOnlyProfilingDecoratorTests.cpp:45</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a733ef16d4eaaf8cce338320fa042f526"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a733ef16d4eaaf8cce338320fa042f526">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[68/79]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
<td>(</td>
<td class="paramtype">QuantizePrelu&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_quantizer_test_8cpp_source.html#l02367">2367</a> of file <a class="el" href="_quantizer_test_8cpp_source.html">QuantizerTest.cpp</a>.</p>
<p class="reference">References <a class="el" href="classarmnn_1_1_i_output_slot.html#ac1835f8756a9f03c02fcf9664e3a0fce">IOutputSlot::Connect()</a>, <a class="el" href="_network_quantizer_8cpp_source.html#l00040">INetworkQuantizer::Create()</a>, <a class="el" href="_network_8cpp_source.html#l00048">INetwork::Create()</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">Float32</a>, <a class="el" href="_quantizer_test_8cpp_source.html#l00035">g_AsymmS8QuantizationBase</a>, <a class="el" href="_quantizer_test_8cpp_source.html#l00033">g_AsymmU8QuantizationBase</a>, <a class="el" href="_quantizer_test_8cpp_source.html#l00037">g_SymmS16QuantizationBase</a>, <a class="el" href="_quantizer_test_8cpp_source.html#l00036">g_SymmS8QuantizationBase</a>, <a class="el" href="classarmnn_1_1_i_input_slot.html#a81fbf6103761e55061b62ba989b00f10">IInputSlot::GetConnection()</a>, <a class="el" href="classarmnn_1_1_i_connectable_layer.html#a6ec9e0eb66d7d6a01240492a0b18104c">IConnectableLayer::GetInputSlot()</a>, <a class="el" href="classarmnn_1_1_i_connectable_layer.html#a80ac4eda2e7f2757ec9dd96fc96dbd16">IConnectableLayer::GetOutputSlot()</a>, <a class="el" href="_tensor_8hpp_source.html#l00088">TensorInfo::GetShape()</a>, <a class="el" href="classarmnn_1_1_i_output_slot.html#a9943775a364fc4ab53b85ac88f311886">IOutputSlot::GetTensorInfo()</a>, <a class="el" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>, <a class="el" href="_file_only_profiling_decorator_tests_8cpp_source.html#l00045">options</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a9d02ea768c081d4bdb2b7cab0b3f510d">QAsymmS8</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7">QSymmS16</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a9945327825b115e93a3b89f4302e76db">QSymmS8</a>, <a class="el" href="classarmnn_1_1_i_output_slot.html#a5ee4a6c9a2481245487b1b1a70d20fd0">IOutputSlot::SetTensorInfo()</a>, and <a class="el" href="_quantizer_test_8cpp_source.html#l00193">VisitLayersTopologically()</a>.</p>
<div class="fragment"><div class="line"><a name="l02368"></a><span class="lineno"> 2368</span>&#160;{</div><div class="line"><a name="l02369"></a><span class="lineno"> 2369</span>&#160; <span class="keyword">class </span>TestPreluQuantization : <span class="keyword">public</span> TestQuantization</div><div class="line"><a name="l02370"></a><span class="lineno"> 2370</span>&#160; {</div><div class="line"><a name="l02371"></a><span class="lineno"> 2371</span>&#160; <span class="keyword">public</span>:</div><div class="line"><a name="l02372"></a><span class="lineno"> 2372</span>&#160; TestPreluQuantization(<span class="keyword">const</span> TensorShape&amp; inputShape,</div><div class="line"><a name="l02373"></a><span class="lineno"> 2373</span>&#160; <span class="keyword">const</span> TensorShape&amp; alphaShape,</div><div class="line"><a name="l02374"></a><span class="lineno"> 2374</span>&#160; <span class="keyword">const</span> TensorShape&amp; outputShape)</div><div class="line"><a name="l02375"></a><span class="lineno"> 2375</span>&#160; : TestQuantization(inputShape, outputShape)</div><div class="line"><a name="l02376"></a><span class="lineno"> 2376</span>&#160; , m_AlphaShape(alphaShape)</div><div class="line"><a name="l02377"></a><span class="lineno"> 2377</span>&#160; {}</div><div class="line"><a name="l02378"></a><span class="lineno"> 2378</span>&#160;</div><div class="line"><a name="l02379"></a><span class="lineno"> 2379</span>&#160; TestPreluQuantization(<span class="keyword">const</span> QuantizerOptions&amp; <a class="code" href="_file_only_profiling_decorator_tests_8cpp.html#a6560146509197f3e197d8d36f76c1347">options</a>,</div><div class="line"><a name="l02380"></a><span class="lineno"> 2380</span>&#160; <span class="keyword">const</span> TensorShape&amp; inputShape,</div><div class="line"><a name="l02381"></a><span class="lineno"> 2381</span>&#160; <span class="keyword">const</span> TensorShape&amp; alphaShape,</div><div class="line"><a name="l02382"></a><span class="lineno"> 2382</span>&#160; <span class="keyword">const</span> TensorShape&amp; outputShape)</div><div class="line"><a name="l02383"></a><span class="lineno"> 2383</span>&#160; : TestQuantization(options, inputShape, outputShape)</div><div class="line"><a name="l02384"></a><span class="lineno"> 2384</span>&#160; , m_AlphaShape(alphaShape)</div><div class="line"><a name="l02385"></a><span class="lineno"> 2385</span>&#160; {}</div><div class="line"><a name="l02386"></a><span class="lineno"> 2386</span>&#160;</div><div class="line"><a name="l02387"></a><span class="lineno"> 2387</span>&#160; <span class="keywordtype">void</span> VisitInputLayer(<span class="keyword">const</span> IConnectableLayer* layer,</div><div class="line"><a name="l02388"></a><span class="lineno"> 2388</span>&#160; <a class="code" href="namespacearmnn.html#ab8cf8f9fb6792e654c2d8d8382f6f01b">LayerBindingId</a> <span class="keywordtype">id</span>,</div><div class="line"><a name="l02389"></a><span class="lineno"> 2389</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span>* name = <span class="keyword">nullptr</span>)<span class="keyword"> override</span></div><div class="line"><a name="l02390"></a><span class="lineno"> 2390</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l02391"></a><span class="lineno"> 2391</span>&#160; boost::ignore_unused(<span class="keywordtype">id</span>, name);</div><div class="line"><a name="l02392"></a><span class="lineno"> 2392</span>&#160; <span class="keyword">const</span> TensorInfo&amp; <a class="code" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a> = layer-&gt;GetOutputSlot(0).GetTensorInfo();</div><div class="line"><a name="l02393"></a><span class="lineno"> 2393</span>&#160;</div><div class="line"><a name="l02394"></a><span class="lineno"> 2394</span>&#160; <span class="keywordflow">switch</span> (<span class="keywordtype">id</span>)</div><div class="line"><a name="l02395"></a><span class="lineno"> 2395</span>&#160; {</div><div class="line"><a name="l02396"></a><span class="lineno"> 2396</span>&#160; <span class="keywordflow">case</span> 0: <span class="comment">// Input</span></div><div class="line"><a name="l02397"></a><span class="lineno"> 2397</span>&#160; BOOST_TEST(m_InputShape == info.GetShape());</div><div class="line"><a name="l02398"></a><span class="lineno"> 2398</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l02399"></a><span class="lineno"> 2399</span>&#160; <span class="keywordflow">case</span> 1: <span class="comment">// Alpha</span></div><div class="line"><a name="l02400"></a><span class="lineno"> 2400</span>&#160; BOOST_TEST(m_AlphaShape == info.GetShape());</div><div class="line"><a name="l02401"></a><span class="lineno"> 2401</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l02402"></a><span class="lineno"> 2402</span>&#160; <span class="keywordflow">default</span>:</div><div class="line"><a name="l02403"></a><span class="lineno"> 2403</span>&#160; <span class="keywordflow">throw</span> InvalidArgumentException(<span class="stringliteral">&quot;Invalid layer binding id for PReLU layer&quot;</span>);</div><div class="line"><a name="l02404"></a><span class="lineno"> 2404</span>&#160; }</div><div class="line"><a name="l02405"></a><span class="lineno"> 2405</span>&#160;</div><div class="line"><a name="l02406"></a><span class="lineno"> 2406</span>&#160; <span class="comment">// Based off current default [-15.0f, 15.0f]</span></div><div class="line"><a name="l02407"></a><span class="lineno"> 2407</span>&#160; TestQuantizationParams(info,</div><div class="line"><a name="l02408"></a><span class="lineno"> 2408</span>&#160; { 30.0f / <a class="code" href="namespacearmnn.html#a19994153bdbd7710f0af3973403bc4cc">g_AsymmU8QuantizationBase</a>, 128 }, <span class="comment">// QASymmU8</span></div><div class="line"><a name="l02409"></a><span class="lineno"> 2409</span>&#160; { 30.0f / <a class="code" href="namespacearmnn.html#a09bdfaa922d72ce0d9ec014dfa8f8c95">g_AsymmS8QuantizationBase</a>, 0}, <span class="comment">// QASymmS8</span></div><div class="line"><a name="l02410"></a><span class="lineno"> 2410</span>&#160; { 15.0f / <a class="code" href="namespacearmnn.html#acd7f8820d124166a38c95bc8ad38811b">g_SymmS8QuantizationBase</a>, 0}, <span class="comment">// QSymmS8</span></div><div class="line"><a name="l02411"></a><span class="lineno"> 2411</span>&#160; { 15.0f / <a class="code" href="namespacearmnn.html#a1465480794787d2278d3f0d2e6d887b4">g_SymmS16QuantizationBase</a>, 0 }); <span class="comment">// QSymmS16</span></div><div class="line"><a name="l02412"></a><span class="lineno"> 2412</span>&#160; }</div><div class="line"><a name="l02413"></a><span class="lineno"> 2413</span>&#160;</div><div class="line"><a name="l02414"></a><span class="lineno"> 2414</span>&#160; <span class="keywordtype">void</span> VisitOutputLayer(<span class="keyword">const</span> IConnectableLayer* layer,</div><div class="line"><a name="l02415"></a><span class="lineno"> 2415</span>&#160; <a class="code" href="namespacearmnn.html#ab8cf8f9fb6792e654c2d8d8382f6f01b">LayerBindingId</a> <span class="keywordtype">id</span>,</div><div class="line"><a name="l02416"></a><span class="lineno"> 2416</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span>* name = <span class="keyword">nullptr</span>)<span class="keyword"> override</span></div><div class="line"><a name="l02417"></a><span class="lineno"> 2417</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l02418"></a><span class="lineno"> 2418</span>&#160; boost::ignore_unused(<span class="keywordtype">id</span>, name);</div><div class="line"><a name="l02419"></a><span class="lineno"> 2419</span>&#160; <span class="keyword">const</span> TensorInfo&amp; info = layer-&gt;GetInputSlot(0).GetConnection()-&gt;GetTensorInfo();</div><div class="line"><a name="l02420"></a><span class="lineno"> 2420</span>&#160; BOOST_TEST(m_OutputShape == info.GetShape());</div><div class="line"><a name="l02421"></a><span class="lineno"> 2421</span>&#160; }</div><div class="line"><a name="l02422"></a><span class="lineno"> 2422</span>&#160;</div><div class="line"><a name="l02423"></a><span class="lineno"> 2423</span>&#160; <span class="keywordtype">void</span> VisitPreluLayer(<span class="keyword">const</span> IConnectableLayer* layer,</div><div class="line"><a name="l02424"></a><span class="lineno"> 2424</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span>* name = <span class="keyword">nullptr</span>)<span class="keyword"> override</span></div><div class="line"><a name="l02425"></a><span class="lineno"> 2425</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l02426"></a><span class="lineno"> 2426</span>&#160; boost::ignore_unused(name);</div><div class="line"><a name="l02427"></a><span class="lineno"> 2427</span>&#160; <span class="keyword">const</span> TensorInfo&amp; info = layer-&gt;GetOutputSlot(0).GetTensorInfo();</div><div class="line"><a name="l02428"></a><span class="lineno"> 2428</span>&#160; TestQuantizationParams(info,</div><div class="line"><a name="l02429"></a><span class="lineno"> 2429</span>&#160; { 30.0f / <a class="code" href="namespacearmnn.html#a19994153bdbd7710f0af3973403bc4cc">g_AsymmU8QuantizationBase</a>, 128 }, <span class="comment">// QASymmU8</span></div><div class="line"><a name="l02430"></a><span class="lineno"> 2430</span>&#160; { 30.0f / <a class="code" href="namespacearmnn.html#a09bdfaa922d72ce0d9ec014dfa8f8c95">g_AsymmS8QuantizationBase</a>, 0}, <span class="comment">// QAsymmS8</span></div><div class="line"><a name="l02431"></a><span class="lineno"> 2431</span>&#160; { 15.0f / <a class="code" href="namespacearmnn.html#acd7f8820d124166a38c95bc8ad38811b">g_SymmS8QuantizationBase</a>, 0}, <span class="comment">// QSymmS8</span></div><div class="line"><a name="l02432"></a><span class="lineno"> 2432</span>&#160; { 15.0f / <a class="code" href="namespacearmnn.html#a1465480794787d2278d3f0d2e6d887b4">g_SymmS16QuantizationBase</a>, 0 }); <span class="comment">// QSymmS16</span></div><div class="line"><a name="l02433"></a><span class="lineno"> 2433</span>&#160; }</div><div class="line"><a name="l02434"></a><span class="lineno"> 2434</span>&#160;</div><div class="line"><a name="l02435"></a><span class="lineno"> 2435</span>&#160; <span class="keyword">private</span>:</div><div class="line"><a name="l02436"></a><span class="lineno"> 2436</span>&#160; TensorShape m_AlphaShape;</div><div class="line"><a name="l02437"></a><span class="lineno"> 2437</span>&#160; };</div><div class="line"><a name="l02438"></a><span class="lineno"> 2438</span>&#160;</div><div class="line"><a name="l02439"></a><span class="lineno"> 2439</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> network = INetwork::Create();</div><div class="line"><a name="l02440"></a><span class="lineno"> 2440</span>&#160;</div><div class="line"><a name="l02441"></a><span class="lineno"> 2441</span>&#160; <span class="keyword">const</span> TensorShape inputShape{ 4, 1, 2 };</div><div class="line"><a name="l02442"></a><span class="lineno"> 2442</span>&#160; <span class="keyword">const</span> TensorShape alphaShape{ 5, 4, 3, 1 };</div><div class="line"><a name="l02443"></a><span class="lineno"> 2443</span>&#160; <span class="keyword">const</span> TensorShape outputShape{ 5, 4, 3, 2 };</div><div class="line"><a name="l02444"></a><span class="lineno"> 2444</span>&#160; TensorInfo inputInfo(inputShape, DataType::Float32);</div><div class="line"><a name="l02445"></a><span class="lineno"> 2445</span>&#160; TensorInfo alphaInfo(alphaShape, DataType::Float32);</div><div class="line"><a name="l02446"></a><span class="lineno"> 2446</span>&#160; TensorInfo outputInfo(outputShape, DataType::Float32);</div><div class="line"><a name="l02447"></a><span class="lineno"> 2447</span>&#160;</div><div class="line"><a name="l02448"></a><span class="lineno"> 2448</span>&#160; <span class="comment">// Add the input layers</span></div><div class="line"><a name="l02449"></a><span class="lineno"> 2449</span>&#160; IConnectableLayer* input = network-&gt;AddInputLayer(0);</div><div class="line"><a name="l02450"></a><span class="lineno"> 2450</span>&#160; IConnectableLayer* alpha = network-&gt;AddInputLayer(1);</div><div class="line"><a name="l02451"></a><span class="lineno"> 2451</span>&#160;</div><div class="line"><a name="l02452"></a><span class="lineno"> 2452</span>&#160; <span class="comment">// Add the layer under test</span></div><div class="line"><a name="l02453"></a><span class="lineno"> 2453</span>&#160; IConnectableLayer* prelu = network-&gt;AddPreluLayer(<span class="stringliteral">&quot;prelu&quot;</span>);</div><div class="line"><a name="l02454"></a><span class="lineno"> 2454</span>&#160;</div><div class="line"><a name="l02455"></a><span class="lineno"> 2455</span>&#160; <span class="comment">// Add the output layers</span></div><div class="line"><a name="l02456"></a><span class="lineno"> 2456</span>&#160; IConnectableLayer* output = network-&gt;AddOutputLayer(0);</div><div class="line"><a name="l02457"></a><span class="lineno"> 2457</span>&#160;</div><div class="line"><a name="l02458"></a><span class="lineno"> 2458</span>&#160; <span class="comment">// Establish connections</span></div><div class="line"><a name="l02459"></a><span class="lineno"> 2459</span>&#160; input-&gt;GetOutputSlot(0).Connect(prelu-&gt;GetInputSlot(0));</div><div class="line"><a name="l02460"></a><span class="lineno"> 2460</span>&#160; alpha-&gt;GetOutputSlot(0).Connect(prelu-&gt;GetInputSlot(1));</div><div class="line"><a name="l02461"></a><span class="lineno"> 2461</span>&#160; prelu-&gt;GetOutputSlot(0).Connect(output-&gt;GetInputSlot(0));</div><div class="line"><a name="l02462"></a><span class="lineno"> 2462</span>&#160;</div><div class="line"><a name="l02463"></a><span class="lineno"> 2463</span>&#160; <span class="comment">// Set tensor info</span></div><div class="line"><a name="l02464"></a><span class="lineno"> 2464</span>&#160; input-&gt;GetOutputSlot(0).SetTensorInfo(inputInfo);</div><div class="line"><a name="l02465"></a><span class="lineno"> 2465</span>&#160; alpha-&gt;GetOutputSlot(0).SetTensorInfo(alphaInfo);</div><div class="line"><a name="l02466"></a><span class="lineno"> 2466</span>&#160; prelu-&gt;GetOutputSlot(0).SetTensorInfo(outputInfo);</div><div class="line"><a name="l02467"></a><span class="lineno"> 2467</span>&#160;</div><div class="line"><a name="l02468"></a><span class="lineno"> 2468</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQAsymmU8 = INetworkQuantizer::Create(network.get())-&gt;ExportNetwork();</div><div class="line"><a name="l02469"></a><span class="lineno"> 2469</span>&#160; TestPreluQuantization validatorQAsymmU8(inputShape, alphaShape, outputShape);</div><div class="line"><a name="l02470"></a><span class="lineno"> 2470</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQAsymmU8.get(), validatorQAsymmU8);</div><div class="line"><a name="l02471"></a><span class="lineno"> 2471</span>&#160;</div><div class="line"><a name="l02472"></a><span class="lineno"> 2472</span>&#160; <span class="keyword">const</span> QuantizerOptions qAsymmS8Options(DataType::QAsymmS8);</div><div class="line"><a name="l02473"></a><span class="lineno"> 2473</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQAsymmS8 = INetworkQuantizer::Create(network.get(), qAsymmS8Options)-&gt;ExportNetwork();</div><div class="line"><a name="l02474"></a><span class="lineno"> 2474</span>&#160; TestPreluQuantization validatorQAsymmS8(qAsymmS8Options, inputShape, alphaShape, outputShape);</div><div class="line"><a name="l02475"></a><span class="lineno"> 2475</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQAsymmS8.get(), validatorQAsymmS8);</div><div class="line"><a name="l02476"></a><span class="lineno"> 2476</span>&#160;</div><div class="line"><a name="l02477"></a><span class="lineno"> 2477</span>&#160; <span class="keyword">const</span> QuantizerOptions qSymmS8Options(DataType::QSymmS8);</div><div class="line"><a name="l02478"></a><span class="lineno"> 2478</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQSymmS8 = INetworkQuantizer::Create(network.get(), qSymmS8Options)-&gt;ExportNetwork();</div><div class="line"><a name="l02479"></a><span class="lineno"> 2479</span>&#160; TestPreluQuantization validatorQSymmS8(qSymmS8Options, inputShape, alphaShape, outputShape);</div><div class="line"><a name="l02480"></a><span class="lineno"> 2480</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQSymmS8.get(), validatorQSymmS8);</div><div class="line"><a name="l02481"></a><span class="lineno"> 2481</span>&#160;</div><div class="line"><a name="l02482"></a><span class="lineno"> 2482</span>&#160; <span class="keyword">const</span> QuantizerOptions qSymmS16options(DataType::QSymmS16);</div><div class="line"><a name="l02483"></a><span class="lineno"> 2483</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQSymmS16 = INetworkQuantizer::Create(network.get(), qSymmS16options)-&gt;ExportNetwork();</div><div class="line"><a name="l02484"></a><span class="lineno"> 2484</span>&#160; TestPreluQuantization validatorQSymmS16(qSymmS16options, inputShape, alphaShape, outputShape);</div><div class="line"><a name="l02485"></a><span class="lineno"> 2485</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQSymmS16.get(), validatorQSymmS16);</div><div class="line"><a name="l02486"></a><span class="lineno"> 2486</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a1465480794787d2278d3f0d2e6d887b4"><div class="ttname"><a href="namespacearmnn.html#a1465480794787d2278d3f0d2e6d887b4">armnn::g_SymmS16QuantizationBase</a></div><div class="ttdeci">const float g_SymmS16QuantizationBase</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l00037">QuantizerTest.cpp:37</a></div></div>
<div class="ttc" id="namespacearmnn_html_acd7f8820d124166a38c95bc8ad38811b"><div class="ttname"><a href="namespacearmnn.html#acd7f8820d124166a38c95bc8ad38811b">armnn::g_SymmS8QuantizationBase</a></div><div class="ttdeci">const float g_SymmS8QuantizationBase</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l00036">QuantizerTest.cpp:36</a></div></div>
<div class="ttc" id="namespacearmnn_html_a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c"><div class="ttname"><a href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">armnn::BoostLogSeverityMapping::info</a></div></div>
<div class="ttc" id="namespacearmnn_html_a6482907b4c57873e197324f5cb66fd4d"><div class="ttname"><a href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">armnn::VisitLayersTopologically</a></div><div class="ttdeci">void VisitLayersTopologically(const INetwork *inputNetwork, ILayerVisitor &amp;visitor)</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l00193">QuantizerTest.cpp:193</a></div></div>
<div class="ttc" id="namespacearmnn_html_ace74f6f9feb95a964a49d79458232703"><div class="ttname"><a href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">armnn::INetworkPtr</a></div><div class="ttdeci">std::unique_ptr&lt; INetwork, void(*)(INetwork *network)&gt; INetworkPtr</div><div class="ttdef"><b>Definition:</b> <a href="_i_network_8hpp_source.html#l00085">INetwork.hpp:85</a></div></div>
<div class="ttc" id="namespacearmnn_html_a09bdfaa922d72ce0d9ec014dfa8f8c95"><div class="ttname"><a href="namespacearmnn.html#a09bdfaa922d72ce0d9ec014dfa8f8c95">armnn::g_AsymmS8QuantizationBase</a></div><div class="ttdeci">const float g_AsymmS8QuantizationBase</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l00035">QuantizerTest.cpp:35</a></div></div>
<div class="ttc" id="namespacearmnn_html_a19994153bdbd7710f0af3973403bc4cc"><div class="ttname"><a href="namespacearmnn.html#a19994153bdbd7710f0af3973403bc4cc">armnn::g_AsymmU8QuantizationBase</a></div><div class="ttdeci">const float g_AsymmU8QuantizationBase</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l00033">QuantizerTest.cpp:33</a></div></div>
<div class="ttc" id="_file_only_profiling_decorator_tests_8cpp_html_a6560146509197f3e197d8d36f76c1347"><div class="ttname"><a href="_file_only_profiling_decorator_tests_8cpp.html#a6560146509197f3e197d8d36f76c1347">options</a></div><div class="ttdeci">armnn::Runtime::CreationOptions::ExternalProfilingOptions options</div><div class="ttdef"><b>Definition:</b> <a href="_file_only_profiling_decorator_tests_8cpp_source.html#l00045">FileOnlyProfilingDecoratorTests.cpp:45</a></div></div>
<div class="ttc" id="namespacearmnn_html_ab8cf8f9fb6792e654c2d8d8382f6f01b"><div class="ttname"><a href="namespacearmnn.html#ab8cf8f9fb6792e654c2d8d8382f6f01b">armnn::LayerBindingId</a></div><div class="ttdeci">int LayerBindingId</div><div class="ttdoc">Type of identifiers for bindable layers (inputs, outputs). </div><div class="ttdef"><b>Definition:</b> <a href="_types_8hpp_source.html#l00168">Types.hpp:168</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a5e66fe270ca921faeecd26735192d08b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a5e66fe270ca921faeecd26735192d08b">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[69/79]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
<td>(</td>
<td class="paramtype">QuantizeTransposeConvolution2d&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_quantizer_test_8cpp_source.html#l02568">2568</a> of file <a class="el" href="_quantizer_test_8cpp_source.html">QuantizerTest.cpp</a>.</p>
<p class="reference">References <a class="el" href="_quantizer_test_8cpp_source.html#l02488">TestQuantizeTransposeConvolution2d()</a>.</p>
<div class="fragment"><div class="line"><a name="l02569"></a><span class="lineno"> 2569</span>&#160;{</div><div class="line"><a name="l02570"></a><span class="lineno"> 2570</span>&#160; <a class="code" href="namespacearmnn.html#afa7a0a639e2772ff2ced67d77be810c0">TestQuantizeTransposeConvolution2d</a>(<span class="keyword">false</span>);</div><div class="line"><a name="l02571"></a><span class="lineno"> 2571</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_afa7a0a639e2772ff2ced67d77be810c0"><div class="ttname"><a href="namespacearmnn.html#afa7a0a639e2772ff2ced67d77be810c0">armnn::TestQuantizeTransposeConvolution2d</a></div><div class="ttdeci">void TestQuantizeTransposeConvolution2d(bool useBiases)</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l02488">QuantizerTest.cpp:2488</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="aec82007c45313f59d24b304e35b3db6c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aec82007c45313f59d24b304e35b3db6c">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[70/79]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
<td>(</td>
<td class="paramtype">QuantizeTransposeConvolution2dWithBiases&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_quantizer_test_8cpp_source.html#l02573">2573</a> of file <a class="el" href="_quantizer_test_8cpp_source.html">QuantizerTest.cpp</a>.</p>
<p class="reference">References <a class="el" href="_quantizer_test_8cpp_source.html#l02488">TestQuantizeTransposeConvolution2d()</a>.</p>
<div class="fragment"><div class="line"><a name="l02574"></a><span class="lineno"> 2574</span>&#160;{</div><div class="line"><a name="l02575"></a><span class="lineno"> 2575</span>&#160; <a class="code" href="namespacearmnn.html#afa7a0a639e2772ff2ced67d77be810c0">TestQuantizeTransposeConvolution2d</a>(<span class="keyword">true</span>);</div><div class="line"><a name="l02576"></a><span class="lineno"> 2576</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_afa7a0a639e2772ff2ced67d77be810c0"><div class="ttname"><a href="namespacearmnn.html#afa7a0a639e2772ff2ced67d77be810c0">armnn::TestQuantizeTransposeConvolution2d</a></div><div class="ttdeci">void TestQuantizeTransposeConvolution2d(bool useBiases)</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l02488">QuantizerTest.cpp:2488</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a77cba79eef903eb3d758b4edbcc626ef"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a77cba79eef903eb3d758b4edbcc626ef">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[71/79]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
<td>(</td>
<td class="paramtype">QuantizeStack&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_quantizer_test_8cpp_source.html#l02578">2578</a> of file <a class="el" href="_quantizer_test_8cpp_source.html">QuantizerTest.cpp</a>.</p>
<p class="reference">References <a class="el" href="classarmnn_1_1_i_output_slot.html#ac1835f8756a9f03c02fcf9664e3a0fce">IOutputSlot::Connect()</a>, <a class="el" href="_network_quantizer_8cpp_source.html#l00040">INetworkQuantizer::Create()</a>, <a class="el" href="_network_8cpp_source.html#l00048">INetwork::Create()</a>, <a class="el" href="_quantizer_test_8cpp_source.html#l00035">g_AsymmS8QuantizationBase</a>, <a class="el" href="_quantizer_test_8cpp_source.html#l00033">g_AsymmU8QuantizationBase</a>, <a class="el" href="_quantizer_test_8cpp_source.html#l00037">g_SymmS16QuantizationBase</a>, <a class="el" href="_quantizer_test_8cpp_source.html#l00036">g_SymmS8QuantizationBase</a>, <a class="el" href="classarmnn_1_1_i_connectable_layer.html#a6ec9e0eb66d7d6a01240492a0b18104c">IConnectableLayer::GetInputSlot()</a>, <a class="el" href="classarmnn_1_1_i_connectable_layer.html#a80ac4eda2e7f2757ec9dd96fc96dbd16">IConnectableLayer::GetOutputSlot()</a>, <a class="el" href="classarmnn_1_1_i_output_slot.html#a9943775a364fc4ab53b85ac88f311886">IOutputSlot::GetTensorInfo()</a>, <a class="el" href="_file_only_profiling_decorator_tests_8cpp_source.html#l00045">options</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a9d02ea768c081d4bdb2b7cab0b3f510d">QAsymmS8</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7">QSymmS16</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a9945327825b115e93a3b89f4302e76db">QSymmS8</a>, and <a class="el" href="_quantizer_test_8cpp_source.html#l00193">VisitLayersTopologically()</a>.</p>
<div class="fragment"><div class="line"><a name="l02579"></a><span class="lineno"> 2579</span>&#160;{</div><div class="line"><a name="l02580"></a><span class="lineno"> 2580</span>&#160; <span class="keyword">class </span>TestStackQuantization : <span class="keyword">public</span> TestQuantization</div><div class="line"><a name="l02581"></a><span class="lineno"> 2581</span>&#160; {</div><div class="line"><a name="l02582"></a><span class="lineno"> 2582</span>&#160; <span class="keyword">public</span>:</div><div class="line"><a name="l02583"></a><span class="lineno"> 2583</span>&#160; TestStackQuantization(<span class="keyword">const</span> TensorShape&amp; inputShape,</div><div class="line"><a name="l02584"></a><span class="lineno"> 2584</span>&#160; <span class="keyword">const</span> TensorShape&amp; outputShape)</div><div class="line"><a name="l02585"></a><span class="lineno"> 2585</span>&#160; : TestQuantization(inputShape, outputShape) {}</div><div class="line"><a name="l02586"></a><span class="lineno"> 2586</span>&#160;</div><div class="line"><a name="l02587"></a><span class="lineno"> 2587</span>&#160; TestStackQuantization(<span class="keyword">const</span> QuantizerOptions&amp; <a class="code" href="_file_only_profiling_decorator_tests_8cpp.html#a6560146509197f3e197d8d36f76c1347">options</a>,</div><div class="line"><a name="l02588"></a><span class="lineno"> 2588</span>&#160; <span class="keyword">const</span> TensorShape&amp; inputShape,</div><div class="line"><a name="l02589"></a><span class="lineno"> 2589</span>&#160; <span class="keyword">const</span> TensorShape&amp; outputShape)</div><div class="line"><a name="l02590"></a><span class="lineno"> 2590</span>&#160; : TestQuantization(options, inputShape, outputShape) {}</div><div class="line"><a name="l02591"></a><span class="lineno"> 2591</span>&#160;</div><div class="line"><a name="l02592"></a><span class="lineno"> 2592</span>&#160; <span class="keywordtype">void</span> VisitInputLayer(<span class="keyword">const</span> IConnectableLayer* layer,</div><div class="line"><a name="l02593"></a><span class="lineno"> 2593</span>&#160; <a class="code" href="namespacearmnn.html#ab8cf8f9fb6792e654c2d8d8382f6f01b">LayerBindingId</a> <span class="keywordtype">id</span>,</div><div class="line"><a name="l02594"></a><span class="lineno"> 2594</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span>* name = <span class="keyword">nullptr</span>)<span class="keyword"> override</span></div><div class="line"><a name="l02595"></a><span class="lineno"> 2595</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l02596"></a><span class="lineno"> 2596</span>&#160; boost::ignore_unused(layer, <span class="keywordtype">id</span>, name);</div><div class="line"><a name="l02597"></a><span class="lineno"> 2597</span>&#160; }</div><div class="line"><a name="l02598"></a><span class="lineno"> 2598</span>&#160; <span class="keywordtype">void</span> VisitOutputLayer(<span class="keyword">const</span> IConnectableLayer* layer,</div><div class="line"><a name="l02599"></a><span class="lineno"> 2599</span>&#160; <a class="code" href="namespacearmnn.html#ab8cf8f9fb6792e654c2d8d8382f6f01b">LayerBindingId</a> <span class="keywordtype">id</span>,</div><div class="line"><a name="l02600"></a><span class="lineno"> 2600</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span>* name = <span class="keyword">nullptr</span>)<span class="keyword"> override</span></div><div class="line"><a name="l02601"></a><span class="lineno"> 2601</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l02602"></a><span class="lineno"> 2602</span>&#160; boost::ignore_unused(layer, <span class="keywordtype">id</span>, name);</div><div class="line"><a name="l02603"></a><span class="lineno"> 2603</span>&#160; }</div><div class="line"><a name="l02604"></a><span class="lineno"> 2604</span>&#160;</div><div class="line"><a name="l02605"></a><span class="lineno"> 2605</span>&#160; <span class="keywordtype">void</span> VisitStackLayer(<span class="keyword">const</span> IConnectableLayer* layer,</div><div class="line"><a name="l02606"></a><span class="lineno"> 2606</span>&#160; <span class="keyword">const</span> StackDescriptor&amp; descriptor,</div><div class="line"><a name="l02607"></a><span class="lineno"> 2607</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span>* name = <span class="keyword">nullptr</span>)<span class="keyword"> override</span></div><div class="line"><a name="l02608"></a><span class="lineno"> 2608</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l02609"></a><span class="lineno"> 2609</span>&#160; boost::ignore_unused(descriptor, name);</div><div class="line"><a name="l02610"></a><span class="lineno"> 2610</span>&#160; TensorInfo outputInfo = layer-&gt;GetOutputSlot(0).GetTensorInfo();</div><div class="line"><a name="l02611"></a><span class="lineno"> 2611</span>&#160;</div><div class="line"><a name="l02612"></a><span class="lineno"> 2612</span>&#160; TestQuantizationParams(outputInfo,</div><div class="line"><a name="l02613"></a><span class="lineno"> 2613</span>&#160; { 30.0f / <a class="code" href="namespacearmnn.html#a19994153bdbd7710f0af3973403bc4cc">g_AsymmU8QuantizationBase</a>, 128 },</div><div class="line"><a name="l02614"></a><span class="lineno"> 2614</span>&#160; { 30.0f / <a class="code" href="namespacearmnn.html#a09bdfaa922d72ce0d9ec014dfa8f8c95">g_AsymmS8QuantizationBase</a>, 0},</div><div class="line"><a name="l02615"></a><span class="lineno"> 2615</span>&#160; { 15.0f / <a class="code" href="namespacearmnn.html#acd7f8820d124166a38c95bc8ad38811b">g_SymmS8QuantizationBase</a>, 0},</div><div class="line"><a name="l02616"></a><span class="lineno"> 2616</span>&#160; { 15.0f / <a class="code" href="namespacearmnn.html#a1465480794787d2278d3f0d2e6d887b4">g_SymmS16QuantizationBase</a>, 0 });</div><div class="line"><a name="l02617"></a><span class="lineno"> 2617</span>&#160; }</div><div class="line"><a name="l02618"></a><span class="lineno"> 2618</span>&#160; };</div><div class="line"><a name="l02619"></a><span class="lineno"> 2619</span>&#160;</div><div class="line"><a name="l02620"></a><span class="lineno"> 2620</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> network = INetwork::Create();</div><div class="line"><a name="l02621"></a><span class="lineno"> 2621</span>&#160;</div><div class="line"><a name="l02622"></a><span class="lineno"> 2622</span>&#160; IConnectableLayer* input0 = network-&gt;AddInputLayer(0);</div><div class="line"><a name="l02623"></a><span class="lineno"> 2623</span>&#160; IConnectableLayer* input1 = network-&gt;AddInputLayer(1);</div><div class="line"><a name="l02624"></a><span class="lineno"> 2624</span>&#160;</div><div class="line"><a name="l02625"></a><span class="lineno"> 2625</span>&#160; <span class="keyword">const</span> TensorShape inputShape{ 3, 4, 5 };</div><div class="line"><a name="l02626"></a><span class="lineno"> 2626</span>&#160; <span class="keyword">const</span> TensorShape outputShape{ 3, 4, 2, 5 };</div><div class="line"><a name="l02627"></a><span class="lineno"> 2627</span>&#160;</div><div class="line"><a name="l02628"></a><span class="lineno"> 2628</span>&#160; StackDescriptor descriptor(2, 2, inputShape);</div><div class="line"><a name="l02629"></a><span class="lineno"> 2629</span>&#160; IConnectableLayer* stackLayer = network-&gt;AddStackLayer(descriptor);</div><div class="line"><a name="l02630"></a><span class="lineno"> 2630</span>&#160;</div><div class="line"><a name="l02631"></a><span class="lineno"> 2631</span>&#160; IConnectableLayer* output = network-&gt;AddOutputLayer(0);</div><div class="line"><a name="l02632"></a><span class="lineno"> 2632</span>&#160;</div><div class="line"><a name="l02633"></a><span class="lineno"> 2633</span>&#160; input0-&gt;GetOutputSlot(0).Connect(stackLayer-&gt;GetInputSlot(0));</div><div class="line"><a name="l02634"></a><span class="lineno"> 2634</span>&#160; input1-&gt;GetOutputSlot(0).Connect(stackLayer-&gt;GetInputSlot(1));</div><div class="line"><a name="l02635"></a><span class="lineno"> 2635</span>&#160; stackLayer-&gt;GetOutputSlot(0).Connect(output-&gt;GetInputSlot(0));</div><div class="line"><a name="l02636"></a><span class="lineno"> 2636</span>&#160;</div><div class="line"><a name="l02637"></a><span class="lineno"> 2637</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQAsymmU8 = INetworkQuantizer::Create(network.get())-&gt;ExportNetwork();</div><div class="line"><a name="l02638"></a><span class="lineno"> 2638</span>&#160; TestStackQuantization validatorQAsymmU8(inputShape, outputShape);</div><div class="line"><a name="l02639"></a><span class="lineno"> 2639</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQAsymmU8.get(), validatorQAsymmU8);</div><div class="line"><a name="l02640"></a><span class="lineno"> 2640</span>&#160;</div><div class="line"><a name="l02641"></a><span class="lineno"> 2641</span>&#160; <span class="keyword">const</span> QuantizerOptions qAsymmS8Options(DataType::QAsymmS8);</div><div class="line"><a name="l02642"></a><span class="lineno"> 2642</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQAsymmS8 = INetworkQuantizer::Create(network.get(), qAsymmS8Options)-&gt;ExportNetwork();</div><div class="line"><a name="l02643"></a><span class="lineno"> 2643</span>&#160; TestStackQuantization validatorQAsymmS8(qAsymmS8Options, inputShape, inputShape);</div><div class="line"><a name="l02644"></a><span class="lineno"> 2644</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQAsymmS8.get(), validatorQAsymmS8);</div><div class="line"><a name="l02645"></a><span class="lineno"> 2645</span>&#160;</div><div class="line"><a name="l02646"></a><span class="lineno"> 2646</span>&#160; <span class="keyword">const</span> QuantizerOptions qSymmS8Options(DataType::QSymmS8);</div><div class="line"><a name="l02647"></a><span class="lineno"> 2647</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQSymmS8 = INetworkQuantizer::Create(network.get(), qSymmS8Options)-&gt;ExportNetwork();</div><div class="line"><a name="l02648"></a><span class="lineno"> 2648</span>&#160; TestStackQuantization validatorQSymmS8(qSymmS8Options, inputShape, inputShape);</div><div class="line"><a name="l02649"></a><span class="lineno"> 2649</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQSymmS8.get(), validatorQSymmS8);</div><div class="line"><a name="l02650"></a><span class="lineno"> 2650</span>&#160;</div><div class="line"><a name="l02651"></a><span class="lineno"> 2651</span>&#160; <span class="keyword">const</span> QuantizerOptions qSymmS16options(DataType::QSymmS16);</div><div class="line"><a name="l02652"></a><span class="lineno"> 2652</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQSymmS16 = INetworkQuantizer::Create(network.get(), qSymmS16options)-&gt;ExportNetwork();</div><div class="line"><a name="l02653"></a><span class="lineno"> 2653</span>&#160; TestStackQuantization validatorQSymmS16(qSymmS16options, inputShape, outputShape);</div><div class="line"><a name="l02654"></a><span class="lineno"> 2654</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQSymmS16.get(), validatorQSymmS16);</div><div class="line"><a name="l02655"></a><span class="lineno"> 2655</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a1465480794787d2278d3f0d2e6d887b4"><div class="ttname"><a href="namespacearmnn.html#a1465480794787d2278d3f0d2e6d887b4">armnn::g_SymmS16QuantizationBase</a></div><div class="ttdeci">const float g_SymmS16QuantizationBase</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l00037">QuantizerTest.cpp:37</a></div></div>
<div class="ttc" id="namespacearmnn_html_acd7f8820d124166a38c95bc8ad38811b"><div class="ttname"><a href="namespacearmnn.html#acd7f8820d124166a38c95bc8ad38811b">armnn::g_SymmS8QuantizationBase</a></div><div class="ttdeci">const float g_SymmS8QuantizationBase</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l00036">QuantizerTest.cpp:36</a></div></div>
<div class="ttc" id="namespacearmnn_html_a6482907b4c57873e197324f5cb66fd4d"><div class="ttname"><a href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">armnn::VisitLayersTopologically</a></div><div class="ttdeci">void VisitLayersTopologically(const INetwork *inputNetwork, ILayerVisitor &amp;visitor)</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l00193">QuantizerTest.cpp:193</a></div></div>
<div class="ttc" id="namespacearmnn_html_ace74f6f9feb95a964a49d79458232703"><div class="ttname"><a href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">armnn::INetworkPtr</a></div><div class="ttdeci">std::unique_ptr&lt; INetwork, void(*)(INetwork *network)&gt; INetworkPtr</div><div class="ttdef"><b>Definition:</b> <a href="_i_network_8hpp_source.html#l00085">INetwork.hpp:85</a></div></div>
<div class="ttc" id="namespacearmnn_html_a09bdfaa922d72ce0d9ec014dfa8f8c95"><div class="ttname"><a href="namespacearmnn.html#a09bdfaa922d72ce0d9ec014dfa8f8c95">armnn::g_AsymmS8QuantizationBase</a></div><div class="ttdeci">const float g_AsymmS8QuantizationBase</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l00035">QuantizerTest.cpp:35</a></div></div>
<div class="ttc" id="namespacearmnn_html_a19994153bdbd7710f0af3973403bc4cc"><div class="ttname"><a href="namespacearmnn.html#a19994153bdbd7710f0af3973403bc4cc">armnn::g_AsymmU8QuantizationBase</a></div><div class="ttdeci">const float g_AsymmU8QuantizationBase</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l00033">QuantizerTest.cpp:33</a></div></div>
<div class="ttc" id="_file_only_profiling_decorator_tests_8cpp_html_a6560146509197f3e197d8d36f76c1347"><div class="ttname"><a href="_file_only_profiling_decorator_tests_8cpp.html#a6560146509197f3e197d8d36f76c1347">options</a></div><div class="ttdeci">armnn::Runtime::CreationOptions::ExternalProfilingOptions options</div><div class="ttdef"><b>Definition:</b> <a href="_file_only_profiling_decorator_tests_8cpp_source.html#l00045">FileOnlyProfilingDecoratorTests.cpp:45</a></div></div>
<div class="ttc" id="namespacearmnn_html_ab8cf8f9fb6792e654c2d8d8382f6f01b"><div class="ttname"><a href="namespacearmnn.html#ab8cf8f9fb6792e654c2d8d8382f6f01b">armnn::LayerBindingId</a></div><div class="ttdeci">int LayerBindingId</div><div class="ttdoc">Type of identifiers for bindable layers (inputs, outputs). </div><div class="ttdef"><b>Definition:</b> <a href="_types_8hpp_source.html#l00168">Types.hpp:168</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a46f313720b601ca97a9c2a5158814bff"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a46f313720b601ca97a9c2a5158814bff">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[72/79]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
<td>(</td>
<td class="paramtype">QuantizeSlice&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_quantizer_test_8cpp_source.html#l02657">2657</a> of file <a class="el" href="_quantizer_test_8cpp_source.html">QuantizerTest.cpp</a>.</p>
<p class="reference">References <a class="el" href="classarmnn_1_1_i_output_slot.html#ac1835f8756a9f03c02fcf9664e3a0fce">IOutputSlot::Connect()</a>, <a class="el" href="_network_quantizer_8cpp_source.html#l00040">INetworkQuantizer::Create()</a>, <a class="el" href="_network_8cpp_source.html#l00048">INetwork::Create()</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">Float32</a>, <a class="el" href="_quantizer_test_8cpp_source.html#l00035">g_AsymmS8QuantizationBase</a>, <a class="el" href="_quantizer_test_8cpp_source.html#l00033">g_AsymmU8QuantizationBase</a>, <a class="el" href="_quantizer_test_8cpp_source.html#l00037">g_SymmS16QuantizationBase</a>, <a class="el" href="_quantizer_test_8cpp_source.html#l00036">g_SymmS8QuantizationBase</a>, <a class="el" href="classarmnn_1_1_i_connectable_layer.html#a6ec9e0eb66d7d6a01240492a0b18104c">IConnectableLayer::GetInputSlot()</a>, <a class="el" href="classarmnn_1_1_i_connectable_layer.html#a80ac4eda2e7f2757ec9dd96fc96dbd16">IConnectableLayer::GetOutputSlot()</a>, <a class="el" href="classarmnn_1_1_i_output_slot.html#a9943775a364fc4ab53b85ac88f311886">IOutputSlot::GetTensorInfo()</a>, <a class="el" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>, <a class="el" href="_file_only_profiling_decorator_tests_8cpp_source.html#l00045">options</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a9d02ea768c081d4bdb2b7cab0b3f510d">QAsymmS8</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7">QSymmS16</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a9945327825b115e93a3b89f4302e76db">QSymmS8</a>, <a class="el" href="classarmnn_1_1_i_output_slot.html#a5ee4a6c9a2481245487b1b1a70d20fd0">IOutputSlot::SetTensorInfo()</a>, and <a class="el" href="_quantizer_test_8cpp_source.html#l00193">VisitLayersTopologically()</a>.</p>
<div class="fragment"><div class="line"><a name="l02658"></a><span class="lineno"> 2658</span>&#160;{</div><div class="line"><a name="l02659"></a><span class="lineno"> 2659</span>&#160; <span class="keyword">class </span>TestSliceQuantization : <span class="keyword">public</span> TestQuantization</div><div class="line"><a name="l02660"></a><span class="lineno"> 2660</span>&#160; {</div><div class="line"><a name="l02661"></a><span class="lineno"> 2661</span>&#160; <span class="keyword">public</span>:</div><div class="line"><a name="l02662"></a><span class="lineno"> 2662</span>&#160; TestSliceQuantization(<span class="keyword">const</span> TensorShape&amp; inputShape, <span class="keyword">const</span> TensorShape&amp; outputShape)</div><div class="line"><a name="l02663"></a><span class="lineno"> 2663</span>&#160; : TestQuantization(inputShape, outputShape)</div><div class="line"><a name="l02664"></a><span class="lineno"> 2664</span>&#160; {}</div><div class="line"><a name="l02665"></a><span class="lineno"> 2665</span>&#160;</div><div class="line"><a name="l02666"></a><span class="lineno"> 2666</span>&#160; TestSliceQuantization(<span class="keyword">const</span> QuantizerOptions&amp; <a class="code" href="_file_only_profiling_decorator_tests_8cpp.html#a6560146509197f3e197d8d36f76c1347">options</a>,</div><div class="line"><a name="l02667"></a><span class="lineno"> 2667</span>&#160; <span class="keyword">const</span> TensorShape&amp; inputShape,</div><div class="line"><a name="l02668"></a><span class="lineno"> 2668</span>&#160; <span class="keyword">const</span> TensorShape&amp; outputShape)</div><div class="line"><a name="l02669"></a><span class="lineno"> 2669</span>&#160; : TestQuantization(options, inputShape, outputShape)</div><div class="line"><a name="l02670"></a><span class="lineno"> 2670</span>&#160; {}</div><div class="line"><a name="l02671"></a><span class="lineno"> 2671</span>&#160;</div><div class="line"><a name="l02672"></a><span class="lineno"> 2672</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> VisitSliceLayer(<span class="keyword">const</span> IConnectableLayer* layer,</div><div class="line"><a name="l02673"></a><span class="lineno"> 2673</span>&#160; <span class="keyword">const</span> SliceDescriptor&amp; desc,</div><div class="line"><a name="l02674"></a><span class="lineno"> 2674</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span>* name = <span class="keyword">nullptr</span>)</div><div class="line"><a name="l02675"></a><span class="lineno"> 2675</span>&#160; {</div><div class="line"><a name="l02676"></a><span class="lineno"> 2676</span>&#160; boost::ignore_unused(desc, name);</div><div class="line"><a name="l02677"></a><span class="lineno"> 2677</span>&#160; <span class="keyword">const</span> TensorInfo&amp; <a class="code" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a> = layer-&gt;GetOutputSlot(0).GetTensorInfo();</div><div class="line"><a name="l02678"></a><span class="lineno"> 2678</span>&#160;</div><div class="line"><a name="l02679"></a><span class="lineno"> 2679</span>&#160; <span class="keyword">const</span> <a class="code" href="namespacearmnn.html#a9b8e5a95f8c061bbbcdb036915dcb61a">OffsetScalePair</a> qAsymmU8Params{ 30.0f / <a class="code" href="namespacearmnn.html#a19994153bdbd7710f0af3973403bc4cc">g_AsymmU8QuantizationBase</a>, 128 };</div><div class="line"><a name="l02680"></a><span class="lineno"> 2680</span>&#160; <span class="keyword">const</span> <a class="code" href="namespacearmnn.html#a9b8e5a95f8c061bbbcdb036915dcb61a">OffsetScalePair</a> qAsymmS8Params{ 30.0f / <a class="code" href="namespacearmnn.html#a09bdfaa922d72ce0d9ec014dfa8f8c95">g_AsymmS8QuantizationBase</a>, 0 };</div><div class="line"><a name="l02681"></a><span class="lineno"> 2681</span>&#160; <span class="keyword">const</span> <a class="code" href="namespacearmnn.html#a9b8e5a95f8c061bbbcdb036915dcb61a">OffsetScalePair</a> qSymmS8Params { 15.0f / <a class="code" href="namespacearmnn.html#acd7f8820d124166a38c95bc8ad38811b">g_SymmS8QuantizationBase</a>, 0 };</div><div class="line"><a name="l02682"></a><span class="lineno"> 2682</span>&#160; <span class="keyword">const</span> <a class="code" href="namespacearmnn.html#a9b8e5a95f8c061bbbcdb036915dcb61a">OffsetScalePair</a> qSymmS16Params{ 15.0f / <a class="code" href="namespacearmnn.html#a1465480794787d2278d3f0d2e6d887b4">g_SymmS16QuantizationBase</a>, 0 };</div><div class="line"><a name="l02683"></a><span class="lineno"> 2683</span>&#160;</div><div class="line"><a name="l02684"></a><span class="lineno"> 2684</span>&#160; TestQuantizationParams(info, qAsymmU8Params, qAsymmS8Params, qSymmS8Params, qSymmS16Params);</div><div class="line"><a name="l02685"></a><span class="lineno"> 2685</span>&#160; }</div><div class="line"><a name="l02686"></a><span class="lineno"> 2686</span>&#160; };</div><div class="line"><a name="l02687"></a><span class="lineno"> 2687</span>&#160;</div><div class="line"><a name="l02688"></a><span class="lineno"> 2688</span>&#160; TensorShape shape{ 3 };</div><div class="line"><a name="l02689"></a><span class="lineno"> 2689</span>&#160; TensorInfo info(shape, DataType::Float32);</div><div class="line"><a name="l02690"></a><span class="lineno"> 2690</span>&#160;</div><div class="line"><a name="l02691"></a><span class="lineno"> 2691</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> network = INetwork::Create();</div><div class="line"><a name="l02692"></a><span class="lineno"> 2692</span>&#160;</div><div class="line"><a name="l02693"></a><span class="lineno"> 2693</span>&#160; IConnectableLayer* inputLayer = network-&gt;AddInputLayer(0);</div><div class="line"><a name="l02694"></a><span class="lineno"> 2694</span>&#160; IConnectableLayer* sliceLayer = network-&gt;AddSliceLayer(SliceDescriptor());</div><div class="line"><a name="l02695"></a><span class="lineno"> 2695</span>&#160; IConnectableLayer* outputLayer = network-&gt;AddOutputLayer(0);</div><div class="line"><a name="l02696"></a><span class="lineno"> 2696</span>&#160;</div><div class="line"><a name="l02697"></a><span class="lineno"> 2697</span>&#160; inputLayer-&gt;GetOutputSlot(0).Connect(sliceLayer-&gt;GetInputSlot(0));</div><div class="line"><a name="l02698"></a><span class="lineno"> 2698</span>&#160; sliceLayer-&gt;GetOutputSlot(0).Connect(outputLayer-&gt;GetInputSlot(0));</div><div class="line"><a name="l02699"></a><span class="lineno"> 2699</span>&#160;</div><div class="line"><a name="l02700"></a><span class="lineno"> 2700</span>&#160; inputLayer-&gt;GetOutputSlot(0).SetTensorInfo(info);</div><div class="line"><a name="l02701"></a><span class="lineno"> 2701</span>&#160; sliceLayer-&gt;GetOutputSlot(0).SetTensorInfo(info);</div><div class="line"><a name="l02702"></a><span class="lineno"> 2702</span>&#160;</div><div class="line"><a name="l02703"></a><span class="lineno"> 2703</span>&#160; <span class="comment">// test QAsymmU8 quantization</span></div><div class="line"><a name="l02704"></a><span class="lineno"> 2704</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQAsymmU8 = INetworkQuantizer::Create(network.get())-&gt;ExportNetwork();</div><div class="line"><a name="l02705"></a><span class="lineno"> 2705</span>&#160; TestSliceQuantization validatorQAsymmU8(shape, shape);</div><div class="line"><a name="l02706"></a><span class="lineno"> 2706</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQAsymmU8.get(), validatorQAsymmU8);</div><div class="line"><a name="l02707"></a><span class="lineno"> 2707</span>&#160;</div><div class="line"><a name="l02708"></a><span class="lineno"> 2708</span>&#160; <span class="comment">// test QASymmS8 quantization</span></div><div class="line"><a name="l02709"></a><span class="lineno"> 2709</span>&#160; <span class="keyword">const</span> QuantizerOptions qAsymmS8Options(DataType::QAsymmS8);</div><div class="line"><a name="l02710"></a><span class="lineno"> 2710</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQAsymmS8 = INetworkQuantizer::Create(network.get(), qAsymmS8Options)-&gt;ExportNetwork();</div><div class="line"><a name="l02711"></a><span class="lineno"> 2711</span>&#160; TestSliceQuantization validatorQAsymmS8(qAsymmS8Options, shape, shape);</div><div class="line"><a name="l02712"></a><span class="lineno"> 2712</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQAsymmS8.get(), validatorQAsymmS8);</div><div class="line"><a name="l02713"></a><span class="lineno"> 2713</span>&#160;</div><div class="line"><a name="l02714"></a><span class="lineno"> 2714</span>&#160; <span class="comment">// test QSymmS8 quantization</span></div><div class="line"><a name="l02715"></a><span class="lineno"> 2715</span>&#160; <span class="keyword">const</span> QuantizerOptions qSymmS8Options(DataType::QSymmS8);</div><div class="line"><a name="l02716"></a><span class="lineno"> 2716</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQSymmS8 = INetworkQuantizer::Create(network.get(), qSymmS8Options)-&gt;ExportNetwork();</div><div class="line"><a name="l02717"></a><span class="lineno"> 2717</span>&#160; TestSliceQuantization validatorQSymmS8(qSymmS8Options, shape, shape);</div><div class="line"><a name="l02718"></a><span class="lineno"> 2718</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQSymmS8.get(), validatorQSymmS8);</div><div class="line"><a name="l02719"></a><span class="lineno"> 2719</span>&#160;</div><div class="line"><a name="l02720"></a><span class="lineno"> 2720</span>&#160; <span class="comment">// test QSymmS16 quantization</span></div><div class="line"><a name="l02721"></a><span class="lineno"> 2721</span>&#160; <span class="keyword">const</span> QuantizerOptions qSymmS16options(DataType::QSymmS16);</div><div class="line"><a name="l02722"></a><span class="lineno"> 2722</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQSymmS16 = INetworkQuantizer::Create(network.get(), qSymmS16options)-&gt;ExportNetwork();</div><div class="line"><a name="l02723"></a><span class="lineno"> 2723</span>&#160; TestSliceQuantization validatorQSymmS16(qSymmS16options, shape, shape);</div><div class="line"><a name="l02724"></a><span class="lineno"> 2724</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQSymmS16.get(), validatorQSymmS16);</div><div class="line"><a name="l02725"></a><span class="lineno"> 2725</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a1465480794787d2278d3f0d2e6d887b4"><div class="ttname"><a href="namespacearmnn.html#a1465480794787d2278d3f0d2e6d887b4">armnn::g_SymmS16QuantizationBase</a></div><div class="ttdeci">const float g_SymmS16QuantizationBase</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l00037">QuantizerTest.cpp:37</a></div></div>
<div class="ttc" id="namespacearmnn_html_acd7f8820d124166a38c95bc8ad38811b"><div class="ttname"><a href="namespacearmnn.html#acd7f8820d124166a38c95bc8ad38811b">armnn::g_SymmS8QuantizationBase</a></div><div class="ttdeci">const float g_SymmS8QuantizationBase</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l00036">QuantizerTest.cpp:36</a></div></div>
<div class="ttc" id="namespacearmnn_html_a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c"><div class="ttname"><a href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">armnn::BoostLogSeverityMapping::info</a></div></div>
<div class="ttc" id="namespacearmnn_html_a6482907b4c57873e197324f5cb66fd4d"><div class="ttname"><a href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">armnn::VisitLayersTopologically</a></div><div class="ttdeci">void VisitLayersTopologically(const INetwork *inputNetwork, ILayerVisitor &amp;visitor)</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l00193">QuantizerTest.cpp:193</a></div></div>
<div class="ttc" id="namespacearmnn_html_ace74f6f9feb95a964a49d79458232703"><div class="ttname"><a href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">armnn::INetworkPtr</a></div><div class="ttdeci">std::unique_ptr&lt; INetwork, void(*)(INetwork *network)&gt; INetworkPtr</div><div class="ttdef"><b>Definition:</b> <a href="_i_network_8hpp_source.html#l00085">INetwork.hpp:85</a></div></div>
<div class="ttc" id="namespacearmnn_html_a09bdfaa922d72ce0d9ec014dfa8f8c95"><div class="ttname"><a href="namespacearmnn.html#a09bdfaa922d72ce0d9ec014dfa8f8c95">armnn::g_AsymmS8QuantizationBase</a></div><div class="ttdeci">const float g_AsymmS8QuantizationBase</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l00035">QuantizerTest.cpp:35</a></div></div>
<div class="ttc" id="namespacearmnn_html_a19994153bdbd7710f0af3973403bc4cc"><div class="ttname"><a href="namespacearmnn.html#a19994153bdbd7710f0af3973403bc4cc">armnn::g_AsymmU8QuantizationBase</a></div><div class="ttdeci">const float g_AsymmU8QuantizationBase</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l00033">QuantizerTest.cpp:33</a></div></div>
<div class="ttc" id="namespacearmnn_html_a9b8e5a95f8c061bbbcdb036915dcb61a"><div class="ttname"><a href="namespacearmnn.html#a9b8e5a95f8c061bbbcdb036915dcb61a">armnn::OffsetScalePair</a></div><div class="ttdeci">std::pair&lt; float, int &gt; OffsetScalePair</div><div class="ttdef"><b>Definition:</b> <a href="_network_quantization_scheme_8hpp_source.html#l00016">NetworkQuantizationScheme.hpp:16</a></div></div>
<div class="ttc" id="_file_only_profiling_decorator_tests_8cpp_html_a6560146509197f3e197d8d36f76c1347"><div class="ttname"><a href="_file_only_profiling_decorator_tests_8cpp.html#a6560146509197f3e197d8d36f76c1347">options</a></div><div class="ttdeci">armnn::Runtime::CreationOptions::ExternalProfilingOptions options</div><div class="ttdef"><b>Definition:</b> <a href="_file_only_profiling_decorator_tests_8cpp_source.html#l00045">FileOnlyProfilingDecoratorTests.cpp:45</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a728153b62fa66e6ed1243e09144bfe8c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a728153b62fa66e6ed1243e09144bfe8c">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[73/79]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
<td>(</td>
<td class="paramtype">QuantizeInf&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_quantizer_test_8cpp_source.html#l02742">2742</a> of file <a class="el" href="_quantizer_test_8cpp_source.html">QuantizerTest.cpp</a>.</p>
<p class="reference">References <a class="el" href="_quantizer_test_8cpp_source.html#l02727">SetupQuantize()</a>.</p>
<div class="fragment"><div class="line"><a name="l02743"></a><span class="lineno"> 2743</span>&#160;{</div><div class="line"><a name="l02744"></a><span class="lineno"> 2744</span>&#160; BOOST_CHECK_EQUAL(<a class="code" href="namespacearmnn.html#a52cbff9d344ba4a1fe01d4da2c1f7ba2">SetupQuantize</a>(std::numeric_limits&lt;float&gt;::infinity())[0], 255);</div><div class="line"><a name="l02745"></a><span class="lineno"> 2745</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a52cbff9d344ba4a1fe01d4da2c1f7ba2"><div class="ttname"><a href="namespacearmnn.html#a52cbff9d344ba4a1fe01d4da2c1f7ba2">armnn::SetupQuantize</a></div><div class="ttdeci">std::vector&lt; uint8_t &gt; SetupQuantize(float value)</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l02727">QuantizerTest.cpp:2727</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a898305dc4cdb78a5fbed481250f6cd35"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a898305dc4cdb78a5fbed481250f6cd35">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[74/79]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
<td>(</td>
<td class="paramtype">QuantizeNegativeInf&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_quantizer_test_8cpp_source.html#l02747">2747</a> of file <a class="el" href="_quantizer_test_8cpp_source.html">QuantizerTest.cpp</a>.</p>
<p class="reference">References <a class="el" href="_file_only_profiling_decorator_tests_8cpp.html#a0c262ba6f6c189a2d092d127c1b7627b">BOOST_CHECK()</a>, <a class="el" href="classarmnn_1_1_i_input_slot.html#a81fbf6103761e55061b62ba989b00f10">IInputSlot::GetConnection()</a>, <a class="el" href="_tensor_8hpp_source.html#l00095">TensorInfo::GetDataType()</a>, <a class="el" href="_types_utils_8hpp_source.html#l00165">GetDataTypeName()</a>, <a class="el" href="classarmnn_1_1_i_connectable_layer.html#a6ec9e0eb66d7d6a01240492a0b18104c">IConnectableLayer::GetInputSlot()</a>, <a class="el" href="classarmnn_1_1_i_connectable_layer.html#a80ac4eda2e7f2757ec9dd96fc96dbd16">IConnectableLayer::GetOutputSlot()</a>, <a class="el" href="_tensor_8hpp_source.html#l00088">TensorInfo::GetShape()</a>, <a class="el" href="classarmnn_1_1_i_output_slot.html#a9943775a364fc4ab53b85ac88f311886">IOutputSlot::GetTensorInfo()</a>, <a class="el" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>, <a class="el" href="_file_only_profiling_decorator_tests_8cpp_source.html#l00045">options</a>, and <a class="el" href="_quantizer_test_8cpp_source.html#l02727">SetupQuantize()</a>.</p>
<div class="fragment"><div class="line"><a name="l02748"></a><span class="lineno"> 2748</span>&#160;{</div><div class="line"><a name="l02749"></a><span class="lineno"> 2749</span>&#160; BOOST_CHECK_EQUAL(<a class="code" href="namespacearmnn.html#a52cbff9d344ba4a1fe01d4da2c1f7ba2">SetupQuantize</a>(-1 * std::numeric_limits&lt;float&gt;::infinity())[0], 0);</div><div class="line"><a name="l02750"></a><span class="lineno"> 2750</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a52cbff9d344ba4a1fe01d4da2c1f7ba2"><div class="ttname"><a href="namespacearmnn.html#a52cbff9d344ba4a1fe01d4da2c1f7ba2">armnn::SetupQuantize</a></div><div class="ttdeci">std::vector&lt; uint8_t &gt; SetupQuantize(float value)</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l02727">QuantizerTest.cpp:2727</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a94eb3bdf0e1c8c748c2e29dce048ace4"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a94eb3bdf0e1c8c748c2e29dce048ace4">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[75/79]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
<td>(</td>
<td class="paramtype">PreserveTypeFloat32&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_quantizer_test_8cpp_source.html#l02847">2847</a> of file <a class="el" href="_quantizer_test_8cpp_source.html">QuantizerTest.cpp</a>.</p>
<p class="reference">References <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">Float32</a>, and <a class="el" href="_quantizer_test_8cpp_source.html#l02817">PreserveTypeTestImpl()</a>.</p>
<div class="fragment"><div class="line"><a name="l02848"></a><span class="lineno"> 2848</span>&#160;{</div><div class="line"><a name="l02849"></a><span class="lineno"> 2849</span>&#160; <a class="code" href="namespacearmnn.html#abe34cf42d7c8515ecd15d11f4aeb399c">PreserveTypeTestImpl</a>(DataType::Float32);</div><div class="line"><a name="l02850"></a><span class="lineno"> 2850</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_abe34cf42d7c8515ecd15d11f4aeb399c"><div class="ttname"><a href="namespacearmnn.html#abe34cf42d7c8515ecd15d11f4aeb399c">armnn::PreserveTypeTestImpl</a></div><div class="ttdeci">void PreserveTypeTestImpl(const DataType &amp;dataType)</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l02817">QuantizerTest.cpp:2817</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="ab242670b85e047e79bb297cdb192cc93"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab242670b85e047e79bb297cdb192cc93">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[76/79]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
<td>(</td>
<td class="paramtype">PreserveTypeQAsymmU8&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_quantizer_test_8cpp_source.html#l02852">2852</a> of file <a class="el" href="_quantizer_test_8cpp_source.html">QuantizerTest.cpp</a>.</p>
<p class="reference">References <a class="el" href="_quantizer_test_8cpp_source.html#l02817">PreserveTypeTestImpl()</a>, and <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a0a3f57c876f5a230244c38e1453a8a6e">QAsymmU8</a>.</p>
<div class="fragment"><div class="line"><a name="l02853"></a><span class="lineno"> 2853</span>&#160;{</div><div class="line"><a name="l02854"></a><span class="lineno"> 2854</span>&#160; <a class="code" href="namespacearmnn.html#abe34cf42d7c8515ecd15d11f4aeb399c">PreserveTypeTestImpl</a>(DataType::QAsymmU8);</div><div class="line"><a name="l02855"></a><span class="lineno"> 2855</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_abe34cf42d7c8515ecd15d11f4aeb399c"><div class="ttname"><a href="namespacearmnn.html#abe34cf42d7c8515ecd15d11f4aeb399c">armnn::PreserveTypeTestImpl</a></div><div class="ttdeci">void PreserveTypeTestImpl(const DataType &amp;dataType)</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l02817">QuantizerTest.cpp:2817</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a061891029598224370aae4cd18b78406"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a061891029598224370aae4cd18b78406">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[77/79]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
<td>(</td>
<td class="paramtype">PreserveTypeQsymm8&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_quantizer_test_8cpp_source.html#l02857">2857</a> of file <a class="el" href="_quantizer_test_8cpp_source.html">QuantizerTest.cpp</a>.</p>
<p class="reference">References <a class="el" href="_quantizer_test_8cpp_source.html#l02817">PreserveTypeTestImpl()</a>, and <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a9945327825b115e93a3b89f4302e76db">QSymmS8</a>.</p>
<div class="fragment"><div class="line"><a name="l02858"></a><span class="lineno"> 2858</span>&#160;{</div><div class="line"><a name="l02859"></a><span class="lineno"> 2859</span>&#160; <a class="code" href="namespacearmnn.html#abe34cf42d7c8515ecd15d11f4aeb399c">PreserveTypeTestImpl</a>(DataType::QSymmS8);</div><div class="line"><a name="l02860"></a><span class="lineno"> 2860</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_abe34cf42d7c8515ecd15d11f4aeb399c"><div class="ttname"><a href="namespacearmnn.html#abe34cf42d7c8515ecd15d11f4aeb399c">armnn::PreserveTypeTestImpl</a></div><div class="ttdeci">void PreserveTypeTestImpl(const DataType &amp;dataType)</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l02817">QuantizerTest.cpp:2817</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a4d4386cbb19dbc551e423992ecdd0d61"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a4d4386cbb19dbc551e423992ecdd0d61">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[78/79]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
<td>(</td>
<td class="paramtype">PreserveTypeQsymm16&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_quantizer_test_8cpp_source.html#l02862">2862</a> of file <a class="el" href="_quantizer_test_8cpp_source.html">QuantizerTest.cpp</a>.</p>
<p class="reference">References <a class="el" href="_quantizer_test_8cpp_source.html#l02817">PreserveTypeTestImpl()</a>, and <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7">QSymmS16</a>.</p>
<div class="fragment"><div class="line"><a name="l02863"></a><span class="lineno"> 2863</span>&#160;{</div><div class="line"><a name="l02864"></a><span class="lineno"> 2864</span>&#160; <a class="code" href="namespacearmnn.html#abe34cf42d7c8515ecd15d11f4aeb399c">PreserveTypeTestImpl</a>(DataType::QSymmS16);</div><div class="line"><a name="l02865"></a><span class="lineno"> 2865</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_abe34cf42d7c8515ecd15d11f4aeb399c"><div class="ttname"><a href="namespacearmnn.html#abe34cf42d7c8515ecd15d11f4aeb399c">armnn::PreserveTypeTestImpl</a></div><div class="ttdeci">void PreserveTypeTestImpl(const DataType &amp;dataType)</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l02817">QuantizerTest.cpp:2817</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a8c09fbb75d2c2dea48926a540fc5cce9"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a8c09fbb75d2c2dea48926a540fc5cce9">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[79/79]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
<td>(</td>
<td class="paramtype">TestConnectionPreservationAfterDynamicQuant&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_quantizer_test_8cpp_source.html#l02867">2867</a> of file <a class="el" href="_quantizer_test_8cpp_source.html">QuantizerTest.cpp</a>.</p>
<p class="reference">References <a class="el" href="_profiler_tests_8cpp.html#af7f71af5c6c124222dd1c42c5df892f4">BOOST_AUTO_TEST_SUITE_END()</a>, <a class="el" href="classarmnn_1_1_i_output_slot.html#ac1835f8756a9f03c02fcf9664e3a0fce">IOutputSlot::Connect()</a>, <a class="el" href="_network_quantizer_8cpp_source.html#l00040">INetworkQuantizer::Create()</a>, <a class="el" href="_network_8cpp_source.html#l00048">INetwork::Create()</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">Float32</a>, <a class="el" href="classarmnn_1_1_i_input_slot.html#a81fbf6103761e55061b62ba989b00f10">IInputSlot::GetConnection()</a>, <a class="el" href="classarmnn_1_1_i_connectable_layer.html#afb5e65c770f6cee222db8af7581541a6">IConnectableLayer::GetGuid()</a>, <a class="el" href="classarmnn_1_1_i_connectable_layer.html#a6ec9e0eb66d7d6a01240492a0b18104c">IConnectableLayer::GetInputSlot()</a>, <a class="el" href="_quantizer_test_8cpp_source.html#l00337">GetInputTensorInfo()</a>, <a class="el" href="classarmnn_1_1_i_connectable_layer.html#afcc1c3a20bd2860e0ddd21674389246f">IConnectableLayer::GetName()</a>, <a class="el" href="classarmnn_1_1_i_connectable_layer.html#a80ac4eda2e7f2757ec9dd96fc96dbd16">IConnectableLayer::GetOutputSlot()</a>, <a class="el" href="classarmnn_1_1_i_output_slot.html#ad0c3555b126975ad6b3e250fe2a59534">IOutputSlot::GetOwningLayerGuid()</a>, <a class="el" href="_descriptors_8hpp_source.html#l00035">ActivationDescriptor::m_Function</a>, <a class="el" href="namespacearmnn.html#a56297e0f7b215eea46c818cb7528d9eaa3d90c0a5ab3fcf8e6f6608cb3d3a1559">ReLu</a>, <a class="el" href="classarmnn_1_1_i_output_slot.html#a5ee4a6c9a2481245487b1b1a70d20fd0">IOutputSlot::SetTensorInfo()</a>, and <a class="el" href="_quantizer_test_8cpp_source.html#l00193">VisitLayersTopologically()</a>.</p>
<div class="fragment"><div class="line"><a name="l02868"></a><span class="lineno"> 2868</span>&#160;{</div><div class="line"><a name="l02869"></a><span class="lineno"> 2869</span>&#160; <span class="keyword">class </span>TestConnectionPreservation : <span class="keyword">public</span> LayerVisitorBase&lt;VisitorNoThrowPolicy&gt;</div><div class="line"><a name="l02870"></a><span class="lineno"> 2870</span>&#160; {</div><div class="line"><a name="l02871"></a><span class="lineno"> 2871</span>&#160; <span class="keyword">public</span>:</div><div class="line"><a name="l02872"></a><span class="lineno"> 2872</span>&#160; TestConnectionPreservation(<span class="keyword">const</span> Graph&amp; graph)</div><div class="line"><a name="l02873"></a><span class="lineno"> 2873</span>&#160; : LayerVisitorBase&lt;VisitorNoThrowPolicy&gt;()</div><div class="line"><a name="l02874"></a><span class="lineno"> 2874</span>&#160; , m_Graph(graph)</div><div class="line"><a name="l02875"></a><span class="lineno"> 2875</span>&#160; {}</div><div class="line"><a name="l02876"></a><span class="lineno"> 2876</span>&#160;</div><div class="line"><a name="l02877"></a><span class="lineno"> 2877</span>&#160; <span class="keywordtype">void</span> VisitAdditionLayer(<span class="keyword">const</span> IConnectableLayer* layer, <span class="keyword">const</span> <span class="keywordtype">char</span>*)<span class="keyword"> override</span></div><div class="line"><a name="l02878"></a><span class="lineno"> 2878</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l02879"></a><span class="lineno"> 2879</span>&#160; CheckLayerName(layer-&gt;GetInputSlot(0).GetConnection()-&gt;GetOwningLayerGuid(), <span class="stringliteral">&quot;reLU1&quot;</span>);</div><div class="line"><a name="l02880"></a><span class="lineno"> 2880</span>&#160; CheckLayerName(layer-&gt;GetInputSlot(1).GetConnection()-&gt;GetOwningLayerGuid(), <span class="stringliteral">&quot;reLU2&quot;</span>);</div><div class="line"><a name="l02881"></a><span class="lineno"> 2881</span>&#160; }</div><div class="line"><a name="l02882"></a><span class="lineno"> 2882</span>&#160;</div><div class="line"><a name="l02883"></a><span class="lineno"> 2883</span>&#160; <span class="keywordtype">void</span> CheckLayerName(<a class="code" href="namespacearmnn.html#afad4088a9a058114ee5f87246f87bf49">LayerGuid</a> guid, std::string expectedName)</div><div class="line"><a name="l02884"></a><span class="lineno"> 2884</span>&#160; {</div><div class="line"><a name="l02885"></a><span class="lineno"> 2885</span>&#160; <span class="keywordtype">bool</span> guidFound = <span class="keyword">false</span>;</div><div class="line"><a name="l02886"></a><span class="lineno"> 2886</span>&#160; <span class="keywordflow">for</span> (Layer* layer : m_Graph)</div><div class="line"><a name="l02887"></a><span class="lineno"> 2887</span>&#160; {</div><div class="line"><a name="l02888"></a><span class="lineno"> 2888</span>&#160; <span class="keywordflow">if</span> (layer-&gt;GetGuid() == guid)</div><div class="line"><a name="l02889"></a><span class="lineno"> 2889</span>&#160; {</div><div class="line"><a name="l02890"></a><span class="lineno"> 2890</span>&#160; BOOST_CHECK_EQUAL(layer-&gt;GetName(), expectedName.c_str());</div><div class="line"><a name="l02891"></a><span class="lineno"> 2891</span>&#160; guidFound = <span class="keyword">true</span>;</div><div class="line"><a name="l02892"></a><span class="lineno"> 2892</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l02893"></a><span class="lineno"> 2893</span>&#160; }</div><div class="line"><a name="l02894"></a><span class="lineno"> 2894</span>&#160; }</div><div class="line"><a name="l02895"></a><span class="lineno"> 2895</span>&#160; <span class="keywordflow">if</span> (!guidFound)</div><div class="line"><a name="l02896"></a><span class="lineno"> 2896</span>&#160; {</div><div class="line"><a name="l02897"></a><span class="lineno"> 2897</span>&#160; BOOST_FAIL(<span class="stringliteral">&quot;No layer matching the GUID was found&quot;</span>);</div><div class="line"><a name="l02898"></a><span class="lineno"> 2898</span>&#160; }</div><div class="line"><a name="l02899"></a><span class="lineno"> 2899</span>&#160; }</div><div class="line"><a name="l02900"></a><span class="lineno"> 2900</span>&#160;</div><div class="line"><a name="l02901"></a><span class="lineno"> 2901</span>&#160; <span class="keyword">private</span>:</div><div class="line"><a name="l02902"></a><span class="lineno"> 2902</span>&#160; Graph m_Graph;</div><div class="line"><a name="l02903"></a><span class="lineno"> 2903</span>&#160; };</div><div class="line"><a name="l02904"></a><span class="lineno"> 2904</span>&#160;</div><div class="line"><a name="l02905"></a><span class="lineno"> 2905</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> network = INetwork::Create();</div><div class="line"><a name="l02906"></a><span class="lineno"> 2906</span>&#160;</div><div class="line"><a name="l02907"></a><span class="lineno"> 2907</span>&#160; IConnectableLayer* inputLayer = network-&gt;AddInputLayer(0,<span class="stringliteral">&quot;inputLayer1&quot;</span>);</div><div class="line"><a name="l02908"></a><span class="lineno"> 2908</span>&#160; <a class="code" href="structarmnn_1_1_activation_descriptor.html">armnn::ActivationDescriptor</a> ReLUDesc;</div><div class="line"><a name="l02909"></a><span class="lineno"> 2909</span>&#160; ReLUDesc.<a class="code" href="structarmnn_1_1_activation_descriptor.html#af10fa7883e3579950f477bee92a64844">m_Function</a> = ActivationFunction::ReLu;</div><div class="line"><a name="l02910"></a><span class="lineno"> 2910</span>&#160;</div><div class="line"><a name="l02911"></a><span class="lineno"> 2911</span>&#160; IConnectableLayer* reLULayer1 = network-&gt;AddActivationLayer(ReLUDesc, <span class="stringliteral">&quot;reLU1&quot;</span>);</div><div class="line"><a name="l02912"></a><span class="lineno"> 2912</span>&#160; IConnectableLayer* reLULayer2 = network-&gt;AddActivationLayer(ReLUDesc, <span class="stringliteral">&quot;reLU2&quot;</span>);</div><div class="line"><a name="l02913"></a><span class="lineno"> 2913</span>&#160; IConnectableLayer* addLayer1 = network-&gt;AddAdditionLayer(<span class="stringliteral">&quot;addLayer1&quot;</span>);</div><div class="line"><a name="l02914"></a><span class="lineno"> 2914</span>&#160; IConnectableLayer* outputLayer = network-&gt;AddOutputLayer(0,<span class="stringliteral">&quot;outPutLayer1&quot;</span>);</div><div class="line"><a name="l02915"></a><span class="lineno"> 2915</span>&#160;</div><div class="line"><a name="l02916"></a><span class="lineno"> 2916</span>&#160; inputLayer-&gt;GetOutputSlot(0).Connect(reLULayer1-&gt;GetInputSlot(0));</div><div class="line"><a name="l02917"></a><span class="lineno"> 2917</span>&#160; reLULayer1-&gt;GetOutputSlot(0).Connect(reLULayer2-&gt;GetInputSlot(0));</div><div class="line"><a name="l02918"></a><span class="lineno"> 2918</span>&#160; reLULayer1-&gt;GetOutputSlot(0).Connect(addLayer1-&gt;GetInputSlot(0));</div><div class="line"><a name="l02919"></a><span class="lineno"> 2919</span>&#160; reLULayer2-&gt;GetOutputSlot(0).Connect(addLayer1-&gt;GetInputSlot(1));</div><div class="line"><a name="l02920"></a><span class="lineno"> 2920</span>&#160; addLayer1-&gt;GetOutputSlot(0).Connect(outputLayer-&gt;GetInputSlot(0));</div><div class="line"><a name="l02921"></a><span class="lineno"> 2921</span>&#160;</div><div class="line"><a name="l02922"></a><span class="lineno"> 2922</span>&#160; inputLayer-&gt;GetOutputSlot(0).SetTensorInfo(TensorInfo(TensorShape({1, 2, 2, 1}), DataType::Float32));</div><div class="line"><a name="l02923"></a><span class="lineno"> 2923</span>&#160; reLULayer1-&gt;GetOutputSlot(0).SetTensorInfo(TensorInfo(TensorShape({1, 2, 2, 1}), DataType::Float32));</div><div class="line"><a name="l02924"></a><span class="lineno"> 2924</span>&#160; reLULayer2-&gt;GetOutputSlot(0).SetTensorInfo(TensorInfo(TensorShape({1, 2, 2, 1}), DataType::Float32));</div><div class="line"><a name="l02925"></a><span class="lineno"> 2925</span>&#160; addLayer1-&gt;GetOutputSlot(0).SetTensorInfo(TensorInfo(TensorShape({1, 2, 2, 1}), DataType::Float32));</div><div class="line"><a name="l02926"></a><span class="lineno"> 2926</span>&#160;</div><div class="line"><a name="l02927"></a><span class="lineno"> 2927</span>&#160; TestConnectionPreservation visitor1(boost::polymorphic_downcast&lt;const Network*&gt;(network.get())-&gt;GetGraph());</div><div class="line"><a name="l02928"></a><span class="lineno"> 2928</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(network.get(), visitor1);</div><div class="line"><a name="l02929"></a><span class="lineno"> 2929</span>&#160;</div><div class="line"><a name="l02930"></a><span class="lineno"> 2930</span>&#160; <a class="code" href="namespacearmnn.html#a41119e261eec9343888d2ceab1e4999a">armnn::INetworkQuantizerPtr</a> quantizer = <a class="code" href="classarmnn_1_1_i_network_quantizer.html#a3a4d01d9351c02a703740290f226441f">armnn::INetworkQuantizer::Create</a>(network.get());</div><div class="line"><a name="l02931"></a><span class="lineno"> 2931</span>&#160;</div><div class="line"><a name="l02932"></a><span class="lineno"> 2932</span>&#160; <a class="code" href="classarmnn_1_1_tensor_info.html">armnn::TensorInfo</a> tensorInfo = <a class="code" href="namespacearmnn.html#ae52296dff1f4879854f320d59f92574e">GetInputTensorInfo</a>(boost::polymorphic_downcast&lt;const Network*&gt;(network.get()));</div><div class="line"><a name="l02933"></a><span class="lineno"> 2933</span>&#160;</div><div class="line"><a name="l02934"></a><span class="lineno"> 2934</span>&#160; std::vector&lt;float&gt; inputData({0, 2, 0, 4});</div><div class="line"><a name="l02935"></a><span class="lineno"> 2935</span>&#160; <a class="code" href="classarmnn_1_1_const_tensor.html">armnn::ConstTensor</a> inputTensor(tensorInfo, inputData.data());</div><div class="line"><a name="l02936"></a><span class="lineno"> 2936</span>&#160;</div><div class="line"><a name="l02937"></a><span class="lineno"> 2937</span>&#160; <a class="code" href="namespacearmnn.html#aa01bce88f89975a5a031db4cc8861527">InputTensors</a> inputTensors;</div><div class="line"><a name="l02938"></a><span class="lineno"> 2938</span>&#160; inputTensors.push_back(std::make_pair(0, inputTensor));</div><div class="line"><a name="l02939"></a><span class="lineno"> 2939</span>&#160; quantizer-&gt;Refine(inputTensors);</div><div class="line"><a name="l02940"></a><span class="lineno"> 2940</span>&#160;</div><div class="line"><a name="l02941"></a><span class="lineno"> 2941</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantNetwork = quantizer-&gt;ExportNetwork();</div><div class="line"><a name="l02942"></a><span class="lineno"> 2942</span>&#160;</div><div class="line"><a name="l02943"></a><span class="lineno"> 2943</span>&#160; TestConnectionPreservation visitor2(boost::polymorphic_downcast&lt;const Network*&gt;(quantNetwork.get())-&gt;GetGraph());</div><div class="line"><a name="l02944"></a><span class="lineno"> 2944</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantNetwork.get(), visitor2);</div><div class="line"><a name="l02945"></a><span class="lineno"> 2945</span>&#160;}</div><div class="ttc" id="classarmnn_1_1_const_tensor_html"><div class="ttname"><a href="classarmnn_1_1_const_tensor.html">armnn::ConstTensor</a></div><div class="ttdoc">A tensor defined by a TensorInfo (shape and data type) and an immutable backing store. </div><div class="ttdef"><b>Definition:</b> <a href="_tensor_8hpp_source.html#l00199">Tensor.hpp:199</a></div></div>
<div class="ttc" id="namespacearmnn_html_ae52296dff1f4879854f320d59f92574e"><div class="ttname"><a href="namespacearmnn.html#ae52296dff1f4879854f320d59f92574e">armnn::GetInputTensorInfo</a></div><div class="ttdeci">TensorInfo GetInputTensorInfo(const Network *network)</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l00337">QuantizerTest.cpp:337</a></div></div>
<div class="ttc" id="classarmnn_1_1_tensor_info_html"><div class="ttname"><a href="classarmnn_1_1_tensor_info.html">armnn::TensorInfo</a></div><div class="ttdef"><b>Definition:</b> <a href="_tensor_8hpp_source.html#l00053">Tensor.hpp:53</a></div></div>
<div class="ttc" id="structarmnn_1_1_activation_descriptor_html"><div class="ttname"><a href="structarmnn_1_1_activation_descriptor.html">armnn::ActivationDescriptor</a></div><div class="ttdoc">An ActivationDescriptor for the ActivationLayer. </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.html#l00020">Descriptors.hpp:20</a></div></div>
<div class="ttc" id="namespacearmnn_html_a41119e261eec9343888d2ceab1e4999a"><div class="ttname"><a href="namespacearmnn.html#a41119e261eec9343888d2ceab1e4999a">armnn::INetworkQuantizerPtr</a></div><div class="ttdeci">std::unique_ptr&lt; class INetworkQuantizer, void(*)(INetworkQuantizer *quantizer)&gt; INetworkQuantizerPtr</div><div class="ttdef"><b>Definition:</b> <a href="_i_network_quantizer_8hpp_source.html#l00029">INetworkQuantizer.hpp:29</a></div></div>
<div class="ttc" id="namespacearmnn_html_aa01bce88f89975a5a031db4cc8861527"><div class="ttname"><a href="namespacearmnn.html#aa01bce88f89975a5a031db4cc8861527">armnn::InputTensors</a></div><div class="ttdeci">std::vector&lt; std::pair&lt; LayerBindingId, class ConstTensor &gt; &gt; InputTensors</div><div class="ttdef"><b>Definition:</b> <a href="_tensor_8hpp_source.html#l00225">Tensor.hpp:225</a></div></div>
<div class="ttc" id="namespacearmnn_html_a6482907b4c57873e197324f5cb66fd4d"><div class="ttname"><a href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">armnn::VisitLayersTopologically</a></div><div class="ttdeci">void VisitLayersTopologically(const INetwork *inputNetwork, ILayerVisitor &amp;visitor)</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l00193">QuantizerTest.cpp:193</a></div></div>
<div class="ttc" id="namespacearmnn_html_ace74f6f9feb95a964a49d79458232703"><div class="ttname"><a href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">armnn::INetworkPtr</a></div><div class="ttdeci">std::unique_ptr&lt; INetwork, void(*)(INetwork *network)&gt; INetworkPtr</div><div class="ttdef"><b>Definition:</b> <a href="_i_network_8hpp_source.html#l00085">INetwork.hpp:85</a></div></div>
<div class="ttc" id="structarmnn_1_1_activation_descriptor_html_af10fa7883e3579950f477bee92a64844"><div class="ttname"><a href="structarmnn_1_1_activation_descriptor.html#af10fa7883e3579950f477bee92a64844">armnn::ActivationDescriptor::m_Function</a></div><div class="ttdeci">ActivationFunction m_Function</div><div class="ttdoc">The activation function to use (Sigmoid, TanH, Linear, ReLu, BoundedReLu, SoftReLu, LeakyReLu, Abs, Sqrt, Square). </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.html#l00035">Descriptors.hpp:35</a></div></div>
<div class="ttc" id="classarmnn_1_1_i_network_quantizer_html_a3a4d01d9351c02a703740290f226441f"><div class="ttname"><a href="classarmnn_1_1_i_network_quantizer.html#a3a4d01d9351c02a703740290f226441f">armnn::INetworkQuantizer::Create</a></div><div class="ttdeci">static INetworkQuantizerPtr Create(INetwork *inputNetwork, const QuantizerOptions &amp;options=QuantizerOptions())</div><div class="ttdoc">Create Quantizer object wrapped in unique_ptr. </div><div class="ttdef"><b>Definition:</b> <a href="_network_quantizer_8cpp_source.html#l00040">NetworkQuantizer.cpp:40</a></div></div>
<div class="ttc" id="namespacearmnn_html_afad4088a9a058114ee5f87246f87bf49"><div class="ttname"><a href="namespacearmnn.html#afad4088a9a058114ee5f87246f87bf49">armnn::LayerGuid</a></div><div class="ttdeci">profiling::ProfilingGuid LayerGuid</div><div class="ttdoc">Define LayerGuid type. </div><div class="ttdef"><b>Definition:</b> <a href="_types_8hpp_source.html#l00233">Types.hpp:233</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="abe311824d11bad4e6f93c8f94a721052"></a>
<h2 class="memtitle"><span class="permalink"><a href="#abe311824d11bad4e6f93c8f94a721052">&#9670;&nbsp;</a></span>boost_test_print_type() <span class="overload">[1/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">std::ostream&amp; armnn::boost_test_print_type </td>
<td>(</td>
<td class="paramtype">std::ostream &amp;&#160;</td>
<td class="paramname"><em>ostr</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>right</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_tensor_test_8cpp_source.html#l00012">12</a> of file <a class="el" href="_tensor_test_8cpp_source.html">TensorTest.cpp</a>.</p>
<p class="reference">References <a class="el" href="_tensor_8hpp_source.html#l00092">TensorInfo::GetNumDimensions()</a>, and <a class="el" href="_tensor_8hpp_source.html#l00088">TensorInfo::GetShape()</a>.</p>
<div class="fragment"><div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;{</div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160; ostr &lt;&lt; <span class="stringliteral">&quot;TensorInfo[ &quot;</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160; &lt;&lt; right.<a class="code" href="classarmnn_1_1_tensor_info.html#a157e27d41e9f6b21f0d3c025fa47dc24">GetNumDimensions</a>() &lt;&lt; <span class="stringliteral">&quot;,&quot;</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160; &lt;&lt; right.<a class="code" href="classarmnn_1_1_tensor_info.html#a8b5d0f8a24e9d9238f412260a552acf8">GetShape</a>()[0] &lt;&lt; <span class="stringliteral">&quot;,&quot;</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160; &lt;&lt; right.<a class="code" href="classarmnn_1_1_tensor_info.html#a8b5d0f8a24e9d9238f412260a552acf8">GetShape</a>()[1] &lt;&lt; <span class="stringliteral">&quot;,&quot;</span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160; &lt;&lt; right.<a class="code" href="classarmnn_1_1_tensor_info.html#a8b5d0f8a24e9d9238f412260a552acf8">GetShape</a>()[2] &lt;&lt; <span class="stringliteral">&quot;,&quot;</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160; &lt;&lt; right.<a class="code" href="classarmnn_1_1_tensor_info.html#a8b5d0f8a24e9d9238f412260a552acf8">GetShape</a>()[3]</div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160; &lt;&lt; <span class="stringliteral">&quot; ]&quot;</span> &lt;&lt; std::endl;</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160; <span class="keywordflow">return</span> ostr;</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;}</div><div class="ttc" id="classarmnn_1_1_tensor_info_html_a157e27d41e9f6b21f0d3c025fa47dc24"><div class="ttname"><a href="classarmnn_1_1_tensor_info.html#a157e27d41e9f6b21f0d3c025fa47dc24">armnn::TensorInfo::GetNumDimensions</a></div><div class="ttdeci">unsigned int GetNumDimensions() const</div><div class="ttdef"><b>Definition:</b> <a href="_tensor_8hpp_source.html#l00092">Tensor.hpp:92</a></div></div>
<div class="ttc" id="classarmnn_1_1_tensor_info_html_a8b5d0f8a24e9d9238f412260a552acf8"><div class="ttname"><a href="classarmnn_1_1_tensor_info.html#a8b5d0f8a24e9d9238f412260a552acf8">armnn::TensorInfo::GetShape</a></div><div class="ttdeci">const TensorShape &amp; GetShape() const</div><div class="ttdef"><b>Definition:</b> <a href="_tensor_8hpp_source.html#l00088">Tensor.hpp:88</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="af676ec7e9534bd6e6ac3072a2c0403f4"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af676ec7e9534bd6e6ac3072a2c0403f4">&#9670;&nbsp;</a></span>boost_test_print_type() <span class="overload">[2/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">std::ostream&amp; armnn::boost_test_print_type </td>
<td>(</td>
<td class="paramtype">std::ostream &amp;&#160;</td>
<td class="paramname"><em>ostr</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_shape.html">TensorShape</a> &amp;&#160;</td>
<td class="paramname"><em>shape</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_tensor_test_8cpp_source.html#l00024">24</a> of file <a class="el" href="_tensor_test_8cpp_source.html">TensorTest.cpp</a>.</p>
<p class="reference">References <a class="el" href="_output_shape_of_squeeze_8cpp.html#ae3a6cb217a792718f2bd0e8f45e3ca9e">BOOST_AUTO_TEST_SUITE()</a>, and <a class="el" href="_tensor_8hpp_source.html#l00043">TensorShape::GetNumDimensions()</a>.</p>
<div class="fragment"><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;{</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; ostr &lt;&lt; <span class="stringliteral">&quot;TensorShape[ &quot;</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; &lt;&lt; shape.<a class="code" href="classarmnn_1_1_tensor_shape.html#a157e27d41e9f6b21f0d3c025fa47dc24">GetNumDimensions</a>() &lt;&lt; <span class="stringliteral">&quot;,&quot;</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; &lt;&lt; shape[0] &lt;&lt; <span class="stringliteral">&quot;,&quot;</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; &lt;&lt; shape[1] &lt;&lt; <span class="stringliteral">&quot;,&quot;</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; &lt;&lt; shape[2] &lt;&lt; <span class="stringliteral">&quot;,&quot;</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; &lt;&lt; shape[3]</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; &lt;&lt; <span class="stringliteral">&quot; ]&quot;</span> &lt;&lt; std::endl;</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; <span class="keywordflow">return</span> ostr;</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;}</div><div class="ttc" id="classarmnn_1_1_tensor_shape_html_a157e27d41e9f6b21f0d3c025fa47dc24"><div class="ttname"><a href="classarmnn_1_1_tensor_shape.html#a157e27d41e9f6b21f0d3c025fa47dc24">armnn::TensorShape::GetNumDimensions</a></div><div class="ttdeci">unsigned int GetNumDimensions() const</div><div class="ttdef"><b>Definition:</b> <a href="_tensor_8hpp_source.html#l00043">Tensor.hpp:43</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a20f74b679d59b52e9fae3bbef8f10ffb"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a20f74b679d59b52e9fae3bbef8f10ffb">&#9670;&nbsp;</a></span>CalcLevel()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int armnn::CalcLevel </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_event.html">Event</a> *&#160;</td>
<td class="paramname"><em>eventPtr</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_profiling_8cpp_source.html#l00234">234</a> of file <a class="el" href="_profiling_8cpp_source.html">Profiling.cpp</a>.</p>
<p class="reference">References <a class="el" href="_profiling_event_8cpp_source.html#l00067">Event::GetName()</a>, and <a class="el" href="_profiling_event_8cpp_source.html#l00077">Event::GetParentEvent()</a>.</p>
<p class="reference">Referenced by <a class="el" href="_profiling_8cpp_source.html#l00380">Profiler::AnalyzeEventsAndWriteResults()</a>.</p>
<div class="fragment"><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160;{</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160; <span class="keywordtype">int</span> level=0;</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160; <span class="keywordflow">while</span> (eventPtr != <span class="keyword">nullptr</span>)</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160; {</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160; eventPtr = eventPtr-&gt;GetParentEvent();</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160; level++;</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160; }</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160; <span class="keywordflow">return</span> level;</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160;}</div></div><!-- fragment -->
</div>
</div>
<a id="ab6ed577caec49def150e231c63af0d12"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab6ed577caec49def150e231c63af0d12">&#9670;&nbsp;</a></span>CalculateEdgeStrategy()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="namespacearmnn.html#aff209afc1dc598da399e3e78617ce016">EdgeStrategy</a> armnn::CalculateEdgeStrategy </td>
<td>(</td>
<td class="paramtype"><a class="el" href="namespacearmnn.html#a9173495a61a0092b5f38b855f02c3585">BackendsMap</a> &amp;&#160;</td>
<td class="paramname"><em>backends</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classarmnn_1_1_i_tensor_handle_factory.html#a32f4aa6a7089d877af08928139c2c277">ITensorHandleFactory::FactoryId</a>&#160;</td>
<td class="paramname"><em>srcFactoryId</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_layer.html">Layer</a> &amp;&#160;</td>
<td class="paramname"><em>layer</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_layer.html">Layer</a> &amp;&#160;</td>
<td class="paramname"><em>connectedLayer</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classarmnn_1_1_tensor_handle_factory_registry.html">TensorHandleFactoryRegistry</a> &amp;&#160;</td>
<td class="paramname"><em>registry</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_network_8cpp_source.html#l00664">664</a> of file <a class="el" href="_network_8cpp_source.html">Network.cpp</a>.</p>
<p class="reference">References <a class="el" href="namespacearmnn.html#aff209afc1dc598da399e3e78617ce016ac366da48cc11956ae377a77751936852">CopyToTarget</a>, <a class="el" href="namespacearmnn.html#aff209afc1dc598da399e3e78617ce016a78d1be0baa31e083ae8da99aaedaf650">DirectCompatibility</a>, <a class="el" href="namespacearmnn.html#aff209afc1dc598da399e3e78617ce016a46e8b7bfd6fd3c0cb34a100478a39189">ExportToTarget</a>, <a class="el" href="_layer_8hpp_source.html#l00263">Layer::GetBackendId()</a>, <a class="el" href="include_2armnn_2backends_2_i_tensor_handle_factory_8hpp_source.html#l00060">ITensorHandleFactory::GetExportFlags()</a>, <a class="el" href="_tensor_handle_factory_registry_8cpp_source.html#l00039">TensorHandleFactoryRegistry::GetFactory()</a>, <a class="el" href="include_2armnn_2backends_2_i_tensor_handle_factory_8hpp_source.html#l00061">ITensorHandleFactory::GetImportFlags()</a>, <a class="el" href="_layer_8hpp_source.html#l00259">Layer::GetType()</a>, <a class="el" href="include_2armnn_2backends_2_i_tensor_handle_factory_8hpp_source.html#l00022">ITensorHandleFactory::LegacyFactoryId</a>, <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4a29c2c02a361c9d7028472e5d92cd4a54">Output</a>, <a class="el" href="include_2armnn_2backends_2_i_tensor_handle_factory_8hpp_source.html#l00058">ITensorHandleFactory::SupportsMapUnmap()</a>, and <a class="el" href="namespacearmnn.html#ae2f04a162585c0a5222a537efd5456aeaec0fc0100c4fc1ce4eea230c3dc10360">Undefined</a>.</p>
<p class="reference">Referenced by <a class="el" href="_network_8cpp_source.html#l00741">SelectTensorHandleStrategy()</a>.</p>
<div class="fragment"><div class="line"><a name="l00669"></a><span class="lineno"> 669</span>&#160;{</div><div class="line"><a name="l00670"></a><span class="lineno"> 670</span>&#160; <span class="keyword">auto</span> toBackend = backends.find(connectedLayer.GetBackendId());</div><div class="line"><a name="l00671"></a><span class="lineno"> 671</span>&#160; BOOST_ASSERT_MSG(toBackend != backends.end(), <span class="stringliteral">&quot;Backend id not found for the connected layer&quot;</span>);</div><div class="line"><a name="l00672"></a><span class="lineno"> 672</span>&#160;</div><div class="line"><a name="l00673"></a><span class="lineno"> 673</span>&#160; <span class="keyword">auto</span> dstPrefs = toBackend-&gt;second.get()-&gt;GetHandleFactoryPreferences();</div><div class="line"><a name="l00674"></a><span class="lineno"> 674</span>&#160;</div><div class="line"><a name="l00675"></a><span class="lineno"> 675</span>&#160; <span class="comment">// Legacy API check for backward compatibility</span></div><div class="line"><a name="l00676"></a><span class="lineno"> 676</span>&#160; <span class="keywordflow">if</span> (srcFactoryId == ITensorHandleFactory::LegacyFactoryId || dstPrefs.empty())</div><div class="line"><a name="l00677"></a><span class="lineno"> 677</span>&#160; {</div><div class="line"><a name="l00678"></a><span class="lineno"> 678</span>&#160; <span class="keywordflow">if</span> (layer.GetBackendId() != connectedLayer.GetBackendId())</div><div class="line"><a name="l00679"></a><span class="lineno"> 679</span>&#160; {</div><div class="line"><a name="l00680"></a><span class="lineno"> 680</span>&#160; <span class="keywordflow">return</span> EdgeStrategy::CopyToTarget;</div><div class="line"><a name="l00681"></a><span class="lineno"> 681</span>&#160; }</div><div class="line"><a name="l00682"></a><span class="lineno"> 682</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00683"></a><span class="lineno"> 683</span>&#160; {</div><div class="line"><a name="l00684"></a><span class="lineno"> 684</span>&#160; <span class="keywordflow">return</span> EdgeStrategy::DirectCompatibility;</div><div class="line"><a name="l00685"></a><span class="lineno"> 685</span>&#160; }</div><div class="line"><a name="l00686"></a><span class="lineno"> 686</span>&#160; }</div><div class="line"><a name="l00687"></a><span class="lineno"> 687</span>&#160;</div><div class="line"><a name="l00688"></a><span class="lineno"> 688</span>&#160; <span class="comment">// TensorHandleFactory API present, so perform more sophisticated strategies.</span></div><div class="line"><a name="l00689"></a><span class="lineno"> 689</span>&#160; <span class="comment">// Dst Output layers don&#39;t require copy because they use import or map/unmap</span></div><div class="line"><a name="l00690"></a><span class="lineno"> 690</span>&#160; <span class="keywordflow">if</span> (connectedLayer.GetType() == LayerType::Output)</div><div class="line"><a name="l00691"></a><span class="lineno"> 691</span>&#160; {</div><div class="line"><a name="l00692"></a><span class="lineno"> 692</span>&#160; <span class="keywordflow">return</span> EdgeStrategy::DirectCompatibility;</div><div class="line"><a name="l00693"></a><span class="lineno"> 693</span>&#160; }</div><div class="line"><a name="l00694"></a><span class="lineno"> 694</span>&#160;</div><div class="line"><a name="l00695"></a><span class="lineno"> 695</span>&#160; <span class="comment">// Search for direct match in prefs</span></div><div class="line"><a name="l00696"></a><span class="lineno"> 696</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span>&amp;&amp; pref : dstPrefs)</div><div class="line"><a name="l00697"></a><span class="lineno"> 697</span>&#160; {</div><div class="line"><a name="l00698"></a><span class="lineno"> 698</span>&#160; <span class="keywordflow">if</span> (pref == srcFactoryId)</div><div class="line"><a name="l00699"></a><span class="lineno"> 699</span>&#160; {</div><div class="line"><a name="l00700"></a><span class="lineno"> 700</span>&#160; <span class="keywordflow">return</span> EdgeStrategy::DirectCompatibility;</div><div class="line"><a name="l00701"></a><span class="lineno"> 701</span>&#160; }</div><div class="line"><a name="l00702"></a><span class="lineno"> 702</span>&#160; }</div><div class="line"><a name="l00703"></a><span class="lineno"> 703</span>&#160;</div><div class="line"><a name="l00704"></a><span class="lineno"> 704</span>&#160; <span class="comment">// Search for export/import options</span></div><div class="line"><a name="l00705"></a><span class="lineno"> 705</span>&#160; ITensorHandleFactory* srcFactory = registry.GetFactory(srcFactoryId);</div><div class="line"><a name="l00706"></a><span class="lineno"> 706</span>&#160; <span class="keywordflow">if</span> (srcFactory-&gt;GetExportFlags() != 0)</div><div class="line"><a name="l00707"></a><span class="lineno"> 707</span>&#160; {</div><div class="line"><a name="l00708"></a><span class="lineno"> 708</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span>&amp;&amp; pref : dstPrefs)</div><div class="line"><a name="l00709"></a><span class="lineno"> 709</span>&#160; {</div><div class="line"><a name="l00710"></a><span class="lineno"> 710</span>&#160; ITensorHandleFactory* dstFactory = registry.GetFactory(pref);</div><div class="line"><a name="l00711"></a><span class="lineno"> 711</span>&#160;</div><div class="line"><a name="l00712"></a><span class="lineno"> 712</span>&#160; <span class="comment">// Handles cases when a destPref is not listed in TensorHandleFactoryRegistry</span></div><div class="line"><a name="l00713"></a><span class="lineno"> 713</span>&#160; <span class="keywordflow">if</span> (!dstFactory) {</div><div class="line"><a name="l00714"></a><span class="lineno"> 714</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00715"></a><span class="lineno"> 715</span>&#160; }</div><div class="line"><a name="l00716"></a><span class="lineno"> 716</span>&#160;</div><div class="line"><a name="l00717"></a><span class="lineno"> 717</span>&#160; <span class="keywordflow">if</span> ((dstFactory-&gt;GetImportFlags() &amp; srcFactory-&gt;GetExportFlags()) != 0)</div><div class="line"><a name="l00718"></a><span class="lineno"> 718</span>&#160; {</div><div class="line"><a name="l00719"></a><span class="lineno"> 719</span>&#160; <span class="keywordflow">return</span> EdgeStrategy::ExportToTarget;</div><div class="line"><a name="l00720"></a><span class="lineno"> 720</span>&#160; }</div><div class="line"><a name="l00721"></a><span class="lineno"> 721</span>&#160; }</div><div class="line"><a name="l00722"></a><span class="lineno"> 722</span>&#160; }</div><div class="line"><a name="l00723"></a><span class="lineno"> 723</span>&#160;</div><div class="line"><a name="l00724"></a><span class="lineno"> 724</span>&#160; <span class="comment">// Search for copy options via map/unmap</span></div><div class="line"><a name="l00725"></a><span class="lineno"> 725</span>&#160; <span class="keywordflow">if</span> (srcFactory-&gt;SupportsMapUnmap())</div><div class="line"><a name="l00726"></a><span class="lineno"> 726</span>&#160; {</div><div class="line"><a name="l00727"></a><span class="lineno"> 727</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span>&amp;&amp; pref : dstPrefs)</div><div class="line"><a name="l00728"></a><span class="lineno"> 728</span>&#160; {</div><div class="line"><a name="l00729"></a><span class="lineno"> 729</span>&#160; ITensorHandleFactory* dstFactory = registry.GetFactory(pref);</div><div class="line"><a name="l00730"></a><span class="lineno"> 730</span>&#160; <span class="keywordflow">if</span> (dstFactory &amp;&amp; dstFactory-&gt;SupportsMapUnmap())</div><div class="line"><a name="l00731"></a><span class="lineno"> 731</span>&#160; {</div><div class="line"><a name="l00732"></a><span class="lineno"> 732</span>&#160; <span class="keywordflow">return</span> EdgeStrategy::CopyToTarget;</div><div class="line"><a name="l00733"></a><span class="lineno"> 733</span>&#160; }</div><div class="line"><a name="l00734"></a><span class="lineno"> 734</span>&#160; }</div><div class="line"><a name="l00735"></a><span class="lineno"> 735</span>&#160; }</div><div class="line"><a name="l00736"></a><span class="lineno"> 736</span>&#160;</div><div class="line"><a name="l00737"></a><span class="lineno"> 737</span>&#160; <span class="keywordflow">return</span> EdgeStrategy::Undefined;</div><div class="line"><a name="l00738"></a><span class="lineno"> 738</span>&#160;}</div></div><!-- fragment -->
</div>
</div>
<a id="a8d9f52bbb69750456acca06988beabda"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a8d9f52bbb69750456acca06988beabda">&#9670;&nbsp;</a></span>CalculateSlotOption()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classarmnn_1_1_i_tensor_handle_factory.html#a32f4aa6a7089d877af08928139c2c277">ITensorHandleFactory::FactoryId</a> armnn::CalculateSlotOption </td>
<td>(</td>
<td class="paramtype"><a class="el" href="namespacearmnn.html#a9173495a61a0092b5f38b855f02c3585">BackendsMap</a> &amp;&#160;</td>
<td class="paramname"><em>backends</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classarmnn_1_1_output_slot.html">OutputSlot</a> &amp;&#160;</td>
<td class="paramname"><em>outputSlot</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classarmnn_1_1_tensor_handle_factory_registry.html">TensorHandleFactoryRegistry</a> &amp;&#160;</td>
<td class="paramname"><em>registry</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_network_8cpp_source.html#l00555">555</a> of file <a class="el" href="_network_8cpp_source.html">Network.cpp</a>.</p>
<p class="reference">References <a class="el" href="_layer_8hpp_source.html#l00263">Layer::GetBackendId()</a>, <a class="el" href="_layer_8hpp_source.html#l00125">OutputSlot::GetConnections()</a>, <a class="el" href="_tensor_handle_factory_registry_8cpp_source.html#l00039">TensorHandleFactoryRegistry::GetFactory()</a>, <a class="el" href="_i_backend_internal_8cpp_source.html#l00096">IBackendInternal::GetHandleFactoryPreferences()</a>, <a class="el" href="_layer_8hpp_source.html#l00115">OutputSlot::GetOwningLayer()</a>, <a class="el" href="_layer_8hpp_source.html#l00259">Layer::GetType()</a>, <a class="el" href="include_2armnn_2backends_2_i_tensor_handle_factory_8hpp_source.html#l00022">ITensorHandleFactory::LegacyFactoryId</a>, <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4a29c2c02a361c9d7028472e5d92cd4a54">Output</a>, <a class="el" href="_network_8cpp_source.html#l00443">RequiresCopy()</a>, and <a class="el" href="include_2armnn_2backends_2_i_tensor_handle_factory_8hpp_source.html#l00058">ITensorHandleFactory::SupportsMapUnmap()</a>.</p>
<p class="reference">Referenced by <a class="el" href="_network_8cpp_source.html#l00741">SelectTensorHandleStrategy()</a>.</p>
<div class="fragment"><div class="line"><a name="l00558"></a><span class="lineno"> 558</span>&#160;{</div><div class="line"><a name="l00559"></a><span class="lineno"> 559</span>&#160; <span class="comment">// First ensure the from backends can support the TensorHandeAPI</span></div><div class="line"><a name="l00560"></a><span class="lineno"> 560</span>&#160; Layer&amp; layer = outputSlot.GetOwningLayer();</div><div class="line"><a name="l00561"></a><span class="lineno"> 561</span>&#160; <span class="keyword">auto</span> frmBackend = backends.find(layer.GetBackendId());</div><div class="line"><a name="l00562"></a><span class="lineno"> 562</span>&#160; <span class="keywordflow">if</span> (frmBackend == backends.end() ||</div><div class="line"><a name="l00563"></a><span class="lineno"> 563</span>&#160; !frmBackend-&gt;second-&gt;SupportsTensorAllocatorAPI())</div><div class="line"><a name="l00564"></a><span class="lineno"> 564</span>&#160; {</div><div class="line"><a name="l00565"></a><span class="lineno"> 565</span>&#160; <span class="keywordflow">return</span> ITensorHandleFactory::LegacyFactoryId;</div><div class="line"><a name="l00566"></a><span class="lineno"> 566</span>&#160; }</div><div class="line"><a name="l00567"></a><span class="lineno"> 567</span>&#160;</div><div class="line"><a name="l00568"></a><span class="lineno"> 568</span>&#160; <span class="comment">// Connections to Output Layers requires support for map/unmap on the TensorHandle.</span></div><div class="line"><a name="l00569"></a><span class="lineno"> 569</span>&#160; <span class="keywordtype">bool</span> requiresMapUnmap = <span class="keyword">false</span>;</div><div class="line"><a name="l00570"></a><span class="lineno"> 570</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span>&amp;&amp; connection : outputSlot.GetConnections())</div><div class="line"><a name="l00571"></a><span class="lineno"> 571</span>&#160; {</div><div class="line"><a name="l00572"></a><span class="lineno"> 572</span>&#160; <span class="keyword">const</span> Layer&amp; connectedLayer = connection-&gt;GetOwningLayer();</div><div class="line"><a name="l00573"></a><span class="lineno"> 573</span>&#160; <span class="keywordflow">if</span> (connectedLayer.GetType() == LayerType::Output)</div><div class="line"><a name="l00574"></a><span class="lineno"> 574</span>&#160; {</div><div class="line"><a name="l00575"></a><span class="lineno"> 575</span>&#160; requiresMapUnmap = <span class="keyword">true</span>;</div><div class="line"><a name="l00576"></a><span class="lineno"> 576</span>&#160; }</div><div class="line"><a name="l00577"></a><span class="lineno"> 577</span>&#160; }</div><div class="line"><a name="l00578"></a><span class="lineno"> 578</span>&#160;</div><div class="line"><a name="l00579"></a><span class="lineno"> 579</span>&#160; IBackendInternal* srcBackend = frmBackend-&gt;second.get();</div><div class="line"><a name="l00580"></a><span class="lineno"> 580</span>&#160; <span class="keyword">auto</span> srcPrefs = srcBackend-&gt;GetHandleFactoryPreferences();</div><div class="line"><a name="l00581"></a><span class="lineno"> 581</span>&#160;</div><div class="line"><a name="l00582"></a><span class="lineno"> 582</span>&#160; <span class="comment">// Initialize the scores</span></div><div class="line"><a name="l00583"></a><span class="lineno"> 583</span>&#160; std::map&lt;ITensorHandleFactory::FactoryId, int&gt; factoryScores;</div><div class="line"><a name="l00584"></a><span class="lineno"> 584</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span>&amp;&amp; pref : srcPrefs)</div><div class="line"><a name="l00585"></a><span class="lineno"> 585</span>&#160; {</div><div class="line"><a name="l00586"></a><span class="lineno"> 586</span>&#160; <span class="keywordflow">if</span> (requiresMapUnmap) <span class="comment">// Only consider factories that support map/unmap if required</span></div><div class="line"><a name="l00587"></a><span class="lineno"> 587</span>&#160; {</div><div class="line"><a name="l00588"></a><span class="lineno"> 588</span>&#160; ITensorHandleFactory* factory = registry.GetFactory(pref);</div><div class="line"><a name="l00589"></a><span class="lineno"> 589</span>&#160; <span class="keywordflow">if</span> (!factory-&gt;SupportsMapUnmap())</div><div class="line"><a name="l00590"></a><span class="lineno"> 590</span>&#160; {</div><div class="line"><a name="l00591"></a><span class="lineno"> 591</span>&#160; <span class="comment">// The current tensor handle factory does not support the map/unmap strategy, move to the next one</span></div><div class="line"><a name="l00592"></a><span class="lineno"> 592</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00593"></a><span class="lineno"> 593</span>&#160; }</div><div class="line"><a name="l00594"></a><span class="lineno"> 594</span>&#160; }</div><div class="line"><a name="l00595"></a><span class="lineno"> 595</span>&#160;</div><div class="line"><a name="l00596"></a><span class="lineno"> 596</span>&#160; <span class="keyword">auto</span> it = factoryScores.find(pref);</div><div class="line"><a name="l00597"></a><span class="lineno"> 597</span>&#160; <span class="keywordflow">if</span> (it == factoryScores.end())</div><div class="line"><a name="l00598"></a><span class="lineno"> 598</span>&#160; {</div><div class="line"><a name="l00599"></a><span class="lineno"> 599</span>&#160; <span class="comment">// Add new score to the table</span></div><div class="line"><a name="l00600"></a><span class="lineno"> 600</span>&#160; factoryScores[pref] = 0;</div><div class="line"><a name="l00601"></a><span class="lineno"> 601</span>&#160; }</div><div class="line"><a name="l00602"></a><span class="lineno"> 602</span>&#160; }</div><div class="line"><a name="l00603"></a><span class="lineno"> 603</span>&#160;</div><div class="line"><a name="l00604"></a><span class="lineno"> 604</span>&#160; <span class="comment">// Score each handle factory based on how many times it requires copies on the slot connections</span></div><div class="line"><a name="l00605"></a><span class="lineno"> 605</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span>&amp;&amp; connection : outputSlot.GetConnections())</div><div class="line"><a name="l00606"></a><span class="lineno"> 606</span>&#160; {</div><div class="line"><a name="l00607"></a><span class="lineno"> 607</span>&#160; <span class="keyword">const</span> Layer&amp; connectedLayer = connection-&gt;GetOwningLayer();</div><div class="line"><a name="l00608"></a><span class="lineno"> 608</span>&#160;</div><div class="line"><a name="l00609"></a><span class="lineno"> 609</span>&#160; <span class="keyword">auto</span> toBackend = backends.find(connectedLayer.GetBackendId());</div><div class="line"><a name="l00610"></a><span class="lineno"> 610</span>&#160; BOOST_ASSERT_MSG(toBackend != backends.end(), <span class="stringliteral">&quot;Backend id not found for the connected layer&quot;</span>);</div><div class="line"><a name="l00611"></a><span class="lineno"> 611</span>&#160;</div><div class="line"><a name="l00612"></a><span class="lineno"> 612</span>&#160; <span class="keyword">auto</span> dstPrefs = toBackend-&gt;second.get()-&gt;GetHandleFactoryPreferences();</div><div class="line"><a name="l00613"></a><span class="lineno"> 613</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span>&amp;&amp; src : srcPrefs)</div><div class="line"><a name="l00614"></a><span class="lineno"> 614</span>&#160; {</div><div class="line"><a name="l00615"></a><span class="lineno"> 615</span>&#160; <span class="keywordflow">if</span> (factoryScores.find(src) == factoryScores.end()) <span class="comment">// Don&#39;t consider excluded factories</span></div><div class="line"><a name="l00616"></a><span class="lineno"> 616</span>&#160; {</div><div class="line"><a name="l00617"></a><span class="lineno"> 617</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00618"></a><span class="lineno"> 618</span>&#160; }</div><div class="line"><a name="l00619"></a><span class="lineno"> 619</span>&#160;</div><div class="line"><a name="l00620"></a><span class="lineno"> 620</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span>&amp;&amp; dst : dstPrefs)</div><div class="line"><a name="l00621"></a><span class="lineno"> 621</span>&#160; {</div><div class="line"><a name="l00622"></a><span class="lineno"> 622</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespacearmnn.html#a5ee4a1cca55f69b31e625c786655ed1a">RequiresCopy</a>(src, dst, registry))</div><div class="line"><a name="l00623"></a><span class="lineno"> 623</span>&#160; {</div><div class="line"><a name="l00624"></a><span class="lineno"> 624</span>&#160; <span class="comment">// Copy avoided, increase the score</span></div><div class="line"><a name="l00625"></a><span class="lineno"> 625</span>&#160; factoryScores[src]++;</div><div class="line"><a name="l00626"></a><span class="lineno"> 626</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00627"></a><span class="lineno"> 627</span>&#160; }</div><div class="line"><a name="l00628"></a><span class="lineno"> 628</span>&#160; }</div><div class="line"><a name="l00629"></a><span class="lineno"> 629</span>&#160; }</div><div class="line"><a name="l00630"></a><span class="lineno"> 630</span>&#160; }</div><div class="line"><a name="l00631"></a><span class="lineno"> 631</span>&#160;</div><div class="line"><a name="l00632"></a><span class="lineno"> 632</span>&#160; <span class="comment">// Find the lowest score</span></div><div class="line"><a name="l00633"></a><span class="lineno"> 633</span>&#160; <span class="keywordtype">int</span> minScore = std::numeric_limits&lt;int&gt;::max();</div><div class="line"><a name="l00634"></a><span class="lineno"> 634</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span> it : factoryScores)</div><div class="line"><a name="l00635"></a><span class="lineno"> 635</span>&#160; {</div><div class="line"><a name="l00636"></a><span class="lineno"> 636</span>&#160; minScore = std::min(minScore, it.second);</div><div class="line"><a name="l00637"></a><span class="lineno"> 637</span>&#160; }</div><div class="line"><a name="l00638"></a><span class="lineno"> 638</span>&#160;</div><div class="line"><a name="l00639"></a><span class="lineno"> 639</span>&#160; <span class="comment">// Collect factories matching the best(lowest) score</span></div><div class="line"><a name="l00640"></a><span class="lineno"> 640</span>&#160; std::vector&lt;ITensorHandleFactory::FactoryId&gt; optimalFactories;</div><div class="line"><a name="l00641"></a><span class="lineno"> 641</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span> it : factoryScores)</div><div class="line"><a name="l00642"></a><span class="lineno"> 642</span>&#160; {</div><div class="line"><a name="l00643"></a><span class="lineno"> 643</span>&#160; <span class="keywordflow">if</span> (it.second == minScore)</div><div class="line"><a name="l00644"></a><span class="lineno"> 644</span>&#160; {</div><div class="line"><a name="l00645"></a><span class="lineno"> 645</span>&#160; optimalFactories.push_back(it.first);</div><div class="line"><a name="l00646"></a><span class="lineno"> 646</span>&#160; }</div><div class="line"><a name="l00647"></a><span class="lineno"> 647</span>&#160; }</div><div class="line"><a name="l00648"></a><span class="lineno"> 648</span>&#160;</div><div class="line"><a name="l00649"></a><span class="lineno"> 649</span>&#160; <span class="comment">// For all compatible Factories matching the best score, find the preferred one for the current layer.</span></div><div class="line"><a name="l00650"></a><span class="lineno"> 650</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span>&amp;&amp; srcPref : srcPrefs)</div><div class="line"><a name="l00651"></a><span class="lineno"> 651</span>&#160; {</div><div class="line"><a name="l00652"></a><span class="lineno"> 652</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span>&amp;&amp; comp : optimalFactories)</div><div class="line"><a name="l00653"></a><span class="lineno"> 653</span>&#160; {</div><div class="line"><a name="l00654"></a><span class="lineno"> 654</span>&#160; <span class="keywordflow">if</span> (comp == srcPref)</div><div class="line"><a name="l00655"></a><span class="lineno"> 655</span>&#160; {</div><div class="line"><a name="l00656"></a><span class="lineno"> 656</span>&#160; <span class="keywordflow">return</span> comp;</div><div class="line"><a name="l00657"></a><span class="lineno"> 657</span>&#160; }</div><div class="line"><a name="l00658"></a><span class="lineno"> 658</span>&#160; }</div><div class="line"><a name="l00659"></a><span class="lineno"> 659</span>&#160; }</div><div class="line"><a name="l00660"></a><span class="lineno"> 660</span>&#160;</div><div class="line"><a name="l00661"></a><span class="lineno"> 661</span>&#160; <span class="keywordflow">return</span> ITensorHandleFactory::LegacyFactoryId;</div><div class="line"><a name="l00662"></a><span class="lineno"> 662</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a5ee4a1cca55f69b31e625c786655ed1a"><div class="ttname"><a href="namespacearmnn.html#a5ee4a1cca55f69b31e625c786655ed1a">armnn::RequiresCopy</a></div><div class="ttdeci">bool RequiresCopy(ITensorHandleFactory::FactoryId src, ITensorHandleFactory::FactoryId dst, TensorHandleFactoryRegistry &amp;registry)</div><div class="ttdef"><b>Definition:</b> <a href="_network_8cpp_source.html#l00443">Network.cpp:443</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="accb1637c58e1523f740025e0d0e7c6dd"></a>
<h2 class="memtitle"><span class="permalink"><a href="#accb1637c58e1523f740025e0d0e7c6dd">&#9670;&nbsp;</a></span>CalculateSlotOptionForInput()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classarmnn_1_1_i_tensor_handle_factory.html#a32f4aa6a7089d877af08928139c2c277">ITensorHandleFactory::FactoryId</a> armnn::CalculateSlotOptionForInput </td>
<td>(</td>
<td class="paramtype"><a class="el" href="namespacearmnn.html#a9173495a61a0092b5f38b855f02c3585">BackendsMap</a> &amp;&#160;</td>
<td class="paramname"><em>backends</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classarmnn_1_1_output_slot.html">OutputSlot</a> &amp;&#160;</td>
<td class="paramname"><em>slot</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classarmnn_1_1_tensor_handle_factory_registry.html">TensorHandleFactoryRegistry</a> &amp;&#160;</td>
<td class="paramname"><em>registry</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_network_8cpp_source.html#l00463">463</a> of file <a class="el" href="_network_8cpp_source.html">Network.cpp</a>.</p>
<p class="reference">References <a class="el" href="_memory_sources_8hpp_source.html#l00047">CheckFlag()</a>, <a class="el" href="_layer_8hpp_source.html#l00263">Layer::GetBackendId()</a>, <a class="el" href="_layer_8hpp_source.html#l00125">OutputSlot::GetConnections()</a>, <a class="el" href="_tensor_handle_factory_registry_8cpp_source.html#l00039">TensorHandleFactoryRegistry::GetFactory()</a>, <a class="el" href="include_2armnn_2backends_2_i_tensor_handle_factory_8hpp_source.html#l00061">ITensorHandleFactory::GetImportFlags()</a>, <a class="el" href="_layer_8hpp_source.html#l00115">OutputSlot::GetOwningLayer()</a>, <a class="el" href="_layer_8hpp_source.html#l00259">Layer::GetType()</a>, <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4a324118a6721dd6b8a9b9f4e327df2bf5">Input</a>, <a class="el" href="include_2armnn_2backends_2_i_tensor_handle_factory_8hpp_source.html#l00022">ITensorHandleFactory::LegacyFactoryId</a>, <a class="el" href="namespacearmnn.html#a0fc99721e27eb20ecd0ea85a3cc8b488a1131a914388fac73e5f07b0ba0aad523">Malloc</a>, and <a class="el" href="include_2armnn_2backends_2_i_tensor_handle_factory_8hpp_source.html#l00058">ITensorHandleFactory::SupportsMapUnmap()</a>.</p>
<p class="reference">Referenced by <a class="el" href="_network_8cpp_source.html#l00741">SelectTensorHandleStrategy()</a>.</p>
<div class="fragment"><div class="line"><a name="l00466"></a><span class="lineno"> 466</span>&#160;{</div><div class="line"><a name="l00467"></a><span class="lineno"> 467</span>&#160; Layer&amp; layer = slot.GetOwningLayer();</div><div class="line"><a name="l00468"></a><span class="lineno"> 468</span>&#160; BOOST_ASSERT(layer.GetType() == LayerType::Input);</div><div class="line"><a name="l00469"></a><span class="lineno"> 469</span>&#160;</div><div class="line"><a name="l00470"></a><span class="lineno"> 470</span>&#160; <span class="comment">// Explicitly select the tensorhandle factory for InputLayer because the rules for it are slightly different. It</span></div><div class="line"><a name="l00471"></a><span class="lineno"> 471</span>&#160; <span class="comment">// doesn&#39;t matter which backend it is assigned to because they all use the same implementation, which</span></div><div class="line"><a name="l00472"></a><span class="lineno"> 472</span>&#160; <span class="comment">// requires Map/Unmap support. This means that, so long as the handle type supports map/unmap semantics, we can</span></div><div class="line"><a name="l00473"></a><span class="lineno"> 473</span>&#160; <span class="comment">// select a factory with maximum compatibility with the layers connected to the InputLayer.</span></div><div class="line"><a name="l00474"></a><span class="lineno"> 474</span>&#160;</div><div class="line"><a name="l00475"></a><span class="lineno"> 475</span>&#160; <span class="comment">// First ensure the from backends can support the TensorHandeAPI</span></div><div class="line"><a name="l00476"></a><span class="lineno"> 476</span>&#160; <span class="keyword">auto</span> frmBackend = backends.find(layer.GetBackendId());</div><div class="line"><a name="l00477"></a><span class="lineno"> 477</span>&#160; <span class="keywordflow">if</span> (frmBackend == backends.end() ||</div><div class="line"><a name="l00478"></a><span class="lineno"> 478</span>&#160; !frmBackend-&gt;second-&gt;SupportsTensorAllocatorAPI())</div><div class="line"><a name="l00479"></a><span class="lineno"> 479</span>&#160; {</div><div class="line"><a name="l00480"></a><span class="lineno"> 480</span>&#160; <span class="keywordflow">return</span> ITensorHandleFactory::LegacyFactoryId;</div><div class="line"><a name="l00481"></a><span class="lineno"> 481</span>&#160; }</div><div class="line"><a name="l00482"></a><span class="lineno"> 482</span>&#160;</div><div class="line"><a name="l00483"></a><span class="lineno"> 483</span>&#160; <span class="comment">// Go through all connections to the output slot and determine the TensorHandleFactory which results in the</span></div><div class="line"><a name="l00484"></a><span class="lineno"> 484</span>&#160; <span class="comment">// fewest copies.</span></div><div class="line"><a name="l00485"></a><span class="lineno"> 485</span>&#160; std::map&lt;ITensorHandleFactory::FactoryId, int&gt; factoryScores;</div><div class="line"><a name="l00486"></a><span class="lineno"> 486</span>&#160; <span class="keywordtype">int</span> topScore = 0;</div><div class="line"><a name="l00487"></a><span class="lineno"> 487</span>&#160; <a class="code" href="namespacearmnn.html#a947e07902b1b5d98b57eeae34053146b">ITensorHandleFactory::FactoryId</a> topChoice = ITensorHandleFactory::LegacyFactoryId;</div><div class="line"><a name="l00488"></a><span class="lineno"> 488</span>&#160;</div><div class="line"><a name="l00489"></a><span class="lineno"> 489</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span>&amp;&amp; connection : slot.GetConnections())</div><div class="line"><a name="l00490"></a><span class="lineno"> 490</span>&#160; {</div><div class="line"><a name="l00491"></a><span class="lineno"> 491</span>&#160; <span class="keyword">const</span> Layer&amp; connectedLayer = connection-&gt;GetOwningLayer();</div><div class="line"><a name="l00492"></a><span class="lineno"> 492</span>&#160;</div><div class="line"><a name="l00493"></a><span class="lineno"> 493</span>&#160; <span class="keyword">auto</span> toBackend = backends.find(connectedLayer.GetBackendId());</div><div class="line"><a name="l00494"></a><span class="lineno"> 494</span>&#160; BOOST_ASSERT_MSG(toBackend != backends.end(), <span class="stringliteral">&quot;Backend id not found for the connected layer&quot;</span>);</div><div class="line"><a name="l00495"></a><span class="lineno"> 495</span>&#160;</div><div class="line"><a name="l00496"></a><span class="lineno"> 496</span>&#160; <span class="keywordflow">if</span> (!toBackend-&gt;second.get()-&gt;SupportsTensorAllocatorAPI())</div><div class="line"><a name="l00497"></a><span class="lineno"> 497</span>&#160; {</div><div class="line"><a name="l00498"></a><span class="lineno"> 498</span>&#160; <span class="comment">// The destination backend does not support the tensor allocator API, move to the next one</span></div><div class="line"><a name="l00499"></a><span class="lineno"> 499</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00500"></a><span class="lineno"> 500</span>&#160; }</div><div class="line"><a name="l00501"></a><span class="lineno"> 501</span>&#160;</div><div class="line"><a name="l00502"></a><span class="lineno"> 502</span>&#160; <span class="keyword">auto</span> dstPrefs = toBackend-&gt;second.get()-&gt;GetHandleFactoryPreferences();</div><div class="line"><a name="l00503"></a><span class="lineno"> 503</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span>&amp;&amp; dst : dstPrefs)</div><div class="line"><a name="l00504"></a><span class="lineno"> 504</span>&#160; {</div><div class="line"><a name="l00505"></a><span class="lineno"> 505</span>&#160; <span class="comment">// Input layers use the mem copy workload or import, so the selected factory must</span></div><div class="line"><a name="l00506"></a><span class="lineno"> 506</span>&#160; <span class="comment">// support either the map/unmap API or Import API</span></div><div class="line"><a name="l00507"></a><span class="lineno"> 507</span>&#160; ITensorHandleFactory* factory = registry.GetFactory(dst);</div><div class="line"><a name="l00508"></a><span class="lineno"> 508</span>&#160; <span class="keywordflow">if</span> (!factory-&gt;SupportsMapUnmap() &amp;&amp;</div><div class="line"><a name="l00509"></a><span class="lineno"> 509</span>&#160; !<a class="code" href="namespacearmnn.html#a84f86b4de5adf0b164e811c87051a0ee">CheckFlag</a>(factory-&gt;GetImportFlags(), MemorySource::Malloc)) <span class="comment">// Just support cpu mem imports for now</span></div><div class="line"><a name="l00510"></a><span class="lineno"> 510</span>&#160; {</div><div class="line"><a name="l00511"></a><span class="lineno"> 511</span>&#160; <span class="comment">// The current tensor handle factory does not support the map/unmap or import</span></div><div class="line"><a name="l00512"></a><span class="lineno"> 512</span>&#160; <span class="comment">// strategy, move to the next one</span></div><div class="line"><a name="l00513"></a><span class="lineno"> 513</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00514"></a><span class="lineno"> 514</span>&#160; }</div><div class="line"><a name="l00515"></a><span class="lineno"> 515</span>&#160;</div><div class="line"><a name="l00516"></a><span class="lineno"> 516</span>&#160; <span class="keyword">auto</span> it = factoryScores.find(dst);</div><div class="line"><a name="l00517"></a><span class="lineno"> 517</span>&#160; <span class="keywordflow">if</span> (it == factoryScores.end())</div><div class="line"><a name="l00518"></a><span class="lineno"> 518</span>&#160; {</div><div class="line"><a name="l00519"></a><span class="lineno"> 519</span>&#160; <span class="comment">// Add new score to the table</span></div><div class="line"><a name="l00520"></a><span class="lineno"> 520</span>&#160; factoryScores[dst] = 0;</div><div class="line"><a name="l00521"></a><span class="lineno"> 521</span>&#160; <span class="keywordflow">if</span> (topChoice == ITensorHandleFactory::LegacyFactoryId)</div><div class="line"><a name="l00522"></a><span class="lineno"> 522</span>&#160; {</div><div class="line"><a name="l00523"></a><span class="lineno"> 523</span>&#160; topChoice = dst;</div><div class="line"><a name="l00524"></a><span class="lineno"> 524</span>&#160; }</div><div class="line"><a name="l00525"></a><span class="lineno"> 525</span>&#160; }</div><div class="line"><a name="l00526"></a><span class="lineno"> 526</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00527"></a><span class="lineno"> 527</span>&#160; {</div><div class="line"><a name="l00528"></a><span class="lineno"> 528</span>&#160; <span class="comment">// Increase the score</span></div><div class="line"><a name="l00529"></a><span class="lineno"> 529</span>&#160; factoryScores[dst]++;</div><div class="line"><a name="l00530"></a><span class="lineno"> 530</span>&#160;</div><div class="line"><a name="l00531"></a><span class="lineno"> 531</span>&#160; <span class="comment">// Track the best option</span></div><div class="line"><a name="l00532"></a><span class="lineno"> 532</span>&#160; <span class="keywordflow">if</span> (factoryScores[dst] &gt; topScore)</div><div class="line"><a name="l00533"></a><span class="lineno"> 533</span>&#160; {</div><div class="line"><a name="l00534"></a><span class="lineno"> 534</span>&#160; topScore = factoryScores[dst];</div><div class="line"><a name="l00535"></a><span class="lineno"> 535</span>&#160; topChoice = dst;</div><div class="line"><a name="l00536"></a><span class="lineno"> 536</span>&#160; }</div><div class="line"><a name="l00537"></a><span class="lineno"> 537</span>&#160; }</div><div class="line"><a name="l00538"></a><span class="lineno"> 538</span>&#160; }</div><div class="line"><a name="l00539"></a><span class="lineno"> 539</span>&#160; }</div><div class="line"><a name="l00540"></a><span class="lineno"> 540</span>&#160;</div><div class="line"><a name="l00541"></a><span class="lineno"> 541</span>&#160; <span class="keywordflow">return</span> topChoice;</div><div class="line"><a name="l00542"></a><span class="lineno"> 542</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a84f86b4de5adf0b164e811c87051a0ee"><div class="ttname"><a href="namespacearmnn.html#a84f86b4de5adf0b164e811c87051a0ee">armnn::CheckFlag</a></div><div class="ttdeci">bool CheckFlag(MemorySourceFlags flags, MemorySource source)</div><div class="ttdef"><b>Definition:</b> <a href="_memory_sources_8hpp_source.html#l00047">MemorySources.hpp:47</a></div></div>
<div class="ttc" id="namespacearmnn_html_a947e07902b1b5d98b57eeae34053146b"><div class="ttname"><a href="namespacearmnn.html#a947e07902b1b5d98b57eeae34053146b">armnn::FactoryId</a></div><div class="ttdeci">ITensorHandleFactory::FactoryId FactoryId</div><div class="ttdef"><b>Definition:</b> <a href="_cl_tensor_handle_factory_8cpp_source.html#l00020">ClTensorHandleFactory.cpp:20</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="ab46c7f5f4736d550ab0e5e05a0fff4a9"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab46c7f5f4736d550ab0e5e05a0fff4a9">&#9670;&nbsp;</a></span>CalculateSlotOptionForOutput()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classarmnn_1_1_i_tensor_handle_factory.html#a32f4aa6a7089d877af08928139c2c277">ITensorHandleFactory::FactoryId</a> armnn::CalculateSlotOptionForOutput </td>
<td>(</td>
<td class="paramtype"><a class="el" href="namespacearmnn.html#a9173495a61a0092b5f38b855f02c3585">BackendsMap</a> &amp;&#160;</td>
<td class="paramname"><em>backends</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classarmnn_1_1_output_slot.html">OutputSlot</a> &amp;&#160;</td>
<td class="paramname"><em>slot</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classarmnn_1_1_tensor_handle_factory_registry.html">TensorHandleFactoryRegistry</a> &amp;&#160;</td>
<td class="paramname"><em>registry</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_network_8cpp_source.html#l00545">545</a> of file <a class="el" href="_network_8cpp_source.html">Network.cpp</a>.</p>
<p class="reference">References <a class="el" href="include_2armnn_2backends_2_i_tensor_handle_factory_8hpp_source.html#l00023">ITensorHandleFactory::DeferredFactoryId</a>.</p>
<p class="reference">Referenced by <a class="el" href="_network_8cpp_source.html#l00741">SelectTensorHandleStrategy()</a>.</p>
<div class="fragment"><div class="line"><a name="l00548"></a><span class="lineno"> 548</span>&#160;{</div><div class="line"><a name="l00549"></a><span class="lineno"> 549</span>&#160; boost::ignore_unused(backends, slot, registry);</div><div class="line"><a name="l00550"></a><span class="lineno"> 550</span>&#160; <span class="keywordflow">return</span> ITensorHandleFactory::DeferredFactoryId;</div><div class="line"><a name="l00551"></a><span class="lineno"> 551</span>&#160;}</div></div><!-- fragment -->
</div>
</div>
<a id="a84f86b4de5adf0b164e811c87051a0ee"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a84f86b4de5adf0b164e811c87051a0ee">&#9670;&nbsp;</a></span>CheckFlag()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">bool armnn::CheckFlag </td>
<td>(</td>
<td class="paramtype"><a class="el" href="namespacearmnn.html#a5b05f3b7208ec7cea3338e30057c0bac">MemorySourceFlags</a>&#160;</td>
<td class="paramname"><em>flags</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacearmnn.html#a0fc99721e27eb20ecd0ea85a3cc8b488">MemorySource</a>&#160;</td>
<td class="paramname"><em>source</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_memory_sources_8hpp_source.html#l00047">47</a> of file <a class="el" href="_memory_sources_8hpp_source.html">MemorySources.hpp</a>.</p>
<p class="reference">Referenced by <a class="el" href="_network_8cpp_source.html#l00463">CalculateSlotOptionForInput()</a>, and <a class="el" href="_loaded_network_8cpp_source.html#l00412">LoadedNetwork::EnqueueWorkload()</a>.</p>
<div class="fragment"><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;{</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; <span class="keywordflow">return</span> (static_cast&lt;MemorySourceFlags&gt;(source) &amp; flags) != 0;</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;}</div></div><!-- fragment -->
</div>
</div>
<a id="a5a38bd982292180692711b0ae296bb34"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a5a38bd982292180692711b0ae296bb34">&#9670;&nbsp;</a></span>CheckLayerBindingId()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void armnn::CheckLayerBindingId </td>
<td>(</td>
<td class="paramtype"><a class="el" href="namespacearmnn.html#ab8cf8f9fb6792e654c2d8d8382f6f01b">LayerBindingId</a>&#160;</td>
<td class="paramname"><em>visitorId</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacearmnn.html#ab8cf8f9fb6792e654c2d8d8382f6f01b">LayerBindingId</a>&#160;</td>
<td class="paramname"><em>id</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_test_input_output_layer_visitor_8hpp_source.html#l00013">13</a> of file <a class="el" href="_test_input_output_layer_visitor_8hpp_source.html">TestInputOutputLayerVisitor.hpp</a>.</p>
<p class="reference">Referenced by <a class="el" href="_test_input_output_layer_visitor_8hpp_source.html#l00030">TestInputLayerVisitor::VisitInputLayer()</a>, and <a class="el" href="_test_input_output_layer_visitor_8hpp_source.html#l00051">TestOutputLayerVisitor::VisitOutputLayer()</a>.</p>
<div class="fragment"><div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;{</div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160; BOOST_CHECK_EQUAL(visitorId, <span class="keywordtype">id</span>);</div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;}</div></div><!-- fragment -->
</div>
</div>
<a id="af002111f64aee648e3258247075cae36"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af002111f64aee648e3258247075cae36">&#9670;&nbsp;</a></span>CheckScaleSetOnQuantizedType()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">bool armnn::CheckScaleSetOnQuantizedType </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classarmnn_1_1_layer.html">Layer</a> *&#160;</td>
<td class="paramname"><em>layer</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classarmnn_1_1_optional.html">Optional</a>&lt; std::vector&lt; std::string &gt; &amp;&gt;&#160;</td>
<td class="paramname"><em>errMessages</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_network_8cpp_source.html#l00098">98</a> of file <a class="el" href="_network_8cpp_source.html">Network.cpp</a>.</p>
<p class="reference">References <a class="el" href="_logging_8hpp_source.html#l00163">ARMNN_LOG</a>, <a class="el" href="_tensor_8hpp_source.html#l00095">TensorInfo::GetDataType()</a>, <a class="el" href="_internal_types_8cpp_source.html#l00013">GetLayerTypeAsCString()</a>, <a class="el" href="_layer_8hpp_source.html#l00216">Layer::GetNameStr()</a>, <a class="el" href="_layer_8hpp_source.html#l00308">Layer::GetNumOutputSlots()</a>, <a class="el" href="_layer_8hpp_source.html#l00312">Layer::GetOutputSlot()</a>, <a class="el" href="_tensor_8cpp_source.html#l00264">TensorInfo::GetQuantizationOffset()</a>, <a class="el" href="_tensor_8cpp_source.html#l00247">TensorInfo::GetQuantizationScale()</a>, <a class="el" href="_layer_8cpp_source.html#l00063">OutputSlot::GetTensorInfo()</a>, <a class="el" href="_layer_8hpp_source.html#l00259">Layer::GetType()</a>, <a class="el" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a0a3f57c876f5a230244c38e1453a8a6e">QAsymmU8</a>, <a class="el" href="_network_8cpp_source.html#l00074">ReportError()</a>, <a class="el" href="_tensor_8cpp_source.html#l00275">TensorInfo::SetQuantizationOffset()</a>, <a class="el" href="_tensor_8cpp_source.html#l00259">TensorInfo::SetQuantizationScale()</a>, <a class="el" href="_layer_8cpp_source.html#l00058">OutputSlot::SetTensorInfo()</a>, <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4a31d953b9d49a6b4378f45097047976d0">Softmax</a>, and <a class="el" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407a7b83d3f08fa392b79e3f553b585971cd">warning</a>.</p>
<p class="reference">Referenced by <a class="el" href="_network_8cpp_source.html#l00133">AssignBackends()</a>.</p>
<div class="fragment"><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160;{</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; <span class="keywordtype">bool</span> noErrors = <span class="keyword">true</span>;</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> numOutputs = layer-&gt;GetNumOutputSlots();</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i &lt; numOutputs; i++) {</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; OutputSlot&amp; outputSlot = layer-&gt;GetOutputSlot(i);</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; TensorInfo <a class="code" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a> = outputSlot.GetTensorInfo();</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; <span class="keywordflow">if</span> (DataType::QAsymmU8 == info.GetDataType()) {</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; <span class="keywordflow">if</span> (0.f == info.GetQuantizationScale()) {</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; noErrors = <span class="keyword">false</span>;</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; std::stringstream ss;</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; ss &lt;&lt; <span class="stringliteral">&quot;output &quot;</span> &lt;&lt; i &lt;&lt; <span class="stringliteral">&quot; of layer &quot;</span> &lt;&lt; <a class="code" href="namespacearmnn.html#a9da573d7a1fc03726fd41f2130cbcf92">GetLayerTypeAsCString</a>(layer-&gt;GetType())</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; &lt;&lt; <span class="stringliteral">&quot; (&quot;</span> &lt;&lt; layer-&gt;GetNameStr() &lt;&lt; <span class="stringliteral">&quot;) is of type&quot;</span></div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; &lt;&lt; <span class="stringliteral">&quot; Quantized 8 bit but its scale parameter has not been set&quot;</span>;</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; <a class="code" href="namespacearmnn.html#a7658f93d899c8646515a29370e6aa994">ReportError</a>(ss.str(), errMessages);</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; }</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; <span class="comment">// Softmax under QuantisedAsymm8 must always be scale (1.0f/256.0f) and offset 0</span></div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; <span class="keywordflow">if</span> ((info.GetQuantizationScale() != (1.0f / 256.0f) ||</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; info.GetQuantizationOffset() != 0) &amp;&amp;</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; layer-&gt;GetType() == <a class="code" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4a31d953b9d49a6b4378f45097047976d0">armnn::LayerType::Softmax</a>)</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; {</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; std::stringstream ss;</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; ss &lt;&lt; <span class="stringliteral">&quot;Quantization parameters for Softmax layer (Scale: &quot;</span> &lt;&lt;</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; info.GetQuantizationScale() &lt;&lt; <span class="stringliteral">&quot; and Offset: &quot;</span> &lt;&lt; info.GetQuantizationOffset() &lt;&lt;</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; <span class="stringliteral">&quot;) are incorrect and have been updated to Scale: 0.00390625 and Offset: 0&quot;</span>;</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; <a class="code" href="_logging_8hpp.html#a7b6ad073975f437ec38ca7d20154727f">ARMNN_LOG</a>(warning) &lt;&lt; ss.str();</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; info.SetQuantizationScale((1.0f /256.0f));</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; info.SetQuantizationOffset(0);</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; outputSlot.SetTensorInfo(info);</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; }</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; }</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; }</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; <span class="keywordflow">return</span> noErrors;</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a9da573d7a1fc03726fd41f2130cbcf92"><div class="ttname"><a href="namespacearmnn.html#a9da573d7a1fc03726fd41f2130cbcf92">armnn::GetLayerTypeAsCString</a></div><div class="ttdeci">char const * GetLayerTypeAsCString(LayerType type)</div><div class="ttdef"><b>Definition:</b> <a href="_internal_types_8cpp_source.html#l00013">InternalTypes.cpp:13</a></div></div>
<div class="ttc" id="namespacearmnn_html_a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c"><div class="ttname"><a href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">armnn::BoostLogSeverityMapping::info</a></div></div>
<div class="ttc" id="_logging_8hpp_html_a7b6ad073975f437ec38ca7d20154727f"><div class="ttname"><a href="_logging_8hpp.html#a7b6ad073975f437ec38ca7d20154727f">ARMNN_LOG</a></div><div class="ttdeci">#define ARMNN_LOG(severity)</div><div class="ttdef"><b>Definition:</b> <a href="_logging_8hpp_source.html#l00163">Logging.hpp:163</a></div></div>
<div class="ttc" id="namespacearmnn_html_a56943a0946e5f15e5e58054b8e7a04a4a31d953b9d49a6b4378f45097047976d0"><div class="ttname"><a href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4a31d953b9d49a6b4378f45097047976d0">armnn::LayerType::Softmax</a></div></div>
<div class="ttc" id="namespacearmnn_html_a7658f93d899c8646515a29370e6aa994"><div class="ttname"><a href="namespacearmnn.html#a7658f93d899c8646515a29370e6aa994">armnn::ReportError</a></div><div class="ttdeci">void ReportError(const std::string &amp;errorMessage, Optional&lt; std::vector&lt; std::string &gt; &amp;&gt; errorMessages)</div><div class="ttdef"><b>Definition:</b> <a href="_network_8cpp_source.html#l00074">Network.cpp:74</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="acea2d8c53b441e24b6d60b090fda37c9"></a>
<h2 class="memtitle"><span class="permalink"><a href="#acea2d8c53b441e24b6d60b090fda37c9">&#9670;&nbsp;</a></span>CheckSupportRule()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">bool armnn::CheckSupportRule </td>
<td>(</td>
<td class="paramtype">F&#160;</td>
<td class="paramname"><em>rule</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classarmnn_1_1_optional.html">Optional</a>&lt; std::string &amp;&gt;&#160;</td>
<td class="paramname"><em>reasonIfUnsupported</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const char *&#160;</td>
<td class="paramname"><em>reason</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_layer_support_rules_8hpp_source.html#l00037">37</a> of file <a class="el" href="_layer_support_rules_8hpp_source.html">LayerSupportRules.hpp</a>.</p>
<p class="reference">References <a class="el" href="_optional_8hpp_source.html#l00146">OptionalReferenceSwitch&lt; std::is_reference&lt; T &gt;::value, T &gt;::value()</a>.</p>
<p class="reference">Referenced by <a class="el" href="_ref_layer_support_8cpp_source.html#l00074">RefLayerSupport::IsActivationSupported()</a>, <a class="el" href="_ref_layer_support_8cpp_source.html#l00139">RefLayerSupport::IsAdditionSupported()</a>, <a class="el" href="_ref_layer_support_8cpp_source.html#l00175">RefLayerSupport::IsArgMinMaxSupported()</a>, <a class="el" href="_ref_layer_support_8cpp_source.html#l00199">RefLayerSupport::IsBatchNormalizationSupported()</a>, <a class="el" href="_ref_layer_support_8cpp_source.html#l00244">RefLayerSupport::IsBatchToSpaceNdSupported()</a>, <a class="el" href="_ref_layer_support_8cpp_source.html#l00292">RefLayerSupport::IsComparisonSupported()</a>, <a class="el" href="_ref_layer_support_8cpp_source.html#l00321">RefLayerSupport::IsConcatSupported()</a>, <a class="el" href="_ref_layer_support_8cpp_source.html#l00353">RefLayerSupport::IsConstantSupported()</a>, <a class="el" href="_ref_layer_support_8cpp_source.html#l00410">RefLayerSupport::IsConvolution2dSupported()</a>, <a class="el" href="_ref_layer_support_8cpp_source.html#l00481">RefLayerSupport::IsDebugSupported()</a>, <a class="el" href="_ref_layer_support_8cpp_source.html#l00510">RefLayerSupport::IsDepthToSpaceSupported()</a>, <a class="el" href="_ref_layer_support_8cpp_source.html#l00538">RefLayerSupport::IsDepthwiseConvolutionSupported()</a>, <a class="el" href="_ref_layer_support_8cpp_source.html#l00609">RefLayerSupport::IsDequantizeSupported()</a>, <a class="el" href="_ref_layer_support_8cpp_source.html#l00646">RefLayerSupport::IsDetectionPostProcessSupported()</a>, <a class="el" href="_ref_layer_support_8cpp_source.html#l00686">RefLayerSupport::IsDivisionSupported()</a>, <a class="el" href="_ref_layer_support_8cpp_source.html#l00721">RefLayerSupport::IsElementwiseUnarySupported()</a>, <a class="el" href="_ref_layer_support_8cpp_source.html#l00766">RefLayerSupport::IsFakeQuantizationSupported()</a>, <a class="el" href="_ref_layer_support_8cpp_source.html#l00784">RefLayerSupport::IsFloorSupported()</a>, <a class="el" href="_ref_layer_support_8cpp_source.html#l00807">RefLayerSupport::IsFullyConnectedSupported()</a>, <a class="el" href="_ref_layer_support_8cpp_source.html#l00865">RefLayerSupport::IsGatherSupported()</a>, <a class="el" href="_ref_layer_support_8cpp_source.html#l00912">RefLayerSupport::IsInstanceNormalizationSupported()</a>, <a class="el" href="_ref_layer_support_8cpp_source.html#l00943">RefLayerSupport::IsL2NormalizationSupported()</a>, <a class="el" href="_ref_layer_support_8cpp_source.html#l00976">RefLayerSupport::IsLogSoftmaxSupported()</a>, <a class="el" href="_ref_layer_support_8cpp_source.html#l01002">RefLayerSupport::IsLstmSupported()</a>, <a class="el" href="_ref_layer_support_8cpp_source.html#l01112">RefLayerSupport::IsMaximumSupported()</a>, <a class="el" href="_ref_layer_support_8cpp_source.html#l01148">RefLayerSupport::IsMeanSupported()</a>, <a class="el" href="_ref_layer_support_8cpp_source.html#l01217">RefLayerSupport::IsMemCopySupported()</a>, <a class="el" href="_ref_layer_support_8cpp_source.html#l01244">RefLayerSupport::IsMinimumSupported()</a>, <a class="el" href="_ref_layer_support_8cpp_source.html#l01279">RefLayerSupport::IsMultiplicationSupported()</a>, <a class="el" href="_ref_layer_support_8cpp_source.html#l01315">RefLayerSupport::IsNormalizationSupported()</a>, <a class="el" href="_ref_layer_support_8cpp_source.html#l01352">RefLayerSupport::IsPadSupported()</a>, <a class="el" href="_ref_layer_support_8cpp_source.html#l01381">RefLayerSupport::IsPermuteSupported()</a>, <a class="el" href="_ref_layer_support_8cpp_source.html#l01409">RefLayerSupport::IsPooling2dSupported()</a>, <a class="el" href="_ref_layer_support_8cpp_source.html#l01813">RefLayerSupport::IsPreluSupported()</a>, <a class="el" href="_ref_layer_support_8cpp_source.html#l01439">RefLayerSupport::IsQuantizeSupported()</a>, <a class="el" href="_ref_layer_support_8cpp_source.html#l01474">RefLayerSupport::IsReshapeSupported()</a>, <a class="el" href="_ref_layer_support_8cpp_source.html#l01496">RefLayerSupport::IsResizeBilinearSupported()</a>, <a class="el" href="_ref_layer_support_8cpp_source.html#l01521">RefLayerSupport::IsResizeSupported()</a>, <a class="el" href="_ref_layer_support_8cpp_source.html#l01559">RefLayerSupport::IsSliceSupported()</a>, <a class="el" href="_ref_layer_support_8cpp_source.html#l01586">RefLayerSupport::IsSoftmaxSupported()</a>, <a class="el" href="_ref_layer_support_8cpp_source.html#l01615">RefLayerSupport::IsSpaceToBatchNdSupported()</a>, <a class="el" href="_ref_layer_support_8cpp_source.html#l01642">RefLayerSupport::IsSpaceToDepthSupported()</a>, <a class="el" href="_ref_layer_support_8cpp_source.html#l01671">RefLayerSupport::IsSplitterSupported()</a>, <a class="el" href="_ref_layer_support_8cpp_source.html#l01720">RefLayerSupport::IsStackSupported()</a>, <a class="el" href="_ref_layer_support_8cpp_source.html#l01751">RefLayerSupport::IsStridedSliceSupported()</a>, <a class="el" href="_ref_layer_support_8cpp_source.html#l01778">RefLayerSupport::IsSubtractionSupported()</a>, and <a class="el" href="_ref_layer_support_8cpp_source.html#l01846">RefLayerSupport::IsTransposeConvolution2dSupported()</a>.</p>
<div class="fragment"><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;{</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="namespacearmnn.html#a02847c99a2acae3b267615479f93ab55">supported</a> = rule();</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; <span class="keywordflow">if</span> (!supported &amp;&amp; reason)</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; {</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; reasonIfUnsupported.value() += std::string(reason) + <span class="stringliteral">&quot;\n&quot;</span>; <span class="comment">// Append the reason on a new line</span></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; }</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespacearmnn.html#a02847c99a2acae3b267615479f93ab55">supported</a>;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a02847c99a2acae3b267615479f93ab55"><div class="ttname"><a href="namespacearmnn.html#a02847c99a2acae3b267615479f93ab55">armnn::supported</a></div><div class="ttdeci">ISubgraphViewConverter supported</div><div class="ttdef"><b>Definition:</b> <a href="_i_subgraph_view_converter_8hpp_source.html#l00031">ISubgraphViewConverter.hpp:31</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="ac7cce6c8c3c53b2feeba6548fc3fb00c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ac7cce6c8c3c53b2feeba6548fc3fb00c">&#9670;&nbsp;</a></span>CheckTensorDataTypesEqual()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">bool armnn::CheckTensorDataTypesEqual </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>input0</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>input1</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_layer_support_8cpp_source.html#l00064">64</a> of file <a class="el" href="_layer_support_8cpp_source.html">LayerSupport.cpp</a>.</p>
<p class="reference">References <a class="el" href="_tensor_8hpp_source.html#l00095">TensorInfo::GetDataType()</a>.</p>
<p class="reference">Referenced by <a class="el" href="_layer_support_8cpp_source.html#l00079">IsAdditionSupported()</a>.</p>
<div class="fragment"><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160;{</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; <span class="keywordflow">return</span> input0.GetDataType() == input1.GetDataType();</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160;}</div></div><!-- fragment -->
</div>
</div>
<a id="a1391582cd6e145b67c98f3410667968e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a1391582cd6e145b67c98f3410667968e">&#9670;&nbsp;</a></span>ClAbsWorkloadValidate()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">arm_compute::Status ClAbsWorkloadValidate </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>input</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>output</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_cl_abs_workload_8cpp_source.html#l00019">19</a> of file <a class="el" href="_cl_abs_workload_8cpp_source.html">ClAbsWorkload.cpp</a>.</p>
<p class="reference">Referenced by <a class="el" href="_cl_layer_support_8cpp_source.html#l00400">ClLayerSupport::IsElementwiseUnarySupported()</a>.</p>
<div class="fragment"><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;{</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInput = armcomputetensorutils::BuildArmComputeTensorInfo(input);</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclOutput = armcomputetensorutils::BuildArmComputeTensorInfo(output);</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160; <span class="keywordflow">return</span> arm_compute::CLAbsLayer::validate(&amp;aclInput, &amp;aclOutput);</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;}</div></div><!-- fragment -->
</div>
</div>
<a id="a42ef3cee193102dc7755193579209cca"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a42ef3cee193102dc7755193579209cca">&#9670;&nbsp;</a></span>ClActivationWorkloadValidate()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">arm_compute::Status ClActivationWorkloadValidate </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>input</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>output</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="structarmnn_1_1_activation_descriptor.html">ActivationDescriptor</a> &amp;&#160;</td>
<td class="paramname"><em>descriptor</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_cl_activation_workload_8cpp_source.html#l00017">17</a> of file <a class="el" href="_cl_activation_workload_8cpp_source.html">ClActivationWorkload.cpp</a>.</p>
<p class="reference">Referenced by <a class="el" href="_cl_layer_support_8cpp_source.html#l00160">ClLayerSupport::IsActivationSupported()</a>.</p>
<div class="fragment"><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;{</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInput = armcomputetensorutils::BuildArmComputeTensorInfo(input);</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclOutput = armcomputetensorutils::BuildArmComputeTensorInfo(output);</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160; <span class="keyword">const</span> arm_compute::ActivationLayerInfo activationLayerInfo =</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; <a class="code" href="namespacearmnn.html#ad701d0d29baa4266ab4d33b090aa661c">ConvertActivationDescriptorToAclActivationLayerInfo</a>(descriptor);</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; <span class="keywordflow">return</span> arm_compute::CLActivationLayer::validate(&amp;aclInput,</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; &amp;aclOutput,</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; activationLayerInfo);</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_ad701d0d29baa4266ab4d33b090aa661c"><div class="ttname"><a href="namespacearmnn.html#ad701d0d29baa4266ab4d33b090aa661c">armnn::ConvertActivationDescriptorToAclActivationLayerInfo</a></div><div class="ttdeci">arm_compute::ActivationLayerInfo ConvertActivationDescriptorToAclActivationLayerInfo(const ActivationDescriptor &amp;actDesc)</div><div class="ttdef"><b>Definition:</b> <a href="_arm_compute_utils_8hpp_source.html#l00073">ArmComputeUtils.hpp:73</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="aefc82adf365ff14b0095dafdd2df6afc"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aefc82adf365ff14b0095dafdd2df6afc">&#9670;&nbsp;</a></span>ClAdditionValidate()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">arm_compute::Status ClAdditionValidate </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>input0</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>input1</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>output</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_cl_addition_workload_8cpp_source.html#l00038">38</a> of file <a class="el" href="_cl_addition_workload_8cpp_source.html">ClAdditionWorkload.cpp</a>.</p>
<p class="reference">Referenced by <a class="el" href="_cl_layer_support_8cpp_source.html#l00172">ClLayerSupport::IsAdditionSupported()</a>.</p>
<div class="fragment"><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;{</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInput0Info = BuildArmComputeTensorInfo(input0);</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInput1Info = BuildArmComputeTensorInfo(input1);</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclOutputInfo = BuildArmComputeTensorInfo(output);</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; <span class="keyword">const</span> <a class="code" href="namespacearmnn.html#a67a0db04d321a74b7e7fcfd3f1a3f70b">arm_compute::Status</a> aclStatus = arm_compute::CLArithmeticAddition::validate(&amp;aclInput0Info,</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; &amp;aclInput1Info,</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; &amp;aclOutputInfo,</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; g_AclConvertPolicy);</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <span class="keywordflow">return</span> aclStatus;</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a67a0db04d321a74b7e7fcfd3f1a3f70b"><div class="ttname"><a href="namespacearmnn.html#a67a0db04d321a74b7e7fcfd3f1a3f70b">armnn::Status</a></div><div class="ttdeci">Status</div><div class="ttdef"><b>Definition:</b> <a href="_types_8hpp_source.html#l00026">Types.hpp:26</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="ab80423b306d8e0436b9a316922911d4d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab80423b306d8e0436b9a316922911d4d">&#9670;&nbsp;</a></span>ClArgMinMaxWorkloadValidate()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">arm_compute::Status ClArgMinMaxWorkloadValidate </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>input</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>output</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="structarmnn_1_1_arg_min_max_descriptor.html">ArgMinMaxDescriptor</a> &amp;&#160;</td>
<td class="paramname"><em>descriptor</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_cl_arg_min_max_workload_8cpp_source.html#l00030">30</a> of file <a class="el" href="_cl_arg_min_max_workload_8cpp_source.html">ClArgMinMaxWorkload.cpp</a>.</p>
<p class="reference">Referenced by <a class="el" href="_cl_layer_support_8cpp_source.html#l00184">ClLayerSupport::IsArgMinMaxSupported()</a>.</p>
<div class="fragment"><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;{</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInput = armcomputetensorutils::BuildArmComputeTensorInfo(input);</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclOutput = armcomputetensorutils::BuildArmComputeTensorInfo(output);</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; <span class="keyword">auto</span> numDims = input.GetNumDimensions();</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; <span class="keyword">auto</span> unsignedAxis = <a class="code" href="namespacearmnn_utils.html#ac93cb1365b4bcb67df2a3164606096c5">armnnUtils::GetUnsignedAxis</a>(numDims, descriptor.m_Axis);</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; <span class="keywordtype">int</span> aclAxis = boost::numeric_cast&lt;<span class="keywordtype">int</span>&gt;(CalcAclAxis(numDims, unsignedAxis));</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; <span class="keywordflow">if</span> (descriptor.m_Function == ArgMinMaxFunction::Max)</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; {</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; <span class="keywordflow">return</span> arm_compute::CLArgMinMaxLayer::validate(&amp;aclInput, aclAxis, &amp;aclOutput,</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; arm_compute::ReductionOperation::ARG_IDX_MAX);</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; }</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; {</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; <span class="keywordflow">return</span> arm_compute::CLArgMinMaxLayer::validate(&amp;aclInput, aclAxis, &amp;aclOutput,</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; arm_compute::ReductionOperation::ARG_IDX_MIN);</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; }</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160;}</div><div class="ttc" id="namespacearmnn_utils_html_ac93cb1365b4bcb67df2a3164606096c5"><div class="ttname"><a href="namespacearmnn_utils.html#ac93cb1365b4bcb67df2a3164606096c5">armnnUtils::GetUnsignedAxis</a></div><div class="ttdeci">unsigned int GetUnsignedAxis(const unsigned int inputDimension, const int axis)</div><div class="ttdef"><b>Definition:</b> <a href="_tensor_utils_8cpp_source.html#l00127">TensorUtils.cpp:127</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="adfe10e7086e3e3b98927cf84aee03dd0"></a>
<h2 class="memtitle"><span class="permalink"><a href="#adfe10e7086e3e3b98927cf84aee03dd0">&#9670;&nbsp;</a></span>ClBackendId()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">constexpr const char* armnn::ClBackendId </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_cl_backend_id_8hpp_source.html#l00010">10</a> of file <a class="el" href="_cl_backend_id_8hpp_source.html">ClBackendId.hpp</a>.</p>
<p class="reference">Referenced by <a class="el" href="_cl_backend_8cpp_source.html#l00029">ClBackend::GetIdStatic()</a>.</p>
<div class="fragment"><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;{ <span class="keywordflow">return</span> <span class="stringliteral">&quot;GpuAcc&quot;</span>; }</div></div><!-- fragment -->
</div>
</div>
<a id="ad6cb42ca5150bb96c151e4a4e6557d70"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad6cb42ca5150bb96c151e4a4e6557d70">&#9670;&nbsp;</a></span>ClBatchNormalizationValidate()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">arm_compute::Status ClBatchNormalizationValidate </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>input</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>output</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>mean</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>var</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>beta</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>gamma</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="structarmnn_1_1_batch_normalization_descriptor.html">BatchNormalizationDescriptor</a> &amp;&#160;</td>
<td class="paramname"><em>desc</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_cl_batch_normalization_float_workload_8cpp_source.html#l00018">18</a> of file <a class="el" href="_cl_batch_normalization_float_workload_8cpp_source.html">ClBatchNormalizationFloatWorkload.cpp</a>.</p>
<p class="reference">Referenced by <a class="el" href="_cl_layer_support_8cpp_source.html#l00197">ClLayerSupport::IsBatchNormalizationSupported()</a>.</p>
<div class="fragment"><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;{</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInputInfo =</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; armcomputetensorutils::BuildArmComputeTensorInfo(input, desc.m_DataLayout);</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclOutputInfo =</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; armcomputetensorutils::BuildArmComputeTensorInfo(output, desc.m_DataLayout);</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclMeanInfo =</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; armcomputetensorutils::BuildArmComputeTensorInfo(mean, desc.m_DataLayout);</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclVarInfo =</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; armcomputetensorutils::BuildArmComputeTensorInfo(var, desc.m_DataLayout);</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclBetaInfo =</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; armcomputetensorutils::BuildArmComputeTensorInfo(beta, desc.m_DataLayout);</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclGammaInfo =</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; armcomputetensorutils::BuildArmComputeTensorInfo(gamma, desc.m_DataLayout);</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; <span class="keywordflow">return</span> arm_compute::CLBatchNormalizationLayer::validate(&amp;aclInputInfo,</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; &amp;aclOutputInfo,</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; &amp;aclMeanInfo,</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; &amp;aclVarInfo,</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; &amp;aclBetaInfo,</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; &amp;aclGammaInfo,</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; desc.m_Eps);</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;}</div></div><!-- fragment -->
</div>
</div>
<a id="a67957983877fb2c720a2ad7f88c45a3c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a67957983877fb2c720a2ad7f88c45a3c">&#9670;&nbsp;</a></span>ClBatchToSpaceNdWorkloadValidate()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">arm_compute::Status ClBatchToSpaceNdWorkloadValidate </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>input</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>output</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="structarmnn_1_1_batch_to_space_nd_descriptor.html">BatchToSpaceNdDescriptor</a> &amp;&#160;</td>
<td class="paramname"><em>desc</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_cl_batch_to_space_nd_workload_8cpp_source.html#l00045">45</a> of file <a class="el" href="_cl_batch_to_space_nd_workload_8cpp_source.html">ClBatchToSpaceNdWorkload.cpp</a>.</p>
<p class="reference">References <a class="el" href="_descriptors_8hpp_source.html#l00684">BatchToSpaceNdDescriptor::m_DataLayout</a>.</p>
<p class="reference">Referenced by <a class="el" href="_cl_layer_support_8cpp_source.html#l00217">ClLayerSupport::IsBatchToSpaceNdSupported()</a>.</p>
<div class="fragment"><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; {</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; <a class="code" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0">DataLayout</a> dataLayout = desc.m_DataLayout;</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInputInfo = BuildArmComputeTensorInfo(input, dataLayout);</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <span class="comment">// ArmNN blockShape is [H, W] Cl asks for W, H</span></div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; int32_t blockHeight = boost::numeric_cast&lt;int32_t&gt;(desc.m_BlockShape[0]);</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; int32_t blockWidth = boost::numeric_cast&lt;int32_t&gt;(desc.m_BlockShape[1]);</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclOutputInfo = BuildArmComputeTensorInfo(output, dataLayout);</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160;</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; <span class="keyword">const</span> <a class="code" href="namespacearmnn.html#a67a0db04d321a74b7e7fcfd3f1a3f70b">arm_compute::Status</a> aclStatus = arm_compute::CLBatchToSpaceLayer::validate(&amp;aclInputInfo,</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; blockWidth,</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; blockHeight,</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; &amp;aclOutputInfo);</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; <span class="keywordflow">return</span> aclStatus;</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a67a0db04d321a74b7e7fcfd3f1a3f70b"><div class="ttname"><a href="namespacearmnn.html#a67a0db04d321a74b7e7fcfd3f1a3f70b">armnn::Status</a></div><div class="ttdeci">Status</div><div class="ttdef"><b>Definition:</b> <a href="_types_8hpp_source.html#l00026">Types.hpp:26</a></div></div>
<div class="ttc" id="namespacearmnn_html_ad1d5cce2d9e9a5d61c243e5c989112e0"><div class="ttname"><a href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0">armnn::DataLayout</a></div><div class="ttdeci">DataLayout</div><div class="ttdef"><b>Definition:</b> <a href="_types_8hpp_source.html#l00048">Types.hpp:48</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a7782f0809076f14363eacb4a38964b9f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a7782f0809076f14363eacb4a38964b9f">&#9670;&nbsp;</a></span>ClConcatWorkloadValidate()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">arm_compute::Status ClConcatWorkloadValidate </td>
<td>(</td>
<td class="paramtype">const std::vector&lt; const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> *&gt; &amp;&#160;</td>
<td class="paramname"><em>inputs</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>output</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="structarmnn_1_1_origins_descriptor.html">OriginsDescriptor</a> &amp;&#160;</td>
<td class="paramname"><em>descriptor</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_cl_concat_workload_8cpp_source.html#l00029">29</a> of file <a class="el" href="_cl_concat_workload_8cpp_source.html">ClConcatWorkload.cpp</a>.</p>
<p class="reference">Referenced by <a class="el" href="_cl_layer_support_8cpp_source.html#l00247">ClLayerSupport::IsConcatSupported()</a>.</p>
<div class="fragment"><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;{</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; std::vector&lt;arm_compute::TensorInfo&gt; aclInputs;</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> TensorInfo* input : inputs)</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; {</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; arm_compute::TensorInfo aclInputInfo = BuildArmComputeTensorInfo(*input, <a class="code" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0a6b99f356fe3b30a2a850b5ea897c289f">armnn::DataLayout::NCHW</a>);</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; aclInputs.emplace_back(aclInputInfo);</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; }</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclOutputInfo = BuildArmComputeTensorInfo(output);</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; std::vector&lt;arm_compute::ITensorInfo*&gt; aclInputPtrs;</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; <span class="keywordflow">for</span> (arm_compute::ITensorInfo&amp; input : aclInputs)</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; {</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; aclInputPtrs.emplace_back(&amp;input);</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; }</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; <span class="keywordtype">size_t</span> aclAxis = CalcAxis(descriptor);</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; <span class="keywordflow">return</span> arm_compute::CLConcatenateLayer::validate(aclInputPtrs, &amp;aclOutputInfo, aclAxis);</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_ad1d5cce2d9e9a5d61c243e5c989112e0a6b99f356fe3b30a2a850b5ea897c289f"><div class="ttname"><a href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0a6b99f356fe3b30a2a850b5ea897c289f">armnn::DataLayout::NCHW</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a46efae0191388fd33db4e95c5d79e2be"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a46efae0191388fd33db4e95c5d79e2be">&#9670;&nbsp;</a></span>ClConvertFp16ToFp32WorkloadValidate()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">arm_compute::Status ClConvertFp16ToFp32WorkloadValidate </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>input</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>output</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_cl_convert_fp16_to_fp32_workload_8cpp_source.html#l00035">35</a> of file <a class="el" href="_cl_convert_fp16_to_fp32_workload_8cpp_source.html">ClConvertFp16ToFp32Workload.cpp</a>.</p>
<p class="reference">References <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a26e6ed77470c6f2f830ecf874e6c0d55">Float16</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">Float32</a>, and <a class="el" href="_tensor_8hpp_source.html#l00095">TensorInfo::GetDataType()</a>.</p>
<p class="reference">Referenced by <a class="el" href="_cl_layer_support_8cpp_source.html#l00297">ClLayerSupport::IsConvertFp16ToFp32Supported()</a>.</p>
<div class="fragment"><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;{</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; <span class="keywordflow">if</span> (input.GetDataType() != DataType::Float16)</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; {</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespacearmnn.html#a67a0db04d321a74b7e7fcfd3f1a3f70b">arm_compute::Status</a>(arm_compute::ErrorCode::RUNTIME_ERROR, <span class="stringliteral">&quot;Input should be Float16&quot;</span>);</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; }</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; <span class="keywordflow">if</span> (output.GetDataType() != DataType::Float32)</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; {</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespacearmnn.html#a67a0db04d321a74b7e7fcfd3f1a3f70b">arm_compute::Status</a>(arm_compute::ErrorCode::RUNTIME_ERROR, <span class="stringliteral">&quot;Output should be Float32&quot;</span>);</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; }</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInputInfo = BuildArmComputeTensorInfo(input);</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclOutputInfo = BuildArmComputeTensorInfo(output);</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; <span class="keyword">const</span> <a class="code" href="namespacearmnn.html#a67a0db04d321a74b7e7fcfd3f1a3f70b">arm_compute::Status</a> aclStatus = arm_compute::CLDepthConvertLayer::validate(</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; &amp;aclInputInfo, &amp;aclOutputInfo, g_AclConvertPolicy, 0);</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160;</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; <span class="keywordflow">return</span> aclStatus;</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a67a0db04d321a74b7e7fcfd3f1a3f70b"><div class="ttname"><a href="namespacearmnn.html#a67a0db04d321a74b7e7fcfd3f1a3f70b">armnn::Status</a></div><div class="ttdeci">Status</div><div class="ttdef"><b>Definition:</b> <a href="_types_8hpp_source.html#l00026">Types.hpp:26</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a37f6946bfb7a9c7d64881b7a2e13945f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a37f6946bfb7a9c7d64881b7a2e13945f">&#9670;&nbsp;</a></span>ClConvertFp32ToFp16WorkloadValidate()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">arm_compute::Status ClConvertFp32ToFp16WorkloadValidate </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>input</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>output</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_cl_convert_fp32_to_fp16_workload_8cpp_source.html#l00035">35</a> of file <a class="el" href="_cl_convert_fp32_to_fp16_workload_8cpp_source.html">ClConvertFp32ToFp16Workload.cpp</a>.</p>
<p class="reference">References <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a26e6ed77470c6f2f830ecf874e6c0d55">Float16</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">Float32</a>, and <a class="el" href="_tensor_8hpp_source.html#l00095">TensorInfo::GetDataType()</a>.</p>
<p class="reference">Referenced by <a class="el" href="_cl_layer_support_8cpp_source.html#l00307">ClLayerSupport::IsConvertFp32ToFp16Supported()</a>.</p>
<div class="fragment"><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;{</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; <span class="keywordflow">if</span> (input.GetDataType() != DataType::Float32)</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; {</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespacearmnn.html#a67a0db04d321a74b7e7fcfd3f1a3f70b">arm_compute::Status</a>(arm_compute::ErrorCode::RUNTIME_ERROR, <span class="stringliteral">&quot;Input should be Float32&quot;</span>);</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; }</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; <span class="keywordflow">if</span> (output.GetDataType() != DataType::Float16)</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; {</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespacearmnn.html#a67a0db04d321a74b7e7fcfd3f1a3f70b">arm_compute::Status</a>(arm_compute::ErrorCode::RUNTIME_ERROR, <span class="stringliteral">&quot;Output should be Float16&quot;</span>);</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; }</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInputInfo = BuildArmComputeTensorInfo(input);</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclOutputInfo = BuildArmComputeTensorInfo(output);</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; <span class="keyword">const</span> <a class="code" href="namespacearmnn.html#a67a0db04d321a74b7e7fcfd3f1a3f70b">arm_compute::Status</a> aclStatus = arm_compute::CLDepthConvertLayer::validate(</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; &amp;aclInputInfo, &amp;aclOutputInfo, g_AclConvertPolicy, 0);</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160;</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; <span class="keywordflow">return</span> aclStatus;</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a67a0db04d321a74b7e7fcfd3f1a3f70b"><div class="ttname"><a href="namespacearmnn.html#a67a0db04d321a74b7e7fcfd3f1a3f70b">armnn::Status</a></div><div class="ttdeci">Status</div><div class="ttdef"><b>Definition:</b> <a href="_types_8hpp_source.html#l00026">Types.hpp:26</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="acd1146eb56f1473a0bf4561bcc1d1529"></a>
<h2 class="memtitle"><span class="permalink"><a href="#acd1146eb56f1473a0bf4561bcc1d1529">&#9670;&nbsp;</a></span>ClConvolution2dWorkloadValidate()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">arm_compute::Status ClConvolution2dWorkloadValidate </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>input</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>output</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="structarmnn_1_1_convolution2d_descriptor.html">Convolution2dDescriptor</a> &amp;&#160;</td>
<td class="paramname"><em>descriptor</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>weights</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_optional.html">Optional</a>&lt; <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &gt; &amp;&#160;</td>
<td class="paramname"><em>biases</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_cl_convolution2d_workload_8cpp_source.html#l00023">23</a> of file <a class="el" href="_cl_convolution2d_workload_8cpp_source.html">ClConvolution2dWorkload.cpp</a>.</p>
<p class="reference">Referenced by <a class="el" href="_cl_layer_support_8cpp_source.html#l00317">ClLayerSupport::IsConvolution2dSupported()</a>.</p>
<div class="fragment"><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;{</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInputInfo = BuildArmComputeTensorInfo(input, descriptor.m_DataLayout);</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclOutputInfo = BuildArmComputeTensorInfo(output, descriptor.m_DataLayout);</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclWeightsInfo = BuildArmComputeTensorInfo(weights, descriptor.m_DataLayout);</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; <span class="keyword">const</span> arm_compute::Size2D aclDilationInfo = BuildArmComputeSize2D(descriptor.m_DilationX,</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; descriptor.m_DilationY);</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; arm_compute::TensorInfo aclBiasesInfo;</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; arm_compute::TensorInfo *optionalAclBiasesInfo = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; <span class="keywordflow">if</span> (descriptor.m_BiasEnabled)</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; {</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; BOOST_ASSERT(biases.has_value());</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; aclBiasesInfo = BuildArmComputeTensorInfo(biases.value(), descriptor.m_DataLayout);</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; optionalAclBiasesInfo = &amp;aclBiasesInfo;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; }</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; arm_compute::PadStrideInfo layerInfo = BuildArmComputePadStrideInfo(descriptor);</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; <span class="keywordflow">return</span> arm_compute::CLConvolutionLayer::validate(&amp;aclInputInfo,</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; &amp;aclWeightsInfo,</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; optionalAclBiasesInfo,</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; &amp;aclOutputInfo,</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; layerInfo,</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; arm_compute::WeightsInfo(),</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; aclDilationInfo);</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160;}</div></div><!-- fragment -->
</div>
</div>
<a id="a5634af98b603236c6748adb5ac92e766"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a5634af98b603236c6748adb5ac92e766">&#9670;&nbsp;</a></span>ClDepthToSpaceWorkloadValidate()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">arm_compute::Status ClDepthToSpaceWorkloadValidate </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>input</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>output</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="namespacearmnn.html#a3647f60510bc8ddaced01c51b0ee8714">DepthToSpaceDescriptor</a> &amp;&#160;</td>
<td class="paramname"><em>desc</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_cl_depth_to_space_workload_8cpp_source.html#l00022">22</a> of file <a class="el" href="_cl_depth_to_space_workload_8cpp_source.html">ClDepthToSpaceWorkload.cpp</a>.</p>
<p class="reference">References <a class="el" href="_descriptors_8hpp_source.html#l00830">SpaceToDepthDescriptor::m_DataLayout</a>.</p>
<p class="reference">Referenced by <a class="el" href="_cl_layer_support_8cpp_source.html#l00343">ClLayerSupport::IsDepthToSpaceSupported()</a>.</p>
<div class="fragment"><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;{</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; <a class="code" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0">DataLayout</a> dataLayout = desc.m_DataLayout;</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInputInfo = BuildArmComputeTensorInfo(input, dataLayout);</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; int32_t blockSize = boost::numeric_cast&lt;int32_t&gt;(desc.m_BlockSize);</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclOutputInfo = BuildArmComputeTensorInfo(output, dataLayout);</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; <span class="keyword">const</span> <a class="code" href="namespacearmnn.html#a67a0db04d321a74b7e7fcfd3f1a3f70b">arm_compute::Status</a> aclStatus = arm_compute::CLDepthToSpaceLayer::validate(&amp;aclInputInfo,</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; &amp;aclOutputInfo,</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; blockSize);</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; <span class="keywordflow">return</span> aclStatus;</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a67a0db04d321a74b7e7fcfd3f1a3f70b"><div class="ttname"><a href="namespacearmnn.html#a67a0db04d321a74b7e7fcfd3f1a3f70b">armnn::Status</a></div><div class="ttdeci">Status</div><div class="ttdef"><b>Definition:</b> <a href="_types_8hpp_source.html#l00026">Types.hpp:26</a></div></div>
<div class="ttc" id="namespacearmnn_html_ad1d5cce2d9e9a5d61c243e5c989112e0"><div class="ttname"><a href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0">armnn::DataLayout</a></div><div class="ttdeci">DataLayout</div><div class="ttdef"><b>Definition:</b> <a href="_types_8hpp_source.html#l00048">Types.hpp:48</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a4ec5dfcb3e419ddce1fcb3b799f312e1"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a4ec5dfcb3e419ddce1fcb3b799f312e1">&#9670;&nbsp;</a></span>ClDepthwiseConvolutionWorkloadValidate()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">arm_compute::Status ClDepthwiseConvolutionWorkloadValidate </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>input</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>output</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="structarmnn_1_1_depthwise_convolution2d_descriptor.html">DepthwiseConvolution2dDescriptor</a> &amp;&#160;</td>
<td class="paramname"><em>descriptor</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>weights</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_optional.html">Optional</a>&lt; <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &gt; &amp;&#160;</td>
<td class="paramname"><em>biases</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_cl_depthwise_convolution_workload_8cpp_source.html#l00024">24</a> of file <a class="el" href="_cl_depthwise_convolution_workload_8cpp_source.html">ClDepthwiseConvolutionWorkload.cpp</a>.</p>
<p class="reference">Referenced by <a class="el" href="_cl_layer_support_8cpp_source.html#l00355">ClLayerSupport::IsDepthwiseConvolutionSupported()</a>, and <a class="el" href="_cl_layer_support_8cpp_source.html#l00371">ClLayerSupport::IsDilatedDepthwiseConvolutionSupported()</a>.</p>
<div class="fragment"><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;{</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInputInfo = BuildArmComputeTensorInfo(input, descriptor.m_DataLayout);</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclOutputInfo = BuildArmComputeTensorInfo(output, descriptor.m_DataLayout);</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; <span class="comment">// ArmNN&#39;s weight format is [ M, I, H, W ]</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> aclDepthMultiplier = weights.GetShape()[0];</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; <span class="comment">// Convert the weight format from ArmNN&#39;s [ M, I, H, W ] (does NOT depend on the data layout) to either</span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; <span class="comment">// [ 1, H, W, I * M ] (if NHWC) or [ 1, I * M, H, W ] (if NCHW), as required by the compute library</span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; TensorInfo weightsPermuted = <a class="code" href="namespacearmnn.html#a1e8288eac7e909fdb58b6113d816763a">ConvertWeightTensorInfoFromArmnnToAcl</a>(weights, descriptor.m_DataLayout);</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; <span class="comment">// Convert the weights into the compute library format</span></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclWeightsInfo = BuildArmComputeTensorInfo(weightsPermuted, descriptor.m_DataLayout);</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; arm_compute::TensorInfo aclBiasesInfo;</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; arm_compute::TensorInfo *optionalAclBiasesInfo = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; <span class="keywordflow">if</span> (descriptor.m_BiasEnabled)</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; {</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; BOOST_ASSERT(biases.has_value());</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; aclBiasesInfo = BuildArmComputeTensorInfo(biases.value(), descriptor.m_DataLayout);</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; optionalAclBiasesInfo = &amp;aclBiasesInfo;</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; }</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160;</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; <span class="keyword">const</span> arm_compute::PadStrideInfo aclPadStrideInfo = BuildArmComputePadStrideInfo(descriptor);</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; <span class="keyword">const</span> arm_compute::Size2D aclDilationInfo = BuildArmComputeSize2D(</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; descriptor.m_DilationX,</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; descriptor.m_DilationY);</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160;</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; <span class="keywordflow">return</span> arm_compute::CLDepthwiseConvolutionLayer::validate(&amp;aclInputInfo,</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; &amp;aclWeightsInfo,</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; optionalAclBiasesInfo,</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; &amp;aclOutputInfo,</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; aclPadStrideInfo,</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; aclDepthMultiplier,</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; arm_compute::ActivationLayerInfo(),</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; aclDilationInfo);</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160;</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a1e8288eac7e909fdb58b6113d816763a"><div class="ttname"><a href="namespacearmnn.html#a1e8288eac7e909fdb58b6113d816763a">armnn::ConvertWeightTensorInfoFromArmnnToAcl</a></div><div class="ttdeci">TensorInfo ConvertWeightTensorInfoFromArmnnToAcl(const TensorInfo &amp;weightInfo, DataLayout dataLayout)</div><div class="ttdef"><b>Definition:</b> <a href="_workload_utils_8cpp_source.html#l00109">WorkloadUtils.cpp:109</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a75045734c29d7d6635342c05adbc151b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a75045734c29d7d6635342c05adbc151b">&#9670;&nbsp;</a></span>ClDequantizeWorkloadValidate()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">arm_compute::Status ClDequantizeWorkloadValidate </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>input</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>output</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_cl_dequantize_workload_8cpp_source.html#l00023">23</a> of file <a class="el" href="_cl_dequantize_workload_8cpp_source.html">ClDequantizeWorkload.cpp</a>.</p>
<p class="reference">Referenced by <a class="el" href="_cl_layer_support_8cpp_source.html#l00333">ClLayerSupport::IsDequantizeSupported()</a>.</p>
<div class="fragment"><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;{</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInputInfo = BuildArmComputeTensorInfo(input);</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclOutputInfo = BuildArmComputeTensorInfo(output);</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; <span class="keywordflow">return</span> arm_compute::CLDequantizationLayer::validate(&amp;aclInputInfo, &amp;aclOutputInfo);</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;}</div></div><!-- fragment -->
</div>
</div>
<a id="a6a0edac987d58b405636df2eb2ee525d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a6a0edac987d58b405636df2eb2ee525d">&#9670;&nbsp;</a></span>ClDivisionWorkloadValidate()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">arm_compute::Status ClDivisionWorkloadValidate </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>input0</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>input1</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>output</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_cl_division_float_workload_8cpp_source.html#l00015">15</a> of file <a class="el" href="_cl_division_float_workload_8cpp_source.html">ClDivisionFloatWorkload.cpp</a>.</p>
<p class="reference">Referenced by <a class="el" href="_cl_layer_support_8cpp_source.html#l00388">ClLayerSupport::IsDivisionSupported()</a>.</p>
<div class="fragment"><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;{</div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInput1 = armcomputetensorutils::BuildArmComputeTensorInfo(input0);</div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInput2 = armcomputetensorutils::BuildArmComputeTensorInfo(input1);</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclOutput = armcomputetensorutils::BuildArmComputeTensorInfo(output);</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160; <span class="keywordflow">return</span> arm_compute::CLArithmeticDivision::validate(&amp;aclInput1, &amp;aclInput2, &amp;aclOutput);</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;}</div></div><!-- fragment -->
</div>
</div>
<a id="a8874961260f35da85229554f92e16ca9"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a8874961260f35da85229554f92e16ca9">&#9670;&nbsp;</a></span>ClFloorWorkloadValidate()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">arm_compute::Status ClFloorWorkloadValidate </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>input</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>output</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_cl_floor_float_workload_8cpp_source.html#l00014">14</a> of file <a class="el" href="_cl_floor_float_workload_8cpp_source.html">ClFloorFloatWorkload.cpp</a>.</p>
<p class="reference">Referenced by <a class="el" href="_cl_layer_support_8cpp_source.html#l00423">ClLayerSupport::IsFloorSupported()</a>.</p>
<div class="fragment"><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;{</div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInput = armcomputetensorutils::BuildArmComputeTensorInfo(input);</div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclOutput = armcomputetensorutils::BuildArmComputeTensorInfo(output);</div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;</div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160; <span class="keywordflow">return</span> arm_compute::CLFloor::validate(&amp;aclInput, &amp;aclOutput);</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;}</div></div><!-- fragment -->
</div>
</div>
<a id="a00ef2c55913f952924a3e23556655285"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a00ef2c55913f952924a3e23556655285">&#9670;&nbsp;</a></span>ClFullyConnectedWorkloadValidate()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">arm_compute::Status ClFullyConnectedWorkloadValidate </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>input</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>output</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>weights</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>biases</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="structarmnn_1_1_fully_connected_descriptor.html">FullyConnectedDescriptor</a> &amp;&#160;</td>
<td class="paramname"><em>descriptor</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_cl_fully_connected_workload_8cpp_source.html#l00019">19</a> of file <a class="el" href="_cl_fully_connected_workload_8cpp_source.html">ClFullyConnectedWorkload.cpp</a>.</p>
<p class="reference">Referenced by <a class="el" href="_cl_layer_support_8cpp_source.html#l00433">ClLayerSupport::IsFullyConnectedSupported()</a>.</p>
<div class="fragment"><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;{</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInput = BuildArmComputeTensorInfo(input);</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclOutput = BuildArmComputeTensorInfo(output);</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclWeights = BuildArmComputeTensorInfo(weights);</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; arm_compute::TensorInfo aclBiases;</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; arm_compute::TensorInfo *optionalAclBiases = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; <span class="keywordflow">if</span> (descriptor.m_BiasEnabled)</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; {</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; aclBiases = BuildArmComputeTensorInfo(biases);</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; optionalAclBiases = &amp;aclBiases;</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; }</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; <span class="keyword">const</span> arm_compute::FullyConnectedLayerInfo fullyConnectedLayerInfo =</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; <a class="code" href="namespacearmnn.html#abccab9266ab13dbd806445af31ddbba7">ConvertFullyConnectedDescriptorToAclFullyConnectedLayerInfo</a>(descriptor);</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; <span class="keywordflow">return</span> arm_compute::CLFullyConnectedLayer::validate(&amp;aclInput,</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; &amp;aclWeights,</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; optionalAclBiases,</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; &amp;aclOutput,</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; fullyConnectedLayerInfo);</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_abccab9266ab13dbd806445af31ddbba7"><div class="ttname"><a href="namespacearmnn.html#abccab9266ab13dbd806445af31ddbba7">armnn::ConvertFullyConnectedDescriptorToAclFullyConnectedLayerInfo</a></div><div class="ttdeci">arm_compute::FullyConnectedLayerInfo ConvertFullyConnectedDescriptorToAclFullyConnectedLayerInfo(const FullyConnectedDescriptor &amp;fullyConnectedDesc)</div><div class="ttdef"><b>Definition:</b> <a href="_arm_compute_utils_8hpp_source.html#l00118">ArmComputeUtils.hpp:118</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="acf69869c2242e5e3741c4f9252099393"></a>
<h2 class="memtitle"><span class="permalink"><a href="#acf69869c2242e5e3741c4f9252099393">&#9670;&nbsp;</a></span>ClGreaterWorkloadValidate()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">arm_compute::Status ClGreaterWorkloadValidate </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>input0</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>input1</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>output</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_cl_greater_workload_8cpp_source.html#l00024">24</a> of file <a class="el" href="_cl_greater_workload_8cpp_source.html">ClGreaterWorkload.cpp</a>.</p>
<p class="reference">Referenced by <a class="el" href="_cl_layer_support_8cpp_source.html#l00229">ClLayerSupport::IsComparisonSupported()</a>.</p>
<div class="fragment"><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;{</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInput0Info = BuildArmComputeTensorInfo(input0);</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInput1Info = BuildArmComputeTensorInfo(input1);</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclOutputInfo = BuildArmComputeTensorInfo(output);</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; <span class="keyword">const</span> <a class="code" href="namespacearmnn.html#a67a0db04d321a74b7e7fcfd3f1a3f70b">arm_compute::Status</a> aclStatus = arm_compute::CLComparison::validate(</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; &amp;aclInput0Info,</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; &amp;aclInput1Info,</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; &amp;aclOutputInfo,</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; arm_compute::ComparisonOperation::Greater);</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; <span class="keywordflow">return</span> aclStatus;</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a67a0db04d321a74b7e7fcfd3f1a3f70b"><div class="ttname"><a href="namespacearmnn.html#a67a0db04d321a74b7e7fcfd3f1a3f70b">armnn::Status</a></div><div class="ttdeci">Status</div><div class="ttdef"><b>Definition:</b> <a href="_types_8hpp_source.html#l00026">Types.hpp:26</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a79d362f0c6e04d51807e0d81b5b05f3a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a79d362f0c6e04d51807e0d81b5b05f3a">&#9670;&nbsp;</a></span>ClInstanceNormalizationWorkloadValidate()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">arm_compute::Status ClInstanceNormalizationWorkloadValidate </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>input</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>output</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="structarmnn_1_1_instance_normalization_descriptor.html">InstanceNormalizationDescriptor</a> &amp;&#160;</td>
<td class="paramname"><em>descriptor</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_cl_instance_normalization_workload_8cpp_source.html#l00018">18</a> of file <a class="el" href="_cl_instance_normalization_workload_8cpp_source.html">ClInstanceNormalizationWorkload.cpp</a>.</p>
<p class="reference">Referenced by <a class="el" href="_cl_layer_support_8cpp_source.html#l00464">ClLayerSupport::IsInstanceNormalizationSupported()</a>.</p>
<div class="fragment"><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;{</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInputInfo = BuildArmComputeTensorInfo(input, descriptor.m_DataLayout);</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclOutputInfo = BuildArmComputeTensorInfo(output, descriptor.m_DataLayout);</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; <span class="keywordflow">return</span> arm_compute::CLInstanceNormalizationLayer::validate(&amp;aclInputInfo,</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; &amp;aclOutputInfo,</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; descriptor.m_Gamma,</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; descriptor.m_Beta,</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; descriptor.m_Eps);</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;}</div></div><!-- fragment -->
</div>
</div>
<a id="aef334cdb24000c330f4d2e5f1b384784"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aef334cdb24000c330f4d2e5f1b384784">&#9670;&nbsp;</a></span>ClL2NormalizationWorkloadValidate()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">arm_compute::Status ClL2NormalizationWorkloadValidate </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>input</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>output</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="structarmnn_1_1_l2_normalization_descriptor.html">L2NormalizationDescriptor</a> &amp;&#160;</td>
<td class="paramname"><em>descriptor</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_cl_l2_normalization_float_workload_8cpp_source.html#l00017">17</a> of file <a class="el" href="_cl_l2_normalization_float_workload_8cpp_source.html">ClL2NormalizationFloatWorkload.cpp</a>.</p>
<p class="reference">Referenced by <a class="el" href="_cl_layer_support_8cpp_source.html#l00476">ClLayerSupport::IsL2NormalizationSupported()</a>.</p>
<div class="fragment"><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;{</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInput = BuildArmComputeTensorInfo(input, descriptor.m_DataLayout);</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclOutput = BuildArmComputeTensorInfo(output, descriptor.m_DataLayout);</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160; <span class="keywordtype">int</span> axis = (descriptor.m_DataLayout == DataLayout::NCHW) ? 2 : 0;</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; <span class="keywordflow">return</span> arm_compute::CLL2NormalizeLayer::validate(&amp;aclInput, &amp;aclOutput, axis, descriptor.m_Eps);</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;}</div></div><!-- fragment -->
</div>
</div>
<a id="a90ab88fe4c7aa9466c4653404a6b2213"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a90ab88fe4c7aa9466c4653404a6b2213">&#9670;&nbsp;</a></span>ClLstmFloatWorkloadValidate()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">arm_compute::Status ClLstmFloatWorkloadValidate </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>input</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>outputStateIn</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>cellStateIn</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>scratchBuffer</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>outputStateOut</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>cellStateOut</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>output</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="structarmnn_1_1_lstm_descriptor.html">LstmDescriptor</a> &amp;&#160;</td>
<td class="paramname"><em>descriptor</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="structarmnn_1_1_lstm_input_params_info.html">LstmInputParamsInfo</a> &amp;&#160;</td>
<td class="paramname"><em>paramsInfo</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_cl_lstm_float_workload_8cpp_source.html#l00256">256</a> of file <a class="el" href="_cl_lstm_float_workload_8cpp_source.html">ClLstmFloatWorkload.cpp</a>.</p>
<p class="reference">Referenced by <a class="el" href="_cl_layer_support_8cpp_source.html#l00488">ClLayerSupport::IsLstmSupported()</a>.</p>
<div class="fragment"><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160;{</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160; arm_compute::LSTMParams&lt;arm_compute::ITensorInfo&gt; lstm_params_info;</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160;</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160; <span class="comment">// The inputs and the outputs</span></div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInputInfo = BuildArmComputeTensorInfo(input);</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclOutputStateInInfo = BuildArmComputeTensorInfo(outputStateIn);</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclCellStateInInfo = BuildArmComputeTensorInfo(cellStateIn);</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclScratchBufferInfo = BuildArmComputeTensorInfo(scratchBuffer);</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclOutputStateOutInfo = BuildArmComputeTensorInfo(outputStateOut);</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclCellStateOutInfo = BuildArmComputeTensorInfo(cellStateOut);</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclOutputInfo = BuildArmComputeTensorInfo(output);</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160;</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160; <span class="comment">// Basic parameters</span></div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInputToForgetWeightsInfo</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160; = BuildArmComputeTensorInfo(paramsInfo.GetInputToForgetWeights());</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInputToCellWeightsInfo</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160; = BuildArmComputeTensorInfo(paramsInfo.GetInputToCellWeights());</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInputToOutputWeightsInfo</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160; = BuildArmComputeTensorInfo(paramsInfo.GetInputToOutputWeights());</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclRecurrentToForgetWeightsInfo</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160; = BuildArmComputeTensorInfo(paramsInfo.GetRecurrentToForgetWeights());</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclRecurrentToCellWeightsInfo</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160; = BuildArmComputeTensorInfo(paramsInfo.GetRecurrentToCellWeights());</div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclRecurrentToOutputWeightsInfo</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160; = BuildArmComputeTensorInfo(paramsInfo.GetRecurrentToOutputWeights());</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclForgetGateBiasInfo = BuildArmComputeTensorInfo(paramsInfo.GetForgetGateBias());</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclCellBiasInfo = BuildArmComputeTensorInfo(paramsInfo.GetCellBias());</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclOutputGateBiasInfo = BuildArmComputeTensorInfo(paramsInfo.GetOutputGateBias());</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160;</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160; arm_compute::TensorInfo aclInputToInputWeightsInfo;</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160; arm_compute::TensorInfo aclRecurrentToInputWeightsInfo;</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160; arm_compute::TensorInfo aclCellToInputWeightsInfo;</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160; arm_compute::TensorInfo aclInputGateBiasInfo;</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160; arm_compute::TensorInfo aclProjectionWeightsInfo;</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160; arm_compute::TensorInfo aclProjectionBiasInfo;</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160; arm_compute::TensorInfo aclCellToForgetWeightsInfo;</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160; arm_compute::TensorInfo aclCellToOutputWeightsInfo;</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160; arm_compute::TensorInfo aclInputLayerNormWeightsInfo;</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160; arm_compute::TensorInfo aclForgetLayerNormWeightsInfo;</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160; arm_compute::TensorInfo aclCellLayerNormWeightsInfo;</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160; arm_compute::TensorInfo aclOutputLayerNormWeightsInfo;</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160;</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160; <span class="keywordflow">if</span> (!descriptor.m_CifgEnabled)</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160; {</div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160; aclInputToInputWeightsInfo = BuildArmComputeTensorInfo(paramsInfo.GetInputToInputWeights());</div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160; aclRecurrentToInputWeightsInfo = BuildArmComputeTensorInfo(paramsInfo.GetRecurrentToInputWeights());</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160;</div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160; <span class="keywordflow">if</span> (paramsInfo.m_CellToInputWeights != <span class="keyword">nullptr</span>)</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160; {</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160; aclCellToInputWeightsInfo = BuildArmComputeTensorInfo(paramsInfo.GetCellToInputWeights());</div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160; }</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160; aclInputGateBiasInfo = BuildArmComputeTensorInfo(paramsInfo.GetInputGateBias());</div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160; lstm_params_info.set_cifg_params(&amp;aclInputToInputWeightsInfo, &amp;aclRecurrentToInputWeightsInfo,</div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160; paramsInfo.m_CellToInputWeights != <span class="keyword">nullptr</span> ?</div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>&#160; &amp;aclCellToInputWeightsInfo: <span class="keyword">nullptr</span>,</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160; &amp;aclInputGateBiasInfo);</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>&#160; }</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160;</div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160; <span class="keywordflow">if</span> (descriptor.m_ProjectionEnabled)</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160; {</div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span>&#160; aclProjectionWeightsInfo = BuildArmComputeTensorInfo(paramsInfo.GetProjectionWeights());</div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>&#160;</div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160; <span class="keywordflow">if</span> (paramsInfo.m_ProjectionBias != <span class="keyword">nullptr</span>)</div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>&#160; {</div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span>&#160; aclProjectionBiasInfo = BuildArmComputeTensorInfo(paramsInfo.GetInputGateBias());</div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span>&#160; }</div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span>&#160; lstm_params_info.set_projection_params(&amp;aclProjectionWeightsInfo,</div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span>&#160; paramsInfo.m_ProjectionBias != <span class="keyword">nullptr</span> ?</div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span>&#160; &amp;aclProjectionBiasInfo: <span class="keyword">nullptr</span>);</div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span>&#160; }</div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span>&#160;</div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span>&#160; <span class="keywordflow">if</span> (descriptor.m_PeepholeEnabled)</div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span>&#160; {</div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span>&#160; aclCellToForgetWeightsInfo = BuildArmComputeTensorInfo(paramsInfo.GetCellToForgetWeights());</div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span>&#160; aclCellToOutputWeightsInfo = BuildArmComputeTensorInfo(paramsInfo.GetCellToOutputWeights());</div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span>&#160; lstm_params_info.set_peephole_params(&amp;aclCellToForgetWeightsInfo, &amp;aclCellToOutputWeightsInfo);</div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>&#160; }</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>&#160;</div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>&#160; <span class="keywordtype">float</span> cell_threshold = descriptor.m_ClippingThresCell;</div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>&#160; <span class="keywordtype">float</span> projection_threshold = descriptor.m_ClippingThresProj;</div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span>&#160;</div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span>&#160; <span class="comment">// for preparing the object for the class ActivationLayerInfo, we need to consider 5 situations</span></div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span>&#160; arm_compute::ActivationLayerInfo activationLayerInfo;</div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span>&#160; <span class="keywordflow">if</span> (descriptor.m_ActivationFunc == 0)</div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span>&#160; {</div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span>&#160; <span class="comment">// no activation, do nothing</span></div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span>&#160; }</div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (descriptor.m_ActivationFunc == 1)</div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span>&#160; {</div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span>&#160; activationLayerInfo = arm_compute::ActivationLayerInfo(</div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span>&#160; arm_compute::ActivationLayerInfo::ActivationFunction::RELU);</div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>&#160; }</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (descriptor.m_ActivationFunc == 3)</div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span>&#160; {</div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span>&#160; activationLayerInfo = arm_compute::ActivationLayerInfo(</div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span>&#160; arm_compute::ActivationLayerInfo::ActivationFunction::BOUNDED_RELU, 6.0);</div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span>&#160; }</div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (descriptor.m_ActivationFunc == 4)</div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span>&#160; {</div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span>&#160; activationLayerInfo = arm_compute::ActivationLayerInfo(</div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span>&#160; arm_compute::ActivationLayerInfo::ActivationFunction::TANH, 1.0, 1.0);</div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span>&#160; }</div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (descriptor.m_ActivationFunc == 6)</div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span>&#160; {</div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span>&#160; activationLayerInfo = arm_compute::ActivationLayerInfo(</div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span>&#160; arm_compute::ActivationLayerInfo::ActivationFunction::LOGISTIC);</div><div class="line"><a name="l00367"></a><span class="lineno"> 367</span>&#160; }</div><div class="line"><a name="l00368"></a><span class="lineno"> 368</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00369"></a><span class="lineno"> 369</span>&#160; {</div><div class="line"><a name="l00370"></a><span class="lineno"> 370</span>&#160; <span class="keywordflow">throw</span> <a class="code" href="classarmnn_1_1_exception.html">armnn::Exception</a>(<span class="stringliteral">&quot;Wrong Type of Activation Function!&quot;</span>);</div><div class="line"><a name="l00371"></a><span class="lineno"> 371</span>&#160; }</div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span>&#160;</div><div class="line"><a name="l00373"></a><span class="lineno"> 373</span>&#160; <span class="keywordflow">if</span> (descriptor.m_LayerNormEnabled)</div><div class="line"><a name="l00374"></a><span class="lineno"> 374</span>&#160; {</div><div class="line"><a name="l00375"></a><span class="lineno"> 375</span>&#160; <span class="keywordflow">if</span> (!descriptor.m_CifgEnabled)</div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span>&#160; {</div><div class="line"><a name="l00377"></a><span class="lineno"> 377</span>&#160; aclInputLayerNormWeightsInfo = BuildArmComputeTensorInfo(paramsInfo.GetInputLayerNormWeights());</div><div class="line"><a name="l00378"></a><span class="lineno"> 378</span>&#160; }</div><div class="line"><a name="l00379"></a><span class="lineno"> 379</span>&#160;</div><div class="line"><a name="l00380"></a><span class="lineno"> 380</span>&#160; aclForgetLayerNormWeightsInfo = BuildArmComputeTensorInfo(paramsInfo.GetForgetLayerNormWeights());</div><div class="line"><a name="l00381"></a><span class="lineno"> 381</span>&#160;</div><div class="line"><a name="l00382"></a><span class="lineno"> 382</span>&#160; aclCellLayerNormWeightsInfo = BuildArmComputeTensorInfo(paramsInfo.GetCellLayerNormWeights());</div><div class="line"><a name="l00383"></a><span class="lineno"> 383</span>&#160;</div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span>&#160; aclOutputLayerNormWeightsInfo = BuildArmComputeTensorInfo(paramsInfo.GetOutputLayerNormWeights());</div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span>&#160;</div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span>&#160; lstm_params_info.set_layer_normalization_params(descriptor.m_CifgEnabled ?</div><div class="line"><a name="l00387"></a><span class="lineno"> 387</span>&#160; <span class="keyword">nullptr</span> : &amp;aclInputLayerNormWeightsInfo,</div><div class="line"><a name="l00388"></a><span class="lineno"> 388</span>&#160; &amp;aclForgetLayerNormWeightsInfo,</div><div class="line"><a name="l00389"></a><span class="lineno"> 389</span>&#160; &amp;aclCellLayerNormWeightsInfo,</div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span>&#160; &amp;aclOutputLayerNormWeightsInfo);</div><div class="line"><a name="l00391"></a><span class="lineno"> 391</span>&#160; }</div><div class="line"><a name="l00392"></a><span class="lineno"> 392</span>&#160;</div><div class="line"><a name="l00393"></a><span class="lineno"> 393</span>&#160; <span class="keywordflow">return</span> arm_compute::CLLSTMLayer::validate(&amp;aclInputInfo, &amp;aclInputToForgetWeightsInfo,</div><div class="line"><a name="l00394"></a><span class="lineno"> 394</span>&#160; &amp;aclInputToCellWeightsInfo,</div><div class="line"><a name="l00395"></a><span class="lineno"> 395</span>&#160; &amp;aclInputToOutputWeightsInfo,</div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span>&#160; &amp;aclRecurrentToForgetWeightsInfo,</div><div class="line"><a name="l00397"></a><span class="lineno"> 397</span>&#160; &amp;aclRecurrentToCellWeightsInfo,</div><div class="line"><a name="l00398"></a><span class="lineno"> 398</span>&#160; &amp;aclRecurrentToOutputWeightsInfo,</div><div class="line"><a name="l00399"></a><span class="lineno"> 399</span>&#160; &amp;aclForgetGateBiasInfo,</div><div class="line"><a name="l00400"></a><span class="lineno"> 400</span>&#160; &amp;aclCellBiasInfo,</div><div class="line"><a name="l00401"></a><span class="lineno"> 401</span>&#160; &amp;aclOutputGateBiasInfo,</div><div class="line"><a name="l00402"></a><span class="lineno"> 402</span>&#160; &amp;aclOutputStateInInfo, &amp;aclCellStateInInfo,</div><div class="line"><a name="l00403"></a><span class="lineno"> 403</span>&#160; &amp;aclScratchBufferInfo, &amp;aclOutputStateOutInfo,</div><div class="line"><a name="l00404"></a><span class="lineno"> 404</span>&#160; &amp;aclCellStateOutInfo, &amp;aclOutputInfo,</div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span>&#160; lstm_params_info, activationLayerInfo,</div><div class="line"><a name="l00406"></a><span class="lineno"> 406</span>&#160; cell_threshold, projection_threshold);</div><div class="line"><a name="l00407"></a><span class="lineno"> 407</span>&#160;}</div><div class="ttc" id="classarmnn_1_1_exception_html"><div class="ttname"><a href="classarmnn_1_1_exception.html">armnn::Exception</a></div><div class="ttdoc">Base class for all ArmNN exceptions so that users can filter to just those. </div><div class="ttdef"><b>Definition:</b> <a href="_exceptions_8hpp_source.html#l00046">Exceptions.hpp:46</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a553706c6338ffc52b0d916859f642587"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a553706c6338ffc52b0d916859f642587">&#9670;&nbsp;</a></span>ClMaximumWorkloadValidate()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">arm_compute::Status ClMaximumWorkloadValidate </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>input0</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>input1</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>output</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_cl_maximum_workload_8cpp_source.html#l00024">24</a> of file <a class="el" href="_cl_maximum_workload_8cpp_source.html">ClMaximumWorkload.cpp</a>.</p>
<p class="reference">Referenced by <a class="el" href="_cl_layer_support_8cpp_source.html#l00512">ClLayerSupport::IsMaximumSupported()</a>.</p>
<div class="fragment"><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;{</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInput0Info = BuildArmComputeTensorInfo(input0);</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInput1Info = BuildArmComputeTensorInfo(input1);</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclOutputInfo = BuildArmComputeTensorInfo(output);</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; <span class="keyword">const</span> <a class="code" href="namespacearmnn.html#a67a0db04d321a74b7e7fcfd3f1a3f70b">arm_compute::Status</a> aclStatus = arm_compute::CLElementwiseMax::validate(&amp;aclInput0Info,</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; &amp;aclInput1Info,</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; &amp;aclOutputInfo);</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; <span class="keywordflow">return</span> aclStatus;</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a67a0db04d321a74b7e7fcfd3f1a3f70b"><div class="ttname"><a href="namespacearmnn.html#a67a0db04d321a74b7e7fcfd3f1a3f70b">armnn::Status</a></div><div class="ttdeci">Status</div><div class="ttdef"><b>Definition:</b> <a href="_types_8hpp_source.html#l00026">Types.hpp:26</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="aa1fff3c5bdebee27ad33aacc6d110d32"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa1fff3c5bdebee27ad33aacc6d110d32">&#9670;&nbsp;</a></span>ClMeanValidate()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">arm_compute::Status ClMeanValidate </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>input</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>output</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="structarmnn_1_1_mean_descriptor.html">MeanDescriptor</a> &amp;&#160;</td>
<td class="paramname"><em>desc</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_cl_mean_workload_8cpp_source.html#l00017">17</a> of file <a class="el" href="_cl_mean_workload_8cpp_source.html">ClMeanWorkload.cpp</a>.</p>
<p class="reference">Referenced by <a class="el" href="_cl_layer_support_8cpp_source.html#l00524">ClLayerSupport::IsMeanSupported()</a>.</p>
<div class="fragment"><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;{</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInputInfo = armcomputetensorutils::BuildArmComputeTensorInfo(input);</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclOutputInfo = armcomputetensorutils::BuildArmComputeTensorInfo(output);</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160; <a class="code" href="namespacearmnn.html#ac6e86c1def7f674d3c4cb7f577874aa6">arm_compute::Coordinates</a> coords = BuildArmComputeReductionCoordinates(aclInputInfo.num_dimensions(),</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; input.GetNumDimensions(),</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; desc.m_Axis);</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; <span class="keywordflow">return</span> arm_compute::CLReduceMean::validate(&amp;aclInputInfo, coords, desc.m_KeepDims, &amp;aclOutputInfo);</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_ac6e86c1def7f674d3c4cb7f577874aa6"><div class="ttname"><a href="namespacearmnn.html#ac6e86c1def7f674d3c4cb7f577874aa6">armnn::Coordinates</a></div><div class="ttdeci">std::array&lt; unsigned int, MaxNumOfTensorDimensions &gt; Coordinates</div><div class="ttdef"><b>Definition:</b> <a href="_internal_types_8hpp_source.html#l00079">InternalTypes.hpp:79</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a8c04c8e796a4fbec706df42ed9c27e4e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a8c04c8e796a4fbec706df42ed9c27e4e">&#9670;&nbsp;</a></span>ClMinimumWorkloadValidate()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">arm_compute::Status ClMinimumWorkloadValidate </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>input0</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>input1</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>output</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_cl_minimum_workload_8cpp_source.html#l00024">24</a> of file <a class="el" href="_cl_minimum_workload_8cpp_source.html">ClMinimumWorkload.cpp</a>.</p>
<p class="reference">Referenced by <a class="el" href="_cl_layer_support_8cpp_source.html#l00544">ClLayerSupport::IsMinimumSupported()</a>.</p>
<div class="fragment"><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;{</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInput0Info = BuildArmComputeTensorInfo(input0);</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInput1Info = BuildArmComputeTensorInfo(input1);</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclOutputInfo = BuildArmComputeTensorInfo(output);</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; <span class="keyword">const</span> <a class="code" href="namespacearmnn.html#a67a0db04d321a74b7e7fcfd3f1a3f70b">arm_compute::Status</a> aclStatus = arm_compute::CLElementwiseMin::validate(&amp;aclInput0Info,</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; &amp;aclInput1Info,</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; &amp;aclOutputInfo);</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; <span class="keywordflow">return</span> aclStatus;</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a67a0db04d321a74b7e7fcfd3f1a3f70b"><div class="ttname"><a href="namespacearmnn.html#a67a0db04d321a74b7e7fcfd3f1a3f70b">armnn::Status</a></div><div class="ttdeci">Status</div><div class="ttdef"><b>Definition:</b> <a href="_types_8hpp_source.html#l00026">Types.hpp:26</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a674a280a55c3760374a05ee24e9e3e74"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a674a280a55c3760374a05ee24e9e3e74">&#9670;&nbsp;</a></span>ClMultiplicationWorkloadValidate()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">arm_compute::Status ClMultiplicationWorkloadValidate </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>input0</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>input1</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>output</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_cl_multiplication_workload_8cpp_source.html#l00014">14</a> of file <a class="el" href="_cl_multiplication_workload_8cpp_source.html">ClMultiplicationWorkload.cpp</a>.</p>
<p class="reference">Referenced by <a class="el" href="_cl_layer_support_8cpp_source.html#l00556">ClLayerSupport::IsMultiplicationSupported()</a>.</p>
<div class="fragment"><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;{</div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInput1 = armcomputetensorutils::BuildArmComputeTensorInfo(input0);</div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInput2 = armcomputetensorutils::BuildArmComputeTensorInfo(input1);</div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclOutput = armcomputetensorutils::BuildArmComputeTensorInfo(output);</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160; <span class="comment">// At the time of writing, configure() will fail if a rounding policy other than TO_ZERO is supplied to it,</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160; <span class="comment">// when providing a scale of 1.0 for F32 tensors, even though the provided rounding policy appears to be</span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160; <span class="comment">// ignored for F32 tensors.</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; <span class="keywordflow">return</span> arm_compute::CLPixelWiseMultiplication::validate(&amp;aclInput1,</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; &amp;aclInput2,</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; &amp;aclOutput,</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; 1.0f,</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; arm_compute::ConvertPolicy::SATURATE,</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; arm_compute::RoundingPolicy::TO_ZERO);</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;}</div></div><!-- fragment -->
</div>
</div>
<a id="a144c2e243a255715f309999077ed1792"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a144c2e243a255715f309999077ed1792">&#9670;&nbsp;</a></span>ClNormalizationWorkloadValidate()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">arm_compute::Status ClNormalizationWorkloadValidate </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>input</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>output</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="structarmnn_1_1_normalization_descriptor.html">NormalizationDescriptor</a> &amp;&#160;</td>
<td class="paramname"><em>descriptor</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_cl_normalization_float_workload_8cpp_source.html#l00019">19</a> of file <a class="el" href="_cl_normalization_float_workload_8cpp_source.html">ClNormalizationFloatWorkload.cpp</a>.</p>
<p class="reference">Referenced by <a class="el" href="_cl_layer_support_8cpp_source.html#l00568">ClLayerSupport::IsNormalizationSupported()</a>.</p>
<div class="fragment"><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;{</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInputInfo = BuildArmComputeTensorInfo(input, descriptor.m_DataLayout);</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclOutputInfo = BuildArmComputeTensorInfo(output, descriptor.m_DataLayout);</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; arm_compute::NormalizationLayerInfo layerInfo = BuildArmComputeNormalizationLayerInfo(descriptor);</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; <span class="keywordflow">return</span> arm_compute::CLNormalizationLayer::validate(&amp;aclInputInfo, &amp;aclOutputInfo, layerInfo);</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;}</div></div><!-- fragment -->
</div>
</div>
<a id="adcf7b7d939bac1cfaeb333c7b3175bb8"></a>
<h2 class="memtitle"><span class="permalink"><a href="#adcf7b7d939bac1cfaeb333c7b3175bb8">&#9670;&nbsp;</a></span>ClPadValidate()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">arm_compute::Status ClPadValidate </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>input</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>output</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="structarmnn_1_1_pad_descriptor.html">PadDescriptor</a> &amp;&#160;</td>
<td class="paramname"><em>descriptor</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_cl_pad_workload_8cpp_source.html#l00045">45</a> of file <a class="el" href="_cl_pad_workload_8cpp_source.html">ClPadWorkload.cpp</a>.</p>
<p class="reference">Referenced by <a class="el" href="_cl_layer_support_8cpp_source.html#l00582">ClLayerSupport::IsPadSupported()</a>.</p>
<div class="fragment"><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;{</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInputInfo = BuildArmComputeTensorInfo(input);</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclOutputInfo = BuildArmComputeTensorInfo(output);</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160;</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; std::vector&lt;std::pair&lt;unsigned int, unsigned int&gt;&gt; reversed_PadList(descriptor.m_PadList.size());</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160;</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; std::reverse_copy(std::begin(descriptor.m_PadList),</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; std::end(descriptor.m_PadList),</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; std::begin(reversed_PadList));</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160;</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; arm_compute::PaddingList padList = <span class="keyword">static_cast&lt;</span>arm_compute::PaddingList<span class="keyword">&gt;</span>(reversed_PadList);</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160;</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; <span class="keyword">const</span> <a class="code" href="namespacearmnn.html#a67a0db04d321a74b7e7fcfd3f1a3f70b">arm_compute::Status</a> aclStatus = arm_compute::CLPadLayer::validate(&amp;aclInputInfo,</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; &amp;aclOutputInfo,</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; padList);</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160;</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; <span class="keywordflow">return</span> aclStatus;</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a67a0db04d321a74b7e7fcfd3f1a3f70b"><div class="ttname"><a href="namespacearmnn.html#a67a0db04d321a74b7e7fcfd3f1a3f70b">armnn::Status</a></div><div class="ttdeci">Status</div><div class="ttdef"><b>Definition:</b> <a href="_types_8hpp_source.html#l00026">Types.hpp:26</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a26c25df9e2271333ab4d4ef71db41dca"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a26c25df9e2271333ab4d4ef71db41dca">&#9670;&nbsp;</a></span>ClPermuteWorkloadValidate()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">arm_compute::Status ClPermuteWorkloadValidate </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>input</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>output</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="structarmnn_1_1_permute_descriptor.html">PermuteDescriptor</a> &amp;&#160;</td>
<td class="paramname"><em>descriptor</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_cl_permute_workload_8cpp_source.html#l00017">17</a> of file <a class="el" href="_cl_permute_workload_8cpp_source.html">ClPermuteWorkload.cpp</a>.</p>
<p class="reference">Referenced by <a class="el" href="_cl_layer_support_8cpp_source.html#l00594">ClLayerSupport::IsPermuteSupported()</a>.</p>
<div class="fragment"><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;{</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInputInfo = armcomputetensorutils::BuildArmComputeTensorInfo(input);</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclOutputInfo = armcomputetensorutils::BuildArmComputeTensorInfo(output);</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160; <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_permutation_vector.html">armnn::PermutationVector</a>&amp; mappings = descriptor.m_DimMappings;</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; <span class="keywordflow">return</span> arm_compute::CLPermute::validate(&amp;aclInputInfo, &amp;aclOutputInfo,</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; armcomputetensorutils::BuildArmComputePermutationVector(mappings));</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;}</div><div class="ttc" id="classarmnn_1_1_permutation_vector_html"><div class="ttname"><a href="classarmnn_1_1_permutation_vector.html">armnn::PermutationVector</a></div><div class="ttdef"><b>Definition:</b> <a href="_types_8hpp_source.html#l00170">Types.hpp:170</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a8a21bb33f7f054ce7b48a8c7df9e6d4a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a8a21bb33f7f054ce7b48a8c7df9e6d4a">&#9670;&nbsp;</a></span>ClPooling2dWorkloadValidate()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">arm_compute::Status ClPooling2dWorkloadValidate </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>input</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>output</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="structarmnn_1_1_pooling2d_descriptor.html">Pooling2dDescriptor</a> &amp;&#160;</td>
<td class="paramname"><em>descriptor</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_cl_pooling2d_workload_8cpp_source.html#l00018">18</a> of file <a class="el" href="_cl_pooling2d_workload_8cpp_source.html">ClPooling2dWorkload.cpp</a>.</p>
<p class="reference">Referenced by <a class="el" href="_cl_layer_support_8cpp_source.html#l00602">ClLayerSupport::IsPooling2dSupported()</a>.</p>
<div class="fragment"><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;{</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInputInfo = BuildArmComputeTensorInfo(input, descriptor.m_DataLayout);</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclOutputInfo = BuildArmComputeTensorInfo(output, descriptor.m_DataLayout);</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; arm_compute::PoolingLayerInfo layerInfo = BuildArmComputePoolingLayerInfo(descriptor);</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; <span class="keywordflow">return</span> arm_compute::CLPoolingLayer::validate(&amp;aclInputInfo, &amp;aclOutputInfo, layerInfo);</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;}</div></div><!-- fragment -->
</div>
</div>
<a id="ae58d1f4437a779274037bc86efac9e26"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae58d1f4437a779274037bc86efac9e26">&#9670;&nbsp;</a></span>ClPreluWorkloadValidate()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">arm_compute::Status ClPreluWorkloadValidate </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>input</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>alpha</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>output</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_cl_prelu_workload_8cpp_source.html#l00016">16</a> of file <a class="el" href="_cl_prelu_workload_8cpp_source.html">ClPreluWorkload.cpp</a>.</p>
<p class="reference">Referenced by <a class="el" href="_cl_layer_support_8cpp_source.html#l00610">ClLayerSupport::IsPreluSupported()</a>.</p>
<div class="fragment"><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;{</div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInput = armcomputetensorutils::BuildArmComputeTensorInfo(input);</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclAlpha = armcomputetensorutils::BuildArmComputeTensorInfo(alpha);</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclOutput = armcomputetensorutils::BuildArmComputeTensorInfo(output);</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160; <span class="keywordflow">return</span> arm_compute::CLPReluLayer::validate(&amp;aclInput,</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; &amp;aclAlpha,</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; &amp;aclOutput);</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;}</div></div><!-- fragment -->
</div>
</div>
<a id="a5fb7fe07abfb2373103d842b47a24726"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a5fb7fe07abfb2373103d842b47a24726">&#9670;&nbsp;</a></span>ClQuantizedLstmWorkloadValidate()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">arm_compute::Status ClQuantizedLstmWorkloadValidate </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>input</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>previousCellStateIn</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>previousOutputIn</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>cellStateOut</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>output</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="structarmnn_1_1_quantized_lstm_input_params_info.html">QuantizedLstmInputParamsInfo</a> &amp;&#160;</td>
<td class="paramname"><em>paramsInfo</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_cl_quantized_lstm_workload_8cpp_source.html#l00018">18</a> of file <a class="el" href="_cl_quantized_lstm_workload_8cpp_source.html">ClQuantizedLstmWorkload.cpp</a>.</p>
<p class="reference">Referenced by <a class="el" href="_cl_layer_support_8cpp_source.html#l00618">ClLayerSupport::IsQuantizedLstmSupported()</a>.</p>
<div class="fragment"><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;{</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160; <span class="comment">// Inputs</span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInputInfo = BuildArmComputeTensorInfo(input);</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclPreviousCellStateInInfo = BuildArmComputeTensorInfo(previousCellStateIn);</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclPreviousOutputInInfo = BuildArmComputeTensorInfo(previousOutputIn);</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; <span class="comment">// Outputs</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclCellStateOutInfo = BuildArmComputeTensorInfo(cellStateOut);</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclOutputInfo = BuildArmComputeTensorInfo(output);</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; <span class="comment">// Basic parameters</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInputToInputWeightsInfo</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; = BuildArmComputeTensorInfo(paramsInfo.GetInputToInputWeights());</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInputToForgetWeightsInfo</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; = BuildArmComputeTensorInfo(paramsInfo.GetInputToForgetWeights());</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInputToCellWeightsInfo</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; = BuildArmComputeTensorInfo(paramsInfo.GetInputToCellWeights());</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInputToOutputWeightsInfo</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; = BuildArmComputeTensorInfo(paramsInfo.GetInputToOutputWeights());</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclRecurrentToInputWeightsInfo</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; = BuildArmComputeTensorInfo(paramsInfo.GetRecurrentToInputWeights());</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclRecurrentToForgetWeightsInfo</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; = BuildArmComputeTensorInfo(paramsInfo.GetRecurrentToForgetWeights());</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclRecurrentToCellWeightsInfo</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; = BuildArmComputeTensorInfo(paramsInfo.GetRecurrentToCellWeights());</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclRecurrentToOutputWeightsInfo</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; = BuildArmComputeTensorInfo(paramsInfo.GetRecurrentToOutputWeights());</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInputGateBiasInfo = BuildArmComputeTensorInfo(paramsInfo.GetInputGateBias());</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclForgetGateBiasInfo = BuildArmComputeTensorInfo(paramsInfo.GetForgetGateBias());</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclCellBiasInfo = BuildArmComputeTensorInfo(paramsInfo.GetCellBias());</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclOutputGateBiasInfo = BuildArmComputeTensorInfo(paramsInfo.GetOutputGateBias());</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160;</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; <span class="keywordflow">return</span> arm_compute::CLLSTMLayerQuantized::validate(&amp;aclInputInfo, &amp;aclInputToInputWeightsInfo,</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; &amp;aclInputToForgetWeightsInfo, &amp;aclInputToCellWeightsInfo,</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; &amp;aclInputToOutputWeightsInfo, &amp;aclRecurrentToInputWeightsInfo,</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; &amp;aclRecurrentToForgetWeightsInfo, &amp;aclRecurrentToCellWeightsInfo,</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; &amp;aclRecurrentToOutputWeightsInfo, &amp;aclInputGateBiasInfo,</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; &amp;aclForgetGateBiasInfo, &amp;aclCellBiasInfo, &amp;aclOutputGateBiasInfo,</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; &amp;aclPreviousCellStateInInfo, &amp;aclPreviousOutputInInfo,</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; &amp;aclCellStateOutInfo, &amp;aclOutputInfo);</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160;}</div></div><!-- fragment -->
</div>
</div>
<a id="a9c1b478e30a1e8a4ecac874cf15f13d4"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a9c1b478e30a1e8a4ecac874cf15f13d4">&#9670;&nbsp;</a></span>ClQuantizeWorkloadValidate()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">arm_compute::Status ClQuantizeWorkloadValidate </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>input</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>output</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_cl_quantize_workload_8cpp_source.html#l00022">22</a> of file <a class="el" href="_cl_quantize_workload_8cpp_source.html">ClQuantizeWorkload.cpp</a>.</p>
<p class="reference">Referenced by <a class="el" href="_cl_layer_support_8cpp_source.html#l00636">ClLayerSupport::IsQuantizeSupported()</a>.</p>
<div class="fragment"><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;{</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInputInfo = BuildArmComputeTensorInfo(input);</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclOutputInfo = BuildArmComputeTensorInfo(output);</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; <span class="keywordflow">return</span> arm_compute::CLQuantizationLayer::validate(&amp;aclInputInfo,</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; &amp;aclOutputInfo);</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;}</div></div><!-- fragment -->
</div>
</div>
<a id="af5bb7a834a74983cbbc249785d0c392b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af5bb7a834a74983cbbc249785d0c392b">&#9670;&nbsp;</a></span>ClReshapeWorkloadValidate()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">arm_compute::Status ClReshapeWorkloadValidate </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>input</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>output</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_cl_reshape_workload_8cpp_source.html#l00015">15</a> of file <a class="el" href="_cl_reshape_workload_8cpp_source.html">ClReshapeWorkload.cpp</a>.</p>
<p class="reference">Referenced by <a class="el" href="_cl_layer_support_8cpp_source.html#l00646">ClLayerSupport::IsReshapeSupported()</a>.</p>
<div class="fragment"><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;{</div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInputInfo = armcomputetensorutils::BuildArmComputeTensorInfo(input);</div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclOutputInfo = armcomputetensorutils::BuildArmComputeTensorInfo(output);</div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160; <span class="keywordflow">return</span> arm_compute::CLReshapeLayer::validate(&amp;aclInputInfo, &amp;aclOutputInfo);</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;}</div></div><!-- fragment -->
</div>
</div>
<a id="a95b187d3c6b7b46f4fbdc60be69fc02c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a95b187d3c6b7b46f4fbdc60be69fc02c">&#9670;&nbsp;</a></span>ClResizeWorkloadValidate()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">arm_compute::Status ClResizeWorkloadValidate </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>input</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>output</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="structarmnn_1_1_resize_descriptor.html">ResizeDescriptor</a> &amp;&#160;</td>
<td class="paramname"><em>descriptor</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_cl_resize_workload_8cpp_source.html#l00022">22</a> of file <a class="el" href="_cl_resize_workload_8cpp_source.html">ClResizeWorkload.cpp</a>.</p>
<p class="reference">Referenced by <a class="el" href="_cl_layer_support_8cpp_source.html#l00655">ClLayerSupport::IsResizeSupported()</a>.</p>
<div class="fragment"><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;{</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; arm_compute::TensorInfo aclInputInfo = BuildArmComputeTensorInfo(input);</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; arm_compute::TensorInfo aclOutputInfo = BuildArmComputeTensorInfo(output);</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; <a class="code" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0">arm_compute::DataLayout</a> aclDataLayout = ConvertDataLayout(descriptor.m_DataLayout);</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; aclInputInfo.set_data_layout(aclDataLayout);</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; aclOutputInfo.set_data_layout(aclDataLayout);</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; arm_compute::InterpolationPolicy aclInterpolationPolicy =</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; <a class="code" href="namespacearmnn.html#ae9bdcb8ac91731109dc423d6ed476204">ConvertResizeMethodToAclInterpolationPolicy</a>(descriptor.m_Method);</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; <span class="keywordflow">return</span> arm_compute::CLScale::validate(&amp;aclInputInfo,</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; &amp;aclOutputInfo,</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; aclInterpolationPolicy,</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; arm_compute::BorderMode::REPLICATE,</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; arm_compute::PixelValue(0.f),</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; arm_compute::SamplingPolicy::TOP_LEFT,</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; <span class="keyword">true</span>,</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; descriptor.m_BilinearAlignCorners);</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_ae9bdcb8ac91731109dc423d6ed476204"><div class="ttname"><a href="namespacearmnn.html#ae9bdcb8ac91731109dc423d6ed476204">armnn::ConvertResizeMethodToAclInterpolationPolicy</a></div><div class="ttdeci">arm_compute::InterpolationPolicy ConvertResizeMethodToAclInterpolationPolicy(ResizeMethod resizeMethod)</div><div class="ttdef"><b>Definition:</b> <a href="_arm_compute_utils_8hpp_source.html#l00125">ArmComputeUtils.hpp:125</a></div></div>
<div class="ttc" id="namespacearmnn_html_ad1d5cce2d9e9a5d61c243e5c989112e0"><div class="ttname"><a href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0">armnn::DataLayout</a></div><div class="ttdeci">DataLayout</div><div class="ttdef"><b>Definition:</b> <a href="_types_8hpp_source.html#l00048">Types.hpp:48</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a3f6f9f0d3567ae04b49ea88727845900"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a3f6f9f0d3567ae04b49ea88727845900">&#9670;&nbsp;</a></span>ClRsqrtWorkloadValidate()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">arm_compute::Status ClRsqrtWorkloadValidate </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>input</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>output</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_cl_rsqrt_workload_8cpp_source.html#l00019">19</a> of file <a class="el" href="_cl_rsqrt_workload_8cpp_source.html">ClRsqrtWorkload.cpp</a>.</p>
<p class="reference">Referenced by <a class="el" href="_cl_layer_support_8cpp_source.html#l00400">ClLayerSupport::IsElementwiseUnarySupported()</a>.</p>
<div class="fragment"><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;{</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInput = armcomputetensorutils::BuildArmComputeTensorInfo(input);</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclOutput = armcomputetensorutils::BuildArmComputeTensorInfo(output);</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160; <span class="keywordflow">return</span> arm_compute::CLRsqrtLayer::validate(&amp;aclInput, &amp;aclOutput);</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;}</div></div><!-- fragment -->
</div>
</div>
<a id="a6d85d2806d0a90140832ad8113c1d350"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a6d85d2806d0a90140832ad8113c1d350">&#9670;&nbsp;</a></span>ClSliceWorkloadValidate()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">arm_compute::Status ClSliceWorkloadValidate </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>input</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>output</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="structarmnn_1_1_slice_descriptor.html">SliceDescriptor</a> &amp;&#160;</td>
<td class="paramname"><em>descriptor</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_cl_slice_workload_8cpp_source.html#l00019">19</a> of file <a class="el" href="_cl_slice_workload_8cpp_source.html">ClSliceWorkload.cpp</a>.</p>
<p class="reference">Referenced by <a class="el" href="_cl_layer_support_8cpp_source.html#l00686">ClLayerSupport::IsSliceSupported()</a>.</p>
<div class="fragment"><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;{</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInput = armcomputetensorutils::BuildArmComputeTensorInfo(input);</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclOutput = armcomputetensorutils::BuildArmComputeTensorInfo(output);</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; <a class="code" href="namespacearmnn.html#ac6e86c1def7f674d3c4cb7f577874aa6">arm_compute::Coordinates</a> starts;</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; <a class="code" href="namespacearmnn.html#ac6e86c1def7f674d3c4cb7f577874aa6">arm_compute::Coordinates</a> ends;</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; std::tie(starts, ends) = <a class="code" href="namespacearmnn.html#a460e01ad4cd0bfa6bde4eccaf0e77220">SetClSliceData</a>(descriptor.m_Begin, descriptor.m_Size);</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; <span class="keywordflow">return</span> arm_compute::CLSlice::validate(&amp;aclInput, &amp;aclOutput, starts, ends);</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_ac6e86c1def7f674d3c4cb7f577874aa6"><div class="ttname"><a href="namespacearmnn.html#ac6e86c1def7f674d3c4cb7f577874aa6">armnn::Coordinates</a></div><div class="ttdeci">std::array&lt; unsigned int, MaxNumOfTensorDimensions &gt; Coordinates</div><div class="ttdef"><b>Definition:</b> <a href="_internal_types_8hpp_source.html#l00079">InternalTypes.hpp:79</a></div></div>
<div class="ttc" id="namespacearmnn_html_a460e01ad4cd0bfa6bde4eccaf0e77220"><div class="ttname"><a href="namespacearmnn.html#a460e01ad4cd0bfa6bde4eccaf0e77220">armnn::SetClSliceData</a></div><div class="ttdeci">auto SetClSliceData(const std::vector&lt; unsigned int &gt; &amp;m_begin, const std::vector&lt; unsigned int &gt; &amp;m_size)</div><div class="ttdef"><b>Definition:</b> <a href="_cl_workload_utils_8hpp_source.html#l00066">ClWorkloadUtils.hpp:66</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="abc6f7e5fe77e5aed3f7842755dd34073"></a>
<h2 class="memtitle"><span class="permalink"><a href="#abc6f7e5fe77e5aed3f7842755dd34073">&#9670;&nbsp;</a></span>ClSoftmaxWorkloadValidate()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">arm_compute::Status ClSoftmaxWorkloadValidate </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>input</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>output</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="structarmnn_1_1_softmax_descriptor.html">SoftmaxDescriptor</a> &amp;&#160;</td>
<td class="paramname"><em>descriptor</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_cl_softmax_base_workload_8cpp_source.html#l00016">16</a> of file <a class="el" href="_cl_softmax_base_workload_8cpp_source.html">ClSoftmaxBaseWorkload.cpp</a>.</p>
<p class="reference">Referenced by <a class="el" href="_cl_layer_support_8cpp_source.html#l00694">ClLayerSupport::IsSoftmaxSupported()</a>.</p>
<div class="fragment"><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;{</div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInputInfo = armcomputetensorutils::BuildArmComputeTensorInfo(input);</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclOutputInfo = armcomputetensorutils::BuildArmComputeTensorInfo(output);</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> aclAxis = <a class="code" href="namespacearmnn.html#aa70ebe7b7898fe69ce24db803caa373e">ComputeSoftmaxAclAxis</a>(descriptor, input);</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160; <span class="keywordflow">return</span> arm_compute::CLSoftmaxLayer::validate(&amp;aclInputInfo, &amp;aclOutputInfo, descriptor.m_Beta, aclAxis);</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_aa70ebe7b7898fe69ce24db803caa373e"><div class="ttname"><a href="namespacearmnn.html#aa70ebe7b7898fe69ce24db803caa373e">armnn::ComputeSoftmaxAclAxis</a></div><div class="ttdeci">unsigned int ComputeSoftmaxAclAxis(const SoftmaxDescriptor &amp;softmaxDesc, const armnn::TensorInfo &amp;tensor)</div><div class="ttdef"><b>Definition:</b> <a href="_arm_compute_utils_8hpp_source.html#l00138">ArmComputeUtils.hpp:138</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a534b28fd4b345bbc938d055ff5b8970f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a534b28fd4b345bbc938d055ff5b8970f">&#9670;&nbsp;</a></span>ClSpaceToBatchNdWorkloadValidate()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">arm_compute::Status ClSpaceToBatchNdWorkloadValidate </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>input</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>output</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="structarmnn_1_1_space_to_batch_nd_descriptor.html">SpaceToBatchNdDescriptor</a> &amp;&#160;</td>
<td class="paramname"><em>descriptor</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_cl_space_to_batch_nd_workload_8cpp_source.html#l00023">23</a> of file <a class="el" href="_cl_space_to_batch_nd_workload_8cpp_source.html">ClSpaceToBatchNdWorkload.cpp</a>.</p>
<p class="reference">Referenced by <a class="el" href="_cl_layer_support_8cpp_source.html#l00702">ClLayerSupport::IsSpaceToBatchNdSupported()</a>.</p>
<div class="fragment"><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;{</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInputInfo = BuildArmComputeTensorInfo(input, descriptor.m_DataLayout);</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclOutputInfo = BuildArmComputeTensorInfo(output, descriptor.m_DataLayout);</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; <span class="comment">// ArmNN blockShape is [H, W] Cl asks for W, H</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; int32_t blockHeight = boost::numeric_cast&lt;int32_t&gt;(descriptor.m_BlockShape[0]);</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; int32_t blockWidth = boost::numeric_cast&lt;int32_t&gt;(descriptor.m_BlockShape[1]);</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; arm_compute::Size2D paddingLeftTop = BuildArmComputeSize2D(</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; descriptor.m_PadList[1].first, descriptor.m_PadList[0].first);</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; arm_compute::Size2D paddingRightBottom = BuildArmComputeSize2D(</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; descriptor.m_PadList[1].second, descriptor.m_PadList[0].second);</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; <span class="keywordflow">return</span> arm_compute::CLSpaceToBatchLayer::validate(&amp;aclInputInfo,</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; blockWidth,</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; blockHeight,</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; paddingLeftTop,</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; paddingRightBottom,</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; &amp;aclOutputInfo);</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;}</div></div><!-- fragment -->
</div>
</div>
<a id="a5f81bc4e5533cfe99932865bd102735c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a5f81bc4e5533cfe99932865bd102735c">&#9670;&nbsp;</a></span>ClSpaceToDepthWorkloadValidate()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">arm_compute::Status ClSpaceToDepthWorkloadValidate </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>input</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>output</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="structarmnn_1_1_space_to_depth_descriptor.html">SpaceToDepthDescriptor</a> &amp;&#160;</td>
<td class="paramname"><em>desc</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_cl_space_to_depth_workload_8cpp_source.html#l00044">44</a> of file <a class="el" href="_cl_space_to_depth_workload_8cpp_source.html">ClSpaceToDepthWorkload.cpp</a>.</p>
<p class="reference">References <a class="el" href="_descriptors_8hpp_source.html#l00830">SpaceToDepthDescriptor::m_DataLayout</a>.</p>
<p class="reference">Referenced by <a class="el" href="_cl_layer_support_8cpp_source.html#l00714">ClLayerSupport::IsSpaceToDepthSupported()</a>.</p>
<div class="fragment"><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;{</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; <a class="code" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0">DataLayout</a> dataLayout = desc.m_DataLayout;</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInputInfo = BuildArmComputeTensorInfo(input, dataLayout);</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; int32_t blockSize = boost::numeric_cast&lt;int32_t&gt;(desc.m_BlockSize);</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160;</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclOutputInfo = BuildArmComputeTensorInfo(output, dataLayout);</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; <span class="keyword">const</span> <a class="code" href="namespacearmnn.html#a67a0db04d321a74b7e7fcfd3f1a3f70b">arm_compute::Status</a> aclStatus = arm_compute::CLSpaceToDepthLayer::validate(&amp;aclInputInfo,</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; &amp;aclOutputInfo,</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; blockSize);</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; <span class="keywordflow">return</span> aclStatus;</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a67a0db04d321a74b7e7fcfd3f1a3f70b"><div class="ttname"><a href="namespacearmnn.html#a67a0db04d321a74b7e7fcfd3f1a3f70b">armnn::Status</a></div><div class="ttdeci">Status</div><div class="ttdef"><b>Definition:</b> <a href="_types_8hpp_source.html#l00026">Types.hpp:26</a></div></div>
<div class="ttc" id="namespacearmnn_html_ad1d5cce2d9e9a5d61c243e5c989112e0"><div class="ttname"><a href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0">armnn::DataLayout</a></div><div class="ttdeci">DataLayout</div><div class="ttdef"><b>Definition:</b> <a href="_types_8hpp_source.html#l00048">Types.hpp:48</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a3ac8a60f837b19b20987e4fd238ce0cd"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a3ac8a60f837b19b20987e4fd238ce0cd">&#9670;&nbsp;</a></span>ClSplitterWorkloadValidate()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">arm_compute::Status ClSplitterWorkloadValidate </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>input</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const std::vector&lt; std::reference_wrapper&lt; <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &gt;&gt; &amp;&#160;</td>
<td class="paramname"><em>outputs</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">unsigned int&#160;</td>
<td class="paramname"><em>splitAxis</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_cl_splitter_workload_8cpp_source.html#l00031">31</a> of file <a class="el" href="_cl_splitter_workload_8cpp_source.html">ClSplitterWorkload.cpp</a>.</p>
<p class="reference">Referenced by <a class="el" href="_cl_layer_support_8cpp_source.html#l00737">ClLayerSupport::IsSplitterSupported()</a>.</p>
<div class="fragment"><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;{</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInputInfo = BuildArmComputeTensorInfo(input);</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; <span class="keywordtype">size_t</span> numOutputs = outputs.size();</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; std::vector&lt;arm_compute::TensorInfo&gt; aclOutputs;</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; aclOutputs.reserve(numOutputs);</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; std::vector&lt;arm_compute::ITensorInfo*&gt; aclOutputPtr;</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; aclOutputPtr.reserve(numOutputs);</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0u; i &lt; outputs.size(); ++i)</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; {</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; aclOutputs.emplace_back(BuildArmComputeTensorInfo(outputs[i]));</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; aclOutputPtr.emplace_back(&amp;aclOutputs.back());</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; }</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> aclAxis = CalcAclAxis(input.GetNumDimensions(), splitAxis);</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; <span class="keywordflow">return</span> arm_compute::CLSplit::validate(&amp;aclInputInfo, aclOutputPtr, aclAxis);</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160;}</div></div><!-- fragment -->
</div>
</div>
<a id="a8c9fec997dbb5db4cdb433c36d075782"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a8c9fec997dbb5db4cdb433c36d075782">&#9670;&nbsp;</a></span>ClStackWorkloadValidate()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">arm_compute::Status ClStackWorkloadValidate </td>
<td>(</td>
<td class="paramtype">const std::vector&lt; const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> *&gt; &amp;&#160;</td>
<td class="paramname"><em>inputs</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>output</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="structarmnn_1_1_stack_descriptor.html">StackDescriptor</a> &amp;&#160;</td>
<td class="paramname"><em>descriptor</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_cl_stack_workload_8cpp_source.html#l00030">30</a> of file <a class="el" href="_cl_stack_workload_8cpp_source.html">ClStackWorkload.cpp</a>.</p>
<p class="reference">Referenced by <a class="el" href="_cl_layer_support_8cpp_source.html#l00770">ClLayerSupport::IsStackSupported()</a>.</p>
<div class="fragment"><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;{</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; std::vector&lt;arm_compute::ITensorInfo*&gt; aclInputPtrs;</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; arm_compute::TensorInfo aclInputInfo;</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> TensorInfo* input : inputs)</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; {</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; aclInputInfo = BuildArmComputeTensorInfo(*input);</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; aclInputPtrs.emplace_back(&amp;aclInputInfo);</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; }</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclOutputInfo = BuildArmComputeTensorInfo(output);</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; <span class="keywordtype">int</span> aclAxis = CalcAxis(descriptor.m_Axis, descriptor.m_InputShape.GetNumDimensions());</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <span class="keywordflow">return</span> arm_compute::CLStackLayer::validate(aclInputPtrs, aclAxis, &amp;aclOutputInfo);</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;}</div></div><!-- fragment -->
</div>
</div>
<a id="a157e0508f6d6d08e3ca4cf6c661242e6"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a157e0508f6d6d08e3ca4cf6c661242e6">&#9670;&nbsp;</a></span>ClStridedSliceWorkloadValidate()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">arm_compute::Status ClStridedSliceWorkloadValidate </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>input</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>output</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="structarmnn_1_1_strided_slice_descriptor.html">StridedSliceDescriptor</a> &amp;&#160;</td>
<td class="paramname"><em>descriptor</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_cl_strided_slice_workload_8cpp_source.html#l00026">26</a> of file <a class="el" href="_cl_strided_slice_workload_8cpp_source.html">ClStridedSliceWorkload.cpp</a>.</p>
<p class="reference">Referenced by <a class="el" href="_cl_layer_support_8cpp_source.html#l00782">ClLayerSupport::IsStridedSliceSupported()</a>.</p>
<div class="fragment"><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;{</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInputInfo = BuildArmComputeTensorInfo(input, descriptor.m_DataLayout);</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclOutputInfo = BuildArmComputeTensorInfo(output, descriptor.m_DataLayout);</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; <a class="code" href="namespacearmnn.html#ac6e86c1def7f674d3c4cb7f577874aa6">arm_compute::Coordinates</a> starts;</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; <a class="code" href="namespacearmnn.html#ac6e86c1def7f674d3c4cb7f577874aa6">arm_compute::Coordinates</a> ends;</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; <a class="code" href="namespacearmnn.html#ac6e86c1def7f674d3c4cb7f577874aa6">arm_compute::Coordinates</a> strides;</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; std::tie(starts, ends, strides) = <a class="code" href="namespacearmnn.html#a6d4bdf4368a1422943f8f2b1740ec491">SetClStridedSliceData</a>(descriptor.m_Begin, descriptor.m_End, descriptor.m_Stride);</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; <span class="keyword">auto</span> numDimensions = boost::numeric_cast&lt;<span class="keywordtype">int</span>&gt;(input.GetNumDimensions());</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; int32_t begin_mask = <a class="code" href="namespacearmnn.html#ad69ffa576a596b9eb20ab6a41420c541">ConvertMaskToACLFormat</a>(descriptor.m_BeginMask, numDimensions);</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; int32_t end_mask = <a class="code" href="namespacearmnn.html#ad69ffa576a596b9eb20ab6a41420c541">ConvertMaskToACLFormat</a>(descriptor.m_EndMask, numDimensions);</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; int32_t shrink_axis_mask = <a class="code" href="namespacearmnn.html#ad69ffa576a596b9eb20ab6a41420c541">ConvertMaskToACLFormat</a>(descriptor.m_ShrinkAxisMask, numDimensions);</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <span class="keywordflow">return</span> arm_compute::CLStridedSlice::validate(&amp;aclInputInfo,</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; &amp;aclOutputInfo,</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; starts,</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; ends,</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; strides,</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; begin_mask,</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; end_mask,</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; shrink_axis_mask);</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a6d4bdf4368a1422943f8f2b1740ec491"><div class="ttname"><a href="namespacearmnn.html#a6d4bdf4368a1422943f8f2b1740ec491">armnn::SetClStridedSliceData</a></div><div class="ttdeci">auto SetClStridedSliceData(const std::vector&lt; int &gt; &amp;m_begin, const std::vector&lt; int &gt; &amp;m_end, const std::vector&lt; int &gt; &amp;m_stride)</div><div class="ttdef"><b>Definition:</b> <a href="_cl_workload_utils_8hpp_source.html#l00045">ClWorkloadUtils.hpp:45</a></div></div>
<div class="ttc" id="namespacearmnn_html_ac6e86c1def7f674d3c4cb7f577874aa6"><div class="ttname"><a href="namespacearmnn.html#ac6e86c1def7f674d3c4cb7f577874aa6">armnn::Coordinates</a></div><div class="ttdeci">std::array&lt; unsigned int, MaxNumOfTensorDimensions &gt; Coordinates</div><div class="ttdef"><b>Definition:</b> <a href="_internal_types_8hpp_source.html#l00079">InternalTypes.hpp:79</a></div></div>
<div class="ttc" id="namespacearmnn_html_ad69ffa576a596b9eb20ab6a41420c541"><div class="ttname"><a href="namespacearmnn.html#ad69ffa576a596b9eb20ab6a41420c541">armnn::ConvertMaskToACLFormat</a></div><div class="ttdeci">int32_t ConvertMaskToACLFormat(int32_t mask, int32_t numDim)</div><div class="ttdef"><b>Definition:</b> <a href="_workload_utils_8cpp_source.html#l00192">WorkloadUtils.cpp:192</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a3bbbf958387c788549b0d8481232875f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a3bbbf958387c788549b0d8481232875f">&#9670;&nbsp;</a></span>ClSubtractionValidate()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">arm_compute::Status ClSubtractionValidate </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>input0</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>input1</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>output</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_cl_subtraction_workload_8cpp_source.html#l00038">38</a> of file <a class="el" href="_cl_subtraction_workload_8cpp_source.html">ClSubtractionWorkload.cpp</a>.</p>
<p class="reference">Referenced by <a class="el" href="_cl_layer_support_8cpp_source.html#l00794">ClLayerSupport::IsSubtractionSupported()</a>.</p>
<div class="fragment"><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;{</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInput0Info = BuildArmComputeTensorInfo(input0);</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInput1Info = BuildArmComputeTensorInfo(input1);</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclOutputInfo = BuildArmComputeTensorInfo(output);</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; <span class="keyword">const</span> <a class="code" href="namespacearmnn.html#a67a0db04d321a74b7e7fcfd3f1a3f70b">arm_compute::Status</a> aclStatus = arm_compute::CLArithmeticSubtraction::validate(&amp;aclInput0Info,</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; &amp;aclInput1Info,</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; &amp;aclOutputInfo,</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; g_AclConvertPolicy);</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <span class="keywordflow">return</span> aclStatus;</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a67a0db04d321a74b7e7fcfd3f1a3f70b"><div class="ttname"><a href="namespacearmnn.html#a67a0db04d321a74b7e7fcfd3f1a3f70b">armnn::Status</a></div><div class="ttdeci">Status</div><div class="ttdef"><b>Definition:</b> <a href="_types_8hpp_source.html#l00026">Types.hpp:26</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="ac86fc56b9a27576bfe930a7012a402d5"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ac86fc56b9a27576bfe930a7012a402d5">&#9670;&nbsp;</a></span>ClTensorHandleFactoryId()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">constexpr const char* armnn::ClTensorHandleFactoryId </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_cl_tensor_handle_factory_8hpp_source.html#l00015">15</a> of file <a class="el" href="_cl_tensor_handle_factory_8hpp_source.html">ClTensorHandleFactory.hpp</a>.</p>
<p class="reference">Referenced by <a class="el" href="_cl_tensor_handle_factory_8cpp_source.html#l00082">ClTensorHandleFactory::GetIdStatic()</a>.</p>
<div class="fragment"><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;{ <span class="keywordflow">return</span> <span class="stringliteral">&quot;Arm/Cl/TensorHandleFactory&quot;</span>; }</div></div><!-- fragment -->
</div>
</div>
<a id="a719ea81939d6a25f8636b52c59165d66"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a719ea81939d6a25f8636b52c59165d66">&#9670;&nbsp;</a></span>ClTransposeConvolution2dWorkloadValidate()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">arm_compute::Status ClTransposeConvolution2dWorkloadValidate </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>input</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>output</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="structarmnn_1_1_transpose_convolution2d_descriptor.html">TransposeConvolution2dDescriptor</a> &amp;&#160;</td>
<td class="paramname"><em>descriptor</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>weights</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_optional.html">Optional</a>&lt; <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &gt; &amp;&#160;</td>
<td class="paramname"><em>biases</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_cl_transpose_convolution2d_workload_8cpp_source.html#l00026">26</a> of file <a class="el" href="_cl_transpose_convolution2d_workload_8cpp_source.html">ClTransposeConvolution2dWorkload.cpp</a>.</p>
<p class="reference">Referenced by <a class="el" href="_cl_layer_support_8cpp_source.html#l00806">ClLayerSupport::IsTransposeConvolution2dSupported()</a>.</p>
<div class="fragment"><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;{</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; arm_compute::TensorInfo aclInputInfo = BuildArmComputeTensorInfo(input, descriptor.m_DataLayout);</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; arm_compute::TensorInfo aclOutputInfo = BuildArmComputeTensorInfo(output, descriptor.m_DataLayout);</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; arm_compute::TensorInfo aclWeightsInfo = BuildArmComputeTensorInfo(weights, descriptor.m_DataLayout);</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; arm_compute::TensorInfo aclBiasesInfo;</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; arm_compute::TensorInfo *optionalAclBiasesInfo = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; <span class="keywordflow">if</span> (descriptor.m_BiasEnabled)</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; {</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; BOOST_ASSERT(biases.has_value());</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; aclBiasesInfo = BuildArmComputeTensorInfo(biases.value(), descriptor.m_DataLayout);</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; optionalAclBiasesInfo = &amp;aclBiasesInfo;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; }</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; arm_compute::PadStrideInfo padStrideInfo = BuildArmComputePadStrideInfo(descriptor);</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; <span class="keywordflow">return</span> arm_compute::CLDeconvolutionLayer::validate(&amp;aclInputInfo,</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; &amp;aclWeightsInfo,</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; optionalAclBiasesInfo,</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; &amp;aclOutputInfo,</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; padStrideInfo);</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;}</div></div><!-- fragment -->
</div>
</div>
<a id="a5d94c2125c725df5b619d16db9d4a8e9"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a5d94c2125c725df5b619d16db9d4a8e9">&#9670;&nbsp;</a></span>Combine() <span class="overload">[1/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="namespacearmnn.html#a5b05f3b7208ec7cea3338e30057c0bac">MemorySourceFlags</a> armnn::Combine </td>
<td>(</td>
<td class="paramtype">Arg&#160;</td>
<td class="paramname"><em>sourceA</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">Arg&#160;</td>
<td class="paramname"><em>sourceB</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_memory_sources_8hpp_source.html#l00036">36</a> of file <a class="el" href="_memory_sources_8hpp_source.html">MemorySources.hpp</a>.</p>
<p class="reference">Referenced by <a class="el" href="_memory_sources_8hpp_source.html#l00042">Combine()</a>.</p>
<div class="fragment"><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;{</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; <span class="keywordflow">return</span> <span class="keyword">static_cast&lt;</span><a class="code" href="namespacearmnn.html#a5b05f3b7208ec7cea3338e30057c0bac">MemorySourceFlags</a><span class="keyword">&gt;</span>(sourceA) | static_cast&lt;MemorySourceFlags&gt;(sourceB);</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a5b05f3b7208ec7cea3338e30057c0bac"><div class="ttname"><a href="namespacearmnn.html#a5b05f3b7208ec7cea3338e30057c0bac">armnn::MemorySourceFlags</a></div><div class="ttdeci">unsigned int MemorySourceFlags</div><div class="ttdef"><b>Definition:</b> <a href="_memory_sources_8hpp_source.html#l00021">MemorySources.hpp:21</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="ae91e1849e95350c8e50912a217999eac"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae91e1849e95350c8e50912a217999eac">&#9670;&nbsp;</a></span>Combine() <span class="overload">[2/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="namespacearmnn.html#a5b05f3b7208ec7cea3338e30057c0bac">MemorySourceFlags</a> armnn::Combine </td>
<td>(</td>
<td class="paramtype">Arg&#160;</td>
<td class="paramname"><em>source</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">Args...&#160;</td>
<td class="paramname"><em>rest</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_memory_sources_8hpp_source.html#l00042">42</a> of file <a class="el" href="_memory_sources_8hpp_source.html">MemorySources.hpp</a>.</p>
<p class="reference">References <a class="el" href="_memory_sources_8hpp_source.html#l00036">Combine()</a>.</p>
<div class="fragment"><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;{</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <span class="keywordflow">return</span> <span class="keyword">static_cast&lt;</span><a class="code" href="namespacearmnn.html#a5b05f3b7208ec7cea3338e30057c0bac">MemorySourceFlags</a><span class="keyword">&gt;</span>(source) | <a class="code" href="namespacearmnn.html#ae91e1849e95350c8e50912a217999eac">Combine</a>(rest...);</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a5b05f3b7208ec7cea3338e30057c0bac"><div class="ttname"><a href="namespacearmnn.html#a5b05f3b7208ec7cea3338e30057c0bac">armnn::MemorySourceFlags</a></div><div class="ttdeci">unsigned int MemorySourceFlags</div><div class="ttdef"><b>Definition:</b> <a href="_memory_sources_8hpp_source.html#l00021">MemorySources.hpp:21</a></div></div>
<div class="ttc" id="namespacearmnn_html_ae91e1849e95350c8e50912a217999eac"><div class="ttname"><a href="namespacearmnn.html#ae91e1849e95350c8e50912a217999eac">armnn::Combine</a></div><div class="ttdeci">MemorySourceFlags Combine(Arg source, Args... rest)</div><div class="ttdef"><b>Definition:</b> <a href="_memory_sources_8hpp_source.html#l00042">MemorySources.hpp:42</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a238a74871f634b778176e5dc8391888a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a238a74871f634b778176e5dc8391888a">&#9670;&nbsp;</a></span>CompatibleTypes()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">bool armnn::CompatibleTypes </td>
<td>(</td>
<td class="paramtype"><a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a>&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_compatible_types_8hpp_source.html#l00015">15</a> of file <a class="el" href="_compatible_types_8hpp_source.html">CompatibleTypes.hpp</a>.</p>
<div class="fragment"><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;{</div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;}</div></div><!-- fragment -->
</div>
</div>
<a id="a7296af8a86f22ef7f144dc02c4c94324"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a7296af8a86f22ef7f144dc02c4c94324">&#9670;&nbsp;</a></span>CompatibleTypes< float >()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">bool <a class="el" href="namespacearmnn.html#a238a74871f634b778176e5dc8391888a">armnn::CompatibleTypes</a>&lt; float &gt; </td>
<td>(</td>
<td class="paramtype"><a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a>&#160;</td>
<td class="paramname"><em>dataType</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_compatible_types_8hpp_source.html#l00021">21</a> of file <a class="el" href="_compatible_types_8hpp_source.html">CompatibleTypes.hpp</a>.</p>
<p class="reference">References <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">Float32</a>.</p>
<div class="fragment"><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;{</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160; <span class="keywordflow">return</span> dataType == DataType::Float32;</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;}</div></div><!-- fragment -->
</div>
</div>
<a id="a7b224e4c135fa1fdb3e54dfe945e07f8"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a7b224e4c135fa1fdb3e54dfe945e07f8">&#9670;&nbsp;</a></span>CompatibleTypes< Half >()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">bool <a class="el" href="namespacearmnn.html#a238a74871f634b778176e5dc8391888a">armnn::CompatibleTypes</a>&lt; <a class="el" href="namespacearmnn.html#a0f38fa92b2468d5378258a2b074c1a31">Half</a> &gt; </td>
<td>(</td>
<td class="paramtype"><a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a>&#160;</td>
<td class="paramname"><em>dataType</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_compatible_types_8hpp_source.html#l00027">27</a> of file <a class="el" href="_compatible_types_8hpp_source.html">CompatibleTypes.hpp</a>.</p>
<p class="reference">References <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a26e6ed77470c6f2f830ecf874e6c0d55">Float16</a>.</p>
<div class="fragment"><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;{</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; <span class="keywordflow">return</span> dataType == DataType::Float16;</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;}</div></div><!-- fragment -->
</div>
</div>
<a id="a6a0a86fe227d22c1cf7381798ad8550f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a6a0a86fe227d22c1cf7381798ad8550f">&#9670;&nbsp;</a></span>CompatibleTypes< int16_t >()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">bool <a class="el" href="namespacearmnn.html#a238a74871f634b778176e5dc8391888a">armnn::CompatibleTypes</a>&lt; int16_t &gt; </td>
<td>(</td>
<td class="paramtype"><a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a>&#160;</td>
<td class="paramname"><em>dataType</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_compatible_types_8hpp_source.html#l00049">49</a> of file <a class="el" href="_compatible_types_8hpp_source.html">CompatibleTypes.hpp</a>.</p>
<p class="reference">References <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7">QSymmS16</a>.</p>
<div class="fragment"><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;{</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <span class="keywordflow">return</span> dataType == DataType::QSymmS16;</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160;}</div></div><!-- fragment -->
</div>
</div>
<a id="a000bb59f20fa937e2acff1c2aaba7944"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a000bb59f20fa937e2acff1c2aaba7944">&#9670;&nbsp;</a></span>CompatibleTypes< int32_t >()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">bool <a class="el" href="namespacearmnn.html#a238a74871f634b778176e5dc8391888a">armnn::CompatibleTypes</a>&lt; int32_t &gt; </td>
<td>(</td>
<td class="paramtype"><a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a>&#160;</td>
<td class="paramname"><em>dataType</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_compatible_types_8hpp_source.html#l00055">55</a> of file <a class="el" href="_compatible_types_8hpp_source.html">CompatibleTypes.hpp</a>.</p>
<p class="reference">References <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6accedffbc6e5308e33d3843e8bdc0dad7">Signed32</a>.</p>
<div class="fragment"><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160;{</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; <span class="keywordflow">return</span> dataType == DataType::Signed32;</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160;}</div></div><!-- fragment -->
</div>
</div>
<a id="a2bcd446605a7ee354be1038983358e04"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a2bcd446605a7ee354be1038983358e04">&#9670;&nbsp;</a></span>CompatibleTypes< int8_t >()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">bool <a class="el" href="namespacearmnn.html#a238a74871f634b778176e5dc8391888a">armnn::CompatibleTypes</a>&lt; int8_t &gt; </td>
<td>(</td>
<td class="paramtype"><a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a>&#160;</td>
<td class="paramname"><em>dataType</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_compatible_types_8hpp_source.html#l00039">39</a> of file <a class="el" href="_compatible_types_8hpp_source.html">CompatibleTypes.hpp</a>.</p>
<p class="reference">References <a class="el" href="_deprecated_8hpp_source.html#l00033">ARMNN_NO_DEPRECATE_WARN_BEGIN</a>, <a class="el" href="_deprecated_8hpp_source.html#l00034">ARMNN_NO_DEPRECATE_WARN_END</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a9d02ea768c081d4bdb2b7cab0b3f510d">QAsymmS8</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a9945327825b115e93a3b89f4302e76db">QSymmS8</a>, and <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a34346ec9593088efe3a29c0dad92166d">QuantizedSymm8PerAxis</a>.</p>
<div class="fragment"><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;{</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; <a class="code" href="_deprecated_8hpp.html#ab66a241a0ed3ee89c866e777b035d0ed">ARMNN_NO_DEPRECATE_WARN_BEGIN</a></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; <span class="keywordflow">return</span> dataType == DataType::QSymmS8</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; || dataType == DataType::QuantizedSymm8PerAxis</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; || dataType == DataType::QAsymmS8;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <a class="code" href="_deprecated_8hpp.html#ad762b11b48e5c1d1c1743f529485728a">ARMNN_NO_DEPRECATE_WARN_END</a></div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;}</div><div class="ttc" id="_deprecated_8hpp_html_ab66a241a0ed3ee89c866e777b035d0ed"><div class="ttname"><a href="_deprecated_8hpp.html#ab66a241a0ed3ee89c866e777b035d0ed">ARMNN_NO_DEPRECATE_WARN_BEGIN</a></div><div class="ttdeci">#define ARMNN_NO_DEPRECATE_WARN_BEGIN</div><div class="ttdef"><b>Definition:</b> <a href="_deprecated_8hpp_source.html#l00033">Deprecated.hpp:33</a></div></div>
<div class="ttc" id="_deprecated_8hpp_html_ad762b11b48e5c1d1c1743f529485728a"><div class="ttname"><a href="_deprecated_8hpp.html#ad762b11b48e5c1d1c1743f529485728a">ARMNN_NO_DEPRECATE_WARN_END</a></div><div class="ttdeci">#define ARMNN_NO_DEPRECATE_WARN_END</div><div class="ttdef"><b>Definition:</b> <a href="_deprecated_8hpp_source.html#l00034">Deprecated.hpp:34</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="ad23bcbfd1876f1ae11c926d0e3e8c3e5"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad23bcbfd1876f1ae11c926d0e3e8c3e5">&#9670;&nbsp;</a></span>CompatibleTypes< uint8_t >()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">bool <a class="el" href="namespacearmnn.html#a238a74871f634b778176e5dc8391888a">armnn::CompatibleTypes</a>&lt; uint8_t &gt; </td>
<td>(</td>
<td class="paramtype"><a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a>&#160;</td>
<td class="paramname"><em>dataType</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_compatible_types_8hpp_source.html#l00033">33</a> of file <a class="el" href="_compatible_types_8hpp_source.html">CompatibleTypes.hpp</a>.</p>
<p class="reference">References <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a27226c864bac7454a8504f8edb15d95b">Boolean</a>, and <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a0a3f57c876f5a230244c38e1453a8a6e">QAsymmU8</a>.</p>
<div class="fragment"><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;{</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; <span class="keywordflow">return</span> dataType == DataType::Boolean || dataType == DataType::QAsymmU8;</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;}</div></div><!-- fragment -->
</div>
</div>
<a id="a6fff4b4b1b5d4d37c9cf53d0e31c05dd"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a6fff4b4b1b5d4d37c9cf53d0e31c05dd">&#9670;&nbsp;</a></span>CompleteLeakyReluNetwork()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void armnn::CompleteLeakyReluNetwork </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classarmnn_1_1_i_network.html">INetwork</a> *&#160;</td>
<td class="paramname"><em>network</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classarmnn_1_1_i_connectable_layer.html">IConnectableLayer</a> *&#160;</td>
<td class="paramname"><em>activation</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classarmnn_1_1_i_connectable_layer.html">IConnectableLayer</a> *&#160;</td>
<td class="paramname"><em>layerUnderTest</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>info</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_quantizer_test_8cpp_source.html#l01495">1495</a> of file <a class="el" href="_quantizer_test_8cpp_source.html">QuantizerTest.cpp</a>.</p>
<p class="reference">References <a class="el" href="classarmnn_1_1_i_network.html#ad8582fba2ebeb65da43a56bc22d4f88b">INetwork::AddOutputLayer()</a>, <a class="el" href="classarmnn_1_1_i_output_slot.html#ac1835f8756a9f03c02fcf9664e3a0fce">IOutputSlot::Connect()</a>, <a class="el" href="classarmnn_1_1_i_connectable_layer.html#a6ec9e0eb66d7d6a01240492a0b18104c">IConnectableLayer::GetInputSlot()</a>, <a class="el" href="classarmnn_1_1_i_connectable_layer.html#a80ac4eda2e7f2757ec9dd96fc96dbd16">IConnectableLayer::GetOutputSlot()</a>, and <a class="el" href="classarmnn_1_1_i_output_slot.html#a5ee4a6c9a2481245487b1b1a70d20fd0">IOutputSlot::SetTensorInfo()</a>.</p>
<p class="reference">Referenced by <a class="el" href="_quantizer_test_8cpp_source.html#l01511">BOOST_AUTO_TEST_CASE()</a>.</p>
<div class="fragment"><div class="line"><a name="l01499"></a><span class="lineno"> 1499</span>&#160;{</div><div class="line"><a name="l01500"></a><span class="lineno"> 1500</span>&#160; <span class="comment">// Add the output Layer</span></div><div class="line"><a name="l01501"></a><span class="lineno"> 1501</span>&#160; IConnectableLayer* output = network-&gt;AddOutputLayer(3);</div><div class="line"><a name="l01502"></a><span class="lineno"> 1502</span>&#160;</div><div class="line"><a name="l01503"></a><span class="lineno"> 1503</span>&#160; <span class="comment">// Establish connections</span></div><div class="line"><a name="l01504"></a><span class="lineno"> 1504</span>&#160; activation-&gt;GetOutputSlot(0).Connect(layerUnderTest-&gt;GetInputSlot(0));</div><div class="line"><a name="l01505"></a><span class="lineno"> 1505</span>&#160; layerUnderTest-&gt;GetOutputSlot(0).Connect(output-&gt;GetInputSlot(0));</div><div class="line"><a name="l01506"></a><span class="lineno"> 1506</span>&#160;</div><div class="line"><a name="l01507"></a><span class="lineno"> 1507</span>&#160; <span class="comment">//Set TensorInfo</span></div><div class="line"><a name="l01508"></a><span class="lineno"> 1508</span>&#160; layerUnderTest-&gt;GetOutputSlot(0).SetTensorInfo(info);</div><div class="line"><a name="l01509"></a><span class="lineno"> 1509</span>&#160;}</div></div><!-- fragment -->
</div>
</div>
<a id="aa70ebe7b7898fe69ce24db803caa373e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa70ebe7b7898fe69ce24db803caa373e">&#9670;&nbsp;</a></span>ComputeSoftmaxAclAxis()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">unsigned int armnn::ComputeSoftmaxAclAxis </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="structarmnn_1_1_softmax_descriptor.html">SoftmaxDescriptor</a> &amp;&#160;</td>
<td class="paramname"><em>softmaxDesc</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">armnn::TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>tensor</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_arm_compute_utils_8hpp_source.html#l00138">138</a> of file <a class="el" href="_arm_compute_utils_8hpp_source.html">ArmComputeUtils.hpp</a>.</p>
<p class="reference">References <a class="el" href="_tensor_8hpp_source.html#l00092">TensorInfo::GetNumDimensions()</a>, and <a class="el" href="_descriptors_8hpp_source.html#l00138">SoftmaxDescriptor::m_Axis</a>.</p>
<p class="reference">Referenced by <a class="el" href="_cl_softmax_float_workload_8cpp_source.html#l00016">ClSoftmaxFloatWorkload::ClSoftmaxFloatWorkload()</a>, <a class="el" href="_cl_softmax_uint8_workload_8cpp_source.html#l00016">ClSoftmaxUint8Workload::ClSoftmaxUint8Workload()</a>, <a class="el" href="_neon_softmax_float_workload_8cpp_source.html#l00016">NeonSoftmaxFloatWorkload::NeonSoftmaxFloatWorkload()</a>, and <a class="el" href="_neon_softmax_uint8_workload_8cpp_source.html#l00016">NeonSoftmaxUint8Workload::NeonSoftmaxUint8Workload()</a>.</p>
<div class="fragment"><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160;{</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; <span class="comment">// Detect the Android default value of -1 and return the ACL default value of 1.</span></div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; <span class="keywordflow">if</span> (softmaxDesc.m_Axis == -1)</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; {</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; <span class="keywordflow">return</span> 1;</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; }</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160;</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> dim = tensor.<a class="code" href="classarmnn_1_1_tensor_info.html#a157e27d41e9f6b21f0d3c025fa47dc24">GetNumDimensions</a>();</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160;</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; BOOST_ASSERT(dim != 0);</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160;</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; <span class="comment">// Currently ArmNN support axis 1.</span></div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; <span class="keywordflow">return</span> dim - 1;</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160;}</div><div class="ttc" id="classarmnn_1_1_tensor_info_html_a157e27d41e9f6b21f0d3c025fa47dc24"><div class="ttname"><a href="classarmnn_1_1_tensor_info.html#a157e27d41e9f6b21f0d3c025fa47dc24">armnn::TensorInfo::GetNumDimensions</a></div><div class="ttdeci">unsigned int GetNumDimensions() const</div><div class="ttdef"><b>Definition:</b> <a href="_tensor_8hpp_source.html#l00092">Tensor.hpp:92</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a8cbabc875597b3bed0ccdc0adb289fde"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a8cbabc875597b3bed0ccdc0adb289fde">&#9670;&nbsp;</a></span>ComputeSplitAxis()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">std::set&lt;unsigned int&gt; armnn::ComputeSplitAxis </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="namespacearmnn.html#a60291543fe872b795e71e05bcd835fd1">armnn::SplitterDescriptor</a> &amp;&#160;</td>
<td class="paramname"><em>desc</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_shape.html">TensorShape</a> &amp;&#160;</td>
<td class="paramname"><em>input</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_arm_compute_utils_8hpp_source.html#l00154">154</a> of file <a class="el" href="_arm_compute_utils_8hpp_source.html">ArmComputeUtils.hpp</a>.</p>
<p class="reference">References <a class="el" href="_descriptors_8cpp_source.html#l00292">ViewsDescriptor::GetNumDimensions()</a>, <a class="el" href="_descriptors_8cpp_source.html#l00287">ViewsDescriptor::GetNumViews()</a>, and <a class="el" href="_descriptors_8cpp_source.html#l00332">ViewsDescriptor::GetViewSizes()</a>.</p>
<p class="reference">Referenced by <a class="el" href="_cl_splitter_workload_8cpp_source.html#l00055">ClSplitterWorkload::ClSplitterWorkload()</a>, <a class="el" href="_cl_layer_support_8cpp_source.html#l00737">ClLayerSupport::IsSplitterSupported()</a>, <a class="el" href="_neon_layer_support_8cpp_source.html#l00721">NeonLayerSupport::IsSplitterSupported()</a>, and <a class="el" href="_neon_splitter_workload_8cpp_source.html#l00055">NeonSplitterWorkload::NeonSplitterWorkload()</a>.</p>
<div class="fragment"><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160;{</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> numSplit = desc.<a class="code" href="structarmnn_1_1_views_descriptor.html#a35546e7b56e6e972a495b48748478ede">GetNumViews</a>();</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> numDimensions = desc.<a class="code" href="structarmnn_1_1_views_descriptor.html#a78e8266be865fdd92cadd04d6e25ae1f">GetNumDimensions</a>();</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; std::set&lt;unsigned int&gt; splitAxis;</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160;</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i &lt; numSplit; ++i)</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; {</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> dimIdx = 0; dimIdx &lt; numDimensions; ++dimIdx)</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; {</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; <span class="keywordflow">if</span> (desc.<a class="code" href="structarmnn_1_1_views_descriptor.html#a3c1ab47a0a319413b3a4b5757ed5b80b">GetViewSizes</a>(i)[dimIdx] != input[dimIdx])</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; {</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160; splitAxis.insert(dimIdx);</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160; }</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160; }</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160; }</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; <span class="keywordflow">return</span> splitAxis;</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160;}</div><div class="ttc" id="structarmnn_1_1_views_descriptor_html_a78e8266be865fdd92cadd04d6e25ae1f"><div class="ttname"><a href="structarmnn_1_1_views_descriptor.html#a78e8266be865fdd92cadd04d6e25ae1f">armnn::ViewsDescriptor::GetNumDimensions</a></div><div class="ttdeci">uint32_t GetNumDimensions() const</div><div class="ttdoc">Get the number of dimensions. </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8cpp_source.html#l00292">Descriptors.cpp:292</a></div></div>
<div class="ttc" id="structarmnn_1_1_views_descriptor_html_a3c1ab47a0a319413b3a4b5757ed5b80b"><div class="ttname"><a href="structarmnn_1_1_views_descriptor.html#a3c1ab47a0a319413b3a4b5757ed5b80b">armnn::ViewsDescriptor::GetViewSizes</a></div><div class="ttdeci">const uint32_t * GetViewSizes(uint32_t idx) const</div><div class="ttdoc">Get the view sizes at the int value idx. </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8cpp_source.html#l00332">Descriptors.cpp:332</a></div></div>
<div class="ttc" id="structarmnn_1_1_views_descriptor_html_a35546e7b56e6e972a495b48748478ede"><div class="ttname"><a href="structarmnn_1_1_views_descriptor.html#a35546e7b56e6e972a495b48748478ede">armnn::ViewsDescriptor::GetNumViews</a></div><div class="ttdeci">uint32_t GetNumViews() const</div><div class="ttdoc">Get the number of views. </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8cpp_source.html#l00287">Descriptors.cpp:287</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a1deafe1b2777bcaadefe2371b3ebbb27"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a1deafe1b2777bcaadefe2371b3ebbb27">&#9670;&nbsp;</a></span>Concatenate()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void Concatenate </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="structarmnn_1_1_concat_queue_descriptor.html">ConcatQueueDescriptor</a> &amp;&#160;</td>
<td class="paramname"><em>data</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_concatenate_8cpp_source.html#l00014">14</a> of file <a class="el" href="_concatenate_8cpp_source.html">Concatenate.cpp</a>.</p>
<p class="reference">References <a class="el" href="_tensor_8hpp_source.html#l00092">TensorInfo::GetNumDimensions()</a>, <a class="el" href="_tensor_8hpp_source.html#l00088">TensorInfo::GetShape()</a>, <a class="el" href="_ref_workload_utils_8hpp_source.html#l00025">GetTensorInfo()</a>, <a class="el" href="_workload_data_8hpp_source.html#l00030">QueueDescriptor::m_Inputs</a>, <a class="el" href="_workload_data_8hpp_source.html#l00110">ConcatQueueDescriptor::ViewOrigin::m_Origin</a>, <a class="el" href="_workload_data_8hpp_source.html#l00031">QueueDescriptor::m_Outputs</a>, <a class="el" href="_workload_data_8hpp_source.html#l00115">ConcatQueueDescriptor::m_ViewOrigins</a>, and <a class="el" href="_types_8hpp_source.html#l00018">MaxNumOfTensorDimensions</a>.</p>
<p class="reference">Referenced by <a class="el" href="_ref_concat_workload_8cpp_source.html#l00015">RefConcatWorkload::Execute()</a>.</p>
<div class="fragment"><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;{</div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160; <span class="keyword">const</span> TensorInfo&amp; outputInfo0 = <a class="code" href="namespacearmnn_utils.html#acee63cd08da47910fc166a1990988fa8">GetTensorInfo</a>(data.m_Outputs[0]);</div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;</div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160; std::unique_ptr&lt;Encoder&lt;float&gt;&gt; encoderPtr = MakeEncoder&lt;float&gt;(outputInfo0, data.m_Outputs[0]-&gt;Map());</div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160; Encoder&lt;float&gt;&amp; encoder = *encoderPtr;</div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> index = 0 ; index &lt; outputInfo0.GetNumElements(); ++index)</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160; {</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> indices[<a class="code" href="namespacearmnn.html#abdcd184ed3bd648bb31d385040cafd5d">MaxNumOfTensorDimensions</a>] = { 0 };</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> indexRemainder = index;</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> dimensionStride = outputInfo0.GetNumElements();</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i &lt; outputInfo0.GetNumDimensions(); i++)</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; {</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; dimensionStride /= outputInfo0.GetShape()[i];</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; indices[i] = indexRemainder / dimensionStride; <span class="comment">// Use integer division to round down.</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; indexRemainder -= indices[i] * dimensionStride;</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; }</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> viewIdx = 0; viewIdx &lt; data.m_ViewOrigins.size(); ++viewIdx)</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; {</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; ConcatQueueDescriptor::ViewOrigin <span class="keyword">const</span>&amp; view = data.m_ViewOrigins[viewIdx];</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; <span class="comment">//Split view extents are defined by the size of (the corresponding) input tensor.</span></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; <span class="keyword">const</span> TensorInfo&amp; inputInfo = <a class="code" href="namespacearmnn_utils.html#acee63cd08da47910fc166a1990988fa8">GetTensorInfo</a>(data.m_Inputs[viewIdx]);</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; BOOST_ASSERT(inputInfo.GetNumDimensions() == outputInfo0.GetNumDimensions());</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; <span class="comment">// Check all dimensions to see if this element is inside the given input view.</span></div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <span class="keywordtype">bool</span> insideView = <span class="keyword">true</span>;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i &lt; inputInfo.GetNumDimensions(); i++)</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; {</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; <span class="keywordflow">if</span> (indices[i] &lt; view.m_Origin[i])</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; {</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; insideView = <span class="keyword">false</span>;</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; }</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <span class="keywordflow">if</span> (indices[i] &gt;= view.m_Origin[i] + inputInfo.GetShape()[i])</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; {</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; insideView = <span class="keyword">false</span>;</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; }</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; }</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160;</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; <span class="keywordflow">if</span> (insideView)</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; {</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; std::unique_ptr&lt;Decoder&lt;float&gt;&gt; decoderPtr =</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; MakeDecoder&lt;float&gt;(inputInfo, data.m_Inputs[viewIdx]-&gt;Map());</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; Decoder&lt;float&gt;&amp; decoder = *decoderPtr;</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> inIndex = 0;</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> dimensionStride = 1;</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160;</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = inputInfo.GetNumDimensions(); i-- &gt; 0;)</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; {</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; inIndex += dimensionStride * (indices[i] - view.m_Origin[i]);</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; dimensionStride *= inputInfo.GetShape()[i];</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; }</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; decoder += inIndex;</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; encoder.Set(decoder.Get());</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160;</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; <span class="comment">//What should we do if input views overlap on the output tensor?</span></div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; <span class="comment">//We could error, take the average, or shm else...</span></div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; <span class="comment">//For now just stop after finding first view (input) that matches.</span></div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; }</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; }</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; ++encoder;</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; }</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160;}</div><div class="ttc" id="namespacearmnn_utils_html_acee63cd08da47910fc166a1990988fa8"><div class="ttname"><a href="namespacearmnn_utils.html#acee63cd08da47910fc166a1990988fa8">armnnUtils::GetTensorInfo</a></div><div class="ttdeci">armnn::TensorInfo GetTensorInfo(unsigned int numberOfBatches, unsigned int numberOfChannels, unsigned int height, unsigned int width, const armnn::DataLayout dataLayout, const armnn::DataType dataType)</div><div class="ttdef"><b>Definition:</b> <a href="_tensor_utils_8cpp_source.html#l00038">TensorUtils.cpp:38</a></div></div>
<div class="ttc" id="namespacearmnn_html_abdcd184ed3bd648bb31d385040cafd5d"><div class="ttname"><a href="namespacearmnn.html#abdcd184ed3bd648bb31d385040cafd5d">armnn::MaxNumOfTensorDimensions</a></div><div class="ttdeci">constexpr unsigned int MaxNumOfTensorDimensions</div><div class="ttdef"><b>Definition:</b> <a href="_types_8hpp_source.html#l00018">Types.hpp:18</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="ae4ab3bf0697ad13316a6bcba0a8fade5"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae4ab3bf0697ad13316a6bcba0a8fade5">&#9670;&nbsp;</a></span>ConditionalThrow()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void armnn::ConditionalThrow </td>
<td>(</td>
<td class="paramtype">bool&#160;</td>
<td class="paramname"><em>condition</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const std::string &amp;&#160;</td>
<td class="paramname"><em>message</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_exceptions_8hpp_source.html#l00141">141</a> of file <a class="el" href="_exceptions_8hpp_source.html">Exceptions.hpp</a>.</p>
<div class="fragment"><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160;{</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; <span class="keywordflow">if</span> (!condition)</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; {</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; <span class="keywordflow">throw</span> ExceptionType(message);</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; }</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160;}</div></div><!-- fragment -->
</div>
</div>
<a id="ae57b7f9e2cb7080bf10b28d1f72b558e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae57b7f9e2cb7080bf10b28d1f72b558e">&#9670;&nbsp;</a></span>ConditionalThrowIfNotEqual()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void armnn::ConditionalThrowIfNotEqual </td>
<td>(</td>
<td class="paramtype">const std::string &amp;&#160;</td>
<td class="paramname"><em>message</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const ComparedType &amp;&#160;</td>
<td class="paramname"><em>leftHandSide</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const ComparedType &amp;&#160;</td>
<td class="paramname"><em>rightHandSide</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>ComparedType must support: operator==(const ComparedType&amp;) operator&lt;&lt;(ostream&amp;, const ComparedType&amp;) </p>
<p class="definition">Definition at line <a class="el" href="_exceptions_8hpp_source.html#l00155">155</a> of file <a class="el" href="_exceptions_8hpp_source.html">Exceptions.hpp</a>.</p>
<div class="fragment"><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160;{</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; <span class="keywordflow">if</span> (!(leftHandSide == rightHandSide))</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; {</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; std::stringstream ss;</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; ss &lt;&lt; message &lt;&lt; <span class="stringliteral">&quot; : &quot;</span> &lt;&lt; leftHandSide &lt;&lt; <span class="stringliteral">&quot; != &quot;</span> &lt;&lt; rightHandSide;</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; <span class="keywordflow">throw</span> ExceptionType(ss.str());</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; }</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160;}</div></div><!-- fragment -->
</div>
</div>
<a id="aa59f7a819c3e29d10ffc41e5c0616872"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa59f7a819c3e29d10ffc41e5c0616872">&#9670;&nbsp;</a></span>ConfigureLogging()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void ConfigureLogging </td>
<td>(</td>
<td class="paramtype">bool&#160;</td>
<td class="paramname"><em>printToStandardOutput</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">bool&#160;</td>
<td class="paramname"><em>printToDebugOutput</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacearmnn.html#a93a3ba385cad27c4774e5fe64c025d3d">LogSeverity</a>&#160;</td>
<td class="paramname"><em>severity</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Configures the logging behaviour of the ARMNN library. printToStandardOutput: Set to true if log messages should be printed to the standard output. printToDebugOutput: Set to true if log messages be printed to a platform-specific debug output (where supported). severity: All log messages that are at this severity level or higher will be printed, others will be ignored. </p>
<p class="definition">Definition at line <a class="el" href="_utils_8cpp_source.html#l00010">10</a> of file <a class="el" href="_utils_8cpp_source.html">Utils.cpp</a>.</p>
<p class="reference">References <a class="el" href="_logging_8cpp_source.html#l00147">SetAllLoggingSinks()</a>, <a class="el" href="_logging_8cpp_source.html#l00029">SetLogFilter()</a>, and <a class="el" href="namespacearmnn.html#a93a3ba385cad27c4774e5fe64c025d3dadd4ec0ac4e58f7c32a01244ae91150b1">Trace</a>.</p>
<p class="reference">Referenced by <a class="el" href="_unit_tests_8hpp_source.html#l00015">ConfigureLoggingTest()</a>, <a class="el" href="_inference_test_8inl_source.html#l00301">armnn::test::InferenceTestMain()</a>, <a class="el" href="_profiling_tests_8hpp_source.html#l00031">LogLevelSwapper::LogLevelSwapper()</a>, <a class="el" href="_armnn_converter_8cpp_source.html#l00359">main()</a>, and <a class="el" href="_profiling_tests_8hpp_source.html#l00036">LogLevelSwapper::~LogLevelSwapper()</a>.</p>
<div class="fragment"><div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;{</div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160; <a class="code" href="namespacearmnn.html#a7f8325a4bc02f2f687ba1968b595ec0a">SetAllLoggingSinks</a>(printToStandardOutput, printToDebugOutput, <span class="keyword">false</span>);</div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160; <a class="code" href="namespacearmnn.html#ac9aad76a34137b6359a867b282ea7cfb">SetLogFilter</a>(severity);</div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_ac9aad76a34137b6359a867b282ea7cfb"><div class="ttname"><a href="namespacearmnn.html#ac9aad76a34137b6359a867b282ea7cfb">armnn::SetLogFilter</a></div><div class="ttdeci">void SetLogFilter(LogSeverity level)</div><div class="ttdef"><b>Definition:</b> <a href="_logging_8cpp_source.html#l00029">Logging.cpp:29</a></div></div>
<div class="ttc" id="namespacearmnn_html_a7f8325a4bc02f2f687ba1968b595ec0a"><div class="ttname"><a href="namespacearmnn.html#a7f8325a4bc02f2f687ba1968b595ec0a">armnn::SetAllLoggingSinks</a></div><div class="ttdeci">void SetAllLoggingSinks(bool standardOut, bool debugOut, bool coloured)</div><div class="ttdef"><b>Definition:</b> <a href="_logging_8cpp_source.html#l00147">Logging.cpp:147</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="ab562537b5c1ef1e6cde9db9f5fa322bd"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab562537b5c1ef1e6cde9db9f5fa322bd">&#9670;&nbsp;</a></span>ConfigureTuner()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void armnn::ConfigureTuner </td>
<td>(</td>
<td class="paramtype">arm_compute::CLTuner &amp;&#160;</td>
<td class="paramname"><em>tuner</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacearmnn.html#a707090747256af276c389e0cf1cb0a9a">TuningLevel</a>&#160;</td>
<td class="paramname"><em>level</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_cl_backend_context_8cpp_source.html#l00131">131</a> of file <a class="el" href="_cl_backend_context_8cpp_source.html">ClBackendContext.cpp</a>.</p>
<p class="reference">References <a class="el" href="namespacearmnn.html#a707090747256af276c389e0cf1cb0a9aafaf34f09ea1e93bfbf591e19dc0dfb9f">Exhaustive</a>, <a class="el" href="namespacearmnn.html#a707090747256af276c389e0cf1cb0a9aa6adf97f83acf6453d4a6a4b1070f3754">None</a>, <a class="el" href="namespacearmnn.html#a707090747256af276c389e0cf1cb0a9aa960b44c579bc2f6818d2daaf9e4c16f0">Normal</a>, and <a class="el" href="namespacearmnn.html#a707090747256af276c389e0cf1cb0a9aab571ef5b2664270d25bea4f4b61ffe68">Rapid</a>.</p>
<p class="reference">Referenced by <a class="el" href="_cl_backend_context_8cpp_source.html#l00153">ClBackendContext::ClBackendContext()</a>.</p>
<div class="fragment"><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160;{</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; tuner.set_tune_new_kernels(<span class="keyword">true</span>); <span class="comment">// Turn on tuning initially.</span></div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160;</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; <span class="keywordflow">switch</span> (level)</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; {</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; <span class="keywordflow">case</span> TuningLevel::Rapid:</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; tuner.set_tuner_mode(arm_compute::CLTunerMode::RAPID);</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; <span class="keywordflow">case</span> TuningLevel::Normal:</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; tuner.set_tuner_mode(arm_compute::CLTunerMode::NORMAL);</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; <span class="keywordflow">case</span> TuningLevel::Exhaustive:</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; tuner.set_tuner_mode(arm_compute::CLTunerMode::EXHAUSTIVE);</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; <span class="keywordflow">case</span> TuningLevel::None:</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; <span class="keywordflow">default</span>:</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; tuner.set_tune_new_kernels(<span class="keyword">false</span>); <span class="comment">// Turn off tuning. Set to &quot;use&quot; only mode.</span></div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; }</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160;}</div></div><!-- fragment -->
</div>
</div>
<a id="ad701d0d29baa4266ab4d33b090aa661c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad701d0d29baa4266ab4d33b090aa661c">&#9670;&nbsp;</a></span>ConvertActivationDescriptorToAclActivationLayerInfo()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">arm_compute::ActivationLayerInfo armnn::ConvertActivationDescriptorToAclActivationLayerInfo </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="structarmnn_1_1_activation_descriptor.html">ActivationDescriptor</a> &amp;&#160;</td>
<td class="paramname"><em>actDesc</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_arm_compute_utils_8hpp_source.html#l00073">73</a> of file <a class="el" href="_arm_compute_utils_8hpp_source.html">ArmComputeUtils.hpp</a>.</p>
<p class="reference">References <a class="el" href="_arm_compute_utils_8hpp_source.html#l00051">ConvertActivationFunctionToAclActivationFunction()</a>, <a class="el" href="_descriptors_8hpp_source.html#l00037">ActivationDescriptor::m_A</a>, <a class="el" href="_descriptors_8hpp_source.html#l00039">ActivationDescriptor::m_B</a>, and <a class="el" href="_descriptors_8hpp_source.html#l00035">ActivationDescriptor::m_Function</a>.</p>
<p class="reference">Referenced by <a class="el" href="_cl_activation_workload_8cpp_source.html#l00032">ClActivationWorkload::ClActivationWorkload()</a>, and <a class="el" href="_neon_activation_workload_8cpp_source.html#l00030">NeonActivationWorkload::NeonActivationWorkload()</a>.</p>
<div class="fragment"><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160;{</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; <span class="keywordflow">return</span> arm_compute::ActivationLayerInfo(<a class="code" href="namespacearmnn.html#afdba36f125621d775d471f0daf613df2">ConvertActivationFunctionToAclActivationFunction</a>(actDesc.m_Function),</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; actDesc.m_A, actDesc.m_B);</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_afdba36f125621d775d471f0daf613df2"><div class="ttname"><a href="namespacearmnn.html#afdba36f125621d775d471f0daf613df2">armnn::ConvertActivationFunctionToAclActivationFunction</a></div><div class="ttdeci">arm_compute::ActivationLayerInfo::ActivationFunction ConvertActivationFunctionToAclActivationFunction(ActivationFunction armnnFunction)</div><div class="ttdef"><b>Definition:</b> <a href="_arm_compute_utils_8hpp_source.html#l00051">ArmComputeUtils.hpp:51</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="afdba36f125621d775d471f0daf613df2"></a>
<h2 class="memtitle"><span class="permalink"><a href="#afdba36f125621d775d471f0daf613df2">&#9670;&nbsp;</a></span>ConvertActivationFunctionToAclActivationFunction()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">arm_compute::ActivationLayerInfo::ActivationFunction armnn::ConvertActivationFunctionToAclActivationFunction </td>
<td>(</td>
<td class="paramtype"><a class="el" href="namespacearmnn.html#a56297e0f7b215eea46c818cb7528d9ea">ActivationFunction</a>&#160;</td>
<td class="paramname"><em>armnnFunction</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_arm_compute_utils_8hpp_source.html#l00051">51</a> of file <a class="el" href="_arm_compute_utils_8hpp_source.html">ArmComputeUtils.hpp</a>.</p>
<p class="reference">References <a class="el" href="namespacearmnn.html#a56297e0f7b215eea46c818cb7528d9eaa1e34af023adeb7d5f484f8eb4b9826b6">Abs</a>, <a class="el" href="namespacearmnn.html#a56297e0f7b215eea46c818cb7528d9eaabc5a0f0d6e7cf7fca73299dcd46c0f0d">BoundedReLu</a>, <a class="el" href="namespacearmnn.html#a56297e0f7b215eea46c818cb7528d9eaacb7667f5ec2f6e8a5943b781ba6c2735">LeakyReLu</a>, <a class="el" href="namespacearmnn.html#a56297e0f7b215eea46c818cb7528d9eaa32a843da6ea40ab3b17a3421ccdf671b">Linear</a>, <a class="el" href="namespacearmnn.html#a56297e0f7b215eea46c818cb7528d9eaa3d90c0a5ab3fcf8e6f6608cb3d3a1559">ReLu</a>, <a class="el" href="namespacearmnn.html#a56297e0f7b215eea46c818cb7528d9eaa21eebb164e4b8b9bcf64fdb4d8d5dff4">Sigmoid</a>, <a class="el" href="namespacearmnn.html#a56297e0f7b215eea46c818cb7528d9eaa6bba7052636d1740303b1b2ef3b53fef">SoftReLu</a>, <a class="el" href="namespacearmnn.html#a56297e0f7b215eea46c818cb7528d9eaaae77f3ad25595e35b327334d89410054">Sqrt</a>, <a class="el" href="namespacearmnn.html#a56297e0f7b215eea46c818cb7528d9eaaceb46ca115d05c51aa5a16a8867c3304">Square</a>, and <a class="el" href="namespacearmnn.html#a56297e0f7b215eea46c818cb7528d9eaa23b68da1de2b77d74da9da2635722a3e">TanH</a>.</p>
<p class="reference">Referenced by <a class="el" href="_arm_compute_utils_8hpp_source.html#l00073">ConvertActivationDescriptorToAclActivationLayerInfo()</a>.</p>
<div class="fragment"><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160;{</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; <span class="keyword">using</span> AclActivationFunction = <a class="code" href="namespacearmnn.html#a56297e0f7b215eea46c818cb7528d9ea">arm_compute::ActivationLayerInfo::ActivationFunction</a>;</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; <span class="keywordflow">switch</span> (armnnFunction)</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; {</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; <span class="keywordflow">case</span> ActivationFunction::Linear: <span class="keywordflow">return</span> AclActivationFunction::LINEAR;</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; <span class="comment">// Arm compute&#39;s &#39;logistic&#39; function is non-parameterized, so it is exactly a sigmoid function.</span></div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; <span class="keywordflow">case</span> ActivationFunction::Sigmoid: <span class="keywordflow">return</span> AclActivationFunction::LOGISTIC;</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; <span class="keywordflow">case</span> ActivationFunction::ReLu: <span class="keywordflow">return</span> AclActivationFunction::RELU;</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; <span class="keywordflow">case</span> ActivationFunction::BoundedReLu: <span class="keywordflow">return</span> AclActivationFunction::LU_BOUNDED_RELU;</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; <span class="keywordflow">case</span> ActivationFunction::SoftReLu: <span class="keywordflow">return</span> AclActivationFunction::SOFT_RELU;</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; <span class="keywordflow">case</span> ActivationFunction::LeakyReLu: <span class="keywordflow">return</span> AclActivationFunction::LEAKY_RELU;</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; <span class="keywordflow">case</span> ActivationFunction::Abs: <span class="keywordflow">return</span> AclActivationFunction::ABS;</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; <span class="keywordflow">case</span> ActivationFunction::Sqrt: <span class="keywordflow">return</span> AclActivationFunction::SQRT;</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; <span class="keywordflow">case</span> ActivationFunction::Square: <span class="keywordflow">return</span> AclActivationFunction::SQUARE;</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; <span class="keywordflow">case</span> ActivationFunction::TanH: <span class="keywordflow">return</span> AclActivationFunction::TANH;</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; <span class="keywordflow">default</span>: <span class="keywordflow">throw</span> InvalidArgumentException(<span class="stringliteral">&quot;Unsupported activation function&quot;</span>);</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; }</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a56297e0f7b215eea46c818cb7528d9ea"><div class="ttname"><a href="namespacearmnn.html#a56297e0f7b215eea46c818cb7528d9ea">armnn::ActivationFunction</a></div><div class="ttdeci">ActivationFunction</div><div class="ttdef"><b>Definition:</b> <a href="_types_8hpp_source.html#l00054">Types.hpp:54</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="abccab9266ab13dbd806445af31ddbba7"></a>
<h2 class="memtitle"><span class="permalink"><a href="#abccab9266ab13dbd806445af31ddbba7">&#9670;&nbsp;</a></span>ConvertFullyConnectedDescriptorToAclFullyConnectedLayerInfo()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">arm_compute::FullyConnectedLayerInfo armnn::ConvertFullyConnectedDescriptorToAclFullyConnectedLayerInfo </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="structarmnn_1_1_fully_connected_descriptor.html">FullyConnectedDescriptor</a> &amp;&#160;</td>
<td class="paramname"><em>fullyConnectedDesc</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_arm_compute_utils_8hpp_source.html#l00118">118</a> of file <a class="el" href="_arm_compute_utils_8hpp_source.html">ArmComputeUtils.hpp</a>.</p>
<p class="reference">References <a class="el" href="_descriptors_8hpp_source.html#l00388">FullyConnectedDescriptor::m_TransposeWeightMatrix</a>.</p>
<div class="fragment"><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160;{</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; arm_compute::FullyConnectedLayerInfo fc_info;</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; fc_info.transpose_weights = fullyConnectedDesc.m_TransposeWeightMatrix;</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; <span class="keywordflow">return</span> fc_info;</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160;}</div></div><!-- fragment -->
</div>
</div>
<a id="a9cdee30c21f3dd630b4e460527105b74"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a9cdee30c21f3dd630b4e460527105b74">&#9670;&nbsp;</a></span>ConvertLogSeverity()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">constexpr <a class="el" href="namespacearmnn.html#a93a3ba385cad27c4774e5fe64c025d3d">LogSeverity</a> armnn::ConvertLogSeverity </td>
<td>(</td>
<td class="paramtype"><a class="el" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407">BoostLogSeverityMapping</a>&#160;</td>
<td class="paramname"><em>severity</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_logging_8hpp_source.html#l00157">157</a> of file <a class="el" href="_logging_8hpp_source.html">Logging.hpp</a>.</p>
<div class="fragment"><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160;{</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; <span class="keywordflow">return</span> <span class="keyword">static_cast&lt;</span><a class="code" href="namespacearmnn.html#a93a3ba385cad27c4774e5fe64c025d3d">LogSeverity</a><span class="keyword">&gt;</span>(severity);</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a93a3ba385cad27c4774e5fe64c025d3d"><div class="ttname"><a href="namespacearmnn.html#a93a3ba385cad27c4774e5fe64c025d3d">armnn::LogSeverity</a></div><div class="ttdeci">LogSeverity</div><div class="ttdef"><b>Definition:</b> <a href="_utils_8hpp_source.html#l00012">Utils.hpp:12</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="ad69ffa576a596b9eb20ab6a41420c541"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad69ffa576a596b9eb20ab6a41420c541">&#9670;&nbsp;</a></span>ConvertMaskToACLFormat()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int32_t ConvertMaskToACLFormat </td>
<td>(</td>
<td class="paramtype">int32_t&#160;</td>
<td class="paramname"><em>mask</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int32_t&#160;</td>
<td class="paramname"><em>numDim</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_workload_utils_8cpp_source.html#l00192">192</a> of file <a class="el" href="_workload_utils_8cpp_source.html">WorkloadUtils.cpp</a>.</p>
<p class="reference">Referenced by <a class="el" href="_cl_strided_slice_workload_8cpp_source.html#l00054">ClStridedSliceWorkload::ClStridedSliceWorkload()</a>, <a class="el" href="_workload_utils_8hpp_source.html#l00192">GatherTensorHandlePairs()</a>, and <a class="el" href="_neon_strided_slice_workload_8cpp_source.html#l00047">NeonStridedSliceWorkload::NeonStridedSliceWorkload()</a>.</p>
<div class="fragment"><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160;{</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160; int32_t reversedMask = 0;</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i &lt; boost::numeric_cast&lt;unsigned int&gt;(numDim); ++i)</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; {</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160; <span class="comment">// Check if bit set in mask for each dimension</span></div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160; int32_t bit = (mask &amp; 1 &lt;&lt; i) != 0;</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160; <span class="comment">// Increment the new mask with the bits reversed</span></div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160; reversedMask += (bit &lt;&lt; std::max(numDim-(boost::numeric_cast&lt;int&gt;(i)+1), 0));</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160; }</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160;</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160; <span class="keywordflow">return</span> reversedMask;</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160;}</div></div><!-- fragment -->
</div>
</div>
<a id="aa5baabb8e3a4aa6cbdcab419d743e747"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa5baabb8e3a4aa6cbdcab419d743e747">&#9670;&nbsp;</a></span>ConvertNormalizationAlgorithmChannelToAclNormType()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">arm_compute::NormType armnn::ConvertNormalizationAlgorithmChannelToAclNormType </td>
<td>(</td>
<td class="paramtype"><a class="el" href="namespacearmnn.html#abe18a5033f2ab9c0de82c676b48f5437">NormalizationAlgorithmChannel</a>&#160;</td>
<td class="paramname"><em>channelType</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_arm_compute_utils_8hpp_source.html#l00106">106</a> of file <a class="el" href="_arm_compute_utils_8hpp_source.html">ArmComputeUtils.hpp</a>.</p>
<p class="reference">References <a class="el" href="namespacearmnn.html#abe18a5033f2ab9c0de82c676b48f5437a810f43f3996922151c39b76143faeecc">Across</a>, and <a class="el" href="namespacearmnn.html#abe18a5033f2ab9c0de82c676b48f5437a37bac6dce4f46277d89bfa3003e2e39b">Within</a>.</p>
<div class="fragment"><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160;{</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; <span class="keyword">using</span> arm_compute::NormType;</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; <span class="keywordflow">switch</span> (channelType)</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; {</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; <span class="keywordflow">case</span> NormalizationAlgorithmChannel::Across: <span class="keywordflow">return</span> NormType::CROSS_MAP;</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; <span class="keywordflow">case</span> NormalizationAlgorithmChannel::Within: <span class="keywordflow">return</span> NormType::IN_MAP_2D;</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; <span class="keywordflow">default</span>: <span class="keywordflow">throw</span> InvalidArgumentException(<span class="stringliteral">&quot;Unsupported normalization algorithm channel type&quot;</span>);</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; }</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160;}</div></div><!-- fragment -->
</div>
</div>
<a id="a8f3bfacadfd6d2146d6ccd299dabc7aa"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a8f3bfacadfd6d2146d6ccd299dabc7aa">&#9670;&nbsp;</a></span>ConvertOutputShapeRoundingToAclDimensionRoundingType()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">arm_compute::DimensionRoundingType armnn::ConvertOutputShapeRoundingToAclDimensionRoundingType </td>
<td>(</td>
<td class="paramtype"><a class="el" href="namespacearmnn.html#adf2e5515c4c36a3e7e46bb8b83c6754e">OutputShapeRounding</a>&#160;</td>
<td class="paramname"><em>rounding</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_arm_compute_utils_8hpp_source.html#l00092">92</a> of file <a class="el" href="_arm_compute_utils_8hpp_source.html">ArmComputeUtils.hpp</a>.</p>
<p class="reference">References <a class="el" href="namespacearmnn.html#adf2e5515c4c36a3e7e46bb8b83c6754ea3237fbc8204064c106cb9080088a17cb">Ceiling</a>, and <a class="el" href="namespacearmnn.html#adf2e5515c4c36a3e7e46bb8b83c6754eaf3f6d0343d56ce88ce7958170ed05cb3">Floor</a>.</p>
<div class="fragment"><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160;{</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; <span class="keyword">using</span> arm_compute::DimensionRoundingType;</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160;</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; <span class="keywordflow">switch</span> (rounding)</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; {</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; <span class="keywordflow">case</span> OutputShapeRounding::Ceiling: <span class="keywordflow">return</span> DimensionRoundingType::CEIL;</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; <span class="keywordflow">case</span> OutputShapeRounding::Floor: <span class="keywordflow">return</span> DimensionRoundingType::FLOOR;</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; <span class="keywordflow">default</span>: <span class="keywordflow">throw</span> InvalidArgumentException(<span class="stringliteral">&quot;Unsupported Output Shape Rounding type&quot;</span>);</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; }</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160;}</div></div><!-- fragment -->
</div>
</div>
<a id="ad256fcf8c7f4d5a240fa47f0b56d50af"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad256fcf8c7f4d5a240fa47f0b56d50af">&#9670;&nbsp;</a></span>ConvertPoolingAlgorithmToAclPoolingType()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">arm_compute::PoolingType armnn::ConvertPoolingAlgorithmToAclPoolingType </td>
<td>(</td>
<td class="paramtype"><a class="el" href="namespacearmnn.html#a961bbfe1db71a848eff5a1f0ab775718">PoolingAlgorithm</a>&#160;</td>
<td class="paramname"><em>poolingAlgorithm</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_arm_compute_utils_8hpp_source.html#l00079">79</a> of file <a class="el" href="_arm_compute_utils_8hpp_source.html">ArmComputeUtils.hpp</a>.</p>
<p class="reference">References <a class="el" href="namespacearmnn.html#a961bbfe1db71a848eff5a1f0ab775718ab1897515d548a960afe49ecf66a29021">Average</a>, <a class="el" href="namespacearmnn.html#a961bbfe1db71a848eff5a1f0ab775718a7e6aa2d53f6ee2b1a34b017fa403cb76">L2</a>, and <a class="el" href="namespacearmnn.html#ae7e8cbf71db6a490789ca6dcaa8deeaea6a061313d22e51e0f25b7cd4dc065233">Max</a>.</p>
<div class="fragment"><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160;{</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; <span class="keyword">using</span> arm_compute::PoolingType;</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160;</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; <span class="keywordflow">switch</span> (poolingAlgorithm)</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; {</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; <span class="keywordflow">case</span> PoolingAlgorithm::Max: <span class="keywordflow">return</span> PoolingType::MAX;</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; <span class="keywordflow">case</span> PoolingAlgorithm::Average: <span class="keywordflow">return</span> PoolingType::AVG;</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; <span class="keywordflow">case</span> PoolingAlgorithm::L2: <span class="keywordflow">return</span> PoolingType::L2;</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; <span class="keywordflow">default</span>: <span class="keywordflow">throw</span> InvalidArgumentException(<span class="stringliteral">&quot;Unsupported pooling algorithm&quot;</span>);</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; }</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160;}</div></div><!-- fragment -->
</div>
</div>
<a id="ae9bdcb8ac91731109dc423d6ed476204"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae9bdcb8ac91731109dc423d6ed476204">&#9670;&nbsp;</a></span>ConvertResizeMethodToAclInterpolationPolicy()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">arm_compute::InterpolationPolicy armnn::ConvertResizeMethodToAclInterpolationPolicy </td>
<td>(</td>
<td class="paramtype"><a class="el" href="namespacearmnn.html#a9a2af2f8c4af4f9efa8e79417d505ac4">ResizeMethod</a>&#160;</td>
<td class="paramname"><em>resizeMethod</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_arm_compute_utils_8hpp_source.html#l00125">125</a> of file <a class="el" href="_arm_compute_utils_8hpp_source.html">ArmComputeUtils.hpp</a>.</p>
<p class="reference">References <a class="el" href="namespacearmnn.html#a9a2af2f8c4af4f9efa8e79417d505ac4aaf17c98bbd83c27d6426d2ff3fa81d7f">Bilinear</a>, and <a class="el" href="namespacearmnn.html#a9a2af2f8c4af4f9efa8e79417d505ac4aaa020331bb30d2fa2ecf7c3a0777823f">NearestNeighbor</a>.</p>
<div class="fragment"><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160;{</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; <span class="keywordflow">switch</span> (resizeMethod)</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; {</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; <span class="keywordflow">case</span> ResizeMethod::Bilinear:</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; <span class="keywordflow">return</span> arm_compute::InterpolationPolicy::BILINEAR;</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; <span class="keywordflow">case</span> ResizeMethod::NearestNeighbor:</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; <span class="keywordflow">return</span> arm_compute::InterpolationPolicy::NEAREST_NEIGHBOR;</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; <span class="keywordflow">default</span>:</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; <span class="keywordflow">throw</span> InvalidArgumentException(<span class="stringliteral">&quot;Unsupported resize method&quot;</span>);</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; }</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160;}</div></div><!-- fragment -->
</div>
</div>
<a id="a51e8b95a429e11678ffa8b9fdc88351b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a51e8b95a429e11678ffa8b9fdc88351b">&#9670;&nbsp;</a></span>ConvertWeightTensorFromArmnnToAcl()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classarmnn_1_1_const_tensor.html">armnn::ConstTensor</a> ConvertWeightTensorFromArmnnToAcl </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_const_cpu_tensor_handle.html">ConstCpuTensorHandle</a> *&#160;</td>
<td class="paramname"><em>weightTensor</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0">DataLayout</a>&#160;</td>
<td class="paramname"><em>dataLayout</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">void *&#160;</td>
<td class="paramname"><em>permuteBuffer</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_workload_utils_8cpp_source.html#l00132">132</a> of file <a class="el" href="_workload_utils_8cpp_source.html">WorkloadUtils.cpp</a>.</p>
<p class="reference">References <a class="el" href="_utils_8hpp_source.html#l00035">ARMNN_FALLTHROUGH</a>, <a class="el" href="_deprecated_8hpp_source.html#l00033">ARMNN_NO_DEPRECATE_WARN_BEGIN</a>, <a class="el" href="_deprecated_8hpp_source.html#l00034">ARMNN_NO_DEPRECATE_WARN_END</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a26e6ed77470c6f2f830ecf874e6c0d55">Float16</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">Float32</a>, <a class="el" href="_tensor_8hpp_source.html#l00172">BaseTensor&lt; MemoryType &gt;::GetDataType()</a>, <a class="el" href="_tensor_8hpp_source.html#l00167">BaseTensor&lt; MemoryType &gt;::GetInfo()</a>, <a class="el" href="_tensor_8hpp_source.html#l00088">TensorInfo::GetShape()</a>, <a class="el" href="_cpu_tensor_handle_8hpp_source.html#l00037">ConstCpuTensorHandle::GetTensorInfo()</a>, <a class="el" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0a6b99f356fe3b30a2a850b5ea897c289f">NCHW</a>, <a class="el" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0ad066db54b89b0912e7e7c6da51e2da51">NHWC</a>, <a class="el" href="_workload_utils_8cpp_source.html#l00013">PermuteTensor()</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a9d02ea768c081d4bdb2b7cab0b3f510d">QAsymmS8</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a0a3f57c876f5a230244c38e1453a8a6e">QAsymmU8</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a9945327825b115e93a3b89f4302e76db">QSymmS8</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a34346ec9593088efe3a29c0dad92166d">QuantizedSymm8PerAxis</a>, and <a class="el" href="_workload_utils_8cpp_source.html#l00036">ReshapeWeightsForAcl()</a>.</p>
<p class="reference">Referenced by <a class="el" href="_cl_depthwise_convolution_workload_8cpp_source.html#l00070">ClDepthwiseConvolutionWorkload::ClDepthwiseConvolutionWorkload()</a>, <a class="el" href="_workload_utils_8hpp_source.html#l00192">GatherTensorHandlePairs()</a>, and <a class="el" href="_neon_depthwise_convolution_workload_8cpp_source.html#l00072">NeonDepthwiseConvolutionWorkload::NeonDepthwiseConvolutionWorkload()</a>.</p>
<div class="fragment"><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160;{</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; BOOST_ASSERT_MSG(weightTensor, <span class="stringliteral">&quot;Invalid input tensor&quot;</span>);</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; BOOST_ASSERT_MSG(permuteBuffer, <span class="stringliteral">&quot;Invalid permute buffer&quot;</span>);</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160;</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; <span class="keyword">auto</span> multiplier = weightTensor-&gt;GetTensorInfo().GetShape()[0];</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; <span class="keyword">auto</span> inputChannels = weightTensor-&gt;GetTensorInfo().GetShape()[1];</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160;</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; <span class="comment">// Convert the weight format from ArmNN&#39;s [ M, I, H, W ] (does NOT depend on the data layout) to either</span></div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; <span class="comment">// [ 1, H, W, I * M ] (if NHWC) or [ 1, I * M, H, W ] (if NCHW), as required by the compute library</span></div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160;</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; <span class="comment">// 1. Permute the weights if necessary</span></div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; <span class="comment">// If the data layout is NCHW no permutation is necessary, as a reshape to [ 1, I * M, H, W ] can be better done</span></div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; <span class="comment">// starting from the current shape of [ M, I, H, W ]</span></div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; <span class="comment">// If no permutation is necessary, leave the permutation vector empty</span></div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; PermutationVector permutationVector{};</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; <span class="keywordflow">if</span> (dataLayout == DataLayout::NHWC)</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; {</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; <span class="comment">// The data layout is NHWC, then permute the weights from [ M, I, H, W ] to [ H, W, I, M ]</span></div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; permutationVector = { 3, 2, 0, 1 };</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; }</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; ConstTensor weightPermuted = <a class="code" href="namespacearmnn.html#a2a9ac8ebb69307ad4ec894ffa0523dbf">PermuteTensor</a>(weightTensor, permutationVector, permuteBuffer);</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160;</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; <span class="comment">// Shuffle the weights data to obtain the channel order needed used by Acl</span></div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; <span class="keywordflow">if</span> (multiplier &gt; 1 &amp;&amp; inputChannels &gt; 1 &amp;&amp; dataLayout == DataLayout::NCHW)</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; {</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; <span class="keywordflow">switch</span> (weightPermuted.GetDataType())</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; {</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; <span class="keywordflow">case</span> DataType::Float32:</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; weightPermuted = ReorderWeightChannelsForAcl&lt;float&gt;(weightPermuted, dataLayout, permuteBuffer);</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; <span class="keywordflow">case</span> DataType::Float16:</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160; weightPermuted =</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160; ReorderWeightChannelsForAcl&lt;half_float::half&gt;(weightPermuted, dataLayout, permuteBuffer);</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160; <span class="keywordflow">case</span> DataType::QAsymmS8:</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; <span class="keywordflow">case</span> DataType::QAsymmU8:</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160; weightPermuted = ReorderWeightChannelsForAcl&lt;uint8_t&gt;(weightPermuted, dataLayout, permuteBuffer);</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160; <a class="code" href="_deprecated_8hpp.html#ab66a241a0ed3ee89c866e777b035d0ed">ARMNN_NO_DEPRECATE_WARN_BEGIN</a></div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; <span class="keywordflow">case</span> DataType::QuantizedSymm8PerAxis:</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; <a class="code" href="_utils_8hpp.html#abbf421eb1186af0d505648ed2ea54a00">ARMNN_FALLTHROUGH</a>;</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; <span class="keywordflow">case</span> DataType::QSymmS8:</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160; weightPermuted = ReorderWeightChannelsForAcl&lt;int8_t&gt;(weightPermuted, dataLayout, permuteBuffer);</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160; <a class="code" href="_deprecated_8hpp.html#ad762b11b48e5c1d1c1743f529485728a">ARMNN_NO_DEPRECATE_WARN_END</a></div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160; <span class="keywordflow">default</span>:</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160; }</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; }</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160;</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; <span class="comment">// 2. Reshape the weights</span></div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160; <a class="code" href="namespacearmnn.html#a3170fdd696155a247ecd81d445c0e2e1">ReshapeWeightsForAcl</a>(weightPermuted.GetInfo(), dataLayout);</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160;</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160; <span class="comment">// 3. Return both the tensor and the allocated storage to ensure that the data stays alive</span></div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160; <span class="keywordflow">return</span> weightPermuted;</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a2a9ac8ebb69307ad4ec894ffa0523dbf"><div class="ttname"><a href="namespacearmnn.html#a2a9ac8ebb69307ad4ec894ffa0523dbf">armnn::PermuteTensor</a></div><div class="ttdeci">armnn::ConstTensor PermuteTensor(const ConstCpuTensorHandle *tensor, const PermutationVector &amp;permutationVector, void *permuteBuffer)</div><div class="ttdef"><b>Definition:</b> <a href="_workload_utils_8cpp_source.html#l00013">WorkloadUtils.cpp:13</a></div></div>
<div class="ttc" id="_utils_8hpp_html_abbf421eb1186af0d505648ed2ea54a00"><div class="ttname"><a href="_utils_8hpp.html#abbf421eb1186af0d505648ed2ea54a00">ARMNN_FALLTHROUGH</a></div><div class="ttdeci">#define ARMNN_FALLTHROUGH</div><div class="ttdef"><b>Definition:</b> <a href="_utils_8hpp_source.html#l00035">Utils.hpp:35</a></div></div>
<div class="ttc" id="_deprecated_8hpp_html_ab66a241a0ed3ee89c866e777b035d0ed"><div class="ttname"><a href="_deprecated_8hpp.html#ab66a241a0ed3ee89c866e777b035d0ed">ARMNN_NO_DEPRECATE_WARN_BEGIN</a></div><div class="ttdeci">#define ARMNN_NO_DEPRECATE_WARN_BEGIN</div><div class="ttdef"><b>Definition:</b> <a href="_deprecated_8hpp_source.html#l00033">Deprecated.hpp:33</a></div></div>
<div class="ttc" id="namespacearmnn_html_a3170fdd696155a247ecd81d445c0e2e1"><div class="ttname"><a href="namespacearmnn.html#a3170fdd696155a247ecd81d445c0e2e1">armnn::ReshapeWeightsForAcl</a></div><div class="ttdeci">void ReshapeWeightsForAcl(TensorInfo &amp;weightInfo, DataLayout dataLayout)</div><div class="ttdef"><b>Definition:</b> <a href="_workload_utils_8cpp_source.html#l00036">WorkloadUtils.cpp:36</a></div></div>
<div class="ttc" id="_deprecated_8hpp_html_ad762b11b48e5c1d1c1743f529485728a"><div class="ttname"><a href="_deprecated_8hpp.html#ad762b11b48e5c1d1c1743f529485728a">ARMNN_NO_DEPRECATE_WARN_END</a></div><div class="ttdeci">#define ARMNN_NO_DEPRECATE_WARN_END</div><div class="ttdef"><b>Definition:</b> <a href="_deprecated_8hpp_source.html#l00034">Deprecated.hpp:34</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a1e8288eac7e909fdb58b6113d816763a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a1e8288eac7e909fdb58b6113d816763a">&#9670;&nbsp;</a></span>ConvertWeightTensorInfoFromArmnnToAcl()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> ConvertWeightTensorInfoFromArmnnToAcl </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>weightInfo</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0">DataLayout</a>&#160;</td>
<td class="paramname"><em>dataLayout</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_workload_utils_8cpp_source.html#l00109">109</a> of file <a class="el" href="_workload_utils_8cpp_source.html">WorkloadUtils.cpp</a>.</p>
<p class="reference">References <a class="el" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0ad066db54b89b0912e7e7c6da51e2da51">NHWC</a>, <a class="el" href="_permute_8cpp_source.html#l00098">armnnUtils::Permuted()</a>, and <a class="el" href="_workload_utils_8cpp_source.html#l00036">ReshapeWeightsForAcl()</a>.</p>
<p class="reference">Referenced by <a class="el" href="_workload_utils_8hpp_source.html#l00192">GatherTensorHandlePairs()</a>.</p>
<div class="fragment"><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160;{</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; <span class="comment">// Convert the weight format from ArmNN&#39;s [ M, I, H, W ] (does NOT depend on the data layout) to either</span></div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; <span class="comment">// [ 1, H, W, I * M ] (if NHWC) or [ 1, I * M, H, W ] (if NCHW), as required by the compute library</span></div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160;</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; <span class="comment">// 1. Permute the weights if necessary</span></div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; <span class="comment">// If the data layout is NCHW no permutation is necessary, as a reshape to [ 1, I * M, H, W ] can be better done</span></div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; <span class="comment">// starting from the current shape of [ M, I, H, W ]</span></div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; TensorInfo weightPermutedInfo(weightInfo);</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; <span class="keywordflow">if</span> (dataLayout == DataLayout::NHWC)</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; {</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; <span class="comment">// The data layout is NHWC, then permute the weights from [ M, I, H, W ] to [ H, W, I, M ]</span></div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; PermutationVector permutationVector{ 3, 2, 0, 1 };</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; weightPermutedInfo = <a class="code" href="namespacearmnn_utils.html#abeaf4f6785039866fd075f4569ba8e84">armnnUtils::Permuted</a>(weightInfo, permutationVector);</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; }</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160;</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; <span class="comment">// 2. Reshape the weights</span></div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; <a class="code" href="namespacearmnn.html#a3170fdd696155a247ecd81d445c0e2e1">ReshapeWeightsForAcl</a>(weightPermutedInfo, dataLayout);</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160;</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; <span class="comment">// 3. Return the permuted weight info</span></div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; <span class="keywordflow">return</span> weightPermutedInfo;</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160;}</div><div class="ttc" id="namespacearmnn_utils_html_abeaf4f6785039866fd075f4569ba8e84"><div class="ttname"><a href="namespacearmnn_utils.html#abeaf4f6785039866fd075f4569ba8e84">armnnUtils::Permuted</a></div><div class="ttdeci">armnn::TensorShape Permuted(const armnn::TensorShape &amp;srcShape, const armnn::PermutationVector &amp;mappings)</div><div class="ttdef"><b>Definition:</b> <a href="_permute_8cpp_source.html#l00098">Permute.cpp:98</a></div></div>
<div class="ttc" id="namespacearmnn_html_a3170fdd696155a247ecd81d445c0e2e1"><div class="ttname"><a href="namespacearmnn.html#a3170fdd696155a247ecd81d445c0e2e1">armnn::ReshapeWeightsForAcl</a></div><div class="ttdeci">void ReshapeWeightsForAcl(TensorInfo &amp;weightInfo, DataLayout dataLayout)</div><div class="ttdef"><b>Definition:</b> <a href="_workload_utils_8cpp_source.html#l00036">WorkloadUtils.cpp:36</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="af98115cd07776d3fa8424434d2a7a897"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af98115cd07776d3fa8424434d2a7a897">&#9670;&nbsp;</a></span>Convolve()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void Convolve </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_shape.html">TensorShape</a> &amp;&#160;</td>
<td class="paramname"><em>rInputShape</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classarmnn_1_1_decoder.html">Decoder</a>&lt; float &gt; &amp;&#160;</td>
<td class="paramname"><em>rInputDecoder</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_shape.html">TensorShape</a> &amp;&#160;</td>
<td class="paramname"><em>rOutputShape</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classarmnn_1_1_encoder.html">Encoder</a>&lt; float &gt; &amp;&#160;</td>
<td class="paramname"><em>rOutputEncoder</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_shape.html">TensorShape</a> &amp;&#160;</td>
<td class="paramname"><em>rFilterShape</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classarmnn_1_1_decoder.html">Decoder</a>&lt; float &gt; &amp;&#160;</td>
<td class="paramname"><em>rFilterDecoder</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">bool&#160;</td>
<td class="paramname"><em>biasEnabled</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classarmnn_1_1_decoder.html">Decoder</a>&lt; float &gt; *&#160;</td>
<td class="paramname"><em>pBiasDecoder</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0">DataLayout</a>&#160;</td>
<td class="paramname"><em>dataLayout</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">unsigned int&#160;</td>
<td class="paramname"><em>paddingTop</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">unsigned int&#160;</td>
<td class="paramname"><em>paddingLeft</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">unsigned int&#160;</td>
<td class="paramname"><em>xStride</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">unsigned int&#160;</td>
<td class="paramname"><em>yStride</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">unsigned int&#160;</td>
<td class="paramname"><em>xDilation</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">unsigned int&#160;</td>
<td class="paramname"><em>yDilation</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">bool&#160;</td>
<td class="paramname"><em>depthwise</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_conv_impl_8cpp_source.html#l00071">71</a> of file <a class="el" href="_conv_impl_8cpp_source.html">ConvImpl.cpp</a>.</p>
<p class="reference">References <a class="el" href="classarmnn_1_1_decoder.html#ac729108381e2340bea12877971713ecb">Decoder&lt; IType &gt;::Get()</a>, <a class="el" href="_data_layout_indexed_8hpp_source.html#l00023">DataLayoutIndexed::GetChannelsIndex()</a>, <a class="el" href="_data_layout_indexed_8hpp_source.html#l00024">DataLayoutIndexed::GetHeightIndex()</a>, <a class="el" href="_data_layout_indexed_8hpp_source.html#l00027">DataLayoutIndexed::GetIndex()</a>, <a class="el" href="_data_layout_indexed_8hpp_source.html#l00025">DataLayoutIndexed::GetWidthIndex()</a>, <a class="el" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0ad066db54b89b0912e7e7c6da51e2da51">NHWC</a>, <a class="el" href="classarmnn_1_1_encoder.html#ae3b62b846a9c239f332830b9e36030eb">Encoder&lt; IType &gt;::Set()</a>, and <a class="el" href="classarmnn_1_1_base_iterator.html#a1ec75b077d774dbfebf3662e8e4363c9">BaseIterator::SetIndex()</a>.</p>
<p class="reference">Referenced by <a class="el" href="_ref_depthwise_convolution2d_workload_8cpp_source.html#l00046">RefDepthwiseConvolution2dWorkload::Execute()</a>, and <a class="el" href="_ref_convolution2d_workload_8cpp_source.html#l00044">RefConvolution2dWorkload::Execute()</a>.</p>
<div class="fragment"><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160;{</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; <span class="keywordflow">if</span> (biasEnabled &amp;&amp; !pBiasDecoder)</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; {</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; <span class="keywordflow">throw</span> InvalidArgumentException(<span class="stringliteral">&quot;Bias is enabled but the bias data is invalid&quot;</span>);</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; }</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; <span class="keyword">const</span> <a class="code" href="classarmnn_utils_1_1_data_layout_indexed.html">armnnUtils::DataLayoutIndexed</a> dataLayoutIndexed(dataLayout);</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160;</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> channelsIndex = dataLayoutIndexed.GetChannelsIndex();</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> heightIndex = dataLayoutIndexed.GetHeightIndex();</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> widthIndex = dataLayoutIndexed.GetWidthIndex();</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160;</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> depthMultiplier = depthwise ? rFilterShape[0] : 1;</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> inputChannels = depthwise ? rFilterShape[1] : rFilterShape[channelsIndex];</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> outputChannels = depthwise ? inputChannels * depthMultiplier : rFilterShape[0];</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160;</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> batchSize = rOutputShape[0];</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> outputHeight = rOutputShape[heightIndex];</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> outputWidth = rOutputShape[widthIndex];</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> inputHeight = rInputShape[heightIndex];</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> inputWidth = rInputShape[widthIndex];</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160;</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> filterHeight = depthwise ? rFilterShape[2] : rFilterShape[heightIndex];</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> filterWidth = depthwise ? rFilterShape[3] : rFilterShape[widthIndex];</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160;</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> batchIdx = 0; batchIdx &lt; batchSize; batchIdx++)</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; {</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> cOutput = 0; cOutput &lt; outputChannels; cOutput++)</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; {</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> yOutput = 0; yOutput &lt; outputHeight; yOutput++)</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; {</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> xOutput = 0; xOutput &lt; outputWidth; xOutput++)</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; {</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; <span class="comment">// This loop goes over each output element.</span></div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; <span class="keywordtype">float</span> sum = 0.0f;</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160;</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; <span class="comment">// For depthwise, each output channel corresponds to exactly one input channel.</span></div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; <span class="comment">// For normal, must loop over each input channel.</span></div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> cInput = 0; cInput &lt; (depthwise ? 1 : inputChannels); cInput++)</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; {</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> depthwiseMultiplierIdx = 0;</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; <span class="keywordflow">if</span> (depthwise)</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; {</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; cInput = cOutput / depthMultiplier;</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; depthwiseMultiplierIdx = cOutput % depthMultiplier;</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; }</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160;</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> yFilter = 0; yFilter &lt; filterHeight; yFilter++)</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; {</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> xFilter = 0; xFilter &lt; filterWidth; xFilter++)</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; {</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; <span class="comment">// This loop goes over each input element for each output element.</span></div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> filterIndex = 0;</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160;</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; <span class="comment">// Since dimensionality of kernel depends on depthwiseness, so does index.</span></div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; <span class="keywordflow">if</span> (depthwise)</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; {</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; filterIndex = depthwiseMultiplierIdx * filterWidth * filterHeight * inputChannels +</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; cInput * filterWidth * filterHeight +</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; yFilter * filterWidth +</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; xFilter;</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; }</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; {</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; <span class="comment">// Keep this implementation, as using DataLayoutIndexed::GetIndex causes great</span></div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; <span class="comment">// performance regression.</span></div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; <span class="keywordflow">if</span> (dataLayout == DataLayout::NHWC)</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; {</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; filterIndex = cOutput * filterHeight * filterWidth * inputChannels +</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; yFilter * filterWidth * inputChannels +</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; xFilter * inputChannels +</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; cInput;</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; }</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; {</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; filterIndex = cOutput * filterWidth * filterHeight * inputChannels +</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; cInput * filterWidth * filterHeight +</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; yFilter * filterWidth +</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; xFilter;</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; }</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160; }</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160;</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160; rFilterDecoder.<a class="code" href="classarmnn_1_1_base_iterator.html#a1ec75b077d774dbfebf3662e8e4363c9">SetIndex</a>(filterIndex, cOutput);</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160; <span class="keywordtype">float</span> filterValue = rFilterDecoder.<a class="code" href="classarmnn_1_1_decoder.html#ac729108381e2340bea12877971713ecb">Get</a>();</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160;</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> yInput = yOutput * yStride + yFilter * yDilation;</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> xInput = xOutput * xStride + xFilter * xDilation;</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160;</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; <span class="keywordtype">float</span> inputValue;</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160;</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; <span class="comment">// Check if we&#39;re in the padding.</span></div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160; <span class="keywordflow">if</span> (yInput &lt; paddingTop || yInput &gt;= inputHeight + paddingTop ||</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160; xInput &lt; paddingLeft || xInput &gt;= inputWidth + paddingLeft )</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160; {</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160; inputValue = 0.0f;</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160; }</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; {</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> inputIndex = 0;</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160;</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160; <span class="comment">// Keep this implementation, as using DataLayoutIndexed::GetIndex causes great</span></div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160; <span class="comment">// performance regression.</span></div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160; <span class="keywordflow">if</span> (dataLayout == DataLayout::NHWC)</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160; {</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160; inputIndex = batchIdx * inputHeight * inputWidth * inputChannels +</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160; (yInput - paddingTop) * inputWidth * inputChannels +</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160; (xInput - paddingLeft) * inputChannels +</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160; cInput;</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160; }</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; {</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160; inputIndex = batchIdx * inputWidth * inputHeight * inputChannels +</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160; inputWidth * inputHeight * cInput +</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160; inputWidth * (yInput - paddingTop) +</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160; xInput - paddingLeft;</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160; }</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160;</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160; rInputDecoder[inputIndex];</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160; inputValue = rInputDecoder.<a class="code" href="classarmnn_1_1_decoder.html#ac729108381e2340bea12877971713ecb">Get</a>();</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160; }</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160;</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160; sum += filterValue * inputValue;</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160; }</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160; }</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160; }</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160;</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160; <span class="keywordflow">if</span> (biasEnabled)</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160; {</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160; (*pBiasDecoder).SetIndex(cOutput, cOutput);</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160; sum += pBiasDecoder-&gt;<a class="code" href="classarmnn_1_1_decoder.html#ac729108381e2340bea12877971713ecb">Get</a>();</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160; }</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160;</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> outIdx = dataLayoutIndexed.GetIndex(rOutputShape, batchIdx, cOutput, yOutput, xOutput);</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160;</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160; rOutputEncoder[outIdx];</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160; rOutputEncoder.<a class="code" href="classarmnn_1_1_encoder.html#ae3b62b846a9c239f332830b9e36030eb">Set</a>(sum);</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160; }</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160; }</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160; }</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160; }</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160;}</div><div class="ttc" id="classarmnn_1_1_base_iterator_html_a1ec75b077d774dbfebf3662e8e4363c9"><div class="ttname"><a href="classarmnn_1_1_base_iterator.html#a1ec75b077d774dbfebf3662e8e4363c9">armnn::BaseIterator::SetIndex</a></div><div class="ttdeci">virtual BaseIterator &amp; SetIndex(unsigned int index, unsigned int axisIndex=0)=0</div></div>
<div class="ttc" id="classarmnn_1_1_decoder_html_ac729108381e2340bea12877971713ecb"><div class="ttname"><a href="classarmnn_1_1_decoder.html#ac729108381e2340bea12877971713ecb">armnn::Decoder::Get</a></div><div class="ttdeci">virtual IType Get() const =0</div></div>
<div class="ttc" id="classarmnn_utils_1_1_data_layout_indexed_html"><div class="ttname"><a href="classarmnn_utils_1_1_data_layout_indexed.html">armnnUtils::DataLayoutIndexed</a></div><div class="ttdef"><b>Definition:</b> <a href="_data_layout_indexed_8hpp_source.html#l00017">DataLayoutIndexed.hpp:17</a></div></div>
<div class="ttc" id="classarmnn_1_1_encoder_html_ae3b62b846a9c239f332830b9e36030eb"><div class="ttname"><a href="classarmnn_1_1_encoder.html#ae3b62b846a9c239f332830b9e36030eb">armnn::Encoder::Set</a></div><div class="ttdeci">virtual void Set(IType right)=0</div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a73447f827b995cf90d4029151514b4ba"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a73447f827b995cf90d4029151514b4ba">&#9670;&nbsp;</a></span>CopyArmComputeClTensorData()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void armnn::CopyArmComputeClTensorData </td>
<td>(</td>
<td class="paramtype">arm_compute::CLTensor &amp;&#160;</td>
<td class="paramname"><em>dstTensor</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const T *&#160;</td>
<td class="paramname"><em>srcData</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_cl_workload_utils_8hpp_source.html#l00030">30</a> of file <a class="el" href="_cl_workload_utils_8hpp_source.html">ClWorkloadUtils.hpp</a>.</p>
<p class="reference">References <a class="el" href="_cl_workload_utils_8hpp_source.html#l00020">ARMNN_SCOPED_PROFILING_EVENT_CL</a>.</p>
<p class="reference">Referenced by <a class="el" href="_cl_constant_workload_8cpp_source.html#l00024">ClConstantWorkload::Execute()</a>.</p>
<div class="fragment"><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;{</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; {</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; <a class="code" href="_cl_workload_utils_8hpp.html#a9166fc90a3ea47a2c9499a810b204daf">ARMNN_SCOPED_PROFILING_EVENT_CL</a>(<span class="stringliteral">&quot;MapClTensorForWriting&quot;</span>);</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; dstTensor.map(<span class="keyword">true</span>);</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; }</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; {</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; <a class="code" href="_cl_workload_utils_8hpp.html#a9166fc90a3ea47a2c9499a810b204daf">ARMNN_SCOPED_PROFILING_EVENT_CL</a>(<span class="stringliteral">&quot;CopyToClTensor&quot;</span>);</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; armcomputetensorutils::CopyArmComputeITensorData&lt;T&gt;(srcData, dstTensor);</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; }</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; dstTensor.unmap();</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;}</div><div class="ttc" id="_cl_workload_utils_8hpp_html_a9166fc90a3ea47a2c9499a810b204daf"><div class="ttname"><a href="_cl_workload_utils_8hpp.html#a9166fc90a3ea47a2c9499a810b204daf">ARMNN_SCOPED_PROFILING_EVENT_CL</a></div><div class="ttdeci">#define ARMNN_SCOPED_PROFILING_EVENT_CL(name)</div><div class="ttdef"><b>Definition:</b> <a href="_cl_workload_utils_8hpp_source.html#l00020">ClWorkloadUtils.hpp:20</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a1351e01f9fb983937caf79e353142b41"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a1351e01f9fb983937caf79e353142b41">&#9670;&nbsp;</a></span>CopyArmComputeTensorData()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void armnn::CopyArmComputeTensorData </td>
<td>(</td>
<td class="paramtype">arm_compute::Tensor &amp;&#160;</td>
<td class="paramname"><em>dstTensor</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const T *&#160;</td>
<td class="paramname"><em>srcData</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_neon_workload_utils_8hpp_source.html#l00029">29</a> of file <a class="el" href="_neon_workload_utils_8hpp_source.html">NeonWorkloadUtils.hpp</a>.</p>
<p class="reference">Referenced by <a class="el" href="_neon_workload_utils_8hpp_source.html#l00035">InitializeArmComputeTensorData()</a>.</p>
<div class="fragment"><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;{</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; InitialiseArmComputeTensorEmpty(dstTensor);</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; CopyArmComputeITensorData(srcData, dstTensor);</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;}</div></div><!-- fragment -->
</div>
</div>
<a id="a92c91193007aa49f4732d6dba5397f8d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a92c91193007aa49f4732d6dba5397f8d">&#9670;&nbsp;</a></span>CopyTensorContentsGeneric()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void armnn::CopyTensorContentsGeneric </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_i_tensor_handle.html">ITensorHandle</a> *&#160;</td>
<td class="paramname"><em>srcTensor</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classarmnn_1_1_i_tensor_handle.html">ITensorHandle</a> *&#160;</td>
<td class="paramname"><em>dstTensor</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">CopyFunc&#160;</td>
<td class="paramname"><em>copy</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_workload_utils_8hpp_source.html#l00049">49</a> of file <a class="el" href="_workload_utils_8hpp_source.html">WorkloadUtils.hpp</a>.</p>
<p class="reference">References <a class="el" href="_profiling_8hpp_source.html#l00170">ARMNN_SCOPED_PROFILING_EVENT</a>, <a class="el" href="_tensor_8hpp_source.html#l00043">TensorShape::GetNumDimensions()</a>, <a class="el" href="classarmnn_1_1_i_tensor_handle.html#affd5aae75cad90f472f96cfd25a13f29">ITensorHandle::GetShape()</a>, <a class="el" href="classarmnn_1_1_i_tensor_handle.html#a30c3e09ce55369b66469443a4ca5ef03">ITensorHandle::GetStrides()</a>, <a class="el" href="classarmnn_1_1_i_tensor_handle.html#a9afbc055a017adf1bc38ee137bca6e90">ITensorHandle::Map()</a>, <a class="el" href="_types_8hpp_source.html#l00018">MaxNumOfTensorDimensions</a>, <a class="el" href="namespacearmnn.html#ae2f04a162585c0a5222a537efd5456aeaec0fc0100c4fc1ce4eea230c3dc10360">Undefined</a>, and <a class="el" href="classarmnn_1_1_i_tensor_handle.html#a563609828050f1b3a7868c23f3365923">ITensorHandle::Unmap()</a>.</p>
<p class="reference">Referenced by <a class="el" href="_neon_convert_fp16_to_fp32_workload_8cpp_source.html#l00025">NeonConvertFp16ToFp32Workload::Execute()</a>, <a class="el" href="_neon_convert_fp32_to_fp16_workload_8cpp_source.html#l00026">NeonConvertFp32ToFp16Workload::Execute()</a>, and <a class="el" href="_mem_copy_workload_8cpp_source.html#l00049">CopyMemGenericWorkload::Execute()</a>.</p>
<div class="fragment"><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;{</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <span class="comment">// For ease of understanding, names are assigned to the dimensions</span></div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; <span class="comment">// of the tensor as if NHWC, however this routine works with any 5D tensor</span></div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; static_assert(<a class="code" href="namespacearmnn.html#abdcd184ed3bd648bb31d385040cafd5d">MaxNumOfTensorDimensions</a> == 5, <span class="stringliteral">&quot;Please update CopyTensorContents&quot;</span>);</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; TensorShape srcStrides = srcTensor-&gt;GetStrides();</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; <span class="keyword">const</span> TensorShape&amp; srcShape = srcTensor-&gt;GetShape();</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; <span class="keyword">const</span> <span class="keyword">auto</span> srcSize = srcTensor-&gt;GetStrides()[0] * srcShape[0];</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; boost::ignore_unused(srcSize); <span class="comment">// Only used for asserts</span></div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; TensorShape dstStrides = dstTensor-&gt;GetStrides();</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; <span class="keyword">const</span> TensorShape&amp; dstShape = dstTensor-&gt;GetShape();</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; <span class="keyword">const</span> <span class="keyword">auto</span> dstSize = dstTensor-&gt;GetStrides()[0] * dstShape[0];</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; boost::ignore_unused(dstSize); <span class="comment">// Only used for asserts</span></div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160;</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; <span class="keywordtype">size_t</span> srcDepth = 1;</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; <span class="keywordtype">size_t</span> srcBatches = 1;</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; <span class="keywordtype">size_t</span> srcHeight = 1;</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; <span class="keywordtype">size_t</span> srcWidth = 1;</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; <span class="keywordtype">size_t</span> srcChannels = 1;</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; AssignValues(srcShape.GetNumDimensions(),</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; 0,</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; srcShape,</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; srcChannels,</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; srcWidth,</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; srcHeight,</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; srcBatches,</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; srcDepth);</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160;</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; <span class="keywordtype">size_t</span> srcDepthStride = 0;</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; <span class="keywordtype">size_t</span> srcBatchStride = 0;</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; <span class="keywordtype">size_t</span> srcHeightStride = 0;</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; <span class="keywordtype">size_t</span> srcWidthStride = 0;</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; <span class="keywordtype">size_t</span> srcChannelStride = 0;</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; AssignValues(srcStrides.GetNumDimensions(),</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; 0,</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; srcStrides,</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; srcChannelStride,</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; srcWidthStride,</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; srcHeightStride,</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; srcBatchStride,</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; srcDepthStride);</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160;</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; <span class="keywordtype">size_t</span> dstDepth = 1;</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; <span class="keywordtype">size_t</span> dstBatches = 1;</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; <span class="keywordtype">size_t</span> dstHeight = 1;</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; <span class="keywordtype">size_t</span> dstWidth = 1;</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; <span class="keywordtype">size_t</span> dstChannels = 1;</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; AssignValues(dstShape.GetNumDimensions(),</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; 0,</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; dstShape,</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; dstChannels,</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; dstWidth,</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; dstHeight,</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; dstBatches,</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; dstDepth);</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160;</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; <span class="keywordtype">size_t</span> dstDepthStride = 0;</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; <span class="keywordtype">size_t</span> dstBatchStride = 0;</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; <span class="keywordtype">size_t</span> dstHeightStride = 0;</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; <span class="keywordtype">size_t</span> dstWidthStride = 0;</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; <span class="keywordtype">size_t</span> dstChannelStride = 0;</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; AssignValues(dstStrides.GetNumDimensions(),</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; 0,</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; dstStrides,</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; dstChannelStride,</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; dstWidthStride,</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; dstHeightStride,</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; dstBatchStride,</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; dstDepthStride);</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160;</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span>* srcDataStart;</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span>* dstDataStart;</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; {</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; <a class="code" href="_profiling_8hpp.html#a5ccc65e2c464ac05ce311fdae7ede03a">ARMNN_SCOPED_PROFILING_EVENT</a>(Compute::Undefined, <span class="stringliteral">&quot;Synchronize buffers&quot;</span>);</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; srcDataStart = <span class="keyword">static_cast&lt;</span><span class="keyword">const </span>uint8_t*<span class="keyword">&gt;</span>(srcTensor-&gt;Map());</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; dstDataStart = <span class="keyword">static_cast&lt;</span>uint8_t*<span class="keyword">&gt;</span>(dstTensor-&gt;Map());</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; }</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160;</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; <span class="keywordtype">size_t</span> copyLength = std::min(srcChannels * srcChannelStride, dstChannels * dstChannelStride);</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; <span class="keywordtype">size_t</span> copyWidth = std::min(srcWidth, dstWidth);</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; <span class="keywordtype">size_t</span> copyHeight = std::min(srcHeight, dstHeight);</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; <span class="keywordtype">size_t</span> copyBatches = std::min(srcBatches, dstBatches);</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; <span class="keywordtype">size_t</span> copyDepth = std::min(srcDepth, dstDepth);</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160;</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; <span class="comment">// Coalesce inner dimensions where possible</span></div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; <span class="comment">// to reduce overheard calling copy() and to</span></div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; <span class="comment">// allow for memory bandwidth optimisations</span></div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; <span class="keywordflow">if</span> (copyLength == srcWidthStride &amp;&amp;</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; copyLength == dstWidthStride)</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; {</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; <span class="comment">// There is no special padding between rows,</span></div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; <span class="comment">// and sizes are compatible, so copy whole rows</span></div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; copyLength *= copyWidth;</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; copyWidth = 1;</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160;</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; <span class="keywordflow">if</span> (copyLength == srcHeightStride &amp;&amp;</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; copyLength == dstHeightStride)</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; {</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; <span class="comment">// There is no special padding between batches</span></div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; <span class="comment">// and sizes are compatible so copy whole batches</span></div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; copyLength *= copyHeight;</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; copyHeight = 1;</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; }</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; }</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160;</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span>* srcData = srcDataStart;</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span>* dstData = dstDataStart;</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> d = 0; d &lt; copyDepth; ++d)</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; {</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; <span class="keyword">auto</span> srcPtrDepth = srcData;</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; <span class="keyword">auto</span> dstPtrDepth = dstData;</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> b = 0; b &lt; copyBatches; ++b)</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; {</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; <span class="keyword">auto</span> srcPtrBatch = srcData;</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; <span class="keyword">auto</span> dstPtrBatch = dstData;</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> h = 0; h &lt; copyHeight; ++h)</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160; {</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160; <span class="keyword">auto</span> srcPtrChannel = srcData;</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160; <span class="keyword">auto</span> dstPtrChannel = dstData;</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> w = 0; w &lt; copyWidth; ++w)</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; {</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160; BOOST_ASSERT(srcData &gt;= srcDataStart &amp;&amp; srcData + copyLength &lt;= srcDataStart + srcSize);</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; BOOST_ASSERT(dstData &gt;= dstDataStart &amp;&amp; dstData + copyLength &lt;= dstDataStart + dstSize);</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160; copy(dstData, srcData, copyLength);</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; dstData += dstWidthStride;</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; srcData += srcWidthStride;</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; }</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160; dstData += (<span class="keyword">static_cast&lt;</span><span class="keywordtype">long</span><span class="keyword">&gt;</span>(dstHeightStride) - (dstData - dstPtrChannel));</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160; srcData += (<span class="keyword">static_cast&lt;</span><span class="keywordtype">long</span><span class="keyword">&gt;</span>(srcHeightStride) - (srcData - srcPtrChannel));</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160; }</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160; dstData += (<span class="keyword">static_cast&lt;</span><span class="keywordtype">long</span><span class="keyword">&gt;</span>(dstBatchStride) - (dstData - dstPtrBatch));</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160; srcData += (<span class="keyword">static_cast&lt;</span><span class="keywordtype">long</span><span class="keyword">&gt;</span>(srcBatchStride) - (srcData - srcPtrBatch));</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160; }</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; dstData += (<span class="keyword">static_cast&lt;</span><span class="keywordtype">long</span><span class="keyword">&gt;</span>(dstDepthStride) - (dstData - dstPtrDepth));</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160; srcData += (<span class="keyword">static_cast&lt;</span><span class="keywordtype">long</span><span class="keyword">&gt;</span>(srcDepthStride) - (srcData - srcPtrDepth));</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; }</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160;</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160; srcTensor-&gt;Unmap();</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160; dstTensor-&gt;Unmap();</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160;}</div><div class="ttc" id="_profiling_8hpp_html_a5ccc65e2c464ac05ce311fdae7ede03a"><div class="ttname"><a href="_profiling_8hpp.html#a5ccc65e2c464ac05ce311fdae7ede03a">ARMNN_SCOPED_PROFILING_EVENT</a></div><div class="ttdeci">#define ARMNN_SCOPED_PROFILING_EVENT(backendId, name)</div><div class="ttdef"><b>Definition:</b> <a href="_profiling_8hpp_source.html#l00170">Profiling.hpp:170</a></div></div>
<div class="ttc" id="namespacearmnn_html_abdcd184ed3bd648bb31d385040cafd5d"><div class="ttname"><a href="namespacearmnn.html#abdcd184ed3bd648bb31d385040cafd5d">armnn::MaxNumOfTensorDimensions</a></div><div class="ttdeci">constexpr unsigned int MaxNumOfTensorDimensions</div><div class="ttdef"><b>Definition:</b> <a href="_types_8hpp_source.html#l00018">Types.hpp:18</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a5e783a951642781b9e7b55db06a514b7"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a5e783a951642781b9e7b55db06a514b7">&#9670;&nbsp;</a></span>CreateAclNormalizationLayerInfoForL2Normalization()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">arm_compute::NormalizationLayerInfo armnn::CreateAclNormalizationLayerInfoForL2Normalization </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">armnn::TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>tensorInfo</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0">armnn::DataLayout</a>&#160;</td>
<td class="paramname"><em>dataLayout</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_arm_compute_utils_8hpp_source.html#l00018">18</a> of file <a class="el" href="_arm_compute_utils_8hpp_source.html">ArmComputeUtils.hpp</a>.</p>
<p class="reference">References <a class="el" href="_tensor_8hpp_source.html#l00088">TensorInfo::GetShape()</a>, and <a class="el" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0a6b99f356fe3b30a2a850b5ea897c289f">NCHW</a>.</p>
<div class="fragment"><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;{</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> depthDimension = dataLayout == <a class="code" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0a6b99f356fe3b30a2a850b5ea897c289f">armnn::DataLayout::NCHW</a> ? 1 : 3;</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> depth = tensorInfo.<a class="code" href="classarmnn_1_1_tensor_info.html#a8b5d0f8a24e9d9238f412260a552acf8">GetShape</a>()[depthDimension];</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160; <span class="comment">// At the time of writing, {CL|Neon}L2Normalization performs the reduction only along dimension 0. This version of</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; <span class="comment">// L2 Normalization always performs the reduction along the depth axis, though. Thus, we repurpose</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; <span class="comment">// {CL|Neon}NormalizationLayers to act as depthwise L2 normalizations by carefully chosing the normalization</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; <span class="comment">// parameters.</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; <span class="comment">//</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; <span class="comment">// Please refer to both the reference implementation of the normalization layer and the implementation of</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; <span class="comment">// {CL|Neon}NormalizationLayer when checking the derivations for the parameter values below.</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; <span class="comment">// Make sure normalization covers the entire depth range. ACL requires the normalization size to be odd.</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; <span class="comment">// CL: This does not result in extra kernel threads not doing any work: See usage of the RADIUS parameter in</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; <span class="comment">// ACL&#39;s normalization_layer_cross_map() CL function.</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; <span class="keyword">const</span> uint32_t normSize = depth * 2u + 1u;</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; <span class="comment">// See ACL&#39;s NormalizationLayerInfo::scale_coeff() definition.</span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; <span class="comment">// For the reference implementation, to make alpha_ become 1, we&#39;d have to use alpha = normSize instead.</span></div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; <span class="keyword">const</span> <span class="keywordtype">float</span> alpha = 1.0f;</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; <span class="comment">// Don&#39;t offset the reduction.</span></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; <span class="keyword">const</span> <span class="keywordtype">float</span> kappa = 0.0f;</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <span class="comment">// pow(reduction, -0.5) = 1 / sqrt(reduction)</span></div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <span class="keyword">const</span> <span class="keywordtype">float</span> beta = 0.5f;</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; <span class="keywordflow">return</span> arm_compute::NormalizationLayerInfo(arm_compute::NormType::CROSS_MAP, normSize, alpha, beta, kappa, <span class="keyword">false</span>);</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_ad1d5cce2d9e9a5d61c243e5c989112e0a6b99f356fe3b30a2a850b5ea897c289f"><div class="ttname"><a href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0a6b99f356fe3b30a2a850b5ea897c289f">armnn::DataLayout::NCHW</a></div></div>
<div class="ttc" id="classarmnn_1_1_tensor_info_html_a8b5d0f8a24e9d9238f412260a552acf8"><div class="ttname"><a href="classarmnn_1_1_tensor_info.html#a8b5d0f8a24e9d9238f412260a552acf8">armnn::TensorInfo::GetShape</a></div><div class="ttdeci">const TensorShape &amp; GetShape() const</div><div class="ttdef"><b>Definition:</b> <a href="_tensor_8hpp_source.html#l00088">Tensor.hpp:88</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a733ae6b70d0bfa43433c3e7606992328"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a733ae6b70d0bfa43433c3e7606992328">&#9670;&nbsp;</a></span>CreateDescriptorForConcatenation()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="structarmnn_1_1_origins_descriptor.html">OriginsDescriptor</a> armnn::CreateDescriptorForConcatenation </td>
<td>(</td>
<td class="paramtype">TensorShapeIt&#160;</td>
<td class="paramname"><em>first</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">TensorShapeIt&#160;</td>
<td class="paramname"><em>last</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">unsigned int&#160;</td>
<td class="paramname"><em>concatenationDimension</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Convenience template to create an <a class="el" href="structarmnn_1_1_origins_descriptor.html" title="An OriginsDescriptor for the ConcatLayer. Descriptor to configure the concatenation process...">OriginsDescriptor</a> to use when creating a <a class="el" href="classarmnn_1_1_concat_layer.html" title="This layer represents a merge operation. ">ConcatLayer</a> for performing concatenation of a number of input tensors. </p>
<p class="definition">Definition at line <a class="el" href="_descriptors_8hpp_source.html#l00242">242</a> of file <a class="el" href="_descriptors_8hpp_source.html">Descriptors.hpp</a>.</p>
<p class="reference">References <a class="el" href="_descriptors_8cpp_source.html#l00150">OriginsDescriptor::SetConcatAxis()</a>, and <a class="el" href="_descriptors_8cpp_source.html#l00159">OriginsDescriptor::SetViewOriginCoord()</a>.</p>
<p class="reference">Referenced by <a class="el" href="_serializer_tests_8cpp_source.html#l01542">BOOST_AUTO_TEST_CASE()</a>, <a class="el" href="_concat_test_impl_8cpp_source.html#l01916">ConcatDifferentInputOutputQParamTest()</a>, <a class="el" href="_concat_test_impl_8cpp_source.html#l00026">CreateDescriptorForConcat()</a>, and <a class="el" href="_descriptors_8hpp_source.html#l00232">CreateMergerDescriptorForConcatenation()</a>.</p>
<div class="fragment"><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160;{</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160; <span class="keyword">auto</span> numInputs = std::distance(first, last);</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160;</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160; <span class="keywordflow">if</span> (numInputs &lt; 2)</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160; {</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160; <span class="keywordflow">throw</span> InvalidArgumentException(<span class="stringliteral">&quot;Concatenation requires at least 2 inputs&quot;</span>);</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160; }</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160;</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160; <span class="keyword">const</span> <span class="keyword">auto</span>&amp; firstInputShape = *first;</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160;</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> numDimensions = firstInputShape.GetNumDimensions();</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span> it = first + 1; it != last; ++it)</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160; {</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160; <span class="keywordflow">if</span> (it-&gt;GetNumDimensions() != numDimensions)</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160; {</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160; <span class="keywordflow">throw</span> InvalidArgumentException(<span class="stringliteral">&quot;All inputs to concatenation must have the same number of dimensions&quot;</span>);</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160; }</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160; }</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160;</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160; <span class="keywordflow">if</span> (concatenationDimension &gt;= numDimensions)</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160; {</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160; <span class="keywordflow">throw</span> InvalidArgumentException(<span class="stringliteral">&quot;concatenationDimension must be between 0 and the number of dimensions.&quot;</span>);</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160; }</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160;</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span> it = first; it != last; ++it)</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160; {</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> d = 0; d &lt; numDimensions; ++d)</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160; {</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> dimSizeOk = (d == concatenationDimension) || (firstInputShape[d] == (*it)[d]);</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160; <span class="keywordflow">if</span> (!dimSizeOk)</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160; {</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160; <span class="keywordflow">throw</span> InvalidArgumentException(<span class="stringliteral">&quot;All inputs to concatenation must be the same size along all dimensions &quot;</span></div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160; <span class="stringliteral">&quot; except the concatenation dimension&quot;</span>);</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160; }</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160; }</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160; }</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160;</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160; OriginsDescriptor viewsDescriptor(static_cast&lt;uint32_t&gt;(numInputs), numDimensions);</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160; viewsDescriptor.SetConcatAxis(concatenationDimension);</div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160;</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160; uint32_t viewIndex = 0u;</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160; uint32_t coordAlongConcatDim = 0u;</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span> it = first; it != last; ++it)</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160; {</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160; <span class="keyword">const</span> <span class="keyword">auto</span>&amp; inputShape = *it;</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160;</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i &lt; concatenationDimension; ++i)</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160; {</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160; viewsDescriptor.SetViewOriginCoord(viewIndex, i, 0);</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160; }</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160;</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160; viewsDescriptor.SetViewOriginCoord(viewIndex, concatenationDimension, coordAlongConcatDim);</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> dimSize = inputShape[concatenationDimension];</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160; coordAlongConcatDim += dimSize;</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160;</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160;</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = concatenationDimension + 1; i &lt; numDimensions; ++i)</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160; {</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160; viewsDescriptor.SetViewOriginCoord(viewIndex, i, 0);</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160; }</div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160;</div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160; ++viewIndex;</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160; }</div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160;</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160; <span class="keywordflow">return</span> viewsDescriptor;</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160;}</div></div><!-- fragment -->
</div>
</div>
<a id="a2fe587812a8dd3e7d7419cbb84a7f4ff"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a2fe587812a8dd3e7d7419cbb84a7f4ff">&#9670;&nbsp;</a></span>CreateMergerDescriptorForConcatenation()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="structarmnn_1_1_origins_descriptor.html">OriginsDescriptor</a> armnn::CreateMergerDescriptorForConcatenation </td>
<td>(</td>
<td class="paramtype">TensorShapeIt&#160;</td>
<td class="paramname"><em>first</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">TensorShapeIt&#160;</td>
<td class="paramname"><em>last</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">unsigned int&#160;</td>
<td class="paramname"><em>concatenationDimension</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_descriptors_8hpp_source.html#l00232">232</a> of file <a class="el" href="_descriptors_8hpp_source.html">Descriptors.hpp</a>.</p>
<p class="reference">References <a class="el" href="_descriptors_8hpp_source.html#l00242">CreateDescriptorForConcatenation()</a>.</p>
<div class="fragment"><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160;{</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespacearmnn.html#a733ae6b70d0bfa43433c3e7606992328">CreateDescriptorForConcatenation</a>(first, last, concatenationDimension);</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a733ae6b70d0bfa43433c3e7606992328"><div class="ttname"><a href="namespacearmnn.html#a733ae6b70d0bfa43433c3e7606992328">armnn::CreateDescriptorForConcatenation</a></div><div class="ttdeci">OriginsDescriptor CreateDescriptorForConcatenation(TensorShapeIt first, TensorShapeIt last, unsigned int concatenationDimension)</div><div class="ttdoc">Convenience template to create an OriginsDescriptor to use when creating a ConcatLayer for performing...</div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.html#l00242">Descriptors.hpp:242</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a5fbc1479db5f4ff70a750cf02d58971b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a5fbc1479db5f4ff70a750cf02d58971b">&#9670;&nbsp;</a></span>CreateNetworkWithActivationLayer()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> armnn::CreateNetworkWithActivationLayer </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="structarmnn_1_1_activation_descriptor.html">ActivationDescriptor</a> &amp;&#160;</td>
<td class="paramname"><em>descriptor</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_shape.html">TensorShape</a> &amp;&#160;</td>
<td class="paramname"><em>shape</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_quantizer_test_8cpp_source.html#l00297">297</a> of file <a class="el" href="_quantizer_test_8cpp_source.html">QuantizerTest.cpp</a>.</p>
<p class="reference">References <a class="el" href="classarmnn_1_1_i_output_slot.html#ac1835f8756a9f03c02fcf9664e3a0fce">IOutputSlot::Connect()</a>, <a class="el" href="_network_8cpp_source.html#l00048">INetwork::Create()</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">Float32</a>, <a class="el" href="classarmnn_1_1_i_connectable_layer.html#a6ec9e0eb66d7d6a01240492a0b18104c">IConnectableLayer::GetInputSlot()</a>, <a class="el" href="classarmnn_1_1_i_connectable_layer.html#a80ac4eda2e7f2757ec9dd96fc96dbd16">IConnectableLayer::GetOutputSlot()</a>, <a class="el" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>, and <a class="el" href="classarmnn_1_1_i_output_slot.html#a5ee4a6c9a2481245487b1b1a70d20fd0">IOutputSlot::SetTensorInfo()</a>.</p>
<p class="reference">Referenced by <a class="el" href="_quantizer_test_8cpp_source.html#l00408">BOOST_AUTO_TEST_CASE()</a>.</p>
<div class="fragment"><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160;{</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> network = INetwork::Create();</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160;</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160; <span class="comment">// Add the layers</span></div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160; IConnectableLayer* input0 = network-&gt;AddInputLayer(0);</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160; IConnectableLayer* activation = network-&gt;AddActivationLayer(descriptor);</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160; IConnectableLayer* output = network-&gt;AddOutputLayer(2);</div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160;</div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160; <span class="comment">// Establish connections</span></div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160; input0-&gt;GetOutputSlot(0).Connect(activation-&gt;GetInputSlot(0));</div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160; activation-&gt;GetOutputSlot(0).Connect(output-&gt;GetInputSlot(0));</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160;</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160; <span class="comment">// Set TensorInfo</span></div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160; TensorInfo <a class="code" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>(shape, DataType::Float32);</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160; input0-&gt;GetOutputSlot(0).SetTensorInfo(info);</div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160; activation-&gt;GetOutputSlot(0).SetTensorInfo(info);</div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160;</div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>&#160; <span class="keywordflow">return</span> network;</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c"><div class="ttname"><a href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">armnn::BoostLogSeverityMapping::info</a></div></div>
<div class="ttc" id="namespacearmnn_html_ace74f6f9feb95a964a49d79458232703"><div class="ttname"><a href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">armnn::INetworkPtr</a></div><div class="ttdeci">std::unique_ptr&lt; INetwork, void(*)(INetwork *network)&gt; INetworkPtr</div><div class="ttdef"><b>Definition:</b> <a href="_i_network_8hpp_source.html#l00085">INetwork.hpp:85</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="aad4b8cb9a4d882a48bc21510f0d1a938"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aad4b8cb9a4d882a48bc21510f0d1a938">&#9670;&nbsp;</a></span>CreateNetworkWithFullyConnectedLayer()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> armnn::CreateNetworkWithFullyConnectedLayer </td>
<td>(</td>
<td class="paramtype">const bool&#160;</td>
<td class="paramname"><em>biasEnabled</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_shape.html">TensorShape</a> &amp;&#160;</td>
<td class="paramname"><em>inputShape</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_shape.html">TensorShape</a> &amp;&#160;</td>
<td class="paramname"><em>outputShape</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_quantizer_test_8cpp_source.html#l00951">951</a> of file <a class="el" href="_quantizer_test_8cpp_source.html">QuantizerTest.cpp</a>.</p>
<p class="reference">References <a class="el" href="classarmnn_1_1_i_output_slot.html#ac1835f8756a9f03c02fcf9664e3a0fce">IOutputSlot::Connect()</a>, <a class="el" href="_network_8cpp_source.html#l00048">INetwork::Create()</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">Float32</a>, <a class="el" href="classarmnn_1_1_i_connectable_layer.html#a6ec9e0eb66d7d6a01240492a0b18104c">IConnectableLayer::GetInputSlot()</a>, <a class="el" href="classarmnn_1_1_i_connectable_layer.html#a80ac4eda2e7f2757ec9dd96fc96dbd16">IConnectableLayer::GetOutputSlot()</a>, <a class="el" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>, <a class="el" href="_descriptors_8hpp_source.html#l00386">FullyConnectedDescriptor::m_BiasEnabled</a>, and <a class="el" href="classarmnn_1_1_i_output_slot.html#a5ee4a6c9a2481245487b1b1a70d20fd0">IOutputSlot::SetTensorInfo()</a>.</p>
<p class="reference">Referenced by <a class="el" href="_quantizer_test_8cpp_source.html#l00989">ValidateFullyConnectedLayer()</a>.</p>
<div class="fragment"><div class="line"><a name="l00954"></a><span class="lineno"> 954</span>&#160;{</div><div class="line"><a name="l00955"></a><span class="lineno"> 955</span>&#160; FullyConnectedDescriptor desc;</div><div class="line"><a name="l00956"></a><span class="lineno"> 956</span>&#160; desc.m_BiasEnabled = biasEnabled;</div><div class="line"><a name="l00957"></a><span class="lineno"> 957</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> network = INetwork::Create();</div><div class="line"><a name="l00958"></a><span class="lineno"> 958</span>&#160;</div><div class="line"><a name="l00959"></a><span class="lineno"> 959</span>&#160; <span class="keyword">const</span> TensorInfo <a class="code" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>(inputShape, DataType::Float32);</div><div class="line"><a name="l00960"></a><span class="lineno"> 960</span>&#160; <span class="keyword">const</span> TensorInfo outputInfo(outputShape, DataType::Float32);</div><div class="line"><a name="l00961"></a><span class="lineno"> 961</span>&#160;</div><div class="line"><a name="l00962"></a><span class="lineno"> 962</span>&#160; std::vector&lt;float&gt; weightsData{-1.0f, 1.5f, 2.0f};</div><div class="line"><a name="l00963"></a><span class="lineno"> 963</span>&#160; ConstTensor weights(info, weightsData);</div><div class="line"><a name="l00964"></a><span class="lineno"> 964</span>&#160;</div><div class="line"><a name="l00965"></a><span class="lineno"> 965</span>&#160; <span class="comment">// Add the layers</span></div><div class="line"><a name="l00966"></a><span class="lineno"> 966</span>&#160; IConnectableLayer* input0 = network-&gt;AddInputLayer(0);</div><div class="line"><a name="l00967"></a><span class="lineno"> 967</span>&#160; IConnectableLayer* fullyConnected;</div><div class="line"><a name="l00968"></a><span class="lineno"> 968</span>&#160; Optional&lt;ConstTensor&gt; optionalBias;</div><div class="line"><a name="l00969"></a><span class="lineno"> 969</span>&#160; std::vector&lt;float&gt; biasData{10.0f, 20.0f, 30.0f};</div><div class="line"><a name="l00970"></a><span class="lineno"> 970</span>&#160; <span class="keywordflow">if</span> (desc.m_BiasEnabled)</div><div class="line"><a name="l00971"></a><span class="lineno"> 971</span>&#160; {</div><div class="line"><a name="l00972"></a><span class="lineno"> 972</span>&#160; ConstTensor bias(info, biasData);</div><div class="line"><a name="l00973"></a><span class="lineno"> 973</span>&#160; optionalBias = Optional&lt;ConstTensor&gt;(bias);</div><div class="line"><a name="l00974"></a><span class="lineno"> 974</span>&#160; }</div><div class="line"><a name="l00975"></a><span class="lineno"> 975</span>&#160; fullyConnected = network-&gt;AddFullyConnectedLayer(desc, weights, optionalBias);</div><div class="line"><a name="l00976"></a><span class="lineno"> 976</span>&#160; IConnectableLayer* output = network-&gt;AddOutputLayer(1);</div><div class="line"><a name="l00977"></a><span class="lineno"> 977</span>&#160;</div><div class="line"><a name="l00978"></a><span class="lineno"> 978</span>&#160; <span class="comment">// Establish connections</span></div><div class="line"><a name="l00979"></a><span class="lineno"> 979</span>&#160; input0-&gt;GetOutputSlot(0).Connect(fullyConnected-&gt;GetInputSlot(0));</div><div class="line"><a name="l00980"></a><span class="lineno"> 980</span>&#160; fullyConnected-&gt;GetOutputSlot(0).Connect(output-&gt;GetInputSlot(0));</div><div class="line"><a name="l00981"></a><span class="lineno"> 981</span>&#160;</div><div class="line"><a name="l00982"></a><span class="lineno"> 982</span>&#160; <span class="comment">// Set TensorInfo</span></div><div class="line"><a name="l00983"></a><span class="lineno"> 983</span>&#160; input0-&gt;GetOutputSlot(0).SetTensorInfo(info);</div><div class="line"><a name="l00984"></a><span class="lineno"> 984</span>&#160; fullyConnected-&gt;GetOutputSlot(0).SetTensorInfo(outputInfo);</div><div class="line"><a name="l00985"></a><span class="lineno"> 985</span>&#160;</div><div class="line"><a name="l00986"></a><span class="lineno"> 986</span>&#160; <span class="keywordflow">return</span> network;</div><div class="line"><a name="l00987"></a><span class="lineno"> 987</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c"><div class="ttname"><a href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">armnn::BoostLogSeverityMapping::info</a></div></div>
<div class="ttc" id="namespacearmnn_html_ace74f6f9feb95a964a49d79458232703"><div class="ttname"><a href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">armnn::INetworkPtr</a></div><div class="ttdeci">std::unique_ptr&lt; INetwork, void(*)(INetwork *network)&gt; INetworkPtr</div><div class="ttdef"><b>Definition:</b> <a href="_i_network_8hpp_source.html#l00085">INetwork.hpp:85</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="aa9c6c1a7b5380a99a536f4740f87dd59"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa9c6c1a7b5380a99a536f4740f87dd59">&#9670;&nbsp;</a></span>CreateNetworkWithInputOutputLayers()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> armnn::CreateNetworkWithInputOutputLayers </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_quantizer_test_8cpp_source.html#l00318">318</a> of file <a class="el" href="_quantizer_test_8cpp_source.html">QuantizerTest.cpp</a>.</p>
<p class="reference">References <a class="el" href="classarmnn_1_1_i_output_slot.html#ac1835f8756a9f03c02fcf9664e3a0fce">IOutputSlot::Connect()</a>, <a class="el" href="_network_8cpp_source.html#l00048">INetwork::Create()</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">Float32</a>, <a class="el" href="classarmnn_1_1_i_connectable_layer.html#a6ec9e0eb66d7d6a01240492a0b18104c">IConnectableLayer::GetInputSlot()</a>, <a class="el" href="classarmnn_1_1_i_connectable_layer.html#a80ac4eda2e7f2757ec9dd96fc96dbd16">IConnectableLayer::GetOutputSlot()</a>, <a class="el" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>, and <a class="el" href="classarmnn_1_1_i_output_slot.html#a5ee4a6c9a2481245487b1b1a70d20fd0">IOutputSlot::SetTensorInfo()</a>.</p>
<p class="reference">Referenced by <a class="el" href="_quantizer_test_8cpp_source.html#l00347">BOOST_AUTO_TEST_CASE()</a>.</p>
<div class="fragment"><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160;{</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> network = INetwork::Create();</div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span>&#160;</div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>&#160; <span class="comment">// Add input/output layers</span></div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160; IConnectableLayer* inputLayer = network-&gt;AddInputLayer(0);</div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>&#160; IConnectableLayer* output = network-&gt;AddOutputLayer(1);</div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span>&#160;</div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span>&#160; <span class="comment">// Establish connections</span></div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span>&#160; inputLayer-&gt;GetOutputSlot(0).Connect(output-&gt;GetInputSlot(0));</div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span>&#160;</div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span>&#160; <span class="comment">// Set TensorInfo</span></div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span>&#160; TensorShape shape{8U};</div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span>&#160; TensorInfo <a class="code" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>(shape, DataType::Float32);</div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span>&#160; inputLayer-&gt;GetOutputSlot(0).SetTensorInfo(info);</div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span>&#160;</div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span>&#160; <span class="keywordflow">return</span> network;</div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c"><div class="ttname"><a href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">armnn::BoostLogSeverityMapping::info</a></div></div>
<div class="ttc" id="namespacearmnn_html_ace74f6f9feb95a964a49d79458232703"><div class="ttname"><a href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">armnn::INetworkPtr</a></div><div class="ttdeci">std::unique_ptr&lt; INetwork, void(*)(INetwork *network)&gt; INetworkPtr</div><div class="ttdef"><b>Definition:</b> <a href="_i_network_8hpp_source.html#l00085">INetwork.hpp:85</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a9c91b774c3089c55df77cc3a42da72de"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a9c91b774c3089c55df77cc3a42da72de">&#9670;&nbsp;</a></span>CreateNetworkWithSoftmaxLayer()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> armnn::CreateNetworkWithSoftmaxLayer </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="structarmnn_1_1_softmax_descriptor.html">SoftmaxDescriptor</a> &amp;&#160;</td>
<td class="paramname"><em>descriptor</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_shape.html">TensorShape</a> &amp;&#160;</td>
<td class="paramname"><em>shape</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_quantizer_test_8cpp_source.html#l01357">1357</a> of file <a class="el" href="_quantizer_test_8cpp_source.html">QuantizerTest.cpp</a>.</p>
<p class="reference">References <a class="el" href="classarmnn_1_1_i_output_slot.html#ac1835f8756a9f03c02fcf9664e3a0fce">IOutputSlot::Connect()</a>, <a class="el" href="_network_8cpp_source.html#l00048">INetwork::Create()</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">Float32</a>, <a class="el" href="classarmnn_1_1_i_connectable_layer.html#a6ec9e0eb66d7d6a01240492a0b18104c">IConnectableLayer::GetInputSlot()</a>, <a class="el" href="classarmnn_1_1_i_connectable_layer.html#a80ac4eda2e7f2757ec9dd96fc96dbd16">IConnectableLayer::GetOutputSlot()</a>, <a class="el" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>, and <a class="el" href="classarmnn_1_1_i_output_slot.html#a5ee4a6c9a2481245487b1b1a70d20fd0">IOutputSlot::SetTensorInfo()</a>.</p>
<p class="reference">Referenced by <a class="el" href="_quantizer_test_8cpp_source.html#l01378">BOOST_AUTO_TEST_CASE()</a>.</p>
<div class="fragment"><div class="line"><a name="l01358"></a><span class="lineno"> 1358</span>&#160;{</div><div class="line"><a name="l01359"></a><span class="lineno"> 1359</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> network = INetwork::Create();</div><div class="line"><a name="l01360"></a><span class="lineno"> 1360</span>&#160;</div><div class="line"><a name="l01361"></a><span class="lineno"> 1361</span>&#160; <span class="comment">// Add the layers</span></div><div class="line"><a name="l01362"></a><span class="lineno"> 1362</span>&#160; IConnectableLayer* input0 = network-&gt;AddInputLayer(0);</div><div class="line"><a name="l01363"></a><span class="lineno"> 1363</span>&#160; IConnectableLayer* softmax = network-&gt;AddSoftmaxLayer(descriptor);</div><div class="line"><a name="l01364"></a><span class="lineno"> 1364</span>&#160; IConnectableLayer* output = network-&gt;AddOutputLayer(2);</div><div class="line"><a name="l01365"></a><span class="lineno"> 1365</span>&#160;</div><div class="line"><a name="l01366"></a><span class="lineno"> 1366</span>&#160; <span class="comment">// Establish connections</span></div><div class="line"><a name="l01367"></a><span class="lineno"> 1367</span>&#160; input0-&gt;GetOutputSlot(0).Connect(softmax-&gt;GetInputSlot(0));</div><div class="line"><a name="l01368"></a><span class="lineno"> 1368</span>&#160; softmax-&gt;GetOutputSlot(0).Connect(output-&gt;GetInputSlot(0));</div><div class="line"><a name="l01369"></a><span class="lineno"> 1369</span>&#160;</div><div class="line"><a name="l01370"></a><span class="lineno"> 1370</span>&#160; <span class="comment">// Set TensorInfo</span></div><div class="line"><a name="l01371"></a><span class="lineno"> 1371</span>&#160; TensorInfo <a class="code" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>(shape, DataType::Float32);</div><div class="line"><a name="l01372"></a><span class="lineno"> 1372</span>&#160; input0-&gt;GetOutputSlot(0).SetTensorInfo(info);</div><div class="line"><a name="l01373"></a><span class="lineno"> 1373</span>&#160; softmax-&gt;GetOutputSlot(0).SetTensorInfo(info);</div><div class="line"><a name="l01374"></a><span class="lineno"> 1374</span>&#160;</div><div class="line"><a name="l01375"></a><span class="lineno"> 1375</span>&#160; <span class="keywordflow">return</span> network;</div><div class="line"><a name="l01376"></a><span class="lineno"> 1376</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c"><div class="ttname"><a href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">armnn::BoostLogSeverityMapping::info</a></div></div>
<div class="ttc" id="namespacearmnn_html_ace74f6f9feb95a964a49d79458232703"><div class="ttname"><a href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">armnn::INetworkPtr</a></div><div class="ttdeci">std::unique_ptr&lt; INetwork, void(*)(INetwork *network)&gt; INetworkPtr</div><div class="ttdef"><b>Definition:</b> <a href="_i_network_8hpp_source.html#l00085">INetwork.hpp:85</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a310dd804fd70eadb1e8854325e63f0bd"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a310dd804fd70eadb1e8854325e63f0bd">&#9670;&nbsp;</a></span>CreateQuantizedConst()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classarmnn_1_1_const_tensor.html">ConstTensor</a> CreateQuantizedConst </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_const_tensor.html">ConstTensor</a> &amp;&#160;</td>
<td class="paramname"><em>tensor</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">std::vector&lt; uint8_t &gt; &amp;&#160;</td>
<td class="paramname"><em>backing</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_network_quantizer_utils_8cpp_source.html#l00015">15</a> of file <a class="el" href="_network_quantizer_utils_8cpp_source.html">NetworkQuantizerUtils.cpp</a>.</p>
<p class="reference">References <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">Float32</a>, <a class="el" href="_tensor_8hpp_source.html#l00095">TensorInfo::GetDataType()</a>, <a class="el" href="_tensor_8hpp_source.html#l00167">BaseTensor&lt; MemoryType &gt;::GetInfo()</a>, <a class="el" href="_tensor_8hpp_source.html#l00177">BaseTensor&lt; MemoryType &gt;::GetMemoryArea()</a>, <a class="el" href="_tensor_8hpp_source.html#l00093">TensorInfo::GetNumElements()</a>, <a class="el" href="_tensor_8hpp_source.html#l00088">TensorInfo::GetShape()</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a0a3f57c876f5a230244c38e1453a8a6e">QAsymmU8</a>, and <a class="el" href="_network_quantizer_utils_8hpp_source.html#l00023">QuantizeConstant()</a>.</p>
<p class="reference">Referenced by <a class="el" href="_network_quantizer_utils_8hpp_source.html#l00023">QuantizeConstant()</a>, <a class="el" href="_quantizer_visitor_8cpp_source.html#l00146">QuantizerVisitor::VisitBatchNormalizationLayer()</a>, <a class="el" href="_quantizer_visitor_8cpp_source.html#l00204">QuantizerVisitor::VisitConstantLayer()</a>, <a class="el" href="_quantizer_visitor_8cpp_source.html#l00215">QuantizerVisitor::VisitConvolution2dLayer()</a>, <a class="el" href="_quantizer_visitor_8cpp_source.html#l00250">QuantizerVisitor::VisitDepthwiseConvolution2dLayer()</a>, <a class="el" href="_quantizer_visitor_8cpp_source.html#l00285">QuantizerVisitor::VisitFullyConnectedLayer()</a>, and <a class="el" href="_quantizer_visitor_8cpp_source.html#l00536">QuantizerVisitor::VisitTransposeConvolution2dLayer()</a>.</p>
<div class="fragment"><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;{</div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160; <span class="keywordtype">float</span> scale = 0.0f;</div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160; <span class="keywordtype">int</span> offset = 0;</div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;</div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160; <span class="comment">// Reserve the backing memory</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160; backing.resize(tensor.GetInfo().GetNumElements());</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160; <a class="code" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a> type = tensor.GetInfo().GetDataType();</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160; <span class="keywordflow">switch</span>(type)</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; {</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; <span class="keywordflow">case</span> DataType::Float32:</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; {</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; <a class="code" href="namespacearmnn.html#a0e2bce68a1f7eff47ead4d9a2804eb91">QuantizeConstant</a>(static_cast&lt;const float*&gt;(tensor.GetMemoryArea()),</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; backing.data(),</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; backing.size(),</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; scale,</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; offset);</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; }</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; <span class="keywordflow">default</span>:</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; BOOST_ASSERT_MSG(<span class="keyword">false</span>, <span class="stringliteral">&quot;Can&#39;t quantize unsupported data type&quot;</span>);</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; }</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; TensorInfo qInfo(tensor.GetInfo().GetShape(), DataType::QAsymmU8, scale, offset);</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; <span class="keywordflow">return</span> ConstTensor(qInfo, backing);</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a0e2bce68a1f7eff47ead4d9a2804eb91"><div class="ttname"><a href="namespacearmnn.html#a0e2bce68a1f7eff47ead4d9a2804eb91">armnn::QuantizeConstant</a></div><div class="ttdeci">void QuantizeConstant(const srcType *src, uint8_t *dst, size_t numElements, float &amp;scale, int &amp;offset)</div><div class="ttdef"><b>Definition:</b> <a href="_network_quantizer_utils_8hpp_source.html#l00023">NetworkQuantizerUtils.hpp:23</a></div></div>
<div class="ttc" id="namespacearmnn_html_ad8ed01ff3ff33333d8e19db4d2818bb6"><div class="ttname"><a href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6">armnn::DataType</a></div><div class="ttdeci">DataType</div><div class="ttdef"><b>Definition:</b> <a href="_types_8hpp_source.html#l00032">Types.hpp:32</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a120c131df35d78b3a56cb0f07decaf35"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a120c131df35d78b3a56cb0f07decaf35">&#9670;&nbsp;</a></span>CreateStartOfLeakyReluNetwork()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classarmnn_1_1_i_connectable_layer.html">IConnectableLayer</a>* armnn::CreateStartOfLeakyReluNetwork </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classarmnn_1_1_i_network.html">INetwork</a> *&#160;</td>
<td class="paramname"><em>network</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>info</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_quantizer_test_8cpp_source.html#l01474">1474</a> of file <a class="el" href="_quantizer_test_8cpp_source.html">QuantizerTest.cpp</a>.</p>
<p class="reference">References <a class="el" href="classarmnn_1_1_i_network.html#aea068f6094e1c3bfcdf8167b68112632">INetwork::AddActivationLayer()</a>, <a class="el" href="classarmnn_1_1_i_network.html#a87d5ec72def73ca14bd2987a024bd569">INetwork::AddInputLayer()</a>, <a class="el" href="classarmnn_1_1_i_output_slot.html#ac1835f8756a9f03c02fcf9664e3a0fce">IOutputSlot::Connect()</a>, <a class="el" href="classarmnn_1_1_i_connectable_layer.html#a6ec9e0eb66d7d6a01240492a0b18104c">IConnectableLayer::GetInputSlot()</a>, <a class="el" href="classarmnn_1_1_i_connectable_layer.html#a80ac4eda2e7f2757ec9dd96fc96dbd16">IConnectableLayer::GetOutputSlot()</a>, <a class="el" href="namespacearmnn.html#a56297e0f7b215eea46c818cb7528d9eaacb7667f5ec2f6e8a5943b781ba6c2735">LeakyReLu</a>, <a class="el" href="_descriptors_8hpp_source.html#l00037">ActivationDescriptor::m_A</a>, <a class="el" href="_descriptors_8hpp_source.html#l00039">ActivationDescriptor::m_B</a>, <a class="el" href="_descriptors_8hpp_source.html#l00035">ActivationDescriptor::m_Function</a>, and <a class="el" href="classarmnn_1_1_i_output_slot.html#a5ee4a6c9a2481245487b1b1a70d20fd0">IOutputSlot::SetTensorInfo()</a>.</p>
<p class="reference">Referenced by <a class="el" href="_quantizer_test_8cpp_source.html#l01511">BOOST_AUTO_TEST_CASE()</a>.</p>
<div class="fragment"><div class="line"><a name="l01475"></a><span class="lineno"> 1475</span>&#160;{</div><div class="line"><a name="l01476"></a><span class="lineno"> 1476</span>&#160; ActivationDescriptor activationDescriptor;</div><div class="line"><a name="l01477"></a><span class="lineno"> 1477</span>&#160; activationDescriptor.m_Function = ActivationFunction::LeakyReLu;</div><div class="line"><a name="l01478"></a><span class="lineno"> 1478</span>&#160; activationDescriptor.m_A = 3.5f;</div><div class="line"><a name="l01479"></a><span class="lineno"> 1479</span>&#160; activationDescriptor.m_B = -10.0f;</div><div class="line"><a name="l01480"></a><span class="lineno"> 1480</span>&#160;</div><div class="line"><a name="l01481"></a><span class="lineno"> 1481</span>&#160; <span class="comment">// Add the layers</span></div><div class="line"><a name="l01482"></a><span class="lineno"> 1482</span>&#160; IConnectableLayer* input0 = network-&gt;AddInputLayer(0);</div><div class="line"><a name="l01483"></a><span class="lineno"> 1483</span>&#160; IConnectableLayer* activation = network-&gt;AddActivationLayer(activationDescriptor);</div><div class="line"><a name="l01484"></a><span class="lineno"> 1484</span>&#160;</div><div class="line"><a name="l01485"></a><span class="lineno"> 1485</span>&#160; <span class="comment">// Establish connections</span></div><div class="line"><a name="l01486"></a><span class="lineno"> 1486</span>&#160; input0-&gt;GetOutputSlot(0).Connect(activation-&gt;GetInputSlot(0));</div><div class="line"><a name="l01487"></a><span class="lineno"> 1487</span>&#160;</div><div class="line"><a name="l01488"></a><span class="lineno"> 1488</span>&#160; <span class="comment">// Set TensorInfo</span></div><div class="line"><a name="l01489"></a><span class="lineno"> 1489</span>&#160; input0-&gt;GetOutputSlot(0).SetTensorInfo(info);</div><div class="line"><a name="l01490"></a><span class="lineno"> 1490</span>&#160; activation-&gt;GetOutputSlot(0).SetTensorInfo(info);</div><div class="line"><a name="l01491"></a><span class="lineno"> 1491</span>&#160;</div><div class="line"><a name="l01492"></a><span class="lineno"> 1492</span>&#160; <span class="keywordflow">return</span> activation;</div><div class="line"><a name="l01493"></a><span class="lineno"> 1493</span>&#160;}</div></div><!-- fragment -->
</div>
</div>
<a id="a1ec6b4c20ed294a96cf94c33c24caaf5"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a1ec6b4c20ed294a96cf94c33c24caaf5">&#9670;&nbsp;</a></span>CreateSupportedBackends()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="namespacearmnn.html#a9173495a61a0092b5f38b855f02c3585">BackendsMap</a> CreateSupportedBackends </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classarmnn_1_1_tensor_handle_factory_registry.html">TensorHandleFactoryRegistry</a> &amp;&#160;</td>
<td class="paramname"><em>handleFactoryRegistry</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="structarmnn_1_1_backend_settings.html">BackendSettings</a> &amp;&#160;</td>
<td class="paramname"><em>backendSettings</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_network_8cpp_source.html#l00326">326</a> of file <a class="el" href="_network_8cpp_source.html">Network.cpp</a>.</p>
<p class="reference">References <a class="el" href="_backend_registry_8cpp_source.html#l00013">BackendRegistryInstance()</a>, and <a class="el" href="_backend_settings_8hpp_source.html#l00017">BackendSettings::m_SupportedBackends</a>.</p>
<p class="reference">Referenced by <a class="el" href="_network_8cpp_source.html#l00807">Optimize()</a>.</p>
<div class="fragment"><div class="line"><a name="l00328"></a><span class="lineno"> 328</span>&#160;{</div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span>&#160; <a class="code" href="namespacearmnn.html#a9173495a61a0092b5f38b855f02c3585">BackendsMap</a> backends;</div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span>&#160; <span class="keyword">auto</span> <span class="keyword">const</span>&amp; backendRegistry = <a class="code" href="namespacearmnn.html#ac2807505b850738bc8a1991ce669dd47">BackendRegistryInstance</a>();</div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span>&amp;&amp; selectedBackend : backendSettings.m_SupportedBackends)</div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span>&#160; {</div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span>&#160; <span class="keyword">auto</span> backendFactory = backendRegistry.GetFactory(selectedBackend);</div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span>&#160; <span class="keyword">auto</span> backendObjPtr = backendFactory();</div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span>&#160; BOOST_ASSERT(backendObjPtr);</div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span>&#160;</div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>&#160; backendObjPtr-&gt;RegisterTensorHandleFactories(handleFactoryRegistry);</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>&#160;</div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>&#160; backends[backendObjPtr-&gt;GetId()] = std::move(backendObjPtr);</div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>&#160; }</div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span>&#160;</div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span>&#160; <span class="keywordflow">return</span> backends;</div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_ac2807505b850738bc8a1991ce669dd47"><div class="ttname"><a href="namespacearmnn.html#ac2807505b850738bc8a1991ce669dd47">armnn::BackendRegistryInstance</a></div><div class="ttdeci">BackendRegistry &amp; BackendRegistryInstance()</div><div class="ttdef"><b>Definition:</b> <a href="_backend_registry_8cpp_source.html#l00013">BackendRegistry.cpp:13</a></div></div>
<div class="ttc" id="namespacearmnn_html_a9173495a61a0092b5f38b855f02c3585"><div class="ttname"><a href="namespacearmnn.html#a9173495a61a0092b5f38b855f02c3585">armnn::BackendsMap</a></div><div class="ttdeci">std::map&lt; BackendId, std::unique_ptr&lt; class IBackendInternal &gt; &gt; BackendsMap</div><div class="ttdef"><b>Definition:</b> <a href="_network_8hpp_source.html#l00292">Network.hpp:292</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a5aae369ef847a00062925cea8e9be9c4"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a5aae369ef847a00062925cea8e9be9c4">&#9670;&nbsp;</a></span>Debug()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void Debug </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>inputInfo</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const T *&#160;</td>
<td class="paramname"><em>inputData</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacearmnn.html#afad4088a9a058114ee5f87246f87bf49">LayerGuid</a>&#160;</td>
<td class="paramname"><em>guid</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const std::string &amp;&#160;</td>
<td class="paramname"><em>layerName</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">unsigned int&#160;</td>
<td class="paramname"><em>slotIndex</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_debug_8cpp_source.html#l00019">19</a> of file <a class="el" href="_debug_8cpp_source.html">Debug.cpp</a>.</p>
<p class="reference">References <a class="el" href="namespacearmnn.html#a26abbe393a88835dd569523bec69719b">Debug&lt; float &gt;()</a>, <a class="el" href="namespacearmnn.html#a3b0ab9518e3fd6a0447c174df57a313c">Debug&lt; Half &gt;()</a>, <a class="el" href="namespacearmnn.html#acc771f233bb7884932260ba353118b46">Debug&lt; int16_t &gt;()</a>, <a class="el" href="namespacearmnn.html#a7c1cb9cf0678f74b1dcfff310d1475fd">Debug&lt; int32_t &gt;()</a>, <a class="el" href="namespacearmnn.html#ac2167b3a09fab7c9b58af461bd990c3b">Debug&lt; int8_t &gt;()</a>, <a class="el" href="namespacearmnn.html#a1121718a486db835afa99328650e7e89">Debug&lt; uint8_t &gt;()</a>, <a class="el" href="_tensor_8hpp_source.html#l00092">TensorInfo::GetNumDimensions()</a>, <a class="el" href="_tensor_8hpp_source.html#l00093">TensorInfo::GetNumElements()</a>, and <a class="el" href="_tensor_8hpp_source.html#l00088">TensorInfo::GetShape()</a>.</p>
<p class="reference">Referenced by <a class="el" href="_ref_debug_workload_8cpp_source.html#l00018">RefDebugWorkload&lt; DataType &gt;::Execute()</a>.</p>
<div class="fragment"><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;{</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> numDims = inputInfo.GetNumDimensions();</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> numElements = inputInfo.GetNumElements();</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; <span class="keyword">const</span> TensorShape&amp; inputShape = inputInfo.GetShape();</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; std::vector&lt;unsigned int&gt; strides(numDims, 0);</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; strides[numDims - 1] = inputShape[numDims - 1];</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 2; i &lt;= numDims; i++)</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; {</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; strides[numDims - i] = strides[numDims - i + 1] * inputShape[numDims - i];</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; }</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; std::cout &lt;&lt; <span class="stringliteral">&quot;{ &quot;</span>;</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; std::cout &lt;&lt; <span class="stringliteral">&quot;\&quot;layerGuid\&quot;: &quot;</span> &lt;&lt; guid &lt;&lt; <span class="stringliteral">&quot;, &quot;</span>;</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; std::cout &lt;&lt; <span class="stringliteral">&quot;\&quot;layerName\&quot;: \&quot;&quot;</span> &lt;&lt; layerName &lt;&lt; <span class="stringliteral">&quot;\&quot;, &quot;</span>;</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; std::cout &lt;&lt; <span class="stringliteral">&quot;\&quot;outputSlot\&quot;: &quot;</span> &lt;&lt; slotIndex &lt;&lt; <span class="stringliteral">&quot;, &quot;</span>;</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; std::cout &lt;&lt; <span class="stringliteral">&quot;\&quot;shape\&quot;: &quot;</span>;</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; std::cout &lt;&lt; <span class="stringliteral">&quot;[&quot;</span>;</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i &lt; numDims; i++)</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; {</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; std::cout &lt;&lt; inputShape[i];</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; <span class="keywordflow">if</span> (i != numDims - 1)</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; {</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; std::cout &lt;&lt; <span class="stringliteral">&quot;, &quot;</span>;</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; }</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; }</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; std::cout &lt;&lt; <span class="stringliteral">&quot;], &quot;</span>;</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160;</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; std::cout &lt;&lt; <span class="stringliteral">&quot;\&quot;min\&quot;: &quot;</span></div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; &lt;&lt; boost::numeric_cast&lt;<span class="keywordtype">float</span>&gt;(*std::min_element(inputData, inputData + numElements)) &lt;&lt; <span class="stringliteral">&quot;, &quot;</span>;</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160;</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; std::cout &lt;&lt; <span class="stringliteral">&quot;\&quot;max\&quot;: &quot;</span></div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; &lt;&lt; boost::numeric_cast&lt;<span class="keywordtype">float</span>&gt;(*std::max_element(inputData, inputData + numElements)) &lt;&lt; <span class="stringliteral">&quot;, &quot;</span>;</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160;</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; std::cout &lt;&lt; <span class="stringliteral">&quot;\&quot;data\&quot;: &quot;</span>;</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160;</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i &lt; numElements; i++)</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; {</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> j = 0; j &lt; numDims; j++)</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; {</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; <span class="keywordflow">if</span> (i % strides[j] == 0)</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; {</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; std::cout &lt;&lt; <span class="stringliteral">&quot;[&quot;</span> ;</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; }</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; }</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160;</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; std::cout &lt;&lt; boost::numeric_cast&lt;float&gt;(inputData[i]);</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160;</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> j = 0; j &lt; numDims; j++)</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; {</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; <span class="keywordflow">if</span> ((i+1) % strides[j] == 0)</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; {</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; std::cout &lt;&lt; <span class="stringliteral">&quot;]&quot;</span> ;</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; }</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; }</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160;</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; <span class="keywordflow">if</span> (i != numElements - 1)</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; {</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; std::cout &lt;&lt; <span class="stringliteral">&quot;, &quot;</span>;</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; }</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; }</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160;</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; std::cout &lt;&lt; <span class="stringliteral">&quot; }&quot;</span> &lt;&lt; std::endl;</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160;}</div></div><!-- fragment -->
</div>
</div>
<a id="a26abbe393a88835dd569523bec69719b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a26abbe393a88835dd569523bec69719b">&#9670;&nbsp;</a></span>Debug< float >()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template void <a class="el" href="namespacearmnn.html#a5aae369ef847a00062925cea8e9be9c4">armnn::Debug</a>&lt; float &gt; </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>inputInfo</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const float *&#160;</td>
<td class="paramname"><em>inputData</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacearmnn.html#afad4088a9a058114ee5f87246f87bf49">LayerGuid</a>&#160;</td>
<td class="paramname"><em>guid</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const std::string &amp;&#160;</td>
<td class="paramname"><em>layerName</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">unsigned int&#160;</td>
<td class="paramname"><em>slotIndex</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="reference">Referenced by <a class="el" href="_debug_8cpp_source.html#l00019">Debug()</a>.</p>
</div>
</div>
<a id="a3b0ab9518e3fd6a0447c174df57a313c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a3b0ab9518e3fd6a0447c174df57a313c">&#9670;&nbsp;</a></span>Debug< Half >()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template void <a class="el" href="namespacearmnn.html#a5aae369ef847a00062925cea8e9be9c4">armnn::Debug</a>&lt; <a class="el" href="namespacearmnn.html#a0f38fa92b2468d5378258a2b074c1a31">Half</a> &gt; </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>inputInfo</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="namespacearmnn.html#a0f38fa92b2468d5378258a2b074c1a31">Half</a> *&#160;</td>
<td class="paramname"><em>inputData</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacearmnn.html#afad4088a9a058114ee5f87246f87bf49">LayerGuid</a>&#160;</td>
<td class="paramname"><em>guid</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const std::string &amp;&#160;</td>
<td class="paramname"><em>layerName</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">unsigned int&#160;</td>
<td class="paramname"><em>slotIndex</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="reference">Referenced by <a class="el" href="_debug_8cpp_source.html#l00019">Debug()</a>.</p>
</div>
</div>
<a id="acc771f233bb7884932260ba353118b46"></a>
<h2 class="memtitle"><span class="permalink"><a href="#acc771f233bb7884932260ba353118b46">&#9670;&nbsp;</a></span>Debug< int16_t >()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template void <a class="el" href="namespacearmnn.html#a5aae369ef847a00062925cea8e9be9c4">armnn::Debug</a>&lt; int16_t &gt; </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>inputInfo</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const int16_t *&#160;</td>
<td class="paramname"><em>inputData</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacearmnn.html#afad4088a9a058114ee5f87246f87bf49">LayerGuid</a>&#160;</td>
<td class="paramname"><em>guid</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const std::string &amp;&#160;</td>
<td class="paramname"><em>layerName</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">unsigned int&#160;</td>
<td class="paramname"><em>slotIndex</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="reference">Referenced by <a class="el" href="_debug_8cpp_source.html#l00019">Debug()</a>.</p>
</div>
</div>
<a id="a7c1cb9cf0678f74b1dcfff310d1475fd"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a7c1cb9cf0678f74b1dcfff310d1475fd">&#9670;&nbsp;</a></span>Debug< int32_t >()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template void <a class="el" href="namespacearmnn.html#a5aae369ef847a00062925cea8e9be9c4">armnn::Debug</a>&lt; int32_t &gt; </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>inputInfo</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const int32_t *&#160;</td>
<td class="paramname"><em>inputData</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacearmnn.html#afad4088a9a058114ee5f87246f87bf49">LayerGuid</a>&#160;</td>
<td class="paramname"><em>guid</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const std::string &amp;&#160;</td>
<td class="paramname"><em>layerName</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">unsigned int&#160;</td>
<td class="paramname"><em>slotIndex</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="reference">Referenced by <a class="el" href="_debug_8cpp_source.html#l00019">Debug()</a>.</p>
</div>
</div>
<a id="ac2167b3a09fab7c9b58af461bd990c3b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ac2167b3a09fab7c9b58af461bd990c3b">&#9670;&nbsp;</a></span>Debug< int8_t >()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template void <a class="el" href="namespacearmnn.html#a5aae369ef847a00062925cea8e9be9c4">armnn::Debug</a>&lt; int8_t &gt; </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>inputInfo</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const int8_t *&#160;</td>
<td class="paramname"><em>inputData</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacearmnn.html#afad4088a9a058114ee5f87246f87bf49">LayerGuid</a>&#160;</td>
<td class="paramname"><em>guid</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const std::string &amp;&#160;</td>
<td class="paramname"><em>layerName</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">unsigned int&#160;</td>
<td class="paramname"><em>slotIndex</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="reference">Referenced by <a class="el" href="_debug_8cpp_source.html#l00019">Debug()</a>.</p>
</div>
</div>
<a id="a1121718a486db835afa99328650e7e89"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a1121718a486db835afa99328650e7e89">&#9670;&nbsp;</a></span>Debug< uint8_t >()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template void <a class="el" href="namespacearmnn.html#a5aae369ef847a00062925cea8e9be9c4">armnn::Debug</a>&lt; uint8_t &gt; </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>inputInfo</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const uint8_t *&#160;</td>
<td class="paramname"><em>inputData</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacearmnn.html#afad4088a9a058114ee5f87246f87bf49">LayerGuid</a>&#160;</td>
<td class="paramname"><em>guid</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const std::string &amp;&#160;</td>
<td class="paramname"><em>layerName</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">unsigned int&#160;</td>
<td class="paramname"><em>slotIndex</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="reference">Referenced by <a class="el" href="_debug_8cpp_source.html#l00019">Debug()</a>.</p>
</div>
</div>
<a id="ab023d9a7687e35c0f108458a094c1f56"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab023d9a7687e35c0f108458a094c1f56">&#9670;&nbsp;</a></span>DepthToSpace()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void DepthToSpace </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>inputInfo</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="namespacearmnn.html#a3647f60510bc8ddaced01c51b0ee8714">DepthToSpaceDescriptor</a> &amp;&#160;</td>
<td class="paramname"><em>descriptor</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const void *&#160;</td>
<td class="paramname"><em>inputData</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">void *&#160;</td>
<td class="paramname"><em>outputData</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">unsigned int&#160;</td>
<td class="paramname"><em>dataTypeSize</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_depth_to_space_8cpp_source.html#l00018">18</a> of file <a class="el" href="_depth_to_space_8cpp_source.html">DepthToSpace.cpp</a>.</p>
<p class="reference">References <a class="el" href="_depth_to_space_8cpp_source.html#l00018">DepthToSpace()</a>, <a class="el" href="_data_layout_indexed_8hpp_source.html#l00023">DataLayoutIndexed::GetChannelsIndex()</a>, <a class="el" href="_data_layout_indexed_8hpp_source.html#l00024">DataLayoutIndexed::GetHeightIndex()</a>, <a class="el" href="_tensor_8cpp_source.html#l00106">TensorShape::GetNumElements()</a>, <a class="el" href="_tensor_8hpp_source.html#l00088">TensorInfo::GetShape()</a>, <a class="el" href="_data_layout_indexed_8hpp_source.html#l00025">DataLayoutIndexed::GetWidthIndex()</a>, <a class="el" href="_descriptors_8hpp_source.html#l00827">SpaceToDepthDescriptor::m_BlockSize</a>, <a class="el" href="_descriptors_8hpp_source.html#l00830">SpaceToDepthDescriptor::m_DataLayout</a>, <a class="el" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0a6b99f356fe3b30a2a850b5ea897c289f">NCHW</a>, and <a class="el" href="_permute_8cpp_source.html#l00121">armnnUtils::Permute()</a>.</p>
<p class="reference">Referenced by <a class="el" href="_serializer_tests_8cpp_source.html#l00624">BOOST_AUTO_TEST_CASE()</a>, and <a class="el" href="_depth_to_space_8cpp_source.html#l00018">DepthToSpace()</a>.</p>
<div class="fragment"><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;{</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> blockSize = descriptor.<a class="code" href="structarmnn_1_1_space_to_depth_descriptor.html#a6c6b8957f1e176867e5fb05b1a1a1486">m_BlockSize</a>;</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; BOOST_ASSERT(blockSize != 0u);</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_tensor_shape.html">TensorShape</a>&amp; inputShape = inputInfo.<a class="code" href="classarmnn_1_1_tensor_info.html#a8b5d0f8a24e9d9238f412260a552acf8">GetShape</a>();</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> batches = inputShape[0];</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; <a class="code" href="classarmnn_utils_1_1_data_layout_indexed.html">armnnUtils::DataLayoutIndexed</a> dataLayoutIndexed(descriptor.<a class="code" href="structarmnn_1_1_space_to_depth_descriptor.html#a6089e1ca91914015777ea780a513131a">m_DataLayout</a>);</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> inDepth = inputShape[dataLayoutIndexed.GetChannelsIndex()];</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> inHeight = inputShape[dataLayoutIndexed.GetHeightIndex()];</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> inWidth = inputShape[dataLayoutIndexed.GetWidthIndex()];</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> outDepth = inDepth / (blockSize * blockSize);</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; <span class="comment">// The 4D input data can be interpreted as 6D (implicitly reshaped) as follows:</span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; <span class="comment">//</span></div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; <span class="comment">// [batch, block size, block size, inDepth, inHeight, inWidth] for NCHW and</span></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; <span class="comment">// [batch, inHeight, inWidth, blockSize, blockSize, outDepth] for NHWC.</span></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; <span class="comment">//</span></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; <span class="comment">// DepthToSpace can then be implemented as a permutation in 6D resulting in</span></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; <span class="comment">// the following shapes:</span></div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <span class="comment">//</span></div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <span class="comment">// [batch, outDepth, inHeight, blockSize, inWidth, blockSize] for NCHW and</span></div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; <span class="comment">// [batch, inHeight, blockSize, inWidth, blockSize, outDepth] for NHWC.</span></div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; <span class="comment">//</span></div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; <span class="comment">// NOTE:</span></div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; <span class="comment">// Since 6D tensors are not currently supported, in practice we need to handle each</span></div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; <span class="comment">// batch separately and execute 5D permutations</span></div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160;</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; <a class="code" href="classarmnn_1_1_tensor_shape.html">TensorShape</a> permDestShape;</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; <a class="code" href="classarmnn_1_1_permutation_vector.html">PermutationVector</a> permVector{};</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; <span class="keywordflow">if</span> (descriptor.<a class="code" href="structarmnn_1_1_space_to_depth_descriptor.html#a6089e1ca91914015777ea780a513131a">m_DataLayout</a> == DataLayout::NCHW)</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; {</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; permDestShape = <a class="code" href="classarmnn_1_1_tensor_shape.html">TensorShape</a>({ outDepth, inHeight, blockSize, inWidth, blockSize });</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; permVector = { 2, 4, 0, 1, 3 };</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; }</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; {</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; permDestShape = <a class="code" href="classarmnn_1_1_tensor_shape.html">TensorShape</a>({ inHeight, blockSize, inWidth, blockSize, outDepth });</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; permVector = { 0, 2, 1, 3, 4 };</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; }</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160;</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> numElementsPerBatch = inputShape.<a class="code" href="classarmnn_1_1_tensor_shape.html#a8846406ac37fbd2204f0be16ee05d5b7">GetNumElements</a>() / batches;</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160;</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> batchIndex = 0u; batchIndex &lt; batches; ++batchIndex)</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; {</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; <span class="keyword">const</span> uintptr_t batchDataOffset = batchIndex * (numElementsPerBatch * dataTypeSize);</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160;</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; <a class="code" href="namespacearmnn_utils.html#af3c74017185773dd61d8ca6662d65d43">armnnUtils::Permute</a>(permDestShape,</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; permVector,</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; static_cast&lt;const void*&gt;(reinterpret_cast&lt;const uint8_t*&gt;(inputData) + batchDataOffset),</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; static_cast&lt;void*&gt;(reinterpret_cast&lt;uint8_t*&gt;(outputData) + batchDataOffset),</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; dataTypeSize);</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; }</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160;}</div><div class="ttc" id="structarmnn_1_1_space_to_depth_descriptor_html_a6089e1ca91914015777ea780a513131a"><div class="ttname"><a href="structarmnn_1_1_space_to_depth_descriptor.html#a6089e1ca91914015777ea780a513131a">armnn::SpaceToDepthDescriptor::m_DataLayout</a></div><div class="ttdeci">DataLayout m_DataLayout</div><div class="ttdoc">The data layout to be used (NCHW, NHWC). </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.html#l00830">Descriptors.hpp:830</a></div></div>
<div class="ttc" id="namespacearmnn_utils_html_af3c74017185773dd61d8ca6662d65d43"><div class="ttname"><a href="namespacearmnn_utils.html#af3c74017185773dd61d8ca6662d65d43">armnnUtils::Permute</a></div><div class="ttdeci">void Permute(const armnn::TensorShape &amp;dstShape, const armnn::PermutationVector &amp;mappings, const void *src, void *dst, size_t dataTypeSize)</div><div class="ttdef"><b>Definition:</b> <a href="_permute_8cpp_source.html#l00121">Permute.cpp:121</a></div></div>
<div class="ttc" id="classarmnn_1_1_permutation_vector_html"><div class="ttname"><a href="classarmnn_1_1_permutation_vector.html">armnn::PermutationVector</a></div><div class="ttdef"><b>Definition:</b> <a href="_types_8hpp_source.html#l00170">Types.hpp:170</a></div></div>
<div class="ttc" id="classarmnn_1_1_tensor_shape_html_a8846406ac37fbd2204f0be16ee05d5b7"><div class="ttname"><a href="classarmnn_1_1_tensor_shape.html#a8846406ac37fbd2204f0be16ee05d5b7">armnn::TensorShape::GetNumElements</a></div><div class="ttdeci">unsigned int GetNumElements() const</div><div class="ttdef"><b>Definition:</b> <a href="_tensor_8cpp_source.html#l00106">Tensor.cpp:106</a></div></div>
<div class="ttc" id="classarmnn_1_1_tensor_shape_html"><div class="ttname"><a href="classarmnn_1_1_tensor_shape.html">armnn::TensorShape</a></div><div class="ttdef"><b>Definition:</b> <a href="_tensor_8hpp_source.html#l00020">Tensor.hpp:20</a></div></div>
<div class="ttc" id="structarmnn_1_1_space_to_depth_descriptor_html_a6c6b8957f1e176867e5fb05b1a1a1486"><div class="ttname"><a href="structarmnn_1_1_space_to_depth_descriptor.html#a6c6b8957f1e176867e5fb05b1a1a1486">armnn::SpaceToDepthDescriptor::m_BlockSize</a></div><div class="ttdeci">unsigned int m_BlockSize</div><div class="ttdoc">Scalar specifying the input block size. It must be &gt;= 1. </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.html#l00827">Descriptors.hpp:827</a></div></div>
<div class="ttc" id="classarmnn_utils_1_1_data_layout_indexed_html"><div class="ttname"><a href="classarmnn_utils_1_1_data_layout_indexed.html">armnnUtils::DataLayoutIndexed</a></div><div class="ttdef"><b>Definition:</b> <a href="_data_layout_indexed_8hpp_source.html#l00017">DataLayoutIndexed.hpp:17</a></div></div>
<div class="ttc" id="classarmnn_1_1_tensor_info_html_a8b5d0f8a24e9d9238f412260a552acf8"><div class="ttname"><a href="classarmnn_1_1_tensor_info.html#a8b5d0f8a24e9d9238f412260a552acf8">armnn::TensorInfo::GetShape</a></div><div class="ttdeci">const TensorShape &amp; GetShape() const</div><div class="ttdef"><b>Definition:</b> <a href="_tensor_8hpp_source.html#l00088">Tensor.hpp:88</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="acae7e910f899ae67340c9ce29e406a86"></a>
<h2 class="memtitle"><span class="permalink"><a href="#acae7e910f899ae67340c9ce29e406a86">&#9670;&nbsp;</a></span>Dequantize() <span class="overload">[1/4]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void Dequantize </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classarmnn_1_1_decoder.html">Decoder</a>&lt; float &gt; &amp;&#160;</td>
<td class="paramname"><em>inputDecoder</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classarmnn_1_1_encoder.html">Encoder</a>&lt; float &gt; &amp;&#160;</td>
<td class="paramname"><em>outputEncoder</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>inputInfo</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>outputInfo</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="backends_2reference_2workloads_2_dequantize_8cpp_source.html#l00012">12</a> of file <a class="el" href="backends_2reference_2workloads_2_dequantize_8cpp_source.html">Dequantize.cpp</a>.</p>
<p class="reference">References <a class="el" href="classarmnn_1_1_decoder.html#ac729108381e2340bea12877971713ecb">Decoder&lt; IType &gt;::Get()</a>, <a class="el" href="_tensor_8hpp_source.html#l00093">TensorInfo::GetNumElements()</a>, and <a class="el" href="classarmnn_1_1_encoder.html#ae3b62b846a9c239f332830b9e36030eb">Encoder&lt; IType &gt;::Set()</a>.</p>
<div class="fragment"><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;{</div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160; boost::ignore_unused(outputInfo);</div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160; BOOST_ASSERT(inputInfo.GetNumElements() == outputInfo.GetNumElements());</div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i &lt; inputInfo.GetNumElements(); i++)</div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160; {</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160; <span class="comment">// inputDecoder.Get() dequantizes the data element from whatever</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160; <span class="comment">// type is given by inputInfo to fp32 (If MakeDecoder supports that dequantization)</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160; <span class="comment">// outputEncoder.Set() transforms the data element to whatever type is</span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160; <span class="comment">// given by outputInfo (if MakeEncoder supports that transformation)</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; outputEncoder.<a class="code" href="classarmnn_1_1_encoder.html#ae3b62b846a9c239f332830b9e36030eb">Set</a>(inputDecoder.<a class="code" href="classarmnn_1_1_decoder.html#ac729108381e2340bea12877971713ecb">Get</a>());</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; ++outputEncoder;</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; ++inputDecoder;</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; }</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;}</div><div class="ttc" id="classarmnn_1_1_decoder_html_ac729108381e2340bea12877971713ecb"><div class="ttname"><a href="classarmnn_1_1_decoder.html#ac729108381e2340bea12877971713ecb">armnn::Decoder::Get</a></div><div class="ttdeci">virtual IType Get() const =0</div></div>
<div class="ttc" id="classarmnn_1_1_encoder_html_ae3b62b846a9c239f332830b9e36030eb"><div class="ttname"><a href="classarmnn_1_1_encoder.html#ae3b62b846a9c239f332830b9e36030eb">armnn::Encoder::Set</a></div><div class="ttdeci">virtual void Set(IType right)=0</div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a4144d7535639c617fca0d095379493f0"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a4144d7535639c617fca0d095379493f0">&#9670;&nbsp;</a></span>Dequantize() <span class="overload">[2/4]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">std::vector&lt;float&gt; armnn::Dequantize </td>
<td>(</td>
<td class="paramtype">const T *&#160;</td>
<td class="paramname"><em>quant</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>info</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>u8 helpers </p>
<p class="definition">Definition at line <a class="el" href="_ref_workload_utils_8hpp_source.html#l00076">76</a> of file <a class="el" href="_ref_workload_utils_8hpp_source.html">RefWorkloadUtils.hpp</a>.</p>
<p class="reference">References <a class="el" href="_types_utils_8cpp_source.html#l00047">Dequantize()</a>, <a class="el" href="_tensor_8hpp_source.html#l00093">TensorInfo::GetNumElements()</a>, <a class="el" href="_tensor_8cpp_source.html#l00264">TensorInfo::GetQuantizationOffset()</a>, and <a class="el" href="_tensor_8cpp_source.html#l00247">TensorInfo::GetQuantizationScale()</a>.</p>
<div class="fragment"><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160;{</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; std::vector&lt;float&gt; ret(<a class="code" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>.GetNumElements());</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0; i &lt; <a class="code" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>.GetNumElements(); i++)</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; {</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; ret[i] = <a class="code" href="namespacearmnn.html#a855293b1be0581fb61ef6a1c5b027d0f">armnn::Dequantize</a>(quant[i], <a class="code" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>.GetQuantizationScale(), <a class="code" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>.GetQuantizationOffset());</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; }</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; <span class="keywordflow">return</span> ret;</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c"><div class="ttname"><a href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">armnn::BoostLogSeverityMapping::info</a></div></div>
<div class="ttc" id="namespacearmnn_html_a855293b1be0581fb61ef6a1c5b027d0f"><div class="ttname"><a href="namespacearmnn.html#a855293b1be0581fb61ef6a1c5b027d0f">armnn::Dequantize</a></div><div class="ttdeci">float Dequantize(QuantizedType value, float scale, int32_t offset)</div><div class="ttdef"><b>Definition:</b> <a href="_types_utils_8cpp_source.html#l00047">TypesUtils.cpp:47</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a1204727d8ce3ee1e60daf08079eb892e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a1204727d8ce3ee1e60daf08079eb892e">&#9670;&nbsp;</a></span>Dequantize() <span class="overload">[3/4]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void armnn::Dequantize </td>
<td>(</td>
<td class="paramtype">const T *&#160;</td>
<td class="paramname"><em>inputData</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">float *&#160;</td>
<td class="paramname"><em>outputData</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>info</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_ref_workload_utils_8hpp_source.html#l00087">87</a> of file <a class="el" href="_ref_workload_utils_8hpp_source.html">RefWorkloadUtils.hpp</a>.</p>
<p class="reference">References <a class="el" href="_tensor_8hpp_source.html#l00093">TensorInfo::GetNumElements()</a>, <a class="el" href="_tensor_8cpp_source.html#l00264">TensorInfo::GetQuantizationOffset()</a>, and <a class="el" href="_tensor_8cpp_source.html#l00247">TensorInfo::GetQuantizationScale()</a>.</p>
<div class="fragment"><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160;{</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i &lt; <a class="code" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>.GetNumElements(); i++)</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; {</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; outputData[i] = Dequantize&lt;T&gt;(inputData[i], <a class="code" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>.GetQuantizationScale(), <a class="code" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>.GetQuantizationOffset());</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; }</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c"><div class="ttname"><a href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">armnn::BoostLogSeverityMapping::info</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a855293b1be0581fb61ef6a1c5b027d0f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a855293b1be0581fb61ef6a1c5b027d0f">&#9670;&nbsp;</a></span>Dequantize() <span class="overload">[4/4]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">float Dequantize </td>
<td>(</td>
<td class="paramtype">QuantizedType&#160;</td>
<td class="paramname"><em>value</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">float&#160;</td>
<td class="paramname"><em>scale</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int32_t&#160;</td>
<td class="paramname"><em>offset</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Dequantize an 8-bit data type into a floating point data type. </p><dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">value</td><td>- The value to dequantize. </td></tr>
<tr><td class="paramname">scale</td><td>- The scale (must be non-zero). </td></tr>
<tr><td class="paramname">offset</td><td>- The offset. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>- The dequantized value calculated as (value-offset)*scale. </dd></dl>
<p class="definition">Definition at line <a class="el" href="_types_utils_8cpp_source.html#l00047">47</a> of file <a class="el" href="_types_utils_8cpp_source.html">TypesUtils.cpp</a>.</p>
<p class="reference">Referenced by <a class="el" href="_serializer_tests_8cpp_source.html#l00745">BOOST_AUTO_TEST_CASE()</a>, <a class="el" href="_quantize_helper_8hpp_source.html#l00030">SelectiveQuantizer&lt; T, DoQuantize &gt;::Dequantize()</a>, and <a class="el" href="_ref_workload_utils_8hpp_source.html#l00076">Dequantize()</a>.</p>
<div class="fragment"><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;{</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; static_assert(IsQuantizedType&lt;QuantizedType&gt;(), <span class="stringliteral">&quot;Not an integer type.&quot;</span>);</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; BOOST_ASSERT(scale != 0.f);</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; BOOST_ASSERT(!IsNan(value));</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; <span class="keywordtype">float</span> dequantized = boost::numeric_cast&lt;<span class="keywordtype">float</span>&gt;(value - offset) * scale;</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; <span class="keywordflow">return</span> dequantized;</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;}</div></div><!-- fragment -->
</div>
</div>
<a id="ae76ce23fa9fc18e56448d52b37dd3f32"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae76ce23fa9fc18e56448d52b37dd3f32">&#9670;&nbsp;</a></span>DetectionPostProcess()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void DetectionPostProcess </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>boxEncodingsInfo</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>scoresInfo</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>anchorsInfo</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>detectionBoxesInfo</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>detectionClassesInfo</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>detectionScoresInfo</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>numDetectionsInfo</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="structarmnn_1_1_detection_post_process_descriptor.html">DetectionPostProcessDescriptor</a> &amp;&#160;</td>
<td class="paramname"><em>desc</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classarmnn_1_1_decoder.html">Decoder</a>&lt; float &gt; &amp;&#160;</td>
<td class="paramname"><em>boxEncodings</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classarmnn_1_1_decoder.html">Decoder</a>&lt; float &gt; &amp;&#160;</td>
<td class="paramname"><em>scores</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classarmnn_1_1_decoder.html">Decoder</a>&lt; float &gt; &amp;&#160;</td>
<td class="paramname"><em>anchors</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">float *&#160;</td>
<td class="paramname"><em>detectionBoxes</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">float *&#160;</td>
<td class="paramname"><em>detectionClasses</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">float *&#160;</td>
<td class="paramname"><em>detectionScores</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">float *&#160;</td>
<td class="paramname"><em>numDetections</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="backends_2reference_2workloads_2_detection_post_process_8cpp_source.html#l00141">141</a> of file <a class="el" href="backends_2reference_2workloads_2_detection_post_process_8cpp_source.html">DetectionPostProcess.cpp</a>.</p>
<p class="reference">References <a class="el" href="backends_2reference_2workloads_2_detection_post_process_8cpp_source.html#l00103">AllocateOutputData()</a>, <a class="el" href="_neon_end_to_end_tests_8cpp.html#ac0981848e4ae57729f14f72bd4caa9f8">anchors()</a>, <a class="el" href="_neon_end_to_end_tests_8cpp.html#ada422a73ac4e68bcb1b1b1f0b44028d9">boxEncodings()</a>, <a class="el" href="backends_2reference_2workloads_2_detection_post_process_8cpp_source.html#l00018">GenerateRangeK()</a>, <a class="el" href="classarmnn_1_1_decoder.html#ac729108381e2340bea12877971713ecb">Decoder&lt; IType &gt;::Get()</a>, <a class="el" href="_tensor_8hpp_source.html#l00093">TensorInfo::GetNumElements()</a>, <a class="el" href="_tensor_8hpp_source.html#l00088">TensorInfo::GetShape()</a>, <a class="el" href="_descriptors_8hpp_source.html#l00531">DetectionPostProcessDescriptor::m_DetectionsPerClass</a>, <a class="el" href="_descriptors_8hpp_source.html#l00529">DetectionPostProcessDescriptor::m_MaxClassesPerDetection</a>, <a class="el" href="_descriptors_8hpp_source.html#l00527">DetectionPostProcessDescriptor::m_MaxDetections</a>, <a class="el" href="_descriptors_8hpp_source.html#l00535">DetectionPostProcessDescriptor::m_NmsIouThreshold</a>, <a class="el" href="_descriptors_8hpp_source.html#l00533">DetectionPostProcessDescriptor::m_NmsScoreThreshold</a>, <a class="el" href="_descriptors_8hpp_source.html#l00537">DetectionPostProcessDescriptor::m_NumClasses</a>, <a class="el" href="_descriptors_8hpp_source.html#l00547">DetectionPostProcessDescriptor::m_ScaleH</a>, <a class="el" href="_descriptors_8hpp_source.html#l00545">DetectionPostProcessDescriptor::m_ScaleW</a>, <a class="el" href="_descriptors_8hpp_source.html#l00541">DetectionPostProcessDescriptor::m_ScaleX</a>, <a class="el" href="_descriptors_8hpp_source.html#l00543">DetectionPostProcessDescriptor::m_ScaleY</a>, <a class="el" href="_descriptors_8hpp_source.html#l00539">DetectionPostProcessDescriptor::m_UseRegularNms</a>, <a class="el" href="backends_2reference_2workloads_2_detection_post_process_8cpp_source.html#l00050">NonMaxSuppression()</a>, <a class="el" href="_neon_end_to_end_tests_8cpp.html#a0348e6bb67ace72535bd105219bb6237">scores()</a>, and <a class="el" href="backends_2reference_2workloads_2_detection_post_process_8cpp_source.html#l00025">TopKSort()</a>.</p>
<p class="reference">Referenced by <a class="el" href="_ref_detection_post_process_tests_8cpp_source.html#l00072">DetectionPostProcessTestImpl()</a>.</p>
<div class="fragment"><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160;{</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; boost::ignore_unused(<a class="code" href="_neon_end_to_end_tests_8cpp.html#a358cb7cd3c0647b25be049fd734b8c22">anchorsInfo</a>, detectionClassesInfo, detectionScoresInfo, numDetectionsInfo);</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160;</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; <span class="comment">// Transform center-size format which is (ycenter, xcenter, height, width) to box-corner format,</span></div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; <span class="comment">// which represents the lower left corner and the upper right corner (ymin, xmin, ymax, xmax)</span></div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; std::vector&lt;float&gt; boxCorners(boxEncodingsInfo.GetNumElements());</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160;</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> numBoxes = boxEncodingsInfo.GetShape()[1];</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> numScores = <a class="code" href="_neon_end_to_end_tests_8cpp.html#a64c1dd1b6dd60be9f4a16db9c8f427a5">scoresInfo</a>.<a class="code" href="classarmnn_1_1_tensor_info.html#a8846406ac37fbd2204f0be16ee05d5b7">GetNumElements</a>();</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160;</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i &lt; numBoxes; ++i)</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160; {</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160; <span class="comment">// Y</span></div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160; <span class="keywordtype">float</span> boxEncodingY = boxEncodings.<a class="code" href="classarmnn_1_1_decoder.html#ac729108381e2340bea12877971713ecb">Get</a>();</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; <span class="keywordtype">float</span> anchorY = anchors.<a class="code" href="classarmnn_1_1_decoder.html#ac729108381e2340bea12877971713ecb">Get</a>();</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160;</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; ++<a class="code" href="_neon_end_to_end_tests_8cpp.html#ada422a73ac4e68bcb1b1b1f0b44028d9">boxEncodings</a>;</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160; ++<a class="code" href="_neon_end_to_end_tests_8cpp.html#ac0981848e4ae57729f14f72bd4caa9f8">anchors</a>;</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160;</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; <span class="comment">// X</span></div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; <span class="keywordtype">float</span> boxEncodingX = boxEncodings.<a class="code" href="classarmnn_1_1_decoder.html#ac729108381e2340bea12877971713ecb">Get</a>();</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160; <span class="keywordtype">float</span> anchorX = anchors.<a class="code" href="classarmnn_1_1_decoder.html#ac729108381e2340bea12877971713ecb">Get</a>();</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160;</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160; ++<a class="code" href="_neon_end_to_end_tests_8cpp.html#ada422a73ac4e68bcb1b1b1f0b44028d9">boxEncodings</a>;</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160; ++<a class="code" href="_neon_end_to_end_tests_8cpp.html#ac0981848e4ae57729f14f72bd4caa9f8">anchors</a>;</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160;</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160; <span class="comment">// H</span></div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; <span class="keywordtype">float</span> boxEncodingH = boxEncodings.<a class="code" href="classarmnn_1_1_decoder.html#ac729108381e2340bea12877971713ecb">Get</a>();</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160; <span class="keywordtype">float</span> anchorH = anchors.<a class="code" href="classarmnn_1_1_decoder.html#ac729108381e2340bea12877971713ecb">Get</a>();</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160;</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160; ++<a class="code" href="_neon_end_to_end_tests_8cpp.html#ada422a73ac4e68bcb1b1b1f0b44028d9">boxEncodings</a>;</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160; ++<a class="code" href="_neon_end_to_end_tests_8cpp.html#ac0981848e4ae57729f14f72bd4caa9f8">anchors</a>;</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160;</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160; <span class="comment">// W</span></div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160; <span class="keywordtype">float</span> boxEncodingW = boxEncodings.<a class="code" href="classarmnn_1_1_decoder.html#ac729108381e2340bea12877971713ecb">Get</a>();</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160; <span class="keywordtype">float</span> anchorW = anchors.<a class="code" href="classarmnn_1_1_decoder.html#ac729108381e2340bea12877971713ecb">Get</a>();</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160;</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160; ++<a class="code" href="_neon_end_to_end_tests_8cpp.html#ada422a73ac4e68bcb1b1b1f0b44028d9">boxEncodings</a>;</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160; ++<a class="code" href="_neon_end_to_end_tests_8cpp.html#ac0981848e4ae57729f14f72bd4caa9f8">anchors</a>;</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160;</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; <span class="keywordtype">float</span> yCentre = boxEncodingY / desc.m_ScaleY * anchorH + anchorY;</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160; <span class="keywordtype">float</span> xCentre = boxEncodingX / desc.m_ScaleX * anchorW + anchorX;</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160;</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160; <span class="keywordtype">float</span> halfH = 0.5f * expf(boxEncodingH / desc.m_ScaleH) * anchorH;</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160; <span class="keywordtype">float</span> halfW = 0.5f * expf(boxEncodingW / desc.m_ScaleW) * anchorW;</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160;</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> indexY = i * 4;</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> indexX = indexY + 1;</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> indexH = indexX + 1;</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> indexW = indexH + 1;</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160;</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160; <span class="comment">// ymin</span></div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160; boxCorners[indexY] = yCentre - halfH;</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160; <span class="comment">// xmin</span></div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160; boxCorners[indexX] = xCentre - halfW;</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160; <span class="comment">// ymax</span></div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160; boxCorners[indexH] = yCentre + halfH;</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160; <span class="comment">// xmax</span></div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160; boxCorners[indexW] = xCentre + halfW;</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160;</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160; BOOST_ASSERT(boxCorners[indexY] &lt; boxCorners[indexH]);</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160; BOOST_ASSERT(boxCorners[indexX] &lt; boxCorners[indexW]);</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160; }</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160;</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> numClassesWithBg = desc.m_NumClasses + 1;</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160;</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160; <span class="comment">// Decode scores</span></div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160; std::vector&lt;float&gt; decodedScores;</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160; decodedScores.reserve(numScores);</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160;</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0u; i &lt; numScores; ++i)</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160; {</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160; decodedScores.emplace_back(scores.<a class="code" href="classarmnn_1_1_decoder.html#ac729108381e2340bea12877971713ecb">Get</a>());</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160; ++<a class="code" href="_neon_end_to_end_tests_8cpp.html#a0348e6bb67ace72535bd105219bb6237">scores</a>;</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160; }</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160;</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160; <span class="comment">// Perform Non Max Suppression.</span></div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160; <span class="keywordflow">if</span> (desc.m_UseRegularNms)</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160; {</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160; <span class="comment">// Perform Regular NMS.</span></div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160; <span class="comment">// For each class, perform NMS and select max detection numbers of the highest score across all classes.</span></div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160; std::vector&lt;float&gt; classScores(numBoxes);</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160;</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160; std::vector&lt;unsigned int&gt; selectedBoxesAfterNms;</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160; selectedBoxesAfterNms.reserve(numBoxes);</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160;</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160; std::vector&lt;float&gt; selectedScoresAfterNms;</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160; selectedBoxesAfterNms.reserve(numScores);</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160;</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160; std::vector&lt;unsigned int&gt; selectedClasses;</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160;</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> c = 0; c &lt; desc.m_NumClasses; ++c)</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160; {</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160; <span class="comment">// For each boxes, get scores of the boxes for the class c.</span></div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i &lt; numBoxes; ++i)</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160; {</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160; classScores[i] = decodedScores[i * numClassesWithBg + c + 1];</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160; }</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160; std::vector&lt;unsigned int&gt; selectedIndices = <a class="code" href="namespacearmnn.html#ac8c641d4a69c9a85c487cfbc7ea4d73c">NonMaxSuppression</a>(numBoxes,</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160; boxCorners,</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160; classScores,</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160; desc.m_NmsScoreThreshold,</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160; desc.m_DetectionsPerClass,</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160; desc.m_NmsIouThreshold);</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160;</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i &lt; selectedIndices.size(); ++i)</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160; {</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160; selectedBoxesAfterNms.push_back(selectedIndices[i]);</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160; selectedScoresAfterNms.push_back(classScores[selectedIndices[i]]);</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160; selectedClasses.push_back(c);</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160; }</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160; }</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160;</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160; <span class="comment">// Select max detection numbers of the highest score across all classes</span></div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> numSelected = boost::numeric_cast&lt;<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>&gt;(selectedBoxesAfterNms.size());</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> numOutput = std::min(desc.m_MaxDetections, numSelected);</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160;</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160; <span class="comment">// Sort the max scores among the selected indices.</span></div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160; std::vector&lt;unsigned int&gt; outputIndices = <a class="code" href="namespacearmnn.html#ae8ed5c640761fb6744aec0ee16388417">GenerateRangeK</a>(numSelected);</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160; <a class="code" href="namespacearmnn.html#a2748f45e58b1c612d473043f711d1434">TopKSort</a>(numOutput, outputIndices.data(), selectedScoresAfterNms.data(), numSelected);</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160;</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160; <a class="code" href="namespacearmnn.html#ae8dcbb74cf0c855724f12833a55a5684">AllocateOutputData</a>(detectionBoxesInfo.GetShape()[1], numOutput, boxCorners, outputIndices,</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160; selectedBoxesAfterNms, selectedClasses, selectedScoresAfterNms,</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160; detectionBoxes, detectionScores, detectionClasses, numDetections);</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160; }</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160; {</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160; <span class="comment">// Perform Fast NMS.</span></div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160; <span class="comment">// Select max scores of boxes and perform NMS on max scores,</span></div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160; <span class="comment">// select max detection numbers of the highest score</span></div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> numClassesPerBox = std::min(desc.m_MaxClassesPerDetection, desc.m_NumClasses);</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160; std::vector&lt;float&gt; maxScores;</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160; std::vector&lt;unsigned int&gt;boxIndices;</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160; std::vector&lt;unsigned int&gt;maxScoreClasses;</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160;</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> box = 0; box &lt; numBoxes; ++box)</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160; {</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> scoreIndex = box * numClassesWithBg + 1;</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160;</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160; <span class="comment">// Get the max scores of the box.</span></div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160; std::vector&lt;unsigned int&gt; maxScoreIndices = <a class="code" href="namespacearmnn.html#ae8ed5c640761fb6744aec0ee16388417">GenerateRangeK</a>(desc.m_NumClasses);</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160; <a class="code" href="namespacearmnn.html#a2748f45e58b1c612d473043f711d1434">TopKSort</a>(numClassesPerBox, maxScoreIndices.data(),</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160; decodedScores.data() + scoreIndex, desc.m_NumClasses);</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160;</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i &lt; numClassesPerBox; ++i)</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160; {</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160; maxScores.push_back(decodedScores[scoreIndex + maxScoreIndices[i]]);</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160; maxScoreClasses.push_back(maxScoreIndices[i]);</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160; boxIndices.push_back(box);</div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160; }</div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160; }</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160;</div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160; <span class="comment">// Perform NMS on max scores</span></div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160; std::vector&lt;unsigned int&gt; selectedIndices = <a class="code" href="namespacearmnn.html#ac8c641d4a69c9a85c487cfbc7ea4d73c">NonMaxSuppression</a>(numBoxes, boxCorners, maxScores,</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160; desc.m_NmsScoreThreshold,</div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160; desc.m_MaxDetections,</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160; desc.m_NmsIouThreshold);</div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160;</div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> numSelected = boost::numeric_cast&lt;<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>&gt;(selectedIndices.size());</div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> numOutput = std::min(desc.m_MaxDetections, numSelected);</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160;</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>&#160; <a class="code" href="namespacearmnn.html#ae8dcbb74cf0c855724f12833a55a5684">AllocateOutputData</a>(detectionBoxesInfo.GetShape()[1], numOutput, boxCorners, selectedIndices,</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160; boxIndices, maxScoreClasses, maxScores,</div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160; detectionBoxes, detectionScores, detectionClasses, numDetections);</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160; }</div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_ae8dcbb74cf0c855724f12833a55a5684"><div class="ttname"><a href="namespacearmnn.html#ae8dcbb74cf0c855724f12833a55a5684">armnn::AllocateOutputData</a></div><div class="ttdeci">void AllocateOutputData(unsigned int numOutput, unsigned int numSelected, const std::vector&lt; float &gt; &amp;boxCorners, const std::vector&lt; unsigned int &gt; &amp;outputIndices, const std::vector&lt; unsigned int &gt; &amp;selectedBoxes, const std::vector&lt; unsigned int &gt; &amp;selectedClasses, const std::vector&lt; float &gt; &amp;selectedScores, float *detectionBoxes, float *detectionScores, float *detectionClasses, float *numDetections)</div><div class="ttdef"><b>Definition:</b> <a href="backends_2reference_2workloads_2_detection_post_process_8cpp_source.html#l00103">DetectionPostProcess.cpp:103</a></div></div>
<div class="ttc" id="namespacearmnn_html_ac8c641d4a69c9a85c487cfbc7ea4d73c"><div class="ttname"><a href="namespacearmnn.html#ac8c641d4a69c9a85c487cfbc7ea4d73c">armnn::NonMaxSuppression</a></div><div class="ttdeci">std::vector&lt; unsigned int &gt; NonMaxSuppression(unsigned int numBoxes, const std::vector&lt; float &gt; &amp;boxCorners, const std::vector&lt; float &gt; &amp;scores, float nmsScoreThreshold, unsigned int maxDetection, float nmsIouThreshold)</div><div class="ttdef"><b>Definition:</b> <a href="backends_2reference_2workloads_2_detection_post_process_8cpp_source.html#l00050">DetectionPostProcess.cpp:50</a></div></div>
<div class="ttc" id="_neon_end_to_end_tests_8cpp_html_a64c1dd1b6dd60be9f4a16db9c8f427a5"><div class="ttname"><a href="_neon_end_to_end_tests_8cpp.html#a64c1dd1b6dd60be9f4a16db9c8f427a5">scoresInfo</a></div><div class="ttdeci">armnn::TensorInfo scoresInfo({ 1, 6, 3 }, armnn::DataType::Float32)</div></div>
<div class="ttc" id="_neon_end_to_end_tests_8cpp_html_a0348e6bb67ace72535bd105219bb6237"><div class="ttname"><a href="_neon_end_to_end_tests_8cpp.html#a0348e6bb67ace72535bd105219bb6237">scores</a></div><div class="ttdeci">std::vector&lt; float &gt; scores({ 0.0f, 0.9f, 0.8f, 0.0f, 0.75f, 0.72f, 0.0f, 0.6f, 0.5f, 0.0f, 0.93f, 0.95f, 0.0f, 0.5f, 0.4f, 0.0f, 0.3f, 0.2f })</div></div>
<div class="ttc" id="_neon_end_to_end_tests_8cpp_html_ada422a73ac4e68bcb1b1b1f0b44028d9"><div class="ttname"><a href="_neon_end_to_end_tests_8cpp.html#ada422a73ac4e68bcb1b1b1f0b44028d9">boxEncodings</a></div><div class="ttdeci">std::vector&lt; float &gt; boxEncodings({ 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, 0.0f, 0.0f, 0.0f, -1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f })</div></div>
<div class="ttc" id="namespacearmnn_html_a2748f45e58b1c612d473043f711d1434"><div class="ttname"><a href="namespacearmnn.html#a2748f45e58b1c612d473043f711d1434">armnn::TopKSort</a></div><div class="ttdeci">void TopKSort(unsigned int k, unsigned int *indices, const float *values, unsigned int numElement)</div><div class="ttdef"><b>Definition:</b> <a href="backends_2reference_2workloads_2_detection_post_process_8cpp_source.html#l00025">DetectionPostProcess.cpp:25</a></div></div>
<div class="ttc" id="_neon_end_to_end_tests_8cpp_html_ac0981848e4ae57729f14f72bd4caa9f8"><div class="ttname"><a href="_neon_end_to_end_tests_8cpp.html#ac0981848e4ae57729f14f72bd4caa9f8">anchors</a></div><div class="ttdeci">std::vector&lt; float &gt; anchors({ 0.5f, 0.5f, 1.0f, 1.0f, 0.5f, 0.5f, 1.0f, 1.0f, 0.5f, 0.5f, 1.0f, 1.0f, 0.5f, 10.5f, 1.0f, 1.0f, 0.5f, 10.5f, 1.0f, 1.0f, 0.5f, 100.5f, 1.0f, 1.0f })</div></div>
<div class="ttc" id="classarmnn_1_1_tensor_info_html_a8846406ac37fbd2204f0be16ee05d5b7"><div class="ttname"><a href="classarmnn_1_1_tensor_info.html#a8846406ac37fbd2204f0be16ee05d5b7">armnn::TensorInfo::GetNumElements</a></div><div class="ttdeci">unsigned int GetNumElements() const</div><div class="ttdef"><b>Definition:</b> <a href="_tensor_8hpp_source.html#l00093">Tensor.hpp:93</a></div></div>
<div class="ttc" id="namespacearmnn_html_ae8ed5c640761fb6744aec0ee16388417"><div class="ttname"><a href="namespacearmnn.html#ae8ed5c640761fb6744aec0ee16388417">armnn::GenerateRangeK</a></div><div class="ttdeci">std::vector&lt; unsigned int &gt; GenerateRangeK(unsigned int k)</div><div class="ttdef"><b>Definition:</b> <a href="backends_2reference_2workloads_2_detection_post_process_8cpp_source.html#l00018">DetectionPostProcess.cpp:18</a></div></div>
<div class="ttc" id="classarmnn_1_1_decoder_html_ac729108381e2340bea12877971713ecb"><div class="ttname"><a href="classarmnn_1_1_decoder.html#ac729108381e2340bea12877971713ecb">armnn::Decoder::Get</a></div><div class="ttdeci">virtual IType Get() const =0</div></div>
<div class="ttc" id="_neon_end_to_end_tests_8cpp_html_a358cb7cd3c0647b25be049fd734b8c22"><div class="ttname"><a href="_neon_end_to_end_tests_8cpp.html#a358cb7cd3c0647b25be049fd734b8c22">anchorsInfo</a></div><div class="ttdeci">armnn::TensorInfo anchorsInfo({ 6, 4 }, armnn::DataType::Float32)</div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a50805c29c35b9903c2dea301d8091711"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a50805c29c35b9903c2dea301d8091711">&#9670;&nbsp;</a></span>ExtractJsonObjects()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void armnn::ExtractJsonObjects </td>
<td>(</td>
<td class="paramtype">unsigned int&#160;</td>
<td class="paramname"><em>inferenceIndex</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_event.html">Event</a> *&#160;</td>
<td class="paramname"><em>parentEvent</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="structarmnn_1_1_json_child_object.html">JsonChildObject</a> &amp;&#160;</td>
<td class="paramname"><em>parentObject</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">std::map&lt; const <a class="el" href="classarmnn_1_1_event.html">Event</a> *, std::vector&lt; const <a class="el" href="classarmnn_1_1_event.html">Event</a> *&gt;&gt;&#160;</td>
<td class="paramname"><em>descendantsMap</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_profiling_8cpp_source.html#l00284">284</a> of file <a class="el" href="_profiling_8cpp_source.html">Profiling.cpp</a>.</p>
<p class="reference">References <a class="el" href="_json_printer_8hpp_source.html#l00036">JsonChildObject::AddChild()</a>, <a class="el" href="_json_printer_8hpp_source.html#l00031">JsonChildObject::AddMeasurement()</a>, <a class="el" href="namespacearmnn.html#a4e2dd387ba6f0dc5164b4cdf8de3262aaa4ecfc70574394990cf17bd83df499f7">Event</a>, <a class="el" href="_json_printer_8hpp_source.html#l00041">JsonChildObject::GetChild()</a>, <a class="el" href="_profiling_event_8cpp_source.html#l00054">Event::GetMeasurements()</a>, <a class="el" href="namespacearmnn.html#a4e2dd387ba6f0dc5164b4cdf8de3262aa911842b19d8b2f9bbed8cfe909d52975">Measurement</a>, <a class="el" href="_json_printer_8hpp_source.html#l00051">JsonChildObject::NumChildren()</a>, <a class="el" href="_json_printer_8hpp_source.html#l00056">JsonChildObject::SetType()</a>, and <a class="el" href="_json_printer_8hpp_source.html#l00046">JsonChildObject::SetUnit()</a>.</p>
<p class="reference">Referenced by <a class="el" href="_profiling_8cpp_source.html#l00330">Profiler::Print()</a>.</p>
<div class="fragment"><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160;{</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160; BOOST_ASSERT(parentEvent);</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160; std::vector&lt;Measurement&gt; instrumentMeasurements = parentEvent-&gt;GetMeasurements();</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> childIdx=0;</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">size_t</span> measurementIndex = 0; measurementIndex &lt; instrumentMeasurements.size(); ++measurementIndex, ++childIdx)</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160; {</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160; <span class="keywordflow">if</span> (inferenceIndex == 0)</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160; {</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160; <span class="comment">// Only add kernel measurement once, in case of multiple inferences</span></div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160; JsonChildObject measurementObject{instrumentMeasurements[measurementIndex].m_Name};</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160; measurementObject.SetUnit(instrumentMeasurements[measurementIndex].m_Unit);</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160; measurementObject.SetType(JsonObjectType::Measurement);</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160;</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160; BOOST_ASSERT(parentObject.NumChildren() == childIdx);</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160; parentObject.AddChild(measurementObject);</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160; }</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160;</div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160; parentObject.GetChild(childIdx).AddMeasurement(instrumentMeasurements[measurementIndex].m_Value);</div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160; }</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160;</div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160;</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160; <span class="keyword">auto</span> childEventsIt = descendantsMap.find(parentEvent);</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160; <span class="keywordflow">if</span> (childEventsIt != descendantsMap.end())</div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160; {</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span> childEvent : childEventsIt-&gt;second)</div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160; {</div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160; <span class="keywordflow">if</span> (inferenceIndex == 0)</div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>&#160; {</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160; <span class="comment">// Only add second level once, in case of multiple inferences</span></div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>&#160; JsonChildObject childObject{childEvent-&gt;GetName()};</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160; childObject.SetType(JsonObjectType::Event);</div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160; parentObject.AddChild(childObject);</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160; }</div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span>&#160;</div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>&#160; <span class="comment">// Recursively process children. In reality this won&#39;t be very deep recursion. ~4-6 levels deep.</span></div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160; <a class="code" href="namespacearmnn.html#a50805c29c35b9903c2dea301d8091711">ExtractJsonObjects</a>(inferenceIndex, childEvent, parentObject.GetChild(childIdx), descendantsMap);</div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>&#160;</div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span>&#160; childIdx++;</div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span>&#160; }</div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span>&#160; }</div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a50805c29c35b9903c2dea301d8091711"><div class="ttname"><a href="namespacearmnn.html#a50805c29c35b9903c2dea301d8091711">armnn::ExtractJsonObjects</a></div><div class="ttdeci">void ExtractJsonObjects(unsigned int inferenceIndex, const Event *parentEvent, JsonChildObject &amp;parentObject, std::map&lt; const Event *, std::vector&lt; const Event *&gt;&gt; descendantsMap)</div><div class="ttdef"><b>Definition:</b> <a href="_profiling_8cpp_source.html#l00284">Profiling.cpp:284</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="ab3c0b7e1a78b1b98c24934221f36a7c3"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab3c0b7e1a78b1b98c24934221f36a7c3">&#9670;&nbsp;</a></span>FakeQuantization()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void armnn::FakeQuantization </td>
<td>(</td>
<td class="paramtype">const float *&#160;</td>
<td class="paramname"><em>inputData</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">float *&#160;</td>
<td class="paramname"><em>outputData</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint32_t&#160;</td>
<td class="paramname"><em>numElements</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">float&#160;</td>
<td class="paramname"><em>min</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">float&#160;</td>
<td class="paramname"><em>max</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_ref_fake_quantization_float32_workload_8cpp_source.html#l00017">17</a> of file <a class="el" href="_ref_fake_quantization_float32_workload_8cpp_source.html">RefFakeQuantizationFloat32Workload.cpp</a>.</p>
<div class="fragment"><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;{</div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160; <span class="keywordtype">float</span> scale = (max - min) / 255.f;</div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160; int32_t offset = boost::numeric_cast&lt;int32_t&gt;((-min * 255.f) / (max - min));</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160; <span class="keywordflow">for</span> (uint32_t i = 0; i &lt; numElements; i++)</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160; {</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160; outputData[i] = <span class="keyword">static_cast&lt;</span><span class="keywordtype">float</span><span class="keyword">&gt;</span>(armnn::Quantize&lt;uint8_t&gt;(inputData[i], scale, offset));</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; }</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;}</div></div><!-- fragment -->
</div>
</div>
<a id="a6e64aab48baba12883c73e90bfd07e77"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a6e64aab48baba12883c73e90bfd07e77">&#9670;&nbsp;</a></span>FalseFunc()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">bool armnn::FalseFunc </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classarmnn_1_1_optional.html">Optional</a>&lt; std::string &amp;&gt;&#160;</td>
<td class="paramname"><em>reasonIfUnsupported</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">Params &amp;&amp;...&#160;</td>
<td class="paramname"><em>params</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_layer_support_common_8hpp_source.html#l00063">63</a> of file <a class="el" href="_layer_support_common_8hpp_source.html">LayerSupportCommon.hpp</a>.</p>
<div class="fragment"><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160;{</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; boost::ignore_unused(reasonIfUnsupported);</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; boost::ignore_unused(params...);</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160;}</div></div><!-- fragment -->
</div>
</div>
<a id="a621c8ffe11bba3d7ab304a9ad3feec2f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a621c8ffe11bba3d7ab304a9ad3feec2f">&#9670;&nbsp;</a></span>FalseFuncF16()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">bool armnn::FalseFuncF16 </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classarmnn_1_1_optional.html">Optional</a>&lt; std::string &amp;&gt;&#160;</td>
<td class="paramname"><em>reasonIfUnsupported</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">Params &amp;&amp;...&#160;</td>
<td class="paramname"><em>params</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_layer_support_common_8hpp_source.html#l00071">71</a> of file <a class="el" href="_layer_support_common_8hpp_source.html">LayerSupportCommon.hpp</a>.</p>
<p class="reference">References <a class="el" href="_layer_support_common_8hpp_source.html#l00018">SetValueChecked()</a>.</p>
<div class="fragment"><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160;{</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; boost::ignore_unused(params...);</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; <a class="code" href="namespacearmnn.html#a13c7d751e4d37f65a6d40c3c6e50d2b8">SetValueChecked</a>(reasonIfUnsupported, <span class="stringliteral">&quot;Layer is not supported with float16 data type&quot;</span>);</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a13c7d751e4d37f65a6d40c3c6e50d2b8"><div class="ttname"><a href="namespacearmnn.html#a13c7d751e4d37f65a6d40c3c6e50d2b8">armnn::SetValueChecked</a></div><div class="ttdeci">void SetValueChecked(Optional&lt; T &amp;&gt; optionalRef, V &amp;&amp;val)</div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_common_8hpp_source.html#l00018">LayerSupportCommon.hpp:18</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a02d627e25da543b79ee8a59a1193a426"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a02d627e25da543b79ee8a59a1193a426">&#9670;&nbsp;</a></span>FalseFuncF32()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">bool armnn::FalseFuncF32 </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classarmnn_1_1_optional.html">Optional</a>&lt; std::string &amp;&gt;&#160;</td>
<td class="paramname"><em>reasonIfUnsupported</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">Params &amp;&amp;...&#160;</td>
<td class="paramname"><em>params</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_layer_support_common_8hpp_source.html#l00079">79</a> of file <a class="el" href="_layer_support_common_8hpp_source.html">LayerSupportCommon.hpp</a>.</p>
<p class="reference">References <a class="el" href="_layer_support_common_8hpp_source.html#l00018">SetValueChecked()</a>.</p>
<div class="fragment"><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160;{</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; boost::ignore_unused(params...);</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; <a class="code" href="namespacearmnn.html#a13c7d751e4d37f65a6d40c3c6e50d2b8">SetValueChecked</a>(reasonIfUnsupported, <span class="stringliteral">&quot;Layer is not supported with float32 data type&quot;</span>);</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a13c7d751e4d37f65a6d40c3c6e50d2b8"><div class="ttname"><a href="namespacearmnn.html#a13c7d751e4d37f65a6d40c3c6e50d2b8">armnn::SetValueChecked</a></div><div class="ttdeci">void SetValueChecked(Optional&lt; T &amp;&gt; optionalRef, V &amp;&amp;val)</div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_common_8hpp_source.html#l00018">LayerSupportCommon.hpp:18</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a07ae80b502ab664f1aaf7d6c00725982"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a07ae80b502ab664f1aaf7d6c00725982">&#9670;&nbsp;</a></span>FalseFuncI32()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">bool armnn::FalseFuncI32 </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classarmnn_1_1_optional.html">Optional</a>&lt; std::string &amp;&gt;&#160;</td>
<td class="paramname"><em>reasonIfUnsupported</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">Params &amp;&amp;...&#160;</td>
<td class="paramname"><em>params</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_layer_support_common_8hpp_source.html#l00095">95</a> of file <a class="el" href="_layer_support_common_8hpp_source.html">LayerSupportCommon.hpp</a>.</p>
<p class="reference">References <a class="el" href="_layer_support_common_8hpp_source.html#l00018">SetValueChecked()</a>.</p>
<div class="fragment"><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160;{</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; boost::ignore_unused(params...);</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; <a class="code" href="namespacearmnn.html#a13c7d751e4d37f65a6d40c3c6e50d2b8">SetValueChecked</a>(reasonIfUnsupported, <span class="stringliteral">&quot;Layer is not supported with int32 data type&quot;</span>);</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a13c7d751e4d37f65a6d40c3c6e50d2b8"><div class="ttname"><a href="namespacearmnn.html#a13c7d751e4d37f65a6d40c3c6e50d2b8">armnn::SetValueChecked</a></div><div class="ttdeci">void SetValueChecked(Optional&lt; T &amp;&gt; optionalRef, V &amp;&amp;val)</div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_common_8hpp_source.html#l00018">LayerSupportCommon.hpp:18</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a4e4802d0916cb8b7da508ab03ce1f163"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a4e4802d0916cb8b7da508ab03ce1f163">&#9670;&nbsp;</a></span>FalseFuncU8()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">bool armnn::FalseFuncU8 </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classarmnn_1_1_optional.html">Optional</a>&lt; std::string &amp;&gt;&#160;</td>
<td class="paramname"><em>reasonIfUnsupported</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">Params &amp;&amp;...&#160;</td>
<td class="paramname"><em>params</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_layer_support_common_8hpp_source.html#l00087">87</a> of file <a class="el" href="_layer_support_common_8hpp_source.html">LayerSupportCommon.hpp</a>.</p>
<p class="reference">References <a class="el" href="_layer_support_common_8hpp_source.html#l00018">SetValueChecked()</a>.</p>
<div class="fragment"><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160;{</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; boost::ignore_unused(params...);</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; <a class="code" href="namespacearmnn.html#a13c7d751e4d37f65a6d40c3c6e50d2b8">SetValueChecked</a>(reasonIfUnsupported, <span class="stringliteral">&quot;Layer is not supported with 8-bit data type&quot;</span>);</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a13c7d751e4d37f65a6d40c3c6e50d2b8"><div class="ttname"><a href="namespacearmnn.html#a13c7d751e4d37f65a6d40c3c6e50d2b8">armnn::SetValueChecked</a></div><div class="ttdeci">void SetValueChecked(Optional&lt; T &amp;&gt; optionalRef, V &amp;&amp;val)</div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_common_8hpp_source.html#l00018">LayerSupportCommon.hpp:18</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a216969fbba54df95de3e68435b8074d7"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a216969fbba54df95de3e68435b8074d7">&#9670;&nbsp;</a></span>FalseInputFuncF16()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">bool armnn::FalseInputFuncF16 </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classarmnn_1_1_optional.html">Optional</a>&lt; std::string &amp;&gt;&#160;</td>
<td class="paramname"><em>reasonIfUnsupported</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">Params &amp;&amp;...&#160;</td>
<td class="paramname"><em>params</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_layer_support_common_8hpp_source.html#l00111">111</a> of file <a class="el" href="_layer_support_common_8hpp_source.html">LayerSupportCommon.hpp</a>.</p>
<p class="reference">References <a class="el" href="_layer_support_common_8hpp_source.html#l00018">SetValueChecked()</a>.</p>
<div class="fragment"><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160;{</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; boost::ignore_unused(params...);</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; <a class="code" href="namespacearmnn.html#a13c7d751e4d37f65a6d40c3c6e50d2b8">SetValueChecked</a>(reasonIfUnsupported, <span class="stringliteral">&quot;Layer is not supported with float16 data type input&quot;</span>);</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a13c7d751e4d37f65a6d40c3c6e50d2b8"><div class="ttname"><a href="namespacearmnn.html#a13c7d751e4d37f65a6d40c3c6e50d2b8">armnn::SetValueChecked</a></div><div class="ttdeci">void SetValueChecked(Optional&lt; T &amp;&gt; optionalRef, V &amp;&amp;val)</div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_common_8hpp_source.html#l00018">LayerSupportCommon.hpp:18</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a0b55e509dd7e3bfea233a389a18c21e6"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a0b55e509dd7e3bfea233a389a18c21e6">&#9670;&nbsp;</a></span>FalseInputFuncF32()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">bool armnn::FalseInputFuncF32 </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classarmnn_1_1_optional.html">Optional</a>&lt; std::string &amp;&gt;&#160;</td>
<td class="paramname"><em>reasonIfUnsupported</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">Params &amp;&amp;...&#160;</td>
<td class="paramname"><em>params</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_layer_support_common_8hpp_source.html#l00103">103</a> of file <a class="el" href="_layer_support_common_8hpp_source.html">LayerSupportCommon.hpp</a>.</p>
<p class="reference">References <a class="el" href="_layer_support_common_8hpp_source.html#l00018">SetValueChecked()</a>.</p>
<div class="fragment"><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160;{</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; boost::ignore_unused(params...);</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; <a class="code" href="namespacearmnn.html#a13c7d751e4d37f65a6d40c3c6e50d2b8">SetValueChecked</a>(reasonIfUnsupported, <span class="stringliteral">&quot;Layer is not supported with float32 data type input&quot;</span>);</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a13c7d751e4d37f65a6d40c3c6e50d2b8"><div class="ttname"><a href="namespacearmnn.html#a13c7d751e4d37f65a6d40c3c6e50d2b8">armnn::SetValueChecked</a></div><div class="ttdeci">void SetValueChecked(Optional&lt; T &amp;&gt; optionalRef, V &amp;&amp;val)</div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_common_8hpp_source.html#l00018">LayerSupportCommon.hpp:18</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a2febf8d85a92b69e4a677a7c632418ee"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a2febf8d85a92b69e4a677a7c632418ee">&#9670;&nbsp;</a></span>FalseOutputFuncF16()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">bool armnn::FalseOutputFuncF16 </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classarmnn_1_1_optional.html">Optional</a>&lt; std::string &amp;&gt;&#160;</td>
<td class="paramname"><em>reasonIfUnsupported</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">Params &amp;&amp;...&#160;</td>
<td class="paramname"><em>params</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_layer_support_common_8hpp_source.html#l00127">127</a> of file <a class="el" href="_layer_support_common_8hpp_source.html">LayerSupportCommon.hpp</a>.</p>
<p class="reference">References <a class="el" href="_layer_support_common_8hpp_source.html#l00018">SetValueChecked()</a>.</p>
<div class="fragment"><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160;{</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; boost::ignore_unused(params...);</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; <a class="code" href="namespacearmnn.html#a13c7d751e4d37f65a6d40c3c6e50d2b8">SetValueChecked</a>(reasonIfUnsupported, <span class="stringliteral">&quot;Layer is not supported with float16 data type output&quot;</span>);</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a13c7d751e4d37f65a6d40c3c6e50d2b8"><div class="ttname"><a href="namespacearmnn.html#a13c7d751e4d37f65a6d40c3c6e50d2b8">armnn::SetValueChecked</a></div><div class="ttdeci">void SetValueChecked(Optional&lt; T &amp;&gt; optionalRef, V &amp;&amp;val)</div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_common_8hpp_source.html#l00018">LayerSupportCommon.hpp:18</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="ad3d0087e2533d808debd5c959fb3901f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad3d0087e2533d808debd5c959fb3901f">&#9670;&nbsp;</a></span>FalseOutputFuncF32()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">bool armnn::FalseOutputFuncF32 </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classarmnn_1_1_optional.html">Optional</a>&lt; std::string &amp;&gt;&#160;</td>
<td class="paramname"><em>reasonIfUnsupported</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">Params &amp;&amp;...&#160;</td>
<td class="paramname"><em>params</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_layer_support_common_8hpp_source.html#l00119">119</a> of file <a class="el" href="_layer_support_common_8hpp_source.html">LayerSupportCommon.hpp</a>.</p>
<p class="reference">References <a class="el" href="_layer_support_common_8hpp_source.html#l00018">SetValueChecked()</a>.</p>
<div class="fragment"><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160;{</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; boost::ignore_unused(params...);</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; <a class="code" href="namespacearmnn.html#a13c7d751e4d37f65a6d40c3c6e50d2b8">SetValueChecked</a>(reasonIfUnsupported, <span class="stringliteral">&quot;Layer is not supported with float32 data type output&quot;</span>);</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a13c7d751e4d37f65a6d40c3c6e50d2b8"><div class="ttname"><a href="namespacearmnn.html#a13c7d751e4d37f65a6d40c3c6e50d2b8">armnn::SetValueChecked</a></div><div class="ttdeci">void SetValueChecked(Optional&lt; T &amp;&gt; optionalRef, V &amp;&amp;val)</div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_common_8hpp_source.html#l00018">LayerSupportCommon.hpp:18</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a1b90db39f6a9ebd11591e76fa364b06f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a1b90db39f6a9ebd11591e76fa364b06f">&#9670;&nbsp;</a></span>FindKernelMeasurements()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">std::vector&lt;<a class="el" href="structarmnn_1_1_measurement.html">Measurement</a>&gt; armnn::FindKernelMeasurements </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_event.html">Event</a> *&#160;</td>
<td class="paramname"><em>event</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_profiling_8cpp_source.html#l00063">63</a> of file <a class="el" href="_profiling_8cpp_source.html">Profiling.cpp</a>.</p>
<p class="reference">References <a class="el" href="_profiling_8cpp_source.html#l00044">FindMeasurement()</a>, <a class="el" href="_profiling_event_8cpp_source.html#l00054">Event::GetMeasurements()</a>, <a class="el" href="_instrument_8hpp_source.html#l00043">Measurement::m_Value</a>, and <a class="el" href="_wall_clock_timer_8hpp_source.html#l00063">WallClockTimer::WALL_CLOCK_TIME</a>.</p>
<div class="fragment"><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160;{</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; BOOST_ASSERT(event != <span class="keyword">nullptr</span>);</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160;</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; std::vector&lt;Measurement&gt; measurements;</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160;</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; <span class="comment">// Search through the measurements.</span></div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span>&amp; measurement : event-&gt;GetMeasurements())</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; {</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; <span class="keywordflow">if</span> (measurement.m_Name.rfind(<span class="stringliteral">&quot;OpenClKernelTimer&quot;</span>, 0) == 0</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; || measurement.m_Name.rfind(<span class="stringliteral">&quot;NeonKernelTimer&quot;</span>, 0) == 0)</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; {</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; <span class="comment">// Measurement found.</span></div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; measurements.push_back(measurement);</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; }</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; }</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160;</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; <span class="keywordflow">return</span> measurements;</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160;}</div></div><!-- fragment -->
</div>
</div>
<a id="a12d3ffe11b54c0aaa59bdd8415701c36"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a12d3ffe11b54c0aaa59bdd8415701c36">&#9670;&nbsp;</a></span>FindMeasurement()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="structarmnn_1_1_measurement.html">Measurement</a> armnn::FindMeasurement </td>
<td>(</td>
<td class="paramtype">const std::string &amp;&#160;</td>
<td class="paramname"><em>name</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_event.html">Event</a> *&#160;</td>
<td class="paramname"><em>event</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_profiling_8cpp_source.html#l00044">44</a> of file <a class="el" href="_profiling_8cpp_source.html">Profiling.cpp</a>.</p>
<p class="reference">References <a class="el" href="_profiling_event_8cpp_source.html#l00054">Event::GetMeasurements()</a>.</p>
<p class="reference">Referenced by <a class="el" href="_profiling_8cpp_source.html#l00114">Profiler::AnalyzeEventSequenceAndWriteResults()</a>, and <a class="el" href="_profiling_8cpp_source.html#l00063">FindKernelMeasurements()</a>.</p>
<div class="fragment"><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;{</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; BOOST_ASSERT(event != <span class="keyword">nullptr</span>);</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; <span class="comment">// Search though the measurements.</span></div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span>&amp; measurement : event-&gt;GetMeasurements())</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; {</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; <span class="keywordflow">if</span> (measurement.m_Name == name)</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; {</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; <span class="comment">// Measurement found.</span></div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; <span class="keywordflow">return</span> measurement;</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; }</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; }</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160;</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; <span class="comment">// Measurement not found.</span></div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespacearmnn.html#a4e2dd387ba6f0dc5164b4cdf8de3262aa911842b19d8b2f9bbed8cfe909d52975">Measurement</a>{ <span class="stringliteral">&quot;&quot;</span>, 0.f, Measurement::Unit::TIME_MS };</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a4e2dd387ba6f0dc5164b4cdf8de3262aa911842b19d8b2f9bbed8cfe909d52975"><div class="ttname"><a href="namespacearmnn.html#a4e2dd387ba6f0dc5164b4cdf8de3262aa911842b19d8b2f9bbed8cfe909d52975">armnn::JsonObjectType::Measurement</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="afce94270d9c4a51cd0c4ac6a58af4e26"></a>
<h2 class="memtitle"><span class="permalink"><a href="#afce94270d9c4a51cd0c4ac6a58af4e26">&#9670;&nbsp;</a></span>ForEachLayerInput()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void armnn::ForEachLayerInput </td>
<td>(</td>
<td class="paramtype">LayerSelectionInfo::LayerInfoContainer &amp;&#160;</td>
<td class="paramname"><em>layerInfos</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">LayerSelectionInfo &amp;&#160;</td>
<td class="paramname"><em>layerInfo</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">Delegate&#160;</td>
<td class="paramname"><em>function</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_subgraph_view_selector_8cpp_source.html#l00259">259</a> of file <a class="el" href="_subgraph_view_selector_8cpp_source.html">SubgraphViewSelector.cpp</a>.</p>
<p class="reference">References <a class="el" href="_layer_8hpp_source.html#l00231">Layer::GetInputSlots()</a>.</p>
<p class="reference">Referenced by <a class="el" href="_subgraph_view_selector_8cpp_source.html#l00301">AssignSplitId()</a>, and <a class="el" href="_subgraph_view_selector_8cpp_source.html#l00366">IsReadyForSplitAssignment()</a>.</p>
<div class="fragment"><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160;{</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160; Layer&amp; layer = *layerInfo.m_Layer;</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160;</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span> inputSlot : layer.GetInputSlots())</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160; {</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160; <span class="keyword">auto</span> connectedInput = boost::polymorphic_downcast&lt;OutputSlot*&gt;(inputSlot.GetConnection());</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160; BOOST_ASSERT_MSG(connectedInput, <span class="stringliteral">&quot;Dangling input slot detected.&quot;</span>);</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160; Layer&amp; inputLayer = connectedInput-&gt;GetOwningLayer();</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160;</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160; <span class="keyword">auto</span> parentInfo = layerInfos.find(&amp;inputLayer);</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160; <span class="keywordflow">if</span> (parentInfo != layerInfos.end())</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160; {</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160; <span class="keyword">function</span>(parentInfo-&gt;second);</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160; }</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160; }</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160;}</div></div><!-- fragment -->
</div>
</div>
<a id="a49538fa883b70c944e437d65d6628eec"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a49538fa883b70c944e437d65d6628eec">&#9670;&nbsp;</a></span>ForEachLayerOutput()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void armnn::ForEachLayerOutput </td>
<td>(</td>
<td class="paramtype">LayerSelectionInfo::LayerInfoContainer &amp;&#160;</td>
<td class="paramname"><em>layerInfos</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">LayerSelectionInfo &amp;&#160;</td>
<td class="paramname"><em>layerInfo</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">Delegate&#160;</td>
<td class="paramname"><em>function</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_subgraph_view_selector_8cpp_source.html#l00280">280</a> of file <a class="el" href="_subgraph_view_selector_8cpp_source.html">SubgraphViewSelector.cpp</a>.</p>
<p class="reference">References <a class="el" href="_layer_8hpp_source.html#l00232">Layer::GetOutputSlots()</a>.</p>
<p class="reference">Referenced by <a class="el" href="_subgraph_view_selector_8cpp_source.html#l00381">SubgraphViewSelector::SelectSubgraphs()</a>.</p>
<div class="fragment"><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160;{</div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160; Layer&amp; layer= *layerInfo.m_Layer;</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160;</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span>&amp; outputSlot : layer.GetOutputSlots())</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160; {</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span>&amp; output : outputSlot.GetConnections())</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160; {</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160; Layer&amp; childLayer = output-&gt;GetOwningLayer();</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160;</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160; <span class="keyword">auto</span> childInfo = layerInfos.find(&amp;childLayer);</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160; <span class="keywordflow">if</span> (childInfo != layerInfos.end())</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160; {</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160; <span class="keyword">function</span>(childInfo-&gt;second);</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160; }</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160; }</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160; }</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160;}</div></div><!-- fragment -->
</div>
</div>
<a id="ad34d1d5b1ca8f52dc296ecf52ba20c8a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad34d1d5b1ca8f52dc296ecf52ba20c8a">&#9670;&nbsp;</a></span>FullyConnected()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void FullyConnected </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_shape.html">TensorShape</a> &amp;&#160;</td>
<td class="paramname"><em>rInputShape</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classarmnn_1_1_decoder.html">Decoder</a>&lt; float &gt; &amp;&#160;</td>
<td class="paramname"><em>rInputDecoder</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_shape.html">TensorShape</a> &amp;&#160;</td>
<td class="paramname"><em>rOutputShape</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classarmnn_1_1_encoder.html">Encoder</a>&lt; float &gt; &amp;&#160;</td>
<td class="paramname"><em>rOutputEncoder</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classarmnn_1_1_decoder.html">Decoder</a>&lt; float &gt; &amp;&#160;</td>
<td class="paramname"><em>rWeightDecoder</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classarmnn_1_1_decoder.html">Decoder</a>&lt; float &gt; &amp;&#160;</td>
<td class="paramname"><em>rBiasDecoder</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const bool&#160;</td>
<td class="paramname"><em>biasEnabled</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const unsigned int&#160;</td>
<td class="paramname"><em>K</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const bool&#160;</td>
<td class="paramname"><em>transposeWeights</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Performs a matrix multiplication and optionally adds a bias. </p>
<p class="definition">Definition at line <a class="el" href="backends_2reference_2workloads_2_fully_connected_8cpp_source.html#l00015">15</a> of file <a class="el" href="backends_2reference_2workloads_2_fully_connected_8cpp_source.html">FullyConnected.cpp</a>.</p>
<p class="reference">References <a class="el" href="classarmnn_1_1_decoder.html#ac729108381e2340bea12877971713ecb">Decoder&lt; IType &gt;::Get()</a>, and <a class="el" href="classarmnn_1_1_encoder.html#ae3b62b846a9c239f332830b9e36030eb">Encoder&lt; IType &gt;::Set()</a>.</p>
<div class="fragment"><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;{</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; <span class="comment">// Perform FullyConnected implementation</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> outputSize = rOutputShape[1];</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> n = 0; n &lt; rInputShape[0]; n++)</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; {</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> channelOutput = 0; channelOutput &lt; outputSize; channelOutput++)</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; {</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; <span class="keywordtype">float</span> outval = 0.f;</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> channelInput = 0; channelInput &lt; K; channelInput++)</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; {</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; <span class="keywordtype">float</span> weight;</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; <span class="keywordflow">if</span> (transposeWeights)</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; {</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; rWeightDecoder[channelOutput * K + channelInput];</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; weight = rWeightDecoder.<a class="code" href="classarmnn_1_1_decoder.html#ac729108381e2340bea12877971713ecb">Get</a>();</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; }</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; {</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; rWeightDecoder[channelInput * outputSize + channelOutput];</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; weight = rWeightDecoder.<a class="code" href="classarmnn_1_1_decoder.html#ac729108381e2340bea12877971713ecb">Get</a>();</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; }</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; rInputDecoder[n * K + channelInput];</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; outval += weight * rInputDecoder.<a class="code" href="classarmnn_1_1_decoder.html#ac729108381e2340bea12877971713ecb">Get</a>();</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; }</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160;</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; <span class="keywordflow">if</span> (biasEnabled)</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; {</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; rBiasDecoder[channelOutput];</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; outval += rBiasDecoder.<a class="code" href="classarmnn_1_1_decoder.html#ac729108381e2340bea12877971713ecb">Get</a>();</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; }</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160;</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; rOutputEncoder[n * outputSize + channelOutput];</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; rOutputEncoder.<a class="code" href="classarmnn_1_1_encoder.html#ae3b62b846a9c239f332830b9e36030eb">Set</a>(outval);</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; }</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; }</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160;}</div><div class="ttc" id="classarmnn_1_1_decoder_html_ac729108381e2340bea12877971713ecb"><div class="ttname"><a href="classarmnn_1_1_decoder.html#ac729108381e2340bea12877971713ecb">armnn::Decoder::Get</a></div><div class="ttdeci">virtual IType Get() const =0</div></div>
<div class="ttc" id="classarmnn_1_1_encoder_html_ae3b62b846a9c239f332830b9e36030eb"><div class="ttname"><a href="classarmnn_1_1_encoder.html#ae3b62b846a9c239f332830b9e36030eb">armnn::Encoder::Set</a></div><div class="ttdeci">virtual void Set(IType right)=0</div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a66004b2326f8ccb1faa71d5efa186633"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a66004b2326f8ccb1faa71d5efa186633">&#9670;&nbsp;</a></span>Gather()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void Gather </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>paramsInfo</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>indicesInfo</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>outputInfo</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classarmnn_1_1_decoder.html">Decoder</a>&lt; float &gt; &amp;&#160;</td>
<td class="paramname"><em>params</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const int32_t *&#160;</td>
<td class="paramname"><em>indices</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classarmnn_1_1_encoder.html">Encoder</a>&lt; float &gt; &amp;&#160;</td>
<td class="paramname"><em>output</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="backends_2reference_2workloads_2_gather_8cpp_source.html#l00018">18</a> of file <a class="el" href="backends_2reference_2workloads_2_gather_8cpp_source.html">Gather.cpp</a>.</p>
<p class="reference">References <a class="el" href="classarmnn_1_1_decoder.html#ac729108381e2340bea12877971713ecb">Decoder&lt; IType &gt;::Get()</a>, <a class="el" href="_tensor_8hpp_source.html#l00092">TensorInfo::GetNumDimensions()</a>, <a class="el" href="_tensor_8hpp_source.html#l00093">TensorInfo::GetNumElements()</a>, <a class="el" href="_tensor_8hpp_source.html#l00088">TensorInfo::GetShape()</a>, and <a class="el" href="classarmnn_1_1_encoder.html#ae3b62b846a9c239f332830b9e36030eb">Encoder&lt; IType &gt;::Set()</a>.</p>
<div class="fragment"><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;{</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; boost::ignore_unused(outputInfo);</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; <span class="keyword">const</span> TensorShape&amp; paramsShape = paramsInfo.GetShape();</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> paramsProduct = 1;</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 1; i &lt; paramsInfo.GetNumDimensions(); ++i)</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; {</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; paramsProduct = paramsProduct * paramsShape[i];</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; }</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> outIndex = 0;</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i &lt; indicesInfo.GetNumElements(); ++i)</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; {</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> indx = boost::numeric_cast&lt;<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>&gt;(indices[i]);</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; BOOST_ASSERT(indices[i] &gt;= 0 &amp;&amp; indx &lt; paramsShape[0]);</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> startOffset = indx * paramsProduct;</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> endOffset = startOffset + paramsProduct;</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> j = startOffset; j &lt; endOffset; ++j)</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; {</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; params[j];</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; <span class="keywordtype">float</span> outputValue = params.<a class="code" href="classarmnn_1_1_decoder.html#ac729108381e2340bea12877971713ecb">Get</a>();</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; output[outIndex];</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; output.<a class="code" href="classarmnn_1_1_encoder.html#ae3b62b846a9c239f332830b9e36030eb">Set</a>(outputValue);</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; ++outIndex;</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; }</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; }</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160;</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; BOOST_ASSERT(outIndex == outputInfo.GetNumElements());</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160;}</div><div class="ttc" id="classarmnn_1_1_decoder_html_ac729108381e2340bea12877971713ecb"><div class="ttname"><a href="classarmnn_1_1_decoder.html#ac729108381e2340bea12877971713ecb">armnn::Decoder::Get</a></div><div class="ttdeci">virtual IType Get() const =0</div></div>
<div class="ttc" id="classarmnn_1_1_encoder_html_ae3b62b846a9c239f332830b9e36030eb"><div class="ttname"><a href="classarmnn_1_1_encoder.html#ae3b62b846a9c239f332830b9e36030eb">armnn::Encoder::Set</a></div><div class="ttdeci">virtual void Set(IType right)=0</div></div>
</div><!-- fragment -->
</div>
</div>
<a id="afb5b53a8b0c01d4f27830bef0f25ca09"></a>
<h2 class="memtitle"><span class="permalink"><a href="#afb5b53a8b0c01d4f27830bef0f25ca09">&#9670;&nbsp;</a></span>GatherTensorHandlePairs()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void armnn::GatherTensorHandlePairs </td>
<td>(</td>
<td class="paramtype">const DescriptorType &amp;&#160;</td>
<td class="paramname"><em>descriptor</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">std::vector&lt; std::pair&lt; SrcTensorHandleType *, DstTensorHandleType *&gt;&gt; &amp;&#160;</td>
<td class="paramname"><em>tensorHandlePairs</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_workload_utils_8hpp_source.html#l00192">192</a> of file <a class="el" href="_workload_utils_8hpp_source.html">WorkloadUtils.hpp</a>.</p>
<p class="reference">References <a class="el" href="_workload_utils_8cpp_source.html#l00192">ConvertMaskToACLFormat()</a>, <a class="el" href="_workload_utils_8cpp_source.html#l00132">ConvertWeightTensorFromArmnnToAcl()</a>, <a class="el" href="_workload_utils_8cpp_source.html#l00109">ConvertWeightTensorInfoFromArmnnToAcl()</a>, <a class="el" href="_workload_utils_8cpp_source.html#l00013">PermuteTensor()</a>, and <a class="el" href="_workload_utils_8cpp_source.html#l00036">ReshapeWeightsForAcl()</a>.</p>
<p class="reference">Referenced by <a class="el" href="_mem_copy_workload_8cpp_source.html#l00042">CopyMemGenericWorkload::CopyMemGenericWorkload()</a>, <a class="el" href="_neon_convert_fp16_to_fp32_workload_8cpp_source.html#l00017">NeonConvertFp16ToFp32Workload::NeonConvertFp16ToFp32Workload()</a>, and <a class="el" href="_neon_convert_fp32_to_fp16_workload_8cpp_source.html#l00018">NeonConvertFp32ToFp16Workload::NeonConvertFp32ToFp16Workload()</a>.</p>
<div class="fragment"><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160;{</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> numInputs = <span class="keyword">static_cast&lt;</span><span class="keywordtype">unsigned</span> <span class="keywordtype">int</span><span class="keyword">&gt;</span>(descriptor.m_Inputs.size());</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; tensorHandlePairs.reserve(numInputs);</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160;</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i &lt; numInputs; ++i)</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160; {</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160; SrcTensorHandleType* <span class="keyword">const</span> srcTensorHandle =</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160; boost::polymorphic_downcast&lt;SrcTensorHandleType*&gt;(descriptor.m_Inputs[i]);</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160; DstTensorHandleType* <span class="keyword">const</span> dstTensorHandle =</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160; boost::polymorphic_downcast&lt;DstTensorHandleType*&gt;(descriptor.m_Outputs[i]);</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160;</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160; tensorHandlePairs.emplace_back(srcTensorHandle, dstTensorHandle);</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160; }</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160;}</div></div><!-- fragment -->
</div>
</div>
<a id="ae8ed5c640761fb6744aec0ee16388417"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae8ed5c640761fb6744aec0ee16388417">&#9670;&nbsp;</a></span>GenerateRangeK()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">std::vector&lt;unsigned int&gt; armnn::GenerateRangeK </td>
<td>(</td>
<td class="paramtype">unsigned int&#160;</td>
<td class="paramname"><em>k</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="backends_2reference_2workloads_2_detection_post_process_8cpp_source.html#l00018">18</a> of file <a class="el" href="backends_2reference_2workloads_2_detection_post_process_8cpp_source.html">DetectionPostProcess.cpp</a>.</p>
<p class="reference">Referenced by <a class="el" href="backends_2reference_2workloads_2_detection_post_process_8cpp_source.html#l00141">DetectionPostProcess()</a>, and <a class="el" href="backends_2reference_2workloads_2_detection_post_process_8cpp_source.html#l00050">NonMaxSuppression()</a>.</p>
<div class="fragment"><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;{</div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160; std::vector&lt;unsigned int&gt; range(k);</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160; std::iota(range.begin(), range.end(), 0);</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160; <span class="keywordflow">return</span> range;</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;}</div></div><!-- fragment -->
</div>
</div>
<a id="aa093207ea7c4e7a9c9abe40d2f57995b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa093207ea7c4e7a9c9abe40d2f57995b">&#9670;&nbsp;</a></span>GetActivationFunctionAsCString()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">constexpr char const* armnn::GetActivationFunctionAsCString </td>
<td>(</td>
<td class="paramtype"><a class="el" href="namespacearmnn.html#a56297e0f7b215eea46c818cb7528d9ea">ActivationFunction</a>&#160;</td>
<td class="paramname"><em>activation</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_types_utils_8hpp_source.html#l00027">27</a> of file <a class="el" href="_types_utils_8hpp_source.html">TypesUtils.hpp</a>.</p>
<p class="reference">References <a class="el" href="namespacearmnn.html#a56297e0f7b215eea46c818cb7528d9eaa1e34af023adeb7d5f484f8eb4b9826b6">Abs</a>, <a class="el" href="namespacearmnn.html#a56297e0f7b215eea46c818cb7528d9eaabc5a0f0d6e7cf7fca73299dcd46c0f0d">BoundedReLu</a>, <a class="el" href="namespacearmnn.html#a56297e0f7b215eea46c818cb7528d9eaacb7667f5ec2f6e8a5943b781ba6c2735">LeakyReLu</a>, <a class="el" href="namespacearmnn.html#a56297e0f7b215eea46c818cb7528d9eaa32a843da6ea40ab3b17a3421ccdf671b">Linear</a>, <a class="el" href="namespacearmnn.html#a56297e0f7b215eea46c818cb7528d9eaa3d90c0a5ab3fcf8e6f6608cb3d3a1559">ReLu</a>, <a class="el" href="namespacearmnn.html#a56297e0f7b215eea46c818cb7528d9eaa21eebb164e4b8b9bcf64fdb4d8d5dff4">Sigmoid</a>, <a class="el" href="namespacearmnn.html#a56297e0f7b215eea46c818cb7528d9eaa6bba7052636d1740303b1b2ef3b53fef">SoftReLu</a>, <a class="el" href="namespacearmnn.html#a56297e0f7b215eea46c818cb7528d9eaaae77f3ad25595e35b327334d89410054">Sqrt</a>, <a class="el" href="namespacearmnn.html#a56297e0f7b215eea46c818cb7528d9eaaceb46ca115d05c51aa5a16a8867c3304">Square</a>, and <a class="el" href="namespacearmnn.html#a56297e0f7b215eea46c818cb7528d9eaa23b68da1de2b77d74da9da2635722a3e">TanH</a>.</p>
<p class="reference">Referenced by <a class="el" href="_serialize_layer_parameters_8cpp_source.html#l00042">StringifyLayerParameters&lt; ActivationDescriptor &gt;::Serialize()</a>.</p>
<div class="fragment"><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;{</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; <span class="keywordflow">switch</span> (activation)</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; {</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; <span class="keywordflow">case</span> ActivationFunction::Sigmoid: <span class="keywordflow">return</span> <span class="stringliteral">&quot;Sigmoid&quot;</span>;</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; <span class="keywordflow">case</span> ActivationFunction::TanH: <span class="keywordflow">return</span> <span class="stringliteral">&quot;TanH&quot;</span>;</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; <span class="keywordflow">case</span> ActivationFunction::Linear: <span class="keywordflow">return</span> <span class="stringliteral">&quot;Linear&quot;</span>;</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; <span class="keywordflow">case</span> ActivationFunction::ReLu: <span class="keywordflow">return</span> <span class="stringliteral">&quot;ReLu&quot;</span>;</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; <span class="keywordflow">case</span> ActivationFunction::BoundedReLu: <span class="keywordflow">return</span> <span class="stringliteral">&quot;BoundedReLu&quot;</span>;</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; <span class="keywordflow">case</span> ActivationFunction::SoftReLu: <span class="keywordflow">return</span> <span class="stringliteral">&quot;SoftReLu&quot;</span>;</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; <span class="keywordflow">case</span> ActivationFunction::LeakyReLu: <span class="keywordflow">return</span> <span class="stringliteral">&quot;LeakyReLu&quot;</span>;</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; <span class="keywordflow">case</span> ActivationFunction::Abs: <span class="keywordflow">return</span> <span class="stringliteral">&quot;Abs&quot;</span>;</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; <span class="keywordflow">case</span> ActivationFunction::Sqrt: <span class="keywordflow">return</span> <span class="stringliteral">&quot;Sqrt&quot;</span>;</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; <span class="keywordflow">case</span> ActivationFunction::Square: <span class="keywordflow">return</span> <span class="stringliteral">&quot;Square&quot;</span>;</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; <span class="keywordflow">default</span>: <span class="keywordflow">return</span> <span class="stringliteral">&quot;Unknown&quot;</span>;</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; }</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;}</div></div><!-- fragment -->
</div>
</div>
<a id="a5cda3502382f06a64c3cbeb1829bd850"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a5cda3502382f06a64c3cbeb1829bd850">&#9670;&nbsp;</a></span>GetArgMinMaxFunctionAsCString()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">constexpr char const* armnn::GetArgMinMaxFunctionAsCString </td>
<td>(</td>
<td class="paramtype"><a class="el" href="namespacearmnn.html#ae7e8cbf71db6a490789ca6dcaa8deeae">ArgMinMaxFunction</a>&#160;</td>
<td class="paramname"><em>function</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_types_utils_8hpp_source.html#l00045">45</a> of file <a class="el" href="_types_utils_8hpp_source.html">TypesUtils.hpp</a>.</p>
<p class="reference">References <a class="el" href="namespacearmnn.html#ae7e8cbf71db6a490789ca6dcaa8deeaea6a061313d22e51e0f25b7cd4dc065233">Max</a>, and <a class="el" href="namespacearmnn.html#ae7e8cbf71db6a490789ca6dcaa8deeaea78d811e98514cd165dda532286610fd2">Min</a>.</p>
<div class="fragment"><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;{</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; <span class="keywordflow">switch</span> (<span class="keyword">function</span>)</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; {</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; <span class="keywordflow">case</span> ArgMinMaxFunction::Max: <span class="keywordflow">return</span> <span class="stringliteral">&quot;Max&quot;</span>;</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; <span class="keywordflow">case</span> ArgMinMaxFunction::Min: <span class="keywordflow">return</span> <span class="stringliteral">&quot;Min&quot;</span>;</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <span class="keywordflow">default</span>: <span class="keywordflow">return</span> <span class="stringliteral">&quot;Unknown&quot;</span>;</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; }</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160;}</div></div><!-- fragment -->
</div>
</div>
<a id="a872803f5667392efc3c8e5607bd453ad"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a872803f5667392efc3c8e5607bd453ad">&#9670;&nbsp;</a></span>GetBiasDataType()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a> GetBiasDataType </td>
<td>(</td>
<td class="paramtype"><a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a>&#160;</td>
<td class="paramname"><em>inputDataType</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_workload_data_8cpp_source.html#l00025">25</a> of file <a class="el" href="_workload_data_8cpp_source.html">WorkloadData.cpp</a>.</p>
<p class="reference">References <a class="el" href="_deprecated_8hpp_source.html#l00033">ARMNN_NO_DEPRECATE_WARN_BEGIN</a>, <a class="el" href="_deprecated_8hpp_source.html#l00034">ARMNN_NO_DEPRECATE_WARN_END</a>, <a class="el" href="_exceptions_8hpp_source.html#l00169">CHECK_LOCATION</a>, <a class="el" href="_tensor_8hpp_source.html#l00095">TensorInfo::GetDataType()</a>, <a class="el" href="_types_utils_8hpp_source.html#l00165">GetDataTypeName()</a>, <a class="el" href="_tensor_8hpp_source.html#l00092">TensorInfo::GetNumDimensions()</a>, <a class="el" href="_tensor_8hpp_source.html#l00093">TensorInfo::GetNumElements()</a>, <a class="el" href="_tensor_8cpp_source.html#l00280">TensorInfo::GetQuantizationDim()</a>, <a class="el" href="_tensor_8cpp_source.html#l00264">TensorInfo::GetQuantizationOffset()</a>, <a class="el" href="_tensor_8cpp_source.html#l00247">TensorInfo::GetQuantizationScale()</a>, <a class="el" href="_tensor_8cpp_source.html#l00237">TensorInfo::GetQuantizationScales()</a>, <a class="el" href="_tensor_8hpp_source.html#l00088">TensorInfo::GetShape()</a>, <a class="el" href="_optional_8hpp_source.html#l00053">OptionalBase::has_value()</a>, <a class="el" href="_tensor_8hpp_source.html#l00098">TensorInfo::HasMultipleQuantizationScales()</a>, <a class="el" href="_tensor_8cpp_source.html#l00232">TensorInfo::HasPerAxisQuantization()</a>, <a class="el" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>, <a class="el" href="_tensor_8cpp_source.html#l00290">TensorInfo::IsQuantized()</a>, <a class="el" href="_types_utils_8hpp_source.html#l00237">IsQuantized8BitType()</a>, <a class="el" href="_tensor_8cpp_source.html#l00218">TensorInfo::IsTypeSpaceMatch()</a>, <a class="el" href="include_2armnn_2backends_2_workload_info_8hpp_source.html#l00018">WorkloadInfo::m_InputTensorInfos</a>, <a class="el" href="include_2armnn_2backends_2_workload_info_8hpp_source.html#l00019">WorkloadInfo::m_OutputTensorInfos</a>, <a class="el" href="_optional_8hpp_source.html#l00146">OptionalReferenceSwitch&lt; IsReference, T &gt;::value()</a>, and <a class="el" href="_optional_8hpp_source.html#l00146">OptionalReferenceSwitch&lt; std::is_reference&lt; T &gt;::value, T &gt;::value()</a>.</p>
<p class="reference">Referenced by <a class="el" href="_layer_release_constant_data_test_8cpp_source.html#l00075">BOOST_AUTO_TEST_CASE()</a>, <a class="el" href="_conv2d_test_impl_8cpp_source.html#l02669">CompareDepthwiseConvolution2dTestImpl()</a>, <a class="el" href="_workload_data_8cpp_source.html#l00958">FullyConnectedQueueDescriptor::Validate()</a>, <a class="el" href="_workload_data_8cpp_source.html#l01146">Convolution2dQueueDescriptor::Validate()</a>, <a class="el" href="_workload_data_8cpp_source.html#l01198">DepthwiseConvolution2dQueueDescriptor::Validate()</a>, and <a class="el" href="_workload_data_8cpp_source.html#l02633">TransposeConvolution2dQueueDescriptor::Validate()</a>.</p>
<div class="fragment"><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;{</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; <span class="keywordflow">switch</span> (inputDataType)</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; {</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; <span class="keywordflow">case</span> DataType::Float16:</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; <span class="keywordflow">return</span> DataType::Float16;</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; <span class="keywordflow">case</span> DataType::Float32:</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; <span class="keywordflow">return</span> DataType::Float32;</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; <span class="keywordflow">case</span> DataType::QAsymmS8:</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; <span class="keywordflow">return</span> DataType::Signed32;</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; <span class="keywordflow">case</span> DataType::QAsymmU8:</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; <span class="keywordflow">return</span> DataType::Signed32;</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; <span class="keywordflow">case</span> DataType::QSymmS8:</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; <span class="keywordflow">return</span> DataType::Signed32;</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; <span class="keywordflow">case</span> DataType::QSymmS16:</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; <span class="keywordflow">return</span> DataType::Signed32;</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; <span class="keywordflow">default</span>:</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; BOOST_ASSERT_MSG(<span class="keyword">false</span>, <span class="stringliteral">&quot;Invalid input data type&quot;</span>);</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; <span class="keywordflow">return</span> DataType::Float32;</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; }</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;}</div></div><!-- fragment -->
</div>
</div>
<a id="a83c4a275acf59f62b8387f389d0929d5"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a83c4a275acf59f62b8387f389d0929d5">&#9670;&nbsp;</a></span>GetBiasTypeFromWeightsType()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classarmnn_1_1_optional.html">armnn::Optional</a>&lt;<a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6">armnn::DataType</a>&gt; armnn::GetBiasTypeFromWeightsType </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classarmnn_1_1_optional.html">armnn::Optional</a>&lt; <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6">armnn::DataType</a> &gt;&#160;</td>
<td class="paramname"><em>weightsType</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_layer_support_rules_8hpp_source.html#l00014">14</a> of file <a class="el" href="_layer_support_rules_8hpp_source.html">LayerSupportRules.hpp</a>.</p>
<p class="reference">References <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a26e6ed77470c6f2f830ecf874e6c0d55">Float16</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">Float32</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a0a3f57c876f5a230244c38e1453a8a6e">QAsymmU8</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7">QSymmS16</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6accedffbc6e5308e33d3843e8bdc0dad7">Signed32</a>, and <a class="el" href="_optional_8hpp_source.html#l00146">OptionalReferenceSwitch&lt; std::is_reference&lt; T &gt;::value, T &gt;::value()</a>.</p>
<p class="reference">Referenced by <a class="el" href="_layer_support_rules_8hpp_source.html#l00128">BiasAndWeightsTypesCompatible::BiasAndWeightsTypesCompatible()</a>, <a class="el" href="_layer_support_rules_8hpp_source.html#l00119">BiasAndWeightsTypesMatch::BiasAndWeightsTypesMatch()</a>, <a class="el" href="_fully_connected_test_impl_8cpp_source.html#l00071">FullyConnectedTest()</a>, and <a class="el" href="_workload_factory_8cpp_source.html#l00045">IWorkloadFactory::IsLayerSupported()</a>.</p>
<div class="fragment"><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;{</div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160; <span class="keywordflow">if</span> (!weightsType)</div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160; {</div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160; <span class="keywordflow">return</span> weightsType;</div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160; }</div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160; <span class="keywordflow">switch</span>(weightsType.<a class="code" href="classarmnn_1_1_optional_reference_switch.html#a77c7d528ac063d870b8c8426ec81c1c3">value</a>())</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160; {</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a26e6ed77470c6f2f830ecf874e6c0d55">armnn::DataType::Float16</a>:</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">armnn::DataType::Float32</a>:</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; <span class="keywordflow">return</span> weightsType;</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a0a3f57c876f5a230244c38e1453a8a6e">armnn::DataType::QAsymmU8</a>:</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6accedffbc6e5308e33d3843e8bdc0dad7">armnn::DataType::Signed32</a>;</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7">armnn::DataType::QSymmS16</a>:</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6accedffbc6e5308e33d3843e8bdc0dad7">armnn::DataType::Signed32</a>;</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; <span class="keywordflow">default</span>:</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; BOOST_ASSERT_MSG(<span class="keyword">false</span>, <span class="stringliteral">&quot;GetBiasTypeFromWeightsType(): Unsupported data type.&quot;</span>);</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; }</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; <span class="keywordflow">return</span> <a class="code" href="structarmnn_1_1_empty_optional.html">armnn::EmptyOptional</a>();</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_ad8ed01ff3ff33333d8e19db4d2818bb6a0a3f57c876f5a230244c38e1453a8a6e"><div class="ttname"><a href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a0a3f57c876f5a230244c38e1453a8a6e">armnn::DataType::QAsymmU8</a></div></div>
<div class="ttc" id="namespacearmnn_html_ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204"><div class="ttname"><a href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">armnn::DataType::Float32</a></div></div>
<div class="ttc" id="namespacearmnn_html_ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7"><div class="ttname"><a href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7">armnn::DataType::QSymmS16</a></div></div>
<div class="ttc" id="structarmnn_1_1_empty_optional_html"><div class="ttname"><a href="structarmnn_1_1_empty_optional.html">armnn::EmptyOptional</a></div><div class="ttdef"><b>Definition:</b> <a href="_optional_8hpp_source.html#l00032">Optional.hpp:32</a></div></div>
<div class="ttc" id="namespacearmnn_html_ad8ed01ff3ff33333d8e19db4d2818bb6accedffbc6e5308e33d3843e8bdc0dad7"><div class="ttname"><a href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6accedffbc6e5308e33d3843e8bdc0dad7">armnn::DataType::Signed32</a></div></div>
<div class="ttc" id="namespacearmnn_html_ad8ed01ff3ff33333d8e19db4d2818bb6a26e6ed77470c6f2f830ecf874e6c0d55"><div class="ttname"><a href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a26e6ed77470c6f2f830ecf874e6c0d55">armnn::DataType::Float16</a></div></div>
<div class="ttc" id="classarmnn_1_1_optional_reference_switch_html_a77c7d528ac063d870b8c8426ec81c1c3"><div class="ttname"><a href="classarmnn_1_1_optional_reference_switch.html#a77c7d528ac063d870b8c8426ec81c1c3">armnn::OptionalReferenceSwitch&lt; std::is_reference&lt; T &gt;::value, T &gt;::value</a></div><div class="ttdeci">const T &amp; value() const</div><div class="ttdef"><b>Definition:</b> <a href="_optional_8hpp_source.html#l00146">Optional.hpp:146</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="aabb76a77e95921785f576bb29b495cd8"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aabb76a77e95921785f576bb29b495cd8">&#9670;&nbsp;</a></span>GetComparisonOperationAsCString()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">constexpr char const* armnn::GetComparisonOperationAsCString </td>
<td>(</td>
<td class="paramtype"><a class="el" href="namespacearmnn.html#a2d299363c9fc33334c571fa29ca4f58c">ComparisonOperation</a>&#160;</td>
<td class="paramname"><em>operation</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_types_utils_8hpp_source.html#l00055">55</a> of file <a class="el" href="_types_utils_8hpp_source.html">TypesUtils.hpp</a>.</p>
<p class="reference">References <a class="el" href="namespacearmnn.html#a2d299363c9fc33334c571fa29ca4f58caf5f286e73bda105e538310b3190f75c5">Equal</a>, <a class="el" href="namespacearmnn.html#a2d299363c9fc33334c571fa29ca4f58ca8768a6821cd735aea4f5b0df88c1fc6a">Greater</a>, <a class="el" href="namespacearmnn.html#a2d299363c9fc33334c571fa29ca4f58ca6f2f0aefb3d22da0f3839453add5f937">GreaterOrEqual</a>, <a class="el" href="namespacearmnn.html#a2d299363c9fc33334c571fa29ca4f58ca1cfdf0e8d0c87a228c1f40d9bee7888b">Less</a>, <a class="el" href="namespacearmnn.html#a2d299363c9fc33334c571fa29ca4f58caa4cbdbb6070a5abb35fc95ecf1e22c14">LessOrEqual</a>, and <a class="el" href="namespacearmnn.html#a2d299363c9fc33334c571fa29ca4f58ca19bb0af2c3c530538cb41aff7f235b96">NotEqual</a>.</p>
<p class="reference">Referenced by <a class="el" href="_ref_comparison_workload_8cpp_source.html#l00039">RefComparisonWorkload::Execute()</a>.</p>
<div class="fragment"><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160;{</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; <span class="keywordflow">switch</span> (operation)</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; {</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; <span class="keywordflow">case</span> ComparisonOperation::Equal: <span class="keywordflow">return</span> <span class="stringliteral">&quot;Equal&quot;</span>;</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; <span class="keywordflow">case</span> ComparisonOperation::Greater: <span class="keywordflow">return</span> <span class="stringliteral">&quot;Greater&quot;</span>;</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; <span class="keywordflow">case</span> ComparisonOperation::GreaterOrEqual: <span class="keywordflow">return</span> <span class="stringliteral">&quot;GreaterOrEqual&quot;</span>;</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; <span class="keywordflow">case</span> ComparisonOperation::Less: <span class="keywordflow">return</span> <span class="stringliteral">&quot;Less&quot;</span>;</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; <span class="keywordflow">case</span> ComparisonOperation::LessOrEqual: <span class="keywordflow">return</span> <span class="stringliteral">&quot;LessOrEqual&quot;</span>;</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; <span class="keywordflow">case</span> ComparisonOperation::NotEqual: <span class="keywordflow">return</span> <span class="stringliteral">&quot;NotEqual&quot;</span>;</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; <span class="keywordflow">default</span>: <span class="keywordflow">return</span> <span class="stringliteral">&quot;Unknown&quot;</span>;</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; }</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160;}</div></div><!-- fragment -->
</div>
</div>
<a id="a6bab17bfd45c2fa4592c431bc25ad10e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a6bab17bfd45c2fa4592c431bc25ad10e">&#9670;&nbsp;</a></span>GetComputeDeviceAsCString()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">constexpr char const* armnn::GetComputeDeviceAsCString </td>
<td>(</td>
<td class="paramtype"><a class="el" href="namespacearmnn.html#ae2f04a162585c0a5222a537efd5456ae">Compute</a>&#160;</td>
<td class="paramname"><em>compute</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Deprecated function that will be removed together with the Compute enum </p>
<p class="definition">Definition at line <a class="el" href="_backend_id_8hpp_source.html#l00034">34</a> of file <a class="el" href="_backend_id_8hpp_source.html">BackendId.hpp</a>.</p>
<p class="reference">References <a class="el" href="namespacearmnn.html#ae2f04a162585c0a5222a537efd5456aea39f8662ca778258e9c6a14f26fec5ec1">CpuAcc</a>, <a class="el" href="namespacearmnn.html#ae2f04a162585c0a5222a537efd5456aea83c2c4e9b658ccafbcbe6309c5d84c64">CpuRef</a>, and <a class="el" href="namespacearmnn.html#ae2f04a162585c0a5222a537efd5456aeafaa4524e3df19ada32643ce9a222362b">GpuAcc</a>.</p>
<p class="reference">Referenced by <a class="el" href="_backend_id_tests_8cpp_source.html#l00015">BOOST_AUTO_TEST_CASE()</a>, and <a class="el" href="_backend_id_8hpp_source.html#l00047">operator&lt;&lt;()</a>.</p>
<div class="fragment"><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;{</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; <span class="keywordflow">switch</span> (compute)</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; {</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacearmnn.html#ae2f04a162585c0a5222a537efd5456aea83c2c4e9b658ccafbcbe6309c5d84c64">armnn::Compute::CpuRef</a>: <span class="keywordflow">return</span> <span class="stringliteral">&quot;CpuRef&quot;</span>;</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacearmnn.html#ae2f04a162585c0a5222a537efd5456aea39f8662ca778258e9c6a14f26fec5ec1">armnn::Compute::CpuAcc</a>: <span class="keywordflow">return</span> <span class="stringliteral">&quot;CpuAcc&quot;</span>;</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacearmnn.html#ae2f04a162585c0a5222a537efd5456aeafaa4524e3df19ada32643ce9a222362b">armnn::Compute::GpuAcc</a>: <span class="keywordflow">return</span> <span class="stringliteral">&quot;GpuAcc&quot;</span>;</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; <span class="keywordflow">default</span>: <span class="keywordflow">return</span> <span class="stringliteral">&quot;Unknown&quot;</span>;</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; }</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_ae2f04a162585c0a5222a537efd5456aeafaa4524e3df19ada32643ce9a222362b"><div class="ttname"><a href="namespacearmnn.html#ae2f04a162585c0a5222a537efd5456aeafaa4524e3df19ada32643ce9a222362b">armnn::Compute::GpuAcc</a></div><div class="ttdoc">GPU Execution: OpenCL: ArmCompute. </div></div>
<div class="ttc" id="namespacearmnn_html_ae2f04a162585c0a5222a537efd5456aea83c2c4e9b658ccafbcbe6309c5d84c64"><div class="ttname"><a href="namespacearmnn.html#ae2f04a162585c0a5222a537efd5456aea83c2c4e9b658ccafbcbe6309c5d84c64">armnn::Compute::CpuRef</a></div><div class="ttdoc">CPU Execution: Reference C++ kernels. </div></div>
<div class="ttc" id="namespacearmnn_html_ae2f04a162585c0a5222a537efd5456aea39f8662ca778258e9c6a14f26fec5ec1"><div class="ttname"><a href="namespacearmnn.html#ae2f04a162585c0a5222a537efd5456aea39f8662ca778258e9c6a14f26fec5ec1">armnn::Compute::CpuAcc</a></div><div class="ttdoc">CPU Execution: NEON: ArmCompute. </div></div>
</div><!-- fragment -->
</div>
</div>
<a id="aeef70b7611ae71e97ab55c75ef72b210"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aeef70b7611ae71e97ab55c75ef72b210">&#9670;&nbsp;</a></span>GetDataLayoutName()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">constexpr const char* armnn::GetDataLayoutName </td>
<td>(</td>
<td class="paramtype"><a class="el" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0">DataLayout</a>&#160;</td>
<td class="paramname"><em>dataLayout</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_types_utils_8hpp_source.html#l00186">186</a> of file <a class="el" href="_types_utils_8hpp_source.html">TypesUtils.hpp</a>.</p>
<p class="reference">References <a class="el" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0a6b99f356fe3b30a2a850b5ea897c289f">NCHW</a>, and <a class="el" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0ad066db54b89b0912e7e7c6da51e2da51">NHWC</a>.</p>
<p class="reference">Referenced by <a class="el" href="_common_test_utils_8cpp_source.html#l00054">MakeTensorShape()</a>, <a class="el" href="_serialize_layer_parameters_8cpp_source.html#l00050">StringifyLayerParameters&lt; Convolution2dDescriptor &gt;::Serialize()</a>, <a class="el" href="_serialize_layer_parameters_8cpp_source.html#l00076">StringifyLayerParameters&lt; BatchNormalizationDescriptor &gt;::Serialize()</a>, <a class="el" href="_serialize_layer_parameters_8cpp_source.html#l00083">StringifyLayerParameters&lt; DepthwiseConvolution2dDescriptor &gt;::Serialize()</a>, <a class="el" href="_serialize_layer_parameters_8cpp_source.html#l00110">StringifyLayerParameters&lt; Pooling2dDescriptor &gt;::Serialize()</a>, <a class="el" href="_serialize_layer_parameters_8cpp_source.html#l00228">StringifyLayerParameters&lt; NormalizationDescriptor &gt;::Serialize()</a>, <a class="el" href="_serialize_layer_parameters_8cpp_source.html#l00240">StringifyLayerParameters&lt; L2NormalizationDescriptor &gt;::Serialize()</a>, <a class="el" href="_serialize_layer_parameters_8cpp_source.html#l00247">StringifyLayerParameters&lt; BatchToSpaceNdDescriptor &gt;::Serialize()</a>, <a class="el" href="_serialize_layer_parameters_8cpp_source.html#l00290">StringifyLayerParameters&lt; ResizeBilinearDescriptor &gt;::Serialize()</a>, <a class="el" href="_serialize_layer_parameters_8cpp_source.html#l00298">StringifyLayerParameters&lt; ResizeDescriptor &gt;::Serialize()</a>, <a class="el" href="_serialize_layer_parameters_8cpp_source.html#l00307">StringifyLayerParameters&lt; SpaceToBatchNdDescriptor &gt;::Serialize()</a>, <a class="el" href="_serialize_layer_parameters_8cpp_source.html#l00343">StringifyLayerParameters&lt; SpaceToDepthDescriptor &gt;::Serialize()</a>, <a class="el" href="_serialize_layer_parameters_8cpp_source.html#l00410">StringifyLayerParameters&lt; StridedSliceDescriptor &gt;::Serialize()</a>, and <a class="el" href="_serialize_layer_parameters_8cpp_source.html#l00473">StringifyLayerParameters&lt; TransposeConvolution2dDescriptor &gt;::Serialize()</a>.</p>
<div class="fragment"><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160;{</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160; <span class="keywordflow">switch</span> (dataLayout)</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160; {</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160; <span class="keywordflow">case</span> DataLayout::NCHW: <span class="keywordflow">return</span> <span class="stringliteral">&quot;NCHW&quot;</span>;</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160; <span class="keywordflow">case</span> DataLayout::NHWC: <span class="keywordflow">return</span> <span class="stringliteral">&quot;NHWC&quot;</span>;</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160; <span class="keywordflow">default</span>: <span class="keywordflow">return</span> <span class="stringliteral">&quot;Unknown&quot;</span>;</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160; }</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160;}</div></div><!-- fragment -->
</div>
</div>
<a id="a81b5ff8545adad19a1c9d4ca076d552c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a81b5ff8545adad19a1c9d4ca076d552c">&#9670;&nbsp;</a></span>GetDataTypeName()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">constexpr const char* armnn::GetDataTypeName </td>
<td>(</td>
<td class="paramtype"><a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a>&#160;</td>
<td class="paramname"><em>dataType</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_types_utils_8hpp_source.html#l00165">165</a> of file <a class="el" href="_types_utils_8hpp_source.html">TypesUtils.hpp</a>.</p>
<p class="reference">References <a class="el" href="_deprecated_8hpp_source.html#l00033">ARMNN_NO_DEPRECATE_WARN_BEGIN</a>, <a class="el" href="_deprecated_8hpp_source.html#l00034">ARMNN_NO_DEPRECATE_WARN_END</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a27226c864bac7454a8504f8edb15d95b">Boolean</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a26e6ed77470c6f2f830ecf874e6c0d55">Float16</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">Float32</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a9d02ea768c081d4bdb2b7cab0b3f510d">QAsymmS8</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a0a3f57c876f5a230244c38e1453a8a6e">QAsymmU8</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7">QSymmS16</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a9945327825b115e93a3b89f4302e76db">QSymmS8</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a34346ec9593088efe3a29c0dad92166d">QuantizedSymm8PerAxis</a>, and <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6accedffbc6e5308e33d3843e8bdc0dad7">Signed32</a>.</p>
<p class="reference">Referenced by <a class="el" href="_network_8cpp_source.html#l00133">AssignBackends()</a>, <a class="el" href="_utils_tests_8cpp_source.html#l00061">BOOST_AUTO_TEST_CASE()</a>, <a class="el" href="_quantizer_test_8cpp_source.html#l00347">BOOST_AUTO_TEST_CASE()</a>, <a class="el" href="_workload_data_8cpp_source.html#l00025">GetBiasDataType()</a>, <a class="el" href="_tf_lite_parser_8cpp_source.html#l02855">TfLiteParser::GetBuffer()</a>, <a class="el" href="_ref_permute_workload_8hpp_source.html#l00019">RefPermuteWorkload&lt; DataType &gt;::GetName()</a>, <a class="el" href="_ref_pad_workload_8hpp_source.html#l00021">RefPadWorkload&lt; DataType &gt;::GetName()</a>, <a class="el" href="_ref_debug_workload_8hpp_source.html#l00023">RefDebugWorkload&lt; DataType &gt;::GetName()</a>, <a class="el" href="_tensor_utils_8cpp_source.html#l00152">armnnUtils::GetPerAxisParams()</a>, and <a class="el" href="_types_utils_8hpp_source.html#l00292">VerifyTensorInfoDataType()</a>.</p>
<div class="fragment"><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160;{</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160; <span class="keywordflow">switch</span> (dataType)</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160; {</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160; <span class="keywordflow">case</span> DataType::Float16: <span class="keywordflow">return</span> <span class="stringliteral">&quot;Float16&quot;</span>;</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; <span class="keywordflow">case</span> DataType::Float32: <span class="keywordflow">return</span> <span class="stringliteral">&quot;Float32&quot;</span>;</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160; <span class="keywordflow">case</span> DataType::QAsymmU8: <span class="keywordflow">return</span> <span class="stringliteral">&quot;QAsymmU8&quot;</span>;</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; <span class="keywordflow">case</span> DataType::QAsymmS8: <span class="keywordflow">return</span> <span class="stringliteral">&quot;QAsymmS8&quot;</span>;</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160; <span class="keywordflow">case</span> DataType::QSymmS8: <span class="keywordflow">return</span> <span class="stringliteral">&quot;QSymmS8&quot;</span>;</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; <a class="code" href="_deprecated_8hpp.html#ab66a241a0ed3ee89c866e777b035d0ed">ARMNN_NO_DEPRECATE_WARN_BEGIN</a></div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; <span class="keywordflow">case</span> DataType::QuantizedSymm8PerAxis: <span class="keywordflow">return</span> <span class="stringliteral">&quot;QSymm8PerAxis&quot;</span>;</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; <a class="code" href="_deprecated_8hpp.html#ad762b11b48e5c1d1c1743f529485728a">ARMNN_NO_DEPRECATE_WARN_END</a></div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160; <span class="keywordflow">case</span> DataType::QSymmS16: <span class="keywordflow">return</span> <span class="stringliteral">&quot;QSymm16&quot;</span>;</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160; <span class="keywordflow">case</span> DataType::Signed32: <span class="keywordflow">return</span> <span class="stringliteral">&quot;Signed32&quot;</span>;</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160; <span class="keywordflow">case</span> DataType::Boolean: <span class="keywordflow">return</span> <span class="stringliteral">&quot;Boolean&quot;</span>;</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160;</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160; <span class="keywordflow">default</span>:</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;Unknown&quot;</span>;</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; }</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160;}</div><div class="ttc" id="_deprecated_8hpp_html_ab66a241a0ed3ee89c866e777b035d0ed"><div class="ttname"><a href="_deprecated_8hpp.html#ab66a241a0ed3ee89c866e777b035d0ed">ARMNN_NO_DEPRECATE_WARN_BEGIN</a></div><div class="ttdeci">#define ARMNN_NO_DEPRECATE_WARN_BEGIN</div><div class="ttdef"><b>Definition:</b> <a href="_deprecated_8hpp_source.html#l00033">Deprecated.hpp:33</a></div></div>
<div class="ttc" id="_deprecated_8hpp_html_ad762b11b48e5c1d1c1743f529485728a"><div class="ttname"><a href="_deprecated_8hpp.html#ad762b11b48e5c1d1c1743f529485728a">ARMNN_NO_DEPRECATE_WARN_END</a></div><div class="ttdeci">#define ARMNN_NO_DEPRECATE_WARN_END</div><div class="ttdef"><b>Definition:</b> <a href="_deprecated_8hpp_source.html#l00034">Deprecated.hpp:34</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="aa02b9e06fb20fa3c13da0427e6ee5ab2"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa02b9e06fb20fa3c13da0427e6ee5ab2">&#9670;&nbsp;</a></span>GetDataTypeSize()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">constexpr unsigned int armnn::GetDataTypeSize </td>
<td>(</td>
<td class="paramtype"><a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a>&#160;</td>
<td class="paramname"><em>dataType</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_types_utils_8hpp_source.html#l00113">113</a> of file <a class="el" href="_types_utils_8hpp_source.html">TypesUtils.hpp</a>.</p>
<p class="reference">References <a class="el" href="_deprecated_8hpp_source.html#l00033">ARMNN_NO_DEPRECATE_WARN_BEGIN</a>, <a class="el" href="_deprecated_8hpp_source.html#l00034">ARMNN_NO_DEPRECATE_WARN_END</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a27226c864bac7454a8504f8edb15d95b">Boolean</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a26e6ed77470c6f2f830ecf874e6c0d55">Float16</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">Float32</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a9d02ea768c081d4bdb2b7cab0b3f510d">QAsymmS8</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a0a3f57c876f5a230244c38e1453a8a6e">QAsymmU8</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7">QSymmS16</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a9945327825b115e93a3b89f4302e76db">QSymmS8</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a34346ec9593088efe3a29c0dad92166d">QuantizedSymm8PerAxis</a>, and <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6accedffbc6e5308e33d3843e8bdc0dad7">Signed32</a>.</p>
<p class="reference">Referenced by <a class="el" href="_utils_tests_8cpp_source.html#l00018">BOOST_AUTO_TEST_CASE()</a>, <a class="el" href="_tf_parser_8cpp_source.html#l00931">armnnTfParser::ConvertTfTensorDataType()</a>, <a class="el" href="_ref_strided_slice_workload_8cpp_source.html#l00020">RefStridedSliceWorkload::Execute()</a>, <a class="el" href="_ref_depth_to_space_workload_8cpp_source.html#l00014">RefDepthToSpaceWorkload::Execute()</a>, <a class="el" href="_ref_slice_workload_8cpp_source.html#l00016">RefSliceWorkload::Execute()</a>, <a class="el" href="_tensor_8cpp_source.html#l00213">TensorInfo::GetNumBytes()</a>, <a class="el" href="_cpu_tensor_handle_8cpp_source.html#l00014">GetUnpaddedTensorStrides()</a>, and <a class="el" href="_workload_utils_8cpp_source.html#l00013">PermuteTensor()</a>.</p>
<div class="fragment"><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160;{</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; <span class="keywordflow">switch</span> (dataType)</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; {</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; <span class="keywordflow">case</span> DataType::Float16: <span class="keywordflow">return</span> 2U;</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; <span class="keywordflow">case</span> DataType::Float32:</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; <span class="keywordflow">case</span> DataType::Signed32: <span class="keywordflow">return</span> 4U;</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; <span class="keywordflow">case</span> DataType::QAsymmU8: <span class="keywordflow">return</span> 1U;</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; <span class="keywordflow">case</span> DataType::QAsymmS8: <span class="keywordflow">return</span> 1U;</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; <span class="keywordflow">case</span> DataType::QSymmS8: <span class="keywordflow">return</span> 1U;</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; <a class="code" href="_deprecated_8hpp.html#ab66a241a0ed3ee89c866e777b035d0ed">ARMNN_NO_DEPRECATE_WARN_BEGIN</a></div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; <span class="keywordflow">case</span> DataType::QuantizedSymm8PerAxis: <span class="keywordflow">return</span> 1U;</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; <a class="code" href="_deprecated_8hpp.html#ad762b11b48e5c1d1c1743f529485728a">ARMNN_NO_DEPRECATE_WARN_END</a></div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; <span class="keywordflow">case</span> DataType::QSymmS16: <span class="keywordflow">return</span> 2U;</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; <span class="keywordflow">case</span> DataType::Boolean: <span class="keywordflow">return</span> 1U;</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; <span class="keywordflow">default</span>: <span class="keywordflow">return</span> 0U;</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; }</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160;}</div><div class="ttc" id="_deprecated_8hpp_html_ab66a241a0ed3ee89c866e777b035d0ed"><div class="ttname"><a href="_deprecated_8hpp.html#ab66a241a0ed3ee89c866e777b035d0ed">ARMNN_NO_DEPRECATE_WARN_BEGIN</a></div><div class="ttdeci">#define ARMNN_NO_DEPRECATE_WARN_BEGIN</div><div class="ttdef"><b>Definition:</b> <a href="_deprecated_8hpp_source.html#l00033">Deprecated.hpp:33</a></div></div>
<div class="ttc" id="_deprecated_8hpp_html_ad762b11b48e5c1d1c1743f529485728a"><div class="ttname"><a href="_deprecated_8hpp.html#ad762b11b48e5c1d1c1743f529485728a">ARMNN_NO_DEPRECATE_WARN_END</a></div><div class="ttdeci">#define ARMNN_NO_DEPRECATE_WARN_END</div><div class="ttdef"><b>Definition:</b> <a href="_deprecated_8hpp_source.html#l00034">Deprecated.hpp:34</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="ab03dcfb3b4019d8f58a67c41681951ae"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab03dcfb3b4019d8f58a67c41681951ae">&#9670;&nbsp;</a></span>GetEventPtr() <span class="overload">[1/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">const <a class="el" href="classarmnn_1_1_event.html">Event</a>* armnn::GetEventPtr </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_event.html">Event</a> *&#160;</td>
<td class="paramname"><em>ptr</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_profiling_8cpp_source.html#l00110">110</a> of file <a class="el" href="_profiling_8cpp_source.html">Profiling.cpp</a>.</p>
<p class="reference">Referenced by <a class="el" href="_profiling_8cpp_source.html#l00114">Profiler::AnalyzeEventSequenceAndWriteResults()</a>.</p>
<div class="fragment"><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160;{ <span class="keywordflow">return</span> ptr;}</div></div><!-- fragment -->
</div>
</div>
<a id="a4b1e2158af2aedd3f00d2121c45b0f93"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a4b1e2158af2aedd3f00d2121c45b0f93">&#9670;&nbsp;</a></span>GetEventPtr() <span class="overload">[2/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">const <a class="el" href="classarmnn_1_1_event.html">Event</a>* armnn::GetEventPtr </td>
<td>(</td>
<td class="paramtype">const std::unique_ptr&lt; <a class="el" href="classarmnn_1_1_event.html">Event</a> &gt; &amp;&#160;</td>
<td class="paramname"><em>ptr</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_profiling_8cpp_source.html#l00111">111</a> of file <a class="el" href="_profiling_8cpp_source.html">Profiling.cpp</a>.</p>
<div class="fragment"><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160;{<span class="keywordflow">return</span> ptr.get(); }</div></div><!-- fragment -->
</div>
</div>
<a id="a5974a183710829851dbd98a4a919cd50"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a5974a183710829851dbd98a4a919cd50">&#9670;&nbsp;</a></span>GetILayerSupportByBackendId()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">std::shared_ptr&lt; <a class="el" href="classarmnn_1_1_i_layer_support.html">ILayerSupport</a> &gt; GetILayerSupportByBackendId </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_backend_id.html">armnn::BackendId</a> &amp;&#160;</td>
<td class="paramname"><em>backend</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Convenience function to retrieve the <a class="el" href="classarmnn_1_1_i_layer_support.html">ILayerSupport</a> for a backend. </p>
<p class="definition">Definition at line <a class="el" href="_backend_helper_8cpp_source.html#l00014">14</a> of file <a class="el" href="_backend_helper_8cpp_source.html">BackendHelper.cpp</a>.</p>
<p class="reference">References <a class="el" href="_backend_registry_8cpp_source.html#l00013">BackendRegistryInstance()</a>, <a class="el" href="_backend_registry_8cpp_source.html#l00048">BackendRegistry::GetFactory()</a>, and <a class="el" href="_backend_registry_8cpp_source.html#l00043">BackendRegistry::IsBackendRegistered()</a>.</p>
<div class="fragment"><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;{</div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160; BackendRegistry&amp; backendRegistry = <a class="code" href="namespacearmnn.html#ac2807505b850738bc8a1991ce669dd47">armnn::BackendRegistryInstance</a>();</div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;</div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160; <span class="keywordflow">if</span> (!backendRegistry.IsBackendRegistered(backend))</div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160; {</div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160; <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160; }</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160; <span class="keyword">auto</span> factoryFunc = backendRegistry.GetFactory(backend);</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160; <span class="keyword">auto</span> backendObject = factoryFunc();</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; <span class="keywordflow">return</span> backendObject-&gt;GetLayerSupport();</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_ac2807505b850738bc8a1991ce669dd47"><div class="ttname"><a href="namespacearmnn.html#ac2807505b850738bc8a1991ce669dd47">armnn::BackendRegistryInstance</a></div><div class="ttdeci">BackendRegistry &amp; BackendRegistryInstance()</div><div class="ttdef"><b>Definition:</b> <a href="_backend_registry_8cpp_source.html#l00013">BackendRegistry.cpp:13</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="af487cc4568faf50403f12ed1c7a70a2d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af487cc4568faf50403f12ed1c7a70a2d">&#9670;&nbsp;</a></span>GetInputTensorData() <span class="overload">[1/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">const float* armnn::GetInputTensorData </td>
<td>(</td>
<td class="paramtype">unsigned int&#160;</td>
<td class="paramname"><em>idx</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="structarmnn_1_1_addition_queue_descriptor.html">AdditionQueueDescriptor</a> &amp;&#160;</td>
<td class="paramname"><em>data</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_sample_dynamic_addition_workload_8cpp_source.html#l00022">22</a> of file <a class="el" href="_sample_dynamic_addition_workload_8cpp_source.html">SampleDynamicAdditionWorkload.cpp</a>.</p>
<p class="reference">References <a class="el" href="_workload_data_8hpp_source.html#l00030">QueueDescriptor::m_Inputs</a>, and <a class="el" href="classarmnn_1_1_i_tensor_handle.html#a9afbc055a017adf1bc38ee137bca6e90">ITensorHandle::Map()</a>.</p>
<div class="fragment"><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;{</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160; <span class="keyword">const</span> ITensorHandle* tensorHandle = data.m_Inputs[idx];</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; <span class="keywordflow">return</span> <span class="keyword">reinterpret_cast&lt;</span><span class="keyword">const </span><span class="keywordtype">float</span>*<span class="keyword">&gt;</span>(tensorHandle-&gt;Map());</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;}</div></div><!-- fragment -->
</div>
</div>
<a id="a2187ea15b1ae8c323a0cc5c211fc43d9"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a2187ea15b1ae8c323a0cc5c211fc43d9">&#9670;&nbsp;</a></span>GetInputTensorData() <span class="overload">[2/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">const <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a>* armnn::GetInputTensorData </td>
<td>(</td>
<td class="paramtype">unsigned int&#160;</td>
<td class="paramname"><em>idx</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const PayloadType &amp;&#160;</td>
<td class="paramname"><em>data</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_ref_workload_utils_8hpp_source.html#l00034">34</a> of file <a class="el" href="_ref_workload_utils_8hpp_source.html">RefWorkloadUtils.hpp</a>.</p>
<p class="reference">References <a class="el" href="classarmnn_1_1_i_tensor_handle.html#a9afbc055a017adf1bc38ee137bca6e90">ITensorHandle::Map()</a>.</p>
<p class="reference">Referenced by <a class="el" href="_sample_dynamic_addition_workload_8cpp_source.html#l00039">SampleDynamicAdditionWorkload::Execute()</a>.</p>
<div class="fragment"><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;{</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; <span class="keyword">const</span> ITensorHandle* tensorHandle = data.m_Inputs[idx];</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; <span class="keywordflow">return</span> <span class="keyword">reinterpret_cast&lt;</span><span class="keyword">const </span><a class="code" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a>*<span class="keyword">&gt;</span>(tensorHandle-&gt;Map());</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_ad8ed01ff3ff33333d8e19db4d2818bb6"><div class="ttname"><a href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6">armnn::DataType</a></div><div class="ttdeci">DataType</div><div class="ttdef"><b>Definition:</b> <a href="_types_8hpp_source.html#l00032">Types.hpp:32</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a691846a9eee59b0cd5b22fb5f674e007"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a691846a9eee59b0cd5b22fb5f674e007">&#9670;&nbsp;</a></span>GetInputTensorDataFloat()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">const float* armnn::GetInputTensorDataFloat </td>
<td>(</td>
<td class="paramtype">unsigned int&#160;</td>
<td class="paramname"><em>idx</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const PayloadType &amp;&#160;</td>
<td class="paramname"><em>data</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_ref_workload_utils_8hpp_source.html#l00048">48</a> of file <a class="el" href="_ref_workload_utils_8hpp_source.html">RefWorkloadUtils.hpp</a>.</p>
<p class="reference">Referenced by <a class="el" href="_ref_convert_fp32_to_fp16_workload_8cpp_source.html#l00017">RefConvertFp32ToFp16Workload::Execute()</a>, and <a class="el" href="_ref_fake_quantization_float32_workload_8cpp_source.html#l00029">RefFakeQuantizationFloat32Workload::Execute()</a>.</p>
<div class="fragment"><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;{</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; <span class="keywordflow">return</span> GetInputTensorData&lt;float&gt;(idx, data);</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160;}</div></div><!-- fragment -->
</div>
</div>
<a id="a084b0ce273bef78aa314bd97fc574b84"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a084b0ce273bef78aa314bd97fc574b84">&#9670;&nbsp;</a></span>GetInputTensorDataHalf()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">const <a class="el" href="namespacearmnn.html#a0f38fa92b2468d5378258a2b074c1a31">Half</a>* armnn::GetInputTensorDataHalf </td>
<td>(</td>
<td class="paramtype">unsigned int&#160;</td>
<td class="paramname"><em>idx</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const PayloadType &amp;&#160;</td>
<td class="paramname"><em>data</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_ref_workload_utils_8hpp_source.html#l00060">60</a> of file <a class="el" href="_ref_workload_utils_8hpp_source.html">RefWorkloadUtils.hpp</a>.</p>
<p class="reference">Referenced by <a class="el" href="_ref_convert_fp16_to_fp32_workload_8cpp_source.html#l00016">RefConvertFp16ToFp32Workload::Execute()</a>.</p>
<div class="fragment"><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160;{</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; <span class="keywordflow">return</span> GetInputTensorData&lt;Half&gt;(idx, data);</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160;}</div></div><!-- fragment -->
</div>
</div>
<a id="ae52296dff1f4879854f320d59f92574e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae52296dff1f4879854f320d59f92574e">&#9670;&nbsp;</a></span>GetInputTensorInfo()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> armnn::GetInputTensorInfo </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_network.html">Network</a> *&#160;</td>
<td class="paramname"><em>network</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_quantizer_test_8cpp_source.html#l00337">337</a> of file <a class="el" href="_quantizer_test_8cpp_source.html">QuantizerTest.cpp</a>.</p>
<p class="reference">References <a class="el" href="_network_8hpp_source.html#l00033">Network::GetGraph()</a>, and <a class="el" href="_graph_8hpp_source.html#l00181">Graph::GetInputLayers()</a>.</p>
<p class="reference">Referenced by <a class="el" href="_quantizer_test_8cpp_source.html#l00347">BOOST_AUTO_TEST_CASE()</a>, <a class="el" href="_activation_test_impl_8cpp_source.html#l00184">BoundedReLuUint8UpperAndLowerBoundTest()</a>, and <a class="el" href="_loaded_network_8hpp_source.html#l00037">LoadedNetwork::~LoadedNetwork()</a>.</p>
<div class="fragment"><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>&#160;{</div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span>&amp;&amp; inputLayer : network-&gt;GetGraph().GetInputLayers())</div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>&#160; {</div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span>&#160; BOOST_ASSERT_MSG(inputLayer-&gt;GetNumOutputSlots() == 1, <span class="stringliteral">&quot;Input layer should have exactly 1 output slot&quot;</span>);</div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span>&#160; <span class="keywordflow">return</span> inputLayer-&gt;GetOutputSlot(0).GetTensorInfo();</div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span>&#160; }</div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span>&#160; <span class="keywordflow">throw</span> InvalidArgumentException(<span class="stringliteral">&quot;Network has no input layers&quot;</span>);</div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span>&#160;}</div></div><!-- fragment -->
</div>
</div>
<a id="a9da573d7a1fc03726fd41f2130cbcf92"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a9da573d7a1fc03726fd41f2130cbcf92">&#9670;&nbsp;</a></span>GetLayerTypeAsCString()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">const char * GetLayerTypeAsCString </td>
<td>(</td>
<td class="paramtype"><a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a>&#160;</td>
<td class="paramname"><em>type</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_internal_types_8cpp_source.html#l00013">13</a> of file <a class="el" href="_internal_types_8cpp_source.html">InternalTypes.cpp</a>.</p>
<p class="reference">References <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4aa9a62e70841c4d06dd16306a85700d36">Activation</a>, <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4a7c5531bbefed0945814f874baf9e0e0f">Addition</a>, <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4a2139684546b147c106b329f41547640c">ArgMinMax</a>, <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4ae4743c3ec15d1d84169b17264634692e">BatchNormalization</a>, <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4a6ee06c6045d0c5b6565a247955ef0fc2">BatchToSpaceNd</a>, <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4af6c0e3a1c3cfabd32ae8d3ae741fcf0a">Comparison</a>, <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4ae20f0f2826a6549809f050b86274567f">Concat</a>, <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4acb17869fe51048b5a5c4c6106551a255">Constant</a>, <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4a912a4b4d73726c282e3f79aa2c390d6c">ConvertFp16ToFp32</a>, <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4addf4f83b056acd5549949fc0350e9aad">ConvertFp32ToFp16</a>, <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4adb033d2f81b68f9a17e8f62de69fed4a">Convolution2d</a>, <a class="el" href="namespacearmnn.html#a93a3ba385cad27c4774e5fe64c025d3daa603905470e2a5b8c13e96b579ef0dba">Debug</a>, <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4a731729ad1b2c0eb9399b62c770b3482d">DepthToSpace</a>, <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4af97adbfc88b7012a0243215b1076e7e7">DepthwiseConvolution2d</a>, <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4a9bc35e069257a508e14ed82965a8661d">Dequantize</a>, <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4a1db19222ac424bd7162142ddf929fd2a">DetectionPostProcess</a>, <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4a3025cdaab2deb0bb2cd642449e570833">Division</a>, <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4abcd30d7ea97ad20c2cddc0f47e6b70c7">ElementwiseUnary</a>, <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4a3489c7b05e180496cb2ce8ac73887f48">FakeQuantization</a>, <a class="el" href="namespacearmnn.html#adf2e5515c4c36a3e7e46bb8b83c6754eaf3f6d0343d56ce88ce7958170ed05cb3">Floor</a>, <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4acab78faff25393e9defd1911cb58133e">FullyConnected</a>, <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4aad22c799930d644e8468fe44c0312d53">Gather</a>, <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4a324118a6721dd6b8a9b9f4e327df2bf5">Input</a>, <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4a21baa4498161d195f5bb2e3627344ba4">InstanceNormalization</a>, <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4a1189467870bc421ae59277e750263eb2">L2Normalization</a>, <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4ac21dbda57d88c21ec9857f5d1522c488">LogSoftmax</a>, <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4a06b091bc9aea697ba473c71f0bb55925">Lstm</a>, <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4a8321e79c278ec510f63675c040594892">Maximum</a>, <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4a3d6c9ac08ada31c184094bbc67afe00d">Mean</a>, <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4a4dd48794eb3305a0f5aece88b111a97b">MemCopy</a>, <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4a115bfc5d633eae55c67f9588acdd2bf9">MemImport</a>, <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4a68be4837f6c739877233e527a996dd00">Merge</a>, <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4aa1d0ec6d56f8833a078b5a7ac4caf2d4">Minimum</a>, <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4a27d1a1f7b7c2180e5b20ce9e3d00e2dd">Multiplication</a>, <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4aac61f2e17250a818dee4d12b112aa88f">Normalization</a>, <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4a29c2c02a361c9d7028472e5d92cd4a54">Output</a>, <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4ade43468adaf6acb2c38ebc0c1176f82f">Pad</a>, <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4afa662c6eb71caef475b2b981ce8eccd7">Permute</a>, <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4ad662867a41bfb30b9f75dda2b5849001">Pooling2d</a>, <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4a1ba143ebe524d46181a4b53470693278">PreCompiled</a>, <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4a0c5967f09e0669c840ebb1ed0da85e32">Prelu</a>, <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4aca39930e22f40d10155a57dba32240bb">Quantize</a>, <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4a890a37ff3bfe123414ba7e6f052b49f3">QuantizedLstm</a>, <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4aa7c59ccedc6a3bd90c17f3b990afefad">Reshape</a>, <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4a9d723d04c40bfd81835c0766a698cf63">Resize</a>, <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4ad140d37ad98c12ccd8e1c432f548bcdb">Slice</a>, <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4a31d953b9d49a6b4378f45097047976d0">Softmax</a>, <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4a337c392144dca0d18290c6b4711a2279">SpaceToBatchNd</a>, <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4a5e7ff12da912dc79e7e547281823fa4a">SpaceToDepth</a>, <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4a41cb9b797ebc6f6f6314e3ded935f4cf">Splitter</a>, <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4a2187e1021a911b3807cc1bea2eb1a9ca">Stack</a>, <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4a93bca63ecbb003649425dd0e4ba79a99">StandIn</a>, <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4aa31904f2b3479b5a00137fd985974b4d">StridedSlice</a>, <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4a6eb8b8b560161603402c0238b3a7d8b0">Subtraction</a>, <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4abbc155fb2b111bf61c4f5ff892915e6b">Switch</a>, and <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4a71b23d26c0f5d20416d6c77754f9806a">TransposeConvolution2d</a>.</p>
<p class="reference">Referenced by <a class="el" href="_network_8cpp_source.html#l00133">AssignBackends()</a>, <a class="el" href="_network_8cpp_source.html#l00098">CheckScaleSetOnQuantizedType()</a>, <a class="el" href="_layer_8cpp_source.html#l00370">Layer::InferOutputShapes()</a>, <a class="el" href="_graph_8cpp_source.html#l00493">Graph::InferTensorInfos()</a>, <a class="el" href="_graph_8cpp_source.html#l00061">Graph::Print()</a>, <a class="el" href="_layer_8cpp_source.html#l00397">Layer::SerializeLayerParameters()</a>, <a class="el" href="_graph_8cpp_source.html#l00081">Graph::SerializeToDot()</a>, <a class="el" href="_elementwise_base_layer_8cpp_source.html#l00051">ElementwiseBaseLayer::ValidateTensorShapesFromInputs()</a>, and <a class="el" href="_layer_8cpp_source.html#l00337">Layer::VerifyLayerConnections()</a>.</p>
<div class="fragment"><div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;{</div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160; <span class="keywordflow">switch</span> (type)</div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160; {</div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacearmnn.html#a7636fbbc4f8ea2d0cf9f3ac2d12a4c62">LayerType::Activation</a>: <span class="keywordflow">return</span> <span class="stringliteral">&quot;Activation&quot;</span>;</div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160; <span class="keywordflow">case</span> LayerType::Addition: <span class="keywordflow">return</span> <span class="stringliteral">&quot;Addition&quot;</span>;</div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacearmnn.html#a374120de442fe42c26536bb4f1e2a5a1">LayerType::ArgMinMax</a>: <span class="keywordflow">return</span> <span class="stringliteral">&quot;ArgMinMax&quot;</span>;</div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160; <span class="keywordflow">case</span> LayerType::BatchNormalization: <span class="keywordflow">return</span> <span class="stringliteral">&quot;BatchNormalization&quot;</span>;</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacearmnn.html#a8746512fab5ec10c2c57800c66311ba7">LayerType::BatchToSpaceNd</a>: <span class="keywordflow">return</span> <span class="stringliteral">&quot;BatchToSpaceNd&quot;</span>;</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160; <span class="keywordflow">case</span> LayerType::Comparison: <span class="keywordflow">return</span> <span class="stringliteral">&quot;Comparison&quot;</span>;</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160; <span class="keywordflow">case</span> LayerType::Concat: <span class="keywordflow">return</span> <span class="stringliteral">&quot;Concat&quot;</span>;</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160; <span class="keywordflow">case</span> LayerType::Constant: <span class="keywordflow">return</span> <span class="stringliteral">&quot;Constant&quot;</span>;</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; <span class="keywordflow">case</span> LayerType::ConvertFp16ToFp32: <span class="keywordflow">return</span> <span class="stringliteral">&quot;ConvertFp16ToFp32&quot;</span>;</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; <span class="keywordflow">case</span> LayerType::ConvertFp32ToFp16: <span class="keywordflow">return</span> <span class="stringliteral">&quot;ConvertFp32ToFp16&quot;</span>;</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; <span class="keywordflow">case</span> LayerType::Convolution2d: <span class="keywordflow">return</span> <span class="stringliteral">&quot;Convolution2d&quot;</span>;</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacearmnn.html#a5aae369ef847a00062925cea8e9be9c4">LayerType::Debug</a>: <span class="keywordflow">return</span> <span class="stringliteral">&quot;Debug&quot;</span>;</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacearmnn.html#ab023d9a7687e35c0f108458a094c1f56">LayerType::DepthToSpace</a>: <span class="keywordflow">return</span> <span class="stringliteral">&quot;DepthToSpace&quot;</span>;</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; <span class="keywordflow">case</span> LayerType::DepthwiseConvolution2d: <span class="keywordflow">return</span> <span class="stringliteral">&quot;DepthwiseConvolution2d&quot;</span>;</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacearmnn.html#a855293b1be0581fb61ef6a1c5b027d0f">LayerType::Dequantize</a>: <span class="keywordflow">return</span> <span class="stringliteral">&quot;Dequantize&quot;</span>;</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacearmnn.html#ae76ce23fa9fc18e56448d52b37dd3f32">LayerType::DetectionPostProcess</a>: <span class="keywordflow">return</span> <span class="stringliteral">&quot;DetectionPostProcess&quot;</span>;</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; <span class="keywordflow">case</span> LayerType::Division: <span class="keywordflow">return</span> <span class="stringliteral">&quot;Division&quot;</span>;</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; <span class="keywordflow">case</span> LayerType::ElementwiseUnary: <span class="keywordflow">return</span> <span class="stringliteral">&quot;ElementwiseUnary&quot;</span>;</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacearmnn.html#ab3c0b7e1a78b1b98c24934221f36a7c3">LayerType::FakeQuantization</a>: <span class="keywordflow">return</span> <span class="stringliteral">&quot;FakeQuantization&quot;</span>;</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; <span class="keywordflow">case</span> LayerType::Floor: <span class="keywordflow">return</span> <span class="stringliteral">&quot;Floor&quot;</span>;</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacearmnn.html#ad34d1d5b1ca8f52dc296ecf52ba20c8a">LayerType::FullyConnected</a>: <span class="keywordflow">return</span> <span class="stringliteral">&quot;FullyConnected&quot;</span>;</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacearmnn.html#a66004b2326f8ccb1faa71d5efa186633">LayerType::Gather</a>: <span class="keywordflow">return</span> <span class="stringliteral">&quot;Gather&quot;</span>;</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; <span class="keywordflow">case</span> LayerType::Input: <span class="keywordflow">return</span> <span class="stringliteral">&quot;Input&quot;</span>;</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; <span class="keywordflow">case</span> LayerType::InstanceNormalization: <span class="keywordflow">return</span> <span class="stringliteral">&quot;InstanceNormalization&quot;</span>;</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; <span class="keywordflow">case</span> LayerType::L2Normalization: <span class="keywordflow">return</span> <span class="stringliteral">&quot;L2Normalization&quot;</span>;</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacearmnn.html#ac52e04c0e349e25bcdaa72c27395ef8f">LayerType::LogSoftmax</a>: <span class="keywordflow">return</span> <span class="stringliteral">&quot;LogSoftmax&quot;</span>;</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; <span class="keywordflow">case</span> LayerType::Lstm: <span class="keywordflow">return</span> <span class="stringliteral">&quot;Lstm&quot;</span>;</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <span class="keywordflow">case</span> LayerType::Maximum: <span class="keywordflow">return</span> <span class="stringliteral">&quot;Maximum&quot;</span>;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacearmnn.html#a165ae372a7f67cad64ef3395d30122ce">LayerType::Mean</a>: <span class="keywordflow">return</span> <span class="stringliteral">&quot;Mean&quot;</span>;</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; <span class="keywordflow">case</span> LayerType::MemCopy: <span class="keywordflow">return</span> <span class="stringliteral">&quot;MemCopy&quot;</span>;</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; <span class="keywordflow">case</span> LayerType::MemImport: <span class="keywordflow">return</span> <span class="stringliteral">&quot;MemImport&quot;</span>;</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; <span class="keywordflow">case</span> LayerType::Merge: <span class="keywordflow">return</span> <span class="stringliteral">&quot;Merge&quot;</span>;</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; <span class="keywordflow">case</span> LayerType::Minimum: <span class="keywordflow">return</span> <span class="stringliteral">&quot;Minimum&quot;</span>;</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; <span class="keywordflow">case</span> LayerType::Multiplication: <span class="keywordflow">return</span> <span class="stringliteral">&quot;Multiplication&quot;</span>;</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <span class="keywordflow">case</span> LayerType::Normalization: <span class="keywordflow">return</span> <span class="stringliteral">&quot;Normalization&quot;</span>;</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; <span class="keywordflow">case</span> LayerType::Output: <span class="keywordflow">return</span> <span class="stringliteral">&quot;Output&quot;</span>;</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacearmnn.html#a28e115f5d28500324b53fae9e6c00b77">LayerType::Pad</a>: <span class="keywordflow">return</span> <span class="stringliteral">&quot;Pad&quot;</span>;</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacearmnn_utils.html#af3c74017185773dd61d8ca6662d65d43">LayerType::Permute</a>: <span class="keywordflow">return</span> <span class="stringliteral">&quot;Permute&quot;</span>;</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacearmnn.html#ae2e93e304cf516841c521e3eaee025cd">LayerType::Pooling2d</a>: <span class="keywordflow">return</span> <span class="stringliteral">&quot;Pooling2d&quot;</span>;</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; <span class="keywordflow">case</span> LayerType::PreCompiled: <span class="keywordflow">return</span> <span class="stringliteral">&quot;PreCompiled&quot;</span>;</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; <span class="keywordflow">case</span> LayerType::Prelu: <span class="keywordflow">return</span> <span class="stringliteral">&quot;Prelu&quot;</span>;</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacearmnn.html#ad773a034fb9983e15f3094b4c5c7c30c">LayerType::Quantize</a>: <span class="keywordflow">return</span> <span class="stringliteral">&quot;Quantize&quot;</span>;</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; <span class="keywordflow">case</span> LayerType::QuantizedLstm: <span class="keywordflow">return</span> <span class="stringliteral">&quot;QuantizedLstm&quot;</span>;</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; <span class="keywordflow">case</span> LayerType::Reshape: <span class="keywordflow">return</span> <span class="stringliteral">&quot;Reshape&quot;</span>;</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacearmnn.html#a25dc224be48103343302b5a6fd588fe7">LayerType::Resize</a>: <span class="keywordflow">return</span> <span class="stringliteral">&quot;Resize&quot;</span>;</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacearmnn.html#a044ea0cc993d4d1fbe4ec877b17b8d39">LayerType::Slice</a>: <span class="keywordflow">return</span> <span class="stringliteral">&quot;Slice&quot;</span>;</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacearmnn.html#aa999ff2585ad75b95954a9323f63c32b">LayerType::Softmax</a>: <span class="keywordflow">return</span> <span class="stringliteral">&quot;Softmax&quot;</span>;</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacearmnn.html#a4a180e425d4c19b2cdea4ce5760180e1">LayerType::SpaceToBatchNd</a>: <span class="keywordflow">return</span> <span class="stringliteral">&quot;SpaceToBatchNd&quot;</span>;</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacearmnn.html#a5e1dc69443b64ad16b669388a6023f7a">LayerType::SpaceToDepth</a>: <span class="keywordflow">return</span> <span class="stringliteral">&quot;SpaceToDepth&quot;</span>;</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacearmnn.html#a427c3d26d05b518b1ace407035f5920e">LayerType::Splitter</a>: <span class="keywordflow">return</span> <span class="stringliteral">&quot;Splitter&quot;</span>;</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacearmnn.html#a6ef2dcac2ec0683d52df1b051404e7d6">LayerType::Stack</a>: <span class="keywordflow">return</span> <span class="stringliteral">&quot;Stack&quot;</span>;</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; <span class="keywordflow">case</span> LayerType::StandIn: <span class="keywordflow">return</span> <span class="stringliteral">&quot;StandIn&quot;</span>;</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacearmnn.html#a86d7a7168ac00b75b4971f9aad623698">LayerType::StridedSlice</a>: <span class="keywordflow">return</span> <span class="stringliteral">&quot;StridedSlice&quot;</span>;</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; <span class="keywordflow">case</span> LayerType::Subtraction: <span class="keywordflow">return</span> <span class="stringliteral">&quot;Subtraction&quot;</span>;</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; <span class="keywordflow">case</span> LayerType::Switch: <span class="keywordflow">return</span> <span class="stringliteral">&quot;Switch&quot;</span>;</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; <span class="keywordflow">case</span> LayerType::TransposeConvolution2d: <span class="keywordflow">return</span> <span class="stringliteral">&quot;TransposeConvolution2d&quot;</span>;</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; <span class="keywordflow">default</span>:</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; BOOST_ASSERT_MSG(<span class="keyword">false</span>, <span class="stringliteral">&quot;Unknown layer type&quot;</span>);</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;Unknown&quot;</span>;</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; }</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a8746512fab5ec10c2c57800c66311ba7"><div class="ttname"><a href="namespacearmnn.html#a8746512fab5ec10c2c57800c66311ba7">armnn::BatchToSpaceNd</a></div><div class="ttdeci">void BatchToSpaceNd(const DataLayoutIndexed &amp;dataLayout, const TensorInfo &amp;inputTensorInfo, const TensorInfo &amp;outputTensorInfo, const std::vector&lt; unsigned int &gt; &amp;blockShape, const std::vector&lt; std::pair&lt; unsigned int, unsigned int &gt;&gt; &amp;cropsData, Decoder&lt; float &gt; &amp;inputDecoder, Encoder&lt; float &gt; &amp;outputEncoder)</div><div class="ttdef"><b>Definition:</b> <a href="backends_2reference_2workloads_2_batch_to_space_n_d_8cpp_source.html#l00035">BatchToSpaceNd.cpp:35</a></div></div>
<div class="ttc" id="namespacearmnn_html_ae2e93e304cf516841c521e3eaee025cd"><div class="ttname"><a href="namespacearmnn.html#ae2e93e304cf516841c521e3eaee025cd">armnn::Pooling2d</a></div><div class="ttdeci">void Pooling2d(Decoder&lt; float &gt; &amp;rInputDecoder, Encoder&lt; float &gt; &amp;rOutputEncoder, const TensorInfo &amp;inputInfo, const TensorInfo &amp;outputInfo, const Pooling2dDescriptor &amp;params)</div><div class="ttdoc">Computes the Pooling2d operation. </div><div class="ttdef"><b>Definition:</b> <a href="_pooling2d_8cpp_source.html#l00143">Pooling2d.cpp:143</a></div></div>
<div class="ttc" id="namespacearmnn_utils_html_af3c74017185773dd61d8ca6662d65d43"><div class="ttname"><a href="namespacearmnn_utils.html#af3c74017185773dd61d8ca6662d65d43">armnnUtils::Permute</a></div><div class="ttdeci">void Permute(const armnn::TensorShape &amp;dstShape, const armnn::PermutationVector &amp;mappings, const void *src, void *dst, size_t dataTypeSize)</div><div class="ttdef"><b>Definition:</b> <a href="_permute_8cpp_source.html#l00121">Permute.cpp:121</a></div></div>
<div class="ttc" id="namespacearmnn_html_ab3c0b7e1a78b1b98c24934221f36a7c3"><div class="ttname"><a href="namespacearmnn.html#ab3c0b7e1a78b1b98c24934221f36a7c3">armnn::FakeQuantization</a></div><div class="ttdeci">void FakeQuantization(const float *inputData, float *outputData, uint32_t numElements, float min, float max)</div><div class="ttdef"><b>Definition:</b> <a href="_ref_fake_quantization_float32_workload_8cpp_source.html#l00017">RefFakeQuantizationFloat32Workload.cpp:17</a></div></div>
<div class="ttc" id="namespacearmnn_html_a5aae369ef847a00062925cea8e9be9c4"><div class="ttname"><a href="namespacearmnn.html#a5aae369ef847a00062925cea8e9be9c4">armnn::Debug</a></div><div class="ttdeci">void Debug(const TensorInfo &amp;inputInfo, const T *inputData, LayerGuid guid, const std::string &amp;layerName, unsigned int slotIndex)</div><div class="ttdef"><b>Definition:</b> <a href="_debug_8cpp_source.html#l00019">Debug.cpp:19</a></div></div>
<div class="ttc" id="namespacearmnn_html_ae76ce23fa9fc18e56448d52b37dd3f32"><div class="ttname"><a href="namespacearmnn.html#ae76ce23fa9fc18e56448d52b37dd3f32">armnn::DetectionPostProcess</a></div><div class="ttdeci">void DetectionPostProcess(const TensorInfo &amp;boxEncodingsInfo, const TensorInfo &amp;scoresInfo, const TensorInfo &amp;anchorsInfo, const TensorInfo &amp;detectionBoxesInfo, const TensorInfo &amp;detectionClassesInfo, const TensorInfo &amp;detectionScoresInfo, const TensorInfo &amp;numDetectionsInfo, const DetectionPostProcessDescriptor &amp;desc, Decoder&lt; float &gt; &amp;boxEncodings, Decoder&lt; float &gt; &amp;scores, Decoder&lt; float &gt; &amp;anchors, float *detectionBoxes, float *detectionClasses, float *detectionScores, float *numDetections)</div><div class="ttdef"><b>Definition:</b> <a href="backends_2reference_2workloads_2_detection_post_process_8cpp_source.html#l00141">DetectionPostProcess.cpp:141</a></div></div>
<div class="ttc" id="namespacearmnn_html_ad773a034fb9983e15f3094b4c5c7c30c"><div class="ttname"><a href="namespacearmnn.html#ad773a034fb9983e15f3094b4c5c7c30c">armnn::Quantize</a></div><div class="ttdeci">QuantizedType Quantize(float value, float scale, int32_t offset)</div><div class="ttdoc">Explicit specialization of Quantize for int8_t. </div><div class="ttdef"><b>Definition:</b> <a href="_types_utils_8cpp_source.html#l00031">TypesUtils.cpp:31</a></div></div>
<div class="ttc" id="namespacearmnn_html_a4a180e425d4c19b2cdea4ce5760180e1"><div class="ttname"><a href="namespacearmnn.html#a4a180e425d4c19b2cdea4ce5760180e1">armnn::SpaceToBatchNd</a></div><div class="ttdeci">void SpaceToBatchNd(const TensorInfo &amp;inputInfo, const TensorInfo &amp;outputInfo, const SpaceToBatchNdDescriptor &amp;params, Decoder&lt; float &gt; &amp;inputData, Encoder&lt; float &gt; &amp;outputData)</div><div class="ttdef"><b>Definition:</b> <a href="backends_2reference_2workloads_2_space_to_batch_n_d_8cpp_source.html#l00034">SpaceToBatchNd.cpp:34</a></div></div>
<div class="ttc" id="namespacearmnn_html_a66004b2326f8ccb1faa71d5efa186633"><div class="ttname"><a href="namespacearmnn.html#a66004b2326f8ccb1faa71d5efa186633">armnn::Gather</a></div><div class="ttdeci">void Gather(const TensorInfo &amp;paramsInfo, const TensorInfo &amp;indicesInfo, const TensorInfo &amp;outputInfo, Decoder&lt; float &gt; &amp;params, const int32_t *indices, Encoder&lt; float &gt; &amp;output)</div><div class="ttdef"><b>Definition:</b> <a href="backends_2reference_2workloads_2_gather_8cpp_source.html#l00018">Gather.cpp:18</a></div></div>
<div class="ttc" id="namespacearmnn_html_a855293b1be0581fb61ef6a1c5b027d0f"><div class="ttname"><a href="namespacearmnn.html#a855293b1be0581fb61ef6a1c5b027d0f">armnn::Dequantize</a></div><div class="ttdeci">float Dequantize(QuantizedType value, float scale, int32_t offset)</div><div class="ttdef"><b>Definition:</b> <a href="_types_utils_8cpp_source.html#l00047">TypesUtils.cpp:47</a></div></div>
<div class="ttc" id="namespacearmnn_html_aa999ff2585ad75b95954a9323f63c32b"><div class="ttname"><a href="namespacearmnn.html#aa999ff2585ad75b95954a9323f63c32b">armnn::Softmax</a></div><div class="ttdeci">void Softmax(Decoder&lt; float &gt; &amp;in, Encoder&lt; float &gt; &amp;out, const TensorInfo &amp;inputTensorInfo, float beta, int axis)</div><div class="ttdoc">Computes the softmax function on some inputs, into outputs, with a shape given by tensorInfo...</div><div class="ttdef"><b>Definition:</b> <a href="backends_2reference_2workloads_2_softmax_8cpp_source.html#l00017">Softmax.cpp:17</a></div></div>
<div class="ttc" id="namespacearmnn_html_a28e115f5d28500324b53fae9e6c00b77"><div class="ttname"><a href="namespacearmnn.html#a28e115f5d28500324b53fae9e6c00b77">armnn::Pad</a></div><div class="ttdeci">void Pad(const TensorInfo &amp;inputInfo, const TensorInfo &amp;outputInfo, std::vector&lt; std::pair&lt; unsigned int, unsigned int &gt;&gt; m_padList, const T *inputData, T *outData, const float padValue)</div><div class="ttdef"><b>Definition:</b> <a href="backends_2reference_2workloads_2_pad_8cpp_source.html#l00022">Pad.cpp:22</a></div></div>
<div class="ttc" id="namespacearmnn_html_a374120de442fe42c26536bb4f1e2a5a1"><div class="ttname"><a href="namespacearmnn.html#a374120de442fe42c26536bb4f1e2a5a1">armnn::ArgMinMax</a></div><div class="ttdeci">void ArgMinMax(Decoder&lt; float &gt; &amp;in, int32_t *out, const TensorInfo &amp;inputTensorInfo, const TensorInfo &amp;outputTensorInfo, ArgMinMaxFunction function, int axis)</div><div class="ttdef"><b>Definition:</b> <a href="_arg_min_max_8cpp_source.html#l00015">ArgMinMax.cpp:15</a></div></div>
<div class="ttc" id="namespacearmnn_html_a165ae372a7f67cad64ef3395d30122ce"><div class="ttname"><a href="namespacearmnn.html#a165ae372a7f67cad64ef3395d30122ce">armnn::Mean</a></div><div class="ttdeci">void Mean(const armnn::TensorInfo &amp;inputInfo, const armnn::TensorInfo &amp;outputInfo, const std::vector&lt; unsigned int &gt; &amp;axis, Decoder&lt; float &gt; &amp;input, Encoder&lt; float &gt; &amp;output)</div><div class="ttdef"><b>Definition:</b> <a href="backends_2reference_2workloads_2_mean_8cpp_source.html#l00071">Mean.cpp:71</a></div></div>
<div class="ttc" id="namespacearmnn_html_ad34d1d5b1ca8f52dc296ecf52ba20c8a"><div class="ttname"><a href="namespacearmnn.html#ad34d1d5b1ca8f52dc296ecf52ba20c8a">armnn::FullyConnected</a></div><div class="ttdeci">void FullyConnected(const TensorShape &amp;rInputShape, Decoder&lt; float &gt; &amp;rInputDecoder, const TensorShape &amp;rOutputShape, Encoder&lt; float &gt; &amp;rOutputEncoder, Decoder&lt; float &gt; &amp;rWeightDecoder, Decoder&lt; float &gt; &amp;rBiasDecoder, const bool biasEnabled, const unsigned int K, const bool transposeWeights)</div><div class="ttdoc">Performs a matrix multiplication and optionally adds a bias. </div><div class="ttdef"><b>Definition:</b> <a href="backends_2reference_2workloads_2_fully_connected_8cpp_source.html#l00015">FullyConnected.cpp:15</a></div></div>
<div class="ttc" id="namespacearmnn_html_a86d7a7168ac00b75b4971f9aad623698"><div class="ttname"><a href="namespacearmnn.html#a86d7a7168ac00b75b4971f9aad623698">armnn::StridedSlice</a></div><div class="ttdeci">void StridedSlice(const TensorInfo &amp;inputInfo, const StridedSliceDescriptor &amp;params, const void *inputData, void *outputData, unsigned int dataTypeSize)</div><div class="ttdef"><b>Definition:</b> <a href="backends_2reference_2workloads_2_strided_slice_8cpp_source.html#l00090">StridedSlice.cpp:90</a></div></div>
<div class="ttc" id="namespacearmnn_html_a044ea0cc993d4d1fbe4ec877b17b8d39"><div class="ttname"><a href="namespacearmnn.html#a044ea0cc993d4d1fbe4ec877b17b8d39">armnn::Slice</a></div><div class="ttdeci">void Slice(const TensorInfo &amp;inputInfo, const SliceDescriptor &amp;descriptor, const void *inputData, void *outputData, unsigned int dataTypeSize)</div><div class="ttdef"><b>Definition:</b> <a href="backends_2reference_2workloads_2_slice_8cpp_source.html#l00015">Slice.cpp:15</a></div></div>
<div class="ttc" id="namespacearmnn_html_a5e1dc69443b64ad16b669388a6023f7a"><div class="ttname"><a href="namespacearmnn.html#a5e1dc69443b64ad16b669388a6023f7a">armnn::SpaceToDepth</a></div><div class="ttdeci">void SpaceToDepth(const TensorInfo &amp;inputInfo, const TensorInfo &amp;outputInfo, const SpaceToDepthDescriptor &amp;params, Decoder&lt; float &gt; &amp;inputData, Encoder&lt; float &gt; &amp;outputData)</div><div class="ttdef"><b>Definition:</b> <a href="_space_to_depth_8cpp_source.html#l00036">SpaceToDepth.cpp:36</a></div></div>
<div class="ttc" id="namespacearmnn_html_a427c3d26d05b518b1ace407035f5920e"><div class="ttname"><a href="namespacearmnn.html#a427c3d26d05b518b1ace407035f5920e">armnn::Splitter</a></div><div class="ttdeci">void Splitter(const SplitterQueueDescriptor &amp;data)</div><div class="ttdef"><b>Definition:</b> <a href="_splitter_8hpp_source.html#l00017">Splitter.hpp:17</a></div></div>
<div class="ttc" id="namespacearmnn_html_a25dc224be48103343302b5a6fd588fe7"><div class="ttname"><a href="namespacearmnn.html#a25dc224be48103343302b5a6fd588fe7">armnn::Resize</a></div><div class="ttdeci">void Resize(Decoder&lt; float &gt; &amp;in, const TensorInfo &amp;inputInfo, Encoder&lt; float &gt; &amp;out, const TensorInfo &amp;outputInfo, DataLayoutIndexed dataLayout, armnn::ResizeMethod resizeMethod, bool alignCorners)</div><div class="ttdef"><b>Definition:</b> <a href="_resize_8cpp_source.html#l00035">Resize.cpp:35</a></div></div>
<div class="ttc" id="namespacearmnn_html_a7636fbbc4f8ea2d0cf9f3ac2d12a4c62"><div class="ttname"><a href="namespacearmnn.html#a7636fbbc4f8ea2d0cf9f3ac2d12a4c62">armnn::Activation</a></div><div class="ttdeci">float Activation(float in, ActivationFunction function, float a, float b)</div><div class="ttdef"><b>Definition:</b> <a href="_activation_8cpp_source.html#l00012">Activation.cpp:12</a></div></div>
<div class="ttc" id="namespacearmnn_html_a6ef2dcac2ec0683d52df1b051404e7d6"><div class="ttname"><a href="namespacearmnn.html#a6ef2dcac2ec0683d52df1b051404e7d6">armnn::Stack</a></div><div class="ttdeci">void Stack(const StackQueueDescriptor &amp;data, std::vector&lt; std::unique_ptr&lt; Decoder&lt; float &gt;&gt;&gt; &amp;inputs, Encoder&lt; float &gt; &amp;output)</div><div class="ttdef"><b>Definition:</b> <a href="backends_2reference_2workloads_2_stack_8cpp_source.html#l00012">Stack.cpp:12</a></div></div>
<div class="ttc" id="namespacearmnn_html_ab023d9a7687e35c0f108458a094c1f56"><div class="ttname"><a href="namespacearmnn.html#ab023d9a7687e35c0f108458a094c1f56">armnn::DepthToSpace</a></div><div class="ttdeci">void DepthToSpace(const TensorInfo &amp;inputInfo, const DepthToSpaceDescriptor &amp;descriptor, const void *inputData, void *outputData, unsigned int dataTypeSize)</div><div class="ttdef"><b>Definition:</b> <a href="_depth_to_space_8cpp_source.html#l00018">DepthToSpace.cpp:18</a></div></div>
<div class="ttc" id="namespacearmnn_html_ac52e04c0e349e25bcdaa72c27395ef8f"><div class="ttname"><a href="namespacearmnn.html#ac52e04c0e349e25bcdaa72c27395ef8f">armnn::LogSoftmax</a></div><div class="ttdeci">void LogSoftmax(Decoder&lt; float &gt; &amp;input, Encoder&lt; float &gt; &amp;output, const TensorInfo &amp;inputInfo, const LogSoftmaxDescriptor &amp;descriptor)</div><div class="ttdef"><b>Definition:</b> <a href="_log_softmax_8cpp_source.html#l00030">LogSoftmax.cpp:30</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="aeadd602e128a2be97161345b48533417"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aeadd602e128a2be97161345b48533417">&#9670;&nbsp;</a></span>GetNormalizationAlgorithmChannelAsCString()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">constexpr const char* armnn::GetNormalizationAlgorithmChannelAsCString </td>
<td>(</td>
<td class="paramtype"><a class="el" href="namespacearmnn.html#abe18a5033f2ab9c0de82c676b48f5437">NormalizationAlgorithmChannel</a>&#160;</td>
<td class="paramname"><em>channel</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_types_utils_8hpp_source.html#l00196">196</a> of file <a class="el" href="_types_utils_8hpp_source.html">TypesUtils.hpp</a>.</p>
<p class="reference">References <a class="el" href="namespacearmnn.html#abe18a5033f2ab9c0de82c676b48f5437a810f43f3996922151c39b76143faeecc">Across</a>, and <a class="el" href="namespacearmnn.html#abe18a5033f2ab9c0de82c676b48f5437a37bac6dce4f46277d89bfa3003e2e39b">Within</a>.</p>
<p class="reference">Referenced by <a class="el" href="_serialize_layer_parameters_8cpp_source.html#l00228">StringifyLayerParameters&lt; NormalizationDescriptor &gt;::Serialize()</a>.</p>
<div class="fragment"><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160;{</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160; <span class="keywordflow">switch</span> (channel)</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160; {</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160; <span class="keywordflow">case</span> NormalizationAlgorithmChannel::Across: <span class="keywordflow">return</span> <span class="stringliteral">&quot;Across&quot;</span>;</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160; <span class="keywordflow">case</span> NormalizationAlgorithmChannel::Within: <span class="keywordflow">return</span> <span class="stringliteral">&quot;Within&quot;</span>;</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160; <span class="keywordflow">default</span>: <span class="keywordflow">return</span> <span class="stringliteral">&quot;Unknown&quot;</span>;</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160; }</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160;}</div></div><!-- fragment -->
</div>
</div>
<a id="ad57460ea53cd0b519a3b3547eaf1db7c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad57460ea53cd0b519a3b3547eaf1db7c">&#9670;&nbsp;</a></span>GetNormalizationAlgorithmMethodAsCString()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">constexpr const char* armnn::GetNormalizationAlgorithmMethodAsCString </td>
<td>(</td>
<td class="paramtype"><a class="el" href="namespacearmnn.html#ad605d1661fa0d8c7fea651d82fbe11c9">NormalizationAlgorithmMethod</a>&#160;</td>
<td class="paramname"><em>method</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_types_utils_8hpp_source.html#l00206">206</a> of file <a class="el" href="_types_utils_8hpp_source.html">TypesUtils.hpp</a>.</p>
<p class="reference">References <a class="el" href="namespacearmnn.html#ad605d1661fa0d8c7fea651d82fbe11c9ac65d2e51c610dd3853a3c777aa8bfe9d">LocalBrightness</a>, and <a class="el" href="namespacearmnn.html#ad605d1661fa0d8c7fea651d82fbe11c9aa94d2fcabc6b001015aeddfa19266e6f">LocalContrast</a>.</p>
<p class="reference">Referenced by <a class="el" href="_serialize_layer_parameters_8cpp_source.html#l00228">StringifyLayerParameters&lt; NormalizationDescriptor &gt;::Serialize()</a>.</p>
<div class="fragment"><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160;{</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160; <span class="keywordflow">switch</span> (method)</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160; {</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160; <span class="keywordflow">case</span> NormalizationAlgorithmMethod::LocalBrightness: <span class="keywordflow">return</span> <span class="stringliteral">&quot;LocalBrightness&quot;</span>;</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160; <span class="keywordflow">case</span> NormalizationAlgorithmMethod::LocalContrast: <span class="keywordflow">return</span> <span class="stringliteral">&quot;LocalContrast&quot;</span>;</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160; <span class="keywordflow">default</span>: <span class="keywordflow">return</span> <span class="stringliteral">&quot;Unknown&quot;</span>;</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160; }</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160;}</div></div><!-- fragment -->
</div>
</div>
<a id="adafb0fd0a3f6435c2bdf41f971761ecf"></a>
<h2 class="memtitle"><span class="permalink"><a href="#adafb0fd0a3f6435c2bdf41f971761ecf">&#9670;&nbsp;</a></span>GetOffset()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">unsigned int armnn::GetOffset </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_shape.html">TensorShape</a> &amp;&#160;</td>
<td class="paramname"><em>shape</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">unsigned int&#160;</td>
<td class="paramname"><em>b</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">unsigned int&#160;</td>
<td class="paramname"><em>h</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">unsigned int&#160;</td>
<td class="paramname"><em>w</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">unsigned int&#160;</td>
<td class="paramname"><em>c</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_utils_1_1_data_layout_indexed.html">DataLayoutIndexed</a> &amp;&#160;</td>
<td class="paramname"><em>dataLayout</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="backends_2reference_2workloads_2_space_to_batch_n_d_8cpp_source.html#l00015">15</a> of file <a class="el" href="backends_2reference_2workloads_2_space_to_batch_n_d_8cpp_source.html">SpaceToBatchNd.cpp</a>.</p>
<p class="reference">References <a class="el" href="_data_layout_indexed_8hpp_source.html#l00023">DataLayoutIndexed::GetChannelsIndex()</a>, <a class="el" href="_data_layout_indexed_8hpp_source.html#l00022">DataLayoutIndexed::GetDataLayout()</a>, <a class="el" href="_data_layout_indexed_8hpp_source.html#l00024">DataLayoutIndexed::GetHeightIndex()</a>, <a class="el" href="_data_layout_indexed_8hpp_source.html#l00025">DataLayoutIndexed::GetWidthIndex()</a>, and <a class="el" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0ad066db54b89b0912e7e7c6da51e2da51">NHWC</a>.</p>
<p class="reference">Referenced by <a class="el" href="backends_2reference_2workloads_2_space_to_batch_n_d_8cpp_source.html#l00034">SpaceToBatchNd()</a>, and <a class="el" href="_space_to_depth_8cpp_source.html#l00036">SpaceToDepth()</a>.</p>
<div class="fragment"><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;{</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160; <span class="keywordflow">if</span> (dataLayout.<a class="code" href="classarmnn_utils_1_1_data_layout_indexed.html#a7d8b3d755b6ca8f5533657969efb06c4">GetDataLayout</a>() == DataLayout::NHWC)</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160; {</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160; <span class="keywordflow">return</span> ((b * shape[dataLayout.<a class="code" href="classarmnn_utils_1_1_data_layout_indexed.html#a61c00316c443adc233c24e85c6c5b740">GetHeightIndex</a>()] + h) * shape[dataLayout.<a class="code" href="classarmnn_utils_1_1_data_layout_indexed.html#a414e6f95548e6f7a01d5028b55ad3941">GetWidthIndex</a>()] + w) *</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; shape[dataLayout.<a class="code" href="classarmnn_utils_1_1_data_layout_indexed.html#a861b2621ee46e4b63379988b360b8cd9">GetChannelsIndex</a>()] + c;</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; }</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; {</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; <span class="keywordflow">return</span> ((b * shape[dataLayout.<a class="code" href="classarmnn_utils_1_1_data_layout_indexed.html#a861b2621ee46e4b63379988b360b8cd9">GetChannelsIndex</a>()] + c) * shape[dataLayout.<a class="code" href="classarmnn_utils_1_1_data_layout_indexed.html#a61c00316c443adc233c24e85c6c5b740">GetHeightIndex</a>()] + h) *</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; shape[dataLayout.<a class="code" href="classarmnn_utils_1_1_data_layout_indexed.html#a414e6f95548e6f7a01d5028b55ad3941">GetWidthIndex</a>()] + w;</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; }</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;}</div><div class="ttc" id="classarmnn_utils_1_1_data_layout_indexed_html_a7d8b3d755b6ca8f5533657969efb06c4"><div class="ttname"><a href="classarmnn_utils_1_1_data_layout_indexed.html#a7d8b3d755b6ca8f5533657969efb06c4">armnnUtils::DataLayoutIndexed::GetDataLayout</a></div><div class="ttdeci">armnn::DataLayout GetDataLayout() const</div><div class="ttdef"><b>Definition:</b> <a href="_data_layout_indexed_8hpp_source.html#l00022">DataLayoutIndexed.hpp:22</a></div></div>
<div class="ttc" id="classarmnn_utils_1_1_data_layout_indexed_html_a61c00316c443adc233c24e85c6c5b740"><div class="ttname"><a href="classarmnn_utils_1_1_data_layout_indexed.html#a61c00316c443adc233c24e85c6c5b740">armnnUtils::DataLayoutIndexed::GetHeightIndex</a></div><div class="ttdeci">unsigned int GetHeightIndex() const</div><div class="ttdef"><b>Definition:</b> <a href="_data_layout_indexed_8hpp_source.html#l00024">DataLayoutIndexed.hpp:24</a></div></div>
<div class="ttc" id="classarmnn_utils_1_1_data_layout_indexed_html_a414e6f95548e6f7a01d5028b55ad3941"><div class="ttname"><a href="classarmnn_utils_1_1_data_layout_indexed.html#a414e6f95548e6f7a01d5028b55ad3941">armnnUtils::DataLayoutIndexed::GetWidthIndex</a></div><div class="ttdeci">unsigned int GetWidthIndex() const</div><div class="ttdef"><b>Definition:</b> <a href="_data_layout_indexed_8hpp_source.html#l00025">DataLayoutIndexed.hpp:25</a></div></div>
<div class="ttc" id="classarmnn_utils_1_1_data_layout_indexed_html_a861b2621ee46e4b63379988b360b8cd9"><div class="ttname"><a href="classarmnn_utils_1_1_data_layout_indexed.html#a861b2621ee46e4b63379988b360b8cd9">armnnUtils::DataLayoutIndexed::GetChannelsIndex</a></div><div class="ttdeci">unsigned int GetChannelsIndex() const</div><div class="ttdef"><b>Definition:</b> <a href="_data_layout_indexed_8hpp_source.html#l00023">DataLayoutIndexed.hpp:23</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a67d7ce2e14ebd328f423322db88279c3"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a67d7ce2e14ebd328f423322db88279c3">&#9670;&nbsp;</a></span>GetOutputShapeRoundingAsCString()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">constexpr char const* armnn::GetOutputShapeRoundingAsCString </td>
<td>(</td>
<td class="paramtype"><a class="el" href="namespacearmnn.html#adf2e5515c4c36a3e7e46bb8b83c6754e">OutputShapeRounding</a>&#160;</td>
<td class="paramname"><em>rounding</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_types_utils_8hpp_source.html#l00093">93</a> of file <a class="el" href="_types_utils_8hpp_source.html">TypesUtils.hpp</a>.</p>
<p class="reference">References <a class="el" href="namespacearmnn.html#adf2e5515c4c36a3e7e46bb8b83c6754ea3237fbc8204064c106cb9080088a17cb">Ceiling</a>, and <a class="el" href="namespacearmnn.html#adf2e5515c4c36a3e7e46bb8b83c6754eaf3f6d0343d56ce88ce7958170ed05cb3">Floor</a>.</p>
<p class="reference">Referenced by <a class="el" href="_serialize_layer_parameters_8cpp_source.html#l00110">StringifyLayerParameters&lt; Pooling2dDescriptor &gt;::Serialize()</a>.</p>
<div class="fragment"><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160;{</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; <span class="keywordflow">switch</span> (rounding)</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; {</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; <span class="keywordflow">case</span> OutputShapeRounding::Ceiling: <span class="keywordflow">return</span> <span class="stringliteral">&quot;Ceiling&quot;</span>;</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; <span class="keywordflow">case</span> OutputShapeRounding::Floor: <span class="keywordflow">return</span> <span class="stringliteral">&quot;Floor&quot;</span>;</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; <span class="keywordflow">default</span>: <span class="keywordflow">return</span> <span class="stringliteral">&quot;Unknown&quot;</span>;</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; }</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160;}</div></div><!-- fragment -->
</div>
</div>
<a id="a932b4856d89c58865e1f39ec5ab6b841"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a932b4856d89c58865e1f39ec5ab6b841">&#9670;&nbsp;</a></span>GetOutputTensorData() <span class="overload">[1/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">float* armnn::GetOutputTensorData </td>
<td>(</td>
<td class="paramtype">unsigned int&#160;</td>
<td class="paramname"><em>idx</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="structarmnn_1_1_addition_queue_descriptor.html">AdditionQueueDescriptor</a> &amp;&#160;</td>
<td class="paramname"><em>data</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_sample_dynamic_addition_workload_8cpp_source.html#l00028">28</a> of file <a class="el" href="_sample_dynamic_addition_workload_8cpp_source.html">SampleDynamicAdditionWorkload.cpp</a>.</p>
<p class="reference">References <a class="el" href="_workload_data_8hpp_source.html#l00031">QueueDescriptor::m_Outputs</a>, and <a class="el" href="classarmnn_1_1_i_tensor_handle.html#a9afbc055a017adf1bc38ee137bca6e90">ITensorHandle::Map()</a>.</p>
<div class="fragment"><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;{</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; ITensorHandle* tensorHandle = data.m_Outputs[idx];</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; <span class="keywordflow">return</span> <span class="keyword">reinterpret_cast&lt;</span><span class="keywordtype">float</span>*<span class="keyword">&gt;</span>(tensorHandle-&gt;Map());</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;}</div></div><!-- fragment -->
</div>
</div>
<a id="a2c0b2e5bd1b03aec10473a201f57f859"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a2c0b2e5bd1b03aec10473a201f57f859">&#9670;&nbsp;</a></span>GetOutputTensorData() <span class="overload">[2/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a>* armnn::GetOutputTensorData </td>
<td>(</td>
<td class="paramtype">unsigned int&#160;</td>
<td class="paramname"><em>idx</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const PayloadType &amp;&#160;</td>
<td class="paramname"><em>data</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_ref_workload_utils_8hpp_source.html#l00041">41</a> of file <a class="el" href="_ref_workload_utils_8hpp_source.html">RefWorkloadUtils.hpp</a>.</p>
<p class="reference">References <a class="el" href="classarmnn_1_1_i_tensor_handle.html#a9afbc055a017adf1bc38ee137bca6e90">ITensorHandle::Map()</a>.</p>
<p class="reference">Referenced by <a class="el" href="_sample_dynamic_addition_workload_8cpp_source.html#l00039">SampleDynamicAdditionWorkload::Execute()</a>.</p>
<div class="fragment"><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;{</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; ITensorHandle* tensorHandle = data.m_Outputs[idx];</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <span class="keywordflow">return</span> <span class="keyword">reinterpret_cast&lt;</span><a class="code" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a>*<span class="keyword">&gt;</span>(tensorHandle-&gt;Map());</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_ad8ed01ff3ff33333d8e19db4d2818bb6"><div class="ttname"><a href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6">armnn::DataType</a></div><div class="ttdeci">DataType</div><div class="ttdef"><b>Definition:</b> <a href="_types_8hpp_source.html#l00032">Types.hpp:32</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="ab5f0afc1e37fd100843ecd55d8f284c1"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab5f0afc1e37fd100843ecd55d8f284c1">&#9670;&nbsp;</a></span>GetOutputTensorDataFloat()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">float* armnn::GetOutputTensorDataFloat </td>
<td>(</td>
<td class="paramtype">unsigned int&#160;</td>
<td class="paramname"><em>idx</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const PayloadType &amp;&#160;</td>
<td class="paramname"><em>data</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_ref_workload_utils_8hpp_source.html#l00054">54</a> of file <a class="el" href="_ref_workload_utils_8hpp_source.html">RefWorkloadUtils.hpp</a>.</p>
<p class="reference">Referenced by <a class="el" href="_ref_convert_fp16_to_fp32_workload_8cpp_source.html#l00016">RefConvertFp16ToFp32Workload::Execute()</a>, and <a class="el" href="_ref_fake_quantization_float32_workload_8cpp_source.html#l00029">RefFakeQuantizationFloat32Workload::Execute()</a>.</p>
<div class="fragment"><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160;{</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; <span class="keywordflow">return</span> GetOutputTensorData&lt;float&gt;(idx, data);</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160;}</div></div><!-- fragment -->
</div>
</div>
<a id="ab98e77207c3d676b0b9ffa67357dbc6a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab98e77207c3d676b0b9ffa67357dbc6a">&#9670;&nbsp;</a></span>GetOutputTensorDataHalf()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="namespacearmnn.html#a0f38fa92b2468d5378258a2b074c1a31">Half</a>* armnn::GetOutputTensorDataHalf </td>
<td>(</td>
<td class="paramtype">unsigned int&#160;</td>
<td class="paramname"><em>idx</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const PayloadType &amp;&#160;</td>
<td class="paramname"><em>data</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_ref_workload_utils_8hpp_source.html#l00066">66</a> of file <a class="el" href="_ref_workload_utils_8hpp_source.html">RefWorkloadUtils.hpp</a>.</p>
<p class="reference">Referenced by <a class="el" href="_ref_convert_fp32_to_fp16_workload_8cpp_source.html#l00017">RefConvertFp32ToFp16Workload::Execute()</a>.</p>
<div class="fragment"><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160;{</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; <span class="keywordflow">return</span> GetOutputTensorData&lt;Half&gt;(idx, data);</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160;}</div></div><!-- fragment -->
</div>
</div>
<a id="a129bde68152f5892e6abdedcb62aa983"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a129bde68152f5892e6abdedcb62aa983">&#9670;&nbsp;</a></span>GetPaddingMethodAsCString()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">constexpr char const* armnn::GetPaddingMethodAsCString </td>
<td>(</td>
<td class="paramtype"><a class="el" href="namespacearmnn.html#a3888429b6ebc79f9a7df549e5e4d9a2f">PaddingMethod</a>&#160;</td>
<td class="paramname"><em>method</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_types_utils_8hpp_source.html#l00103">103</a> of file <a class="el" href="_types_utils_8hpp_source.html">TypesUtils.hpp</a>.</p>
<p class="reference">References <a class="el" href="namespacearmnn.html#a3888429b6ebc79f9a7df549e5e4d9a2fa843f2812f595e7ec7c5036e89fde02d6">Exclude</a>, and <a class="el" href="namespacearmnn.html#a3888429b6ebc79f9a7df549e5e4d9a2faad301514192636ad34210adce598a45a">IgnoreValue</a>.</p>
<p class="reference">Referenced by <a class="el" href="_serialize_layer_parameters_8cpp_source.html#l00110">StringifyLayerParameters&lt; Pooling2dDescriptor &gt;::Serialize()</a>.</p>
<div class="fragment"><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160;{</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; <span class="keywordflow">switch</span> (method)</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; {</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; <span class="keywordflow">case</span> PaddingMethod::Exclude: <span class="keywordflow">return</span> <span class="stringliteral">&quot;Exclude&quot;</span>;</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; <span class="keywordflow">case</span> PaddingMethod::IgnoreValue: <span class="keywordflow">return</span> <span class="stringliteral">&quot;IgnoreValue&quot;</span>;</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; <span class="keywordflow">default</span>: <span class="keywordflow">return</span> <span class="stringliteral">&quot;Unknown&quot;</span>;</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; }</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160;}</div></div><!-- fragment -->
</div>
</div>
<a id="a517314c21ac5309b90408da162212f9d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a517314c21ac5309b90408da162212f9d">&#9670;&nbsp;</a></span>GetPoolingAlgorithmAsCString()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">constexpr char const* armnn::GetPoolingAlgorithmAsCString </td>
<td>(</td>
<td class="paramtype"><a class="el" href="namespacearmnn.html#a961bbfe1db71a848eff5a1f0ab775718">PoolingAlgorithm</a>&#160;</td>
<td class="paramname"><em>pooling</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_types_utils_8hpp_source.html#l00082">82</a> of file <a class="el" href="_types_utils_8hpp_source.html">TypesUtils.hpp</a>.</p>
<p class="reference">References <a class="el" href="namespacearmnn.html#a961bbfe1db71a848eff5a1f0ab775718ab1897515d548a960afe49ecf66a29021">Average</a>, <a class="el" href="namespacearmnn.html#a961bbfe1db71a848eff5a1f0ab775718a7e6aa2d53f6ee2b1a34b017fa403cb76">L2</a>, and <a class="el" href="namespacearmnn.html#ae7e8cbf71db6a490789ca6dcaa8deeaea6a061313d22e51e0f25b7cd4dc065233">Max</a>.</p>
<p class="reference">Referenced by <a class="el" href="_serialize_layer_parameters_8cpp_source.html#l00110">StringifyLayerParameters&lt; Pooling2dDescriptor &gt;::Serialize()</a>.</p>
<div class="fragment"><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160;{</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; <span class="keywordflow">switch</span> (pooling)</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; {</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; <span class="keywordflow">case</span> PoolingAlgorithm::Average: <span class="keywordflow">return</span> <span class="stringliteral">&quot;Average&quot;</span>;</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; <span class="keywordflow">case</span> PoolingAlgorithm::Max: <span class="keywordflow">return</span> <span class="stringliteral">&quot;Max&quot;</span>;</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; <span class="keywordflow">case</span> PoolingAlgorithm::L2: <span class="keywordflow">return</span> <span class="stringliteral">&quot;L2&quot;</span>;</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; <span class="keywordflow">default</span>: <span class="keywordflow">return</span> <span class="stringliteral">&quot;Unknown&quot;</span>;</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; }</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160;}</div></div><!-- fragment -->
</div>
</div>
<a id="a49a398090bc1044038300ce246821a1f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a49a398090bc1044038300ce246821a1f">&#9670;&nbsp;</a></span>GetProfilerEventSequenceSize()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">size_t armnn::GetProfilerEventSequenceSize </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classarmnn_1_1_profiler.html">armnn::Profiler</a> *&#160;</td>
<td class="paramname"><em>profiler</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_profiler_tests_8cpp_source.html#l00022">22</a> of file <a class="el" href="_profiler_tests_8cpp_source.html">ProfilerTests.cpp</a>.</p>
<p class="reference">References <a class="el" href="_output_shape_of_squeeze_8cpp.html#ae3a6cb217a792718f2bd0e8f45e3ca9e">BOOST_AUTO_TEST_SUITE()</a>, <a class="el" href="_profiling_8cpp_source.html#l00486">ProfilerManager::GetInstance()</a>, <a class="el" href="_profiling_8cpp_source.html#l00498">ProfilerManager::GetProfiler()</a>, and <a class="el" href="_profiling_8cpp_source.html#l00493">ProfilerManager::RegisterProfiler()</a>.</p>
<p class="reference">Referenced by <a class="el" href="_profiler_tests_8cpp_source.html#l00109">BOOST_AUTO_TEST_CASE()</a>.</p>
<div class="fragment"><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;{</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160; <span class="keywordflow">if</span> (!profiler)</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; {</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; <span class="keywordflow">return</span> <span class="keyword">static_cast&lt;</span><span class="keywordtype">size_t</span><span class="keyword">&gt;</span>(-1);</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; }</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; <span class="keywordflow">return</span> profiler-&gt;m_EventSequence.size();</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;}</div></div><!-- fragment -->
</div>
</div>
<a id="aded981a42027bd3302b9c0f09d988659"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aded981a42027bd3302b9c0f09d988659">&#9670;&nbsp;</a></span>GetResizeMethodAsCString()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">constexpr const char* armnn::GetResizeMethodAsCString </td>
<td>(</td>
<td class="paramtype"><a class="el" href="namespacearmnn.html#a9a2af2f8c4af4f9efa8e79417d505ac4">ResizeMethod</a>&#160;</td>
<td class="paramname"><em>method</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_types_utils_8hpp_source.html#l00216">216</a> of file <a class="el" href="_types_utils_8hpp_source.html">TypesUtils.hpp</a>.</p>
<p class="reference">References <a class="el" href="namespacearmnn.html#a9a2af2f8c4af4f9efa8e79417d505ac4aaf17c98bbd83c27d6426d2ff3fa81d7f">Bilinear</a>, and <a class="el" href="namespacearmnn.html#a9a2af2f8c4af4f9efa8e79417d505ac4aaa020331bb30d2fa2ecf7c3a0777823f">NearestNeighbor</a>.</p>
<p class="reference">Referenced by <a class="el" href="_serialize_layer_parameters_8cpp_source.html#l00298">StringifyLayerParameters&lt; ResizeDescriptor &gt;::Serialize()</a>.</p>
<div class="fragment"><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160;{</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160; <span class="keywordflow">switch</span> (method)</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160; {</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160; <span class="keywordflow">case</span> ResizeMethod::Bilinear: <span class="keywordflow">return</span> <span class="stringliteral">&quot;Bilinear&quot;</span>;</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160; <span class="keywordflow">case</span> ResizeMethod::NearestNeighbor: <span class="keywordflow">return</span> <span class="stringliteral">&quot;NearestNeighbour&quot;</span>;</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160; <span class="keywordflow">default</span>: <span class="keywordflow">return</span> <span class="stringliteral">&quot;Unknown&quot;</span>;</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160; }</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160;}</div></div><!-- fragment -->
</div>
</div>
<a id="a19a90c41ca2f46ab29918fef1a6ad72e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a19a90c41ca2f46ab29918fef1a6ad72e">&#9670;&nbsp;</a></span>GetStatusAsCString()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">constexpr char const* armnn::GetStatusAsCString </td>
<td>(</td>
<td class="paramtype"><a class="el" href="namespacearmnn.html#a67a0db04d321a74b7e7fcfd3f1a3f70b">Status</a>&#160;</td>
<td class="paramname"><em>status</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_types_utils_8hpp_source.html#l00017">17</a> of file <a class="el" href="_types_utils_8hpp_source.html">TypesUtils.hpp</a>.</p>
<p class="reference">References <a class="el" href="namespacearmnn.html#a67a0db04d321a74b7e7fcfd3f1a3f70bae139a585510a502bbf1841cf589f5086">Failure</a>, and <a class="el" href="namespacearmnn.html#a67a0db04d321a74b7e7fcfd3f1a3f70ba505a83f220c02df2f85c3810cd9ceb38">Success</a>.</p>
<p class="reference">Referenced by <a class="el" href="_types_utils_8hpp_source.html#l00252">operator&lt;&lt;()</a>.</p>
<div class="fragment"><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;{</div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160; <span class="keywordflow">switch</span> (status)</div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160; {</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacearmnn.html#a67a0db04d321a74b7e7fcfd3f1a3f70ba505a83f220c02df2f85c3810cd9ceb38">armnn::Status::Success</a>: <span class="keywordflow">return</span> <span class="stringliteral">&quot;Status::Success&quot;</span>;</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacearmnn.html#a67a0db04d321a74b7e7fcfd3f1a3f70bae139a585510a502bbf1841cf589f5086">armnn::Status::Failure</a>: <span class="keywordflow">return</span> <span class="stringliteral">&quot;Status::Failure&quot;</span>;</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160; <span class="keywordflow">default</span>: <span class="keywordflow">return</span> <span class="stringliteral">&quot;Unknown&quot;</span>;</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160; }</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a67a0db04d321a74b7e7fcfd3f1a3f70ba505a83f220c02df2f85c3810cd9ceb38"><div class="ttname"><a href="namespacearmnn.html#a67a0db04d321a74b7e7fcfd3f1a3f70ba505a83f220c02df2f85c3810cd9ceb38">armnn::Status::Success</a></div></div>
<div class="ttc" id="namespacearmnn_html_a67a0db04d321a74b7e7fcfd3f1a3f70bae139a585510a502bbf1841cf589f5086"><div class="ttname"><a href="namespacearmnn.html#a67a0db04d321a74b7e7fcfd3f1a3f70bae139a585510a502bbf1841cf589f5086">armnn::Status::Failure</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a93d269806f34407695dc10f510001c30"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a93d269806f34407695dc10f510001c30">&#9670;&nbsp;</a></span>GetTensorInfo()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp; GetTensorInfo </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_i_tensor_handle.html">ITensorHandle</a> *&#160;</td>
<td class="paramname"><em>tensorHandle</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>float32 helpers </p>
<p class="definition">Definition at line <a class="el" href="_ref_workload_utils_8hpp_source.html#l00025">25</a> of file <a class="el" href="_ref_workload_utils_8hpp_source.html">RefWorkloadUtils.hpp</a>.</p>
<p class="reference">References <a class="el" href="_ref_tensor_handle_8hpp_source.html#l00050">RefTensorHandle::GetTensorInfo()</a>.</p>
<p class="reference">Referenced by <a class="el" href="_batch_norm_impl_8cpp_source.html#l00018">BatchNormImpl()</a>, <a class="el" href="_concatenate_8cpp_source.html#l00014">Concatenate()</a>, <a class="el" href="_ref_depth_to_space_workload_8cpp_source.html#l00014">RefDepthToSpaceWorkload::Execute()</a>, <a class="el" href="_ref_strided_slice_workload_8cpp_source.html#l00020">RefStridedSliceWorkload::Execute()</a>, <a class="el" href="_ref_convert_fp32_to_fp16_workload_8cpp_source.html#l00017">RefConvertFp32ToFp16Workload::Execute()</a>, <a class="el" href="_ref_log_softmax_workload_8cpp_source.html#l00020">RefLogSoftmaxWorkload::Execute()</a>, <a class="el" href="_ref_activation_workload_8cpp_source.html#l00018">RefActivationWorkload::Execute()</a>, <a class="el" href="_ref_reshape_workload_8cpp_source.html#l00015">RefReshapeWorkload::Execute()</a>, <a class="el" href="_ref_resize_bilinear_workload_8cpp_source.html#l00020">RefResizeBilinearWorkload::Execute()</a>, <a class="el" href="_ref_resize_workload_8cpp_source.html#l00020">RefResizeWorkload::Execute()</a>, <a class="el" href="_ref_softmax_workload_8cpp_source.html#l00020">RefSoftmaxWorkload::Execute()</a>, <a class="el" href="_ref_space_to_batch_nd_workload_8cpp_source.html#l00015">RefSpaceToBatchNdWorkload::Execute()</a>, <a class="el" href="_ref_convert_fp16_to_fp32_workload_8cpp_source.html#l00016">RefConvertFp16ToFp32Workload::Execute()</a>, <a class="el" href="_ref_fake_quantization_float32_workload_8cpp_source.html#l00029">RefFakeQuantizationFloat32Workload::Execute()</a>, <a class="el" href="_ref_space_to_depth_workload_8cpp_source.html#l00015">RefSpaceToDepthWorkload::Execute()</a>, <a class="el" href="_sample_dynamic_addition_workload_8cpp_source.html#l00039">SampleDynamicAdditionWorkload::Execute()</a>, <a class="el" href="_ref_floor_workload_8cpp_source.html#l00016">RefFloorWorkload::Execute()</a>, <a class="el" href="_ref_arg_min_max_workload_8cpp_source.html#l00021">RefArgMinMaxWorkload::Execute()</a>, <a class="el" href="_ref_slice_workload_8cpp_source.html#l00016">RefSliceWorkload::Execute()</a>, <a class="el" href="_ref_prelu_workload_8cpp_source.html#l00021">RefPreluWorkload::Execute()</a>, <a class="el" href="_ref_batch_normalization_workload_8cpp_source.html#l00025">RefBatchNormalizationWorkload::Execute()</a>, <a class="el" href="_ref_batch_to_space_nd_workload_8cpp_source.html#l00014">RefBatchToSpaceNdWorkload::Execute()</a>, <a class="el" href="_ref_detection_post_process_workload_8cpp_source.html#l00021">RefDetectionPostProcessWorkload::Execute()</a>, <a class="el" href="_ref_dequantize_workload_8cpp_source.html#l00015">RefDequantizeWorkload::Execute()</a>, <a class="el" href="_ref_stack_workload_8cpp_source.html#l00021">RefStackWorkload::Execute()</a>, <a class="el" href="_ref_instance_normalization_workload_8cpp_source.html#l00021">RefInstanceNormalizationWorkload::Execute()</a>, <a class="el" href="_ref_l2_normalization_workload_8cpp_source.html#l00028">RefL2NormalizationWorkload::Execute()</a>, <a class="el" href="_ref_normalization_workload_8cpp_source.html#l00165">RefNormalizationWorkload::Execute()</a>, <a class="el" href="_ref_lstm_workload_8cpp_source.html#l00041">RefLstmWorkload::Execute()</a>, <a class="el" href="_ref_mean_workload_8cpp_source.html#l00021">RefMeanWorkload::Execute()</a>, <a class="el" href="_ref_pooling2d_workload_8cpp_source.html#l00016">RefPooling2dWorkload::Execute()</a>, <a class="el" href="_ref_elementwise_unary_workload_8cpp_source.html#l00041">RefElementwiseUnaryWorkload::Execute()</a>, <a class="el" href="_ref_comparison_workload_8cpp_source.html#l00039">RefComparisonWorkload::Execute()</a>, <a class="el" href="_ref_gather_workload_8cpp_source.html#l00016">RefGatherWorkload::Execute()</a>, <a class="el" href="_ref_permute_workload_8cpp_source.html#l00017">RefPermuteWorkload&lt; DataType &gt;::Execute()</a>, <a class="el" href="_ref_elementwise_workload_8cpp_source.html#l00041">RefElementwiseWorkload&lt; Functor, ParentDescriptor, DebugString &gt;::Execute()</a>, <a class="el" href="_ref_pad_workload_8cpp_source.html#l00021">RefPadWorkload&lt; DataType &gt;::Execute()</a>, <a class="el" href="_ref_debug_workload_8cpp_source.html#l00018">RefDebugWorkload&lt; DataType &gt;::Execute()</a>, <a class="el" href="_layer_8hpp_source.html#l00138">OutputSlot::GetNumConnections()</a>, <a class="el" href="_instance_norm_8cpp_source.html#l00018">InstanceNorm()</a>, <a class="el" href="_ref_quantize_workload_8cpp_source.html#l00037">RefQuantizeWorkload::PostAllocationConfigure()</a>, <a class="el" href="_ref_depthwise_convolution2d_workload_8cpp_source.html#l00035">RefDepthwiseConvolution2dWorkload::PostAllocationConfigure()</a>, <a class="el" href="_ref_convolution2d_workload_8cpp_source.html#l00033">RefConvolution2dWorkload::PostAllocationConfigure()</a>, <a class="el" href="_ref_comparison_workload_8cpp_source.html#l00027">RefComparisonWorkload::PostAllocationConfigure()</a>, <a class="el" href="_ref_elementwise_unary_workload_8cpp_source.html#l00031">RefElementwiseUnaryWorkload::PostAllocationConfigure()</a>, <a class="el" href="_ref_constant_workload_8cpp_source.html#l00023">RefConstantWorkload::PostAllocationConfigure()</a>, <a class="el" href="_ref_fully_connected_workload_8cpp_source.html#l00032">RefFullyConnectedWorkload::PostAllocationConfigure()</a>, <a class="el" href="_ref_transpose_convolution2d_workload_8cpp_source.html#l00036">RefTransposeConvolution2dWorkload::PostAllocationConfigure()</a>, <a class="el" href="_ref_elementwise_workload_8cpp_source.html#l00029">RefElementwiseWorkload&lt; Functor, ParentDescriptor, DebugString &gt;::PostAllocationConfigure()</a>, <a class="el" href="_prelu_impl_8cpp_source.html#l00013">PreluImpl()</a>, <a class="el" href="_splitter_8cpp_source.html#l00022">Split()</a>, <a class="el" href="_splitter_8hpp_source.html#l00017">Splitter()</a>, <a class="el" href="backends_2reference_2workloads_2_stack_8cpp_source.html#l00012">Stack()</a>, and <a class="el" href="_concat_layer_8cpp_source.html#l00244">ConcatLayer::ValidateTensorShapesFromInputs()</a>.</p>
<div class="fragment"><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;{</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; <span class="comment">// We know that reference workloads use RefTensorHandles for inputs and outputs</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; <span class="keyword">const</span> RefTensorHandle* refTensorHandle =</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; boost::polymorphic_downcast&lt;const RefTensorHandle*&gt;(tensorHandle);</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; <span class="keywordflow">return</span> refTensorHandle-&gt;GetTensorInfo();</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;}</div></div><!-- fragment -->
</div>
</div>
<a id="a6dac966f265381903c8ef4f392becced"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a6dac966f265381903c8ef4f392becced">&#9670;&nbsp;</a></span>GetUnaryOperationAsCString()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">constexpr char const* armnn::GetUnaryOperationAsCString </td>
<td>(</td>
<td class="paramtype"><a class="el" href="namespacearmnn.html#a1cfaa710db2a54673b21d2ea2da757c8">UnaryOperation</a>&#160;</td>
<td class="paramname"><em>operation</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_types_utils_8hpp_source.html#l00069">69</a> of file <a class="el" href="_types_utils_8hpp_source.html">TypesUtils.hpp</a>.</p>
<p class="reference">References <a class="el" href="namespacearmnn.html#a56297e0f7b215eea46c818cb7528d9eaa1e34af023adeb7d5f484f8eb4b9826b6">Abs</a>, <a class="el" href="namespacearmnn.html#a1cfaa710db2a54673b21d2ea2da757c8acad39a154bffb61175f674d6eefaf6d0">Exp</a>, <a class="el" href="namespacearmnn.html#a1cfaa710db2a54673b21d2ea2da757c8afb278fa5defd7e699fcbc930c3e76ccd">Neg</a>, <a class="el" href="namespacearmnn.html#a1cfaa710db2a54673b21d2ea2da757c8a09bb7f6e2118c85a6a55bd4bf2beeca4">Rsqrt</a>, and <a class="el" href="namespacearmnn.html#a56297e0f7b215eea46c818cb7528d9eaaae77f3ad25595e35b327334d89410054">Sqrt</a>.</p>
<p class="reference">Referenced by <a class="el" href="_ref_elementwise_unary_workload_8cpp_source.html#l00041">RefElementwiseUnaryWorkload::Execute()</a>.</p>
<div class="fragment"><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160;{</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; <span class="keywordflow">switch</span> (operation)</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; {</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; <span class="keywordflow">case</span> UnaryOperation::Abs: <span class="keywordflow">return</span> <span class="stringliteral">&quot;Abs&quot;</span>;</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; <span class="keywordflow">case</span> UnaryOperation::Exp: <span class="keywordflow">return</span> <span class="stringliteral">&quot;Exp&quot;</span>;</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; <span class="keywordflow">case</span> UnaryOperation::Sqrt: <span class="keywordflow">return</span> <span class="stringliteral">&quot;Sqrt&quot;</span>;</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; <span class="keywordflow">case</span> UnaryOperation::Rsqrt: <span class="keywordflow">return</span> <span class="stringliteral">&quot;Rsqrt&quot;</span>;</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; <span class="keywordflow">case</span> UnaryOperation::Neg: <span class="keywordflow">return</span> <span class="stringliteral">&quot;Neg&quot;</span>;</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; <span class="keywordflow">default</span>: <span class="keywordflow">return</span> <span class="stringliteral">&quot;Unknown&quot;</span>;</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; }</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160;}</div></div><!-- fragment -->
</div>
</div>
<a id="a36e8f52330a21eeab3cc7c4e030f3583"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a36e8f52330a21eeab3cc7c4e030f3583">&#9670;&nbsp;</a></span>GetUnpaddedTensorStrides()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classarmnn_1_1_tensor_shape.html">TensorShape</a> GetUnpaddedTensorStrides </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>tensorInfo</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_cpu_tensor_handle_8cpp_source.html#l00014">14</a> of file <a class="el" href="_cpu_tensor_handle_8cpp_source.html">CpuTensorHandle.cpp</a>.</p>
<p class="reference">References <a class="el" href="_tensor_8hpp_source.html#l00095">TensorInfo::GetDataType()</a>, <a class="el" href="_types_utils_8hpp_source.html#l00113">GetDataTypeSize()</a>, and <a class="el" href="_tensor_8hpp_source.html#l00088">TensorInfo::GetShape()</a>.</p>
<p class="reference">Referenced by <a class="el" href="_ref_tensor_handle_8hpp_source.html#l00040">RefTensorHandle::GetStrides()</a>, <a class="el" href="_sample_tensor_handle_8hpp_source.html#l00041">SampleTensorHandle::GetStrides()</a>, and <a class="el" href="_cpu_tensor_handle_8hpp_source.html#l00049">ConstCpuTensorHandle::GetStrides()</a>.</p>
<div class="fragment"><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;{</div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160; TensorShape shape(tensorInfo.GetShape());</div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160; <span class="keyword">auto</span> size = <a class="code" href="namespacearmnn.html#aa02b9e06fb20fa3c13da0427e6ee5ab2">GetDataTypeSize</a>(tensorInfo.GetDataType());</div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160; <span class="keyword">auto</span> runningSize = size;</div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160; std::vector&lt;unsigned int&gt; strides(shape.GetNumDimensions());</div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160; <span class="keyword">auto</span> lastIdx = shape.GetNumDimensions()-1;</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i=0; i &lt; lastIdx ; i++)</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160; {</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160; strides[lastIdx-i] = runningSize;</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160; runningSize *= shape[lastIdx-i];</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; }</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; strides[0] = runningSize;</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; <span class="keywordflow">return</span> TensorShape(shape.GetNumDimensions(), strides.data());</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_aa02b9e06fb20fa3c13da0427e6ee5ab2"><div class="ttname"><a href="namespacearmnn.html#aa02b9e06fb20fa3c13da0427e6ee5ab2">armnn::GetDataTypeSize</a></div><div class="ttdeci">constexpr unsigned int GetDataTypeSize(DataType dataType)</div><div class="ttdef"><b>Definition:</b> <a href="_types_utils_8hpp_source.html#l00113">TypesUtils.hpp:113</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a46747c3d0b99968be0b37d74bc9687dd"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a46747c3d0b99968be0b37d74bc9687dd">&#9670;&nbsp;</a></span>InitializeArmComputeClTensorData()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void armnn::InitializeArmComputeClTensorData </td>
<td>(</td>
<td class="paramtype">arm_compute::CLTensor &amp;&#160;</td>
<td class="paramname"><em>clTensor</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_const_cpu_tensor_handle.html">ConstCpuTensorHandle</a> *&#160;</td>
<td class="paramname"><em>handle</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_cl_workload_utils_8hpp_source.html#l00090">90</a> of file <a class="el" href="_cl_workload_utils_8hpp_source.html">ClWorkloadUtils.hpp</a>.</p>
<div class="fragment"><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160;{</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; BOOST_ASSERT(handle);</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160;</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; armcomputetensorutils::InitialiseArmComputeTensorEmpty(clTensor);</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; <span class="keywordflow">switch</span>(handle-&gt;GetTensorInfo().GetDataType())</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; {</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; <span class="keywordflow">case</span> DataType::Float16:</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; <a class="code" href="namespacearmnn.html#a73447f827b995cf90d4029151514b4ba">CopyArmComputeClTensorData</a>(clTensor, handle-&gt;GetConstTensor&lt;<a class="code" href="namespacearmnn.html#a0f38fa92b2468d5378258a2b074c1a31">armnn::Half</a>&gt;());</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; <span class="keywordflow">case</span> DataType::Float32:</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; <a class="code" href="namespacearmnn.html#a73447f827b995cf90d4029151514b4ba">CopyArmComputeClTensorData</a>(clTensor, handle-&gt;GetConstTensor&lt;<span class="keywordtype">float</span>&gt;());</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; <span class="keywordflow">case</span> DataType::QAsymmS8:</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; <span class="keywordflow">case</span> DataType::QAsymmU8:</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; <a class="code" href="namespacearmnn.html#a73447f827b995cf90d4029151514b4ba">CopyArmComputeClTensorData</a>(clTensor, handle-&gt;GetConstTensor&lt;uint8_t&gt;());</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; <a class="code" href="_deprecated_8hpp.html#ab66a241a0ed3ee89c866e777b035d0ed">ARMNN_NO_DEPRECATE_WARN_BEGIN</a></div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; <span class="keywordflow">case</span> DataType::QuantizedSymm8PerAxis:</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; <a class="code" href="_utils_8hpp.html#abbf421eb1186af0d505648ed2ea54a00">ARMNN_FALLTHROUGH</a>;</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; <span class="keywordflow">case</span> DataType::QSymmS8:</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; <a class="code" href="namespacearmnn.html#a73447f827b995cf90d4029151514b4ba">CopyArmComputeClTensorData</a>(clTensor, handle-&gt;GetConstTensor&lt;int8_t&gt;());</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; <a class="code" href="_deprecated_8hpp.html#ad762b11b48e5c1d1c1743f529485728a">ARMNN_NO_DEPRECATE_WARN_END</a></div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; <span class="keywordflow">case</span> DataType::Signed32:</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; <a class="code" href="namespacearmnn.html#a73447f827b995cf90d4029151514b4ba">CopyArmComputeClTensorData</a>(clTensor, handle-&gt;GetConstTensor&lt;int32_t&gt;());</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; <span class="keywordflow">default</span>:</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; BOOST_ASSERT_MSG(<span class="keyword">false</span>, <span class="stringliteral">&quot;Unexpected tensor type.&quot;</span>);</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; }</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160;};</div><div class="ttc" id="namespacearmnn_html_a0f38fa92b2468d5378258a2b074c1a31"><div class="ttname"><a href="namespacearmnn.html#a0f38fa92b2468d5378258a2b074c1a31">armnn::Half</a></div><div class="ttdeci">half_float::half Half</div><div class="ttdef"><b>Definition:</b> <a href="_half_8hpp_source.html#l00016">Half.hpp:16</a></div></div>
<div class="ttc" id="_utils_8hpp_html_abbf421eb1186af0d505648ed2ea54a00"><div class="ttname"><a href="_utils_8hpp.html#abbf421eb1186af0d505648ed2ea54a00">ARMNN_FALLTHROUGH</a></div><div class="ttdeci">#define ARMNN_FALLTHROUGH</div><div class="ttdef"><b>Definition:</b> <a href="_utils_8hpp_source.html#l00035">Utils.hpp:35</a></div></div>
<div class="ttc" id="_deprecated_8hpp_html_ab66a241a0ed3ee89c866e777b035d0ed"><div class="ttname"><a href="_deprecated_8hpp.html#ab66a241a0ed3ee89c866e777b035d0ed">ARMNN_NO_DEPRECATE_WARN_BEGIN</a></div><div class="ttdeci">#define ARMNN_NO_DEPRECATE_WARN_BEGIN</div><div class="ttdef"><b>Definition:</b> <a href="_deprecated_8hpp_source.html#l00033">Deprecated.hpp:33</a></div></div>
<div class="ttc" id="namespacearmnn_html_a73447f827b995cf90d4029151514b4ba"><div class="ttname"><a href="namespacearmnn.html#a73447f827b995cf90d4029151514b4ba">armnn::CopyArmComputeClTensorData</a></div><div class="ttdeci">void CopyArmComputeClTensorData(arm_compute::CLTensor &amp;dstTensor, const T *srcData)</div><div class="ttdef"><b>Definition:</b> <a href="_cl_workload_utils_8hpp_source.html#l00030">ClWorkloadUtils.hpp:30</a></div></div>
<div class="ttc" id="_deprecated_8hpp_html_ad762b11b48e5c1d1c1743f529485728a"><div class="ttname"><a href="_deprecated_8hpp.html#ad762b11b48e5c1d1c1743f529485728a">ARMNN_NO_DEPRECATE_WARN_END</a></div><div class="ttdeci">#define ARMNN_NO_DEPRECATE_WARN_END</div><div class="ttdef"><b>Definition:</b> <a href="_deprecated_8hpp_source.html#l00034">Deprecated.hpp:34</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="ad9aa8d49d42ada3f757290033af39857"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad9aa8d49d42ada3f757290033af39857">&#9670;&nbsp;</a></span>InitializeArmComputeTensorData()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void armnn::InitializeArmComputeTensorData </td>
<td>(</td>
<td class="paramtype">arm_compute::Tensor &amp;&#160;</td>
<td class="paramname"><em>tensor</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_const_cpu_tensor_handle.html">ConstCpuTensorHandle</a> *&#160;</td>
<td class="paramname"><em>handle</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_neon_workload_utils_8hpp_source.html#l00035">35</a> of file <a class="el" href="_neon_workload_utils_8hpp_source.html">NeonWorkloadUtils.hpp</a>.</p>
<p class="reference">References <a class="el" href="_utils_8hpp_source.html#l00035">ARMNN_FALLTHROUGH</a>, <a class="el" href="_deprecated_8hpp_source.html#l00033">ARMNN_NO_DEPRECATE_WARN_BEGIN</a>, <a class="el" href="_deprecated_8hpp_source.html#l00034">ARMNN_NO_DEPRECATE_WARN_END</a>, <a class="el" href="_neon_workload_utils_8hpp_source.html#l00029">CopyArmComputeTensorData()</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a26e6ed77470c6f2f830ecf874e6c0d55">Float16</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">Float32</a>, <a class="el" href="_cpu_tensor_handle_8hpp_source.html#l00031">ConstCpuTensorHandle::GetConstTensor()</a>, <a class="el" href="_tensor_8hpp_source.html#l00095">TensorInfo::GetDataType()</a>, <a class="el" href="_cpu_tensor_handle_8hpp_source.html#l00037">ConstCpuTensorHandle::GetTensorInfo()</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a0a3f57c876f5a230244c38e1453a8a6e">QAsymmU8</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a9945327825b115e93a3b89f4302e76db">QSymmS8</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a34346ec9593088efe3a29c0dad92166d">QuantizedSymm8PerAxis</a>, and <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6accedffbc6e5308e33d3843e8bdc0dad7">Signed32</a>.</p>
<div class="fragment"><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;{</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; BOOST_ASSERT(handle);</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; <span class="keywordflow">switch</span>(handle-&gt;GetTensorInfo().GetDataType())</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; {</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; <span class="keywordflow">case</span> DataType::Float16:</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; <a class="code" href="namespacearmnn.html#a1351e01f9fb983937caf79e353142b41">CopyArmComputeTensorData</a>(tensor, handle-&gt;GetConstTensor&lt;<a class="code" href="namespacearmnn.html#a0f38fa92b2468d5378258a2b074c1a31">armnn::Half</a>&gt;());</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <span class="keywordflow">case</span> DataType::Float32:</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; <a class="code" href="namespacearmnn.html#a1351e01f9fb983937caf79e353142b41">CopyArmComputeTensorData</a>(tensor, handle-&gt;GetConstTensor&lt;<span class="keywordtype">float</span>&gt;());</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; <span class="keywordflow">case</span> DataType::QAsymmU8:</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; <a class="code" href="namespacearmnn.html#a1351e01f9fb983937caf79e353142b41">CopyArmComputeTensorData</a>(tensor, handle-&gt;GetConstTensor&lt;uint8_t&gt;());</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <a class="code" href="_deprecated_8hpp.html#ab66a241a0ed3ee89c866e777b035d0ed">ARMNN_NO_DEPRECATE_WARN_BEGIN</a></div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; <span class="keywordflow">case</span> DataType::QuantizedSymm8PerAxis:</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; <a class="code" href="_utils_8hpp.html#abbf421eb1186af0d505648ed2ea54a00">ARMNN_FALLTHROUGH</a>;</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; <span class="keywordflow">case</span> DataType::QSymmS8:</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; <a class="code" href="namespacearmnn.html#a1351e01f9fb983937caf79e353142b41">CopyArmComputeTensorData</a>(tensor, handle-&gt;GetConstTensor&lt;int8_t&gt;());</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; <a class="code" href="_deprecated_8hpp.html#ad762b11b48e5c1d1c1743f529485728a">ARMNN_NO_DEPRECATE_WARN_END</a></div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; <span class="keywordflow">case</span> DataType::Signed32:</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; <a class="code" href="namespacearmnn.html#a1351e01f9fb983937caf79e353142b41">CopyArmComputeTensorData</a>(tensor, handle-&gt;GetConstTensor&lt;int32_t&gt;());</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; <span class="keywordflow">default</span>:</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; BOOST_ASSERT_MSG(<span class="keyword">false</span>, <span class="stringliteral">&quot;Unexpected tensor type.&quot;</span>);</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; }</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160;};</div><div class="ttc" id="namespacearmnn_html_a0f38fa92b2468d5378258a2b074c1a31"><div class="ttname"><a href="namespacearmnn.html#a0f38fa92b2468d5378258a2b074c1a31">armnn::Half</a></div><div class="ttdeci">half_float::half Half</div><div class="ttdef"><b>Definition:</b> <a href="_half_8hpp_source.html#l00016">Half.hpp:16</a></div></div>
<div class="ttc" id="_utils_8hpp_html_abbf421eb1186af0d505648ed2ea54a00"><div class="ttname"><a href="_utils_8hpp.html#abbf421eb1186af0d505648ed2ea54a00">ARMNN_FALLTHROUGH</a></div><div class="ttdeci">#define ARMNN_FALLTHROUGH</div><div class="ttdef"><b>Definition:</b> <a href="_utils_8hpp_source.html#l00035">Utils.hpp:35</a></div></div>
<div class="ttc" id="_deprecated_8hpp_html_ab66a241a0ed3ee89c866e777b035d0ed"><div class="ttname"><a href="_deprecated_8hpp.html#ab66a241a0ed3ee89c866e777b035d0ed">ARMNN_NO_DEPRECATE_WARN_BEGIN</a></div><div class="ttdeci">#define ARMNN_NO_DEPRECATE_WARN_BEGIN</div><div class="ttdef"><b>Definition:</b> <a href="_deprecated_8hpp_source.html#l00033">Deprecated.hpp:33</a></div></div>
<div class="ttc" id="namespacearmnn_html_a1351e01f9fb983937caf79e353142b41"><div class="ttname"><a href="namespacearmnn.html#a1351e01f9fb983937caf79e353142b41">armnn::CopyArmComputeTensorData</a></div><div class="ttdeci">void CopyArmComputeTensorData(arm_compute::Tensor &amp;dstTensor, const T *srcData)</div><div class="ttdef"><b>Definition:</b> <a href="_neon_workload_utils_8hpp_source.html#l00029">NeonWorkloadUtils.hpp:29</a></div></div>
<div class="ttc" id="_deprecated_8hpp_html_ad762b11b48e5c1d1c1743f529485728a"><div class="ttname"><a href="_deprecated_8hpp.html#ad762b11b48e5c1d1c1743f529485728a">ARMNN_NO_DEPRECATE_WARN_END</a></div><div class="ttdeci">#define ARMNN_NO_DEPRECATE_WARN_END</div><div class="ttdef"><b>Definition:</b> <a href="_deprecated_8hpp_source.html#l00034">Deprecated.hpp:34</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="ad31c56533e4f9f9f51719599fbfcf7bb"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad31c56533e4f9f9f51719599fbfcf7bb">&#9670;&nbsp;</a></span>InsertConvertFp16ToFp32LayersBefore()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">std::vector&lt; <a class="el" href="classarmnn_1_1_convert_fp16_to_fp32_layer.html">ConvertFp16ToFp32Layer</a> * &gt; InsertConvertFp16ToFp32LayersBefore </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classarmnn_1_1_graph.html">Graph</a> &amp;&#160;</td>
<td class="paramname"><em>graph</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classarmnn_1_1_layer.html">Layer</a> &amp;&#160;</td>
<td class="paramname"><em>layer</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">bool&#160;</td>
<td class="paramname"><em>expectCorrectInputType</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_network_utils_8cpp_source.html#l00040">40</a> of file <a class="el" href="_network_utils_8cpp_source.html">NetworkUtils.cpp</a>.</p>
<p class="reference">References <a class="el" href="_layer_8hpp_source.html#l00235">Layer::BeginInputSlots()</a>, <a class="el" href="_layer_8hpp_source.html#l00236">Layer::EndInputSlots()</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a26e6ed77470c6f2f830ecf874e6c0d55">Float16</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">Float32</a>, <a class="el" href="_layer_8hpp_source.html#l00055">InputSlot::GetConnectedOutputSlot()</a>, <a class="el" href="_tensor_8hpp_source.html#l00095">TensorInfo::GetDataType()</a>, <a class="el" href="_layer_8hpp_source.html#l00310">Layer::GetInputSlot()</a>, <a class="el" href="_layer_8hpp_source.html#l00305">Layer::GetName()</a>, <a class="el" href="_layer_8hpp_source.html#l00307">Layer::GetNumInputSlots()</a>, <a class="el" href="_layer_8hpp_source.html#l00312">Layer::GetOutputSlot()</a>, <a class="el" href="_layer_8cpp_source.html#l00063">OutputSlot::GetTensorInfo()</a>, <a class="el" href="_graph_8hpp_source.html#l00409">Graph::InsertNewLayer()</a>, <a class="el" href="_tensor_8hpp_source.html#l00096">TensorInfo::SetDataType()</a>, and <a class="el" href="_layer_8cpp_source.html#l00058">OutputSlot::SetTensorInfo()</a>.</p>
<p class="reference">Referenced by <a class="el" href="_network_8cpp_source.html#l00133">AssignBackends()</a>, <a class="el" href="_optimizer_tests_8cpp_source.html#l00156">BOOST_AUTO_TEST_CASE()</a>, and <a class="el" href="_convert_fp32_network_to_fp16_8hpp_source.html#l00018">ConvertFp32NetworkToFp16Impl::Run()</a>.</p>
<div class="fragment"><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;{</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; std::vector&lt;ConvertFp16ToFp32Layer*&gt; convertLayers;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; convertLayers.reserve(layer.GetNumInputSlots());</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; <span class="comment">// Insert a ConvertFp16ToFp32Layer before each input slot</span></div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span>&amp;&amp; inputSlot = layer.BeginInputSlots(); inputSlot != layer.EndInputSlots(); ++inputSlot)</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; {</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; <span class="keywordtype">bool</span> allowInsert = <span class="keyword">true</span>;</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <span class="keywordflow">if</span> (expectCorrectInputType)</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; {</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; <span class="comment">// Only insert ConvertFp16ToFp32Layer before FP16 input slots</span></div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; OutputSlot* connectedOutputSlot = inputSlot-&gt;GetConnectedOutputSlot();</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; allowInsert =</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; connectedOutputSlot &amp;&amp; connectedOutputSlot-&gt;GetTensorInfo().GetDataType() == DataType::Float16;</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; }</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160;</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; <span class="keywordflow">if</span> (allowInsert)</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; {</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; <span class="keyword">const</span> std::string name =</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; std::string(<span class="stringliteral">&quot;convert_fp16_to_fp32-&quot;</span> + std::to_string(inputSlot-&gt;GetSlotIndex()) + <span class="stringliteral">&quot;-&quot;</span>) +</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; layer.GetName();</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; ConvertFp16ToFp32Layer* convertLayer =</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; graph.InsertNewLayer&lt;ConvertFp16ToFp32Layer&gt;(*inputSlot, name.c_str());</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160;</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; TensorInfo convertInfo = convertLayer-&gt;GetInputSlot(0).GetConnectedOutputSlot()-&gt;GetTensorInfo();</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; convertInfo.SetDataType(DataType::Float32);</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160;</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; convertLayer-&gt;GetOutputSlot().SetTensorInfo(convertInfo);</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160;</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; convertLayers.emplace_back(convertLayer);</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; }</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; }</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160;</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; <span class="keywordflow">return</span> convertLayers;</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160;}</div></div><!-- fragment -->
</div>
</div>
<a id="abf625e50a5eaeafce5b39580dc95a9d3"></a>
<h2 class="memtitle"><span class="permalink"><a href="#abf625e50a5eaeafce5b39580dc95a9d3">&#9670;&nbsp;</a></span>InsertConvertFp32ToFp16LayersAfter()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">std::vector&lt; <a class="el" href="classarmnn_1_1_convert_fp32_to_fp16_layer.html">ConvertFp32ToFp16Layer</a> * &gt; InsertConvertFp32ToFp16LayersAfter </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classarmnn_1_1_graph.html">Graph</a> &amp;&#160;</td>
<td class="paramname"><em>graph</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classarmnn_1_1_layer.html">Layer</a> &amp;&#160;</td>
<td class="paramname"><em>layer</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_network_utils_8cpp_source.html#l00079">79</a> of file <a class="el" href="_network_utils_8cpp_source.html">NetworkUtils.cpp</a>.</p>
<p class="reference">References <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a26e6ed77470c6f2f830ecf874e6c0d55">Float16</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">Float32</a>, <a class="el" href="_layer_8hpp_source.html#l00055">InputSlot::GetConnectedOutputSlot()</a>, <a class="el" href="_tensor_8hpp_source.html#l00095">TensorInfo::GetDataType()</a>, <a class="el" href="_layer_8hpp_source.html#l00310">Layer::GetInputSlot()</a>, <a class="el" href="_layer_8hpp_source.html#l00305">Layer::GetName()</a>, <a class="el" href="_layer_8hpp_source.html#l00308">Layer::GetNumOutputSlots()</a>, <a class="el" href="_layer_8hpp_source.html#l00312">Layer::GetOutputSlot()</a>, <a class="el" href="_layer_8cpp_source.html#l00063">OutputSlot::GetTensorInfo()</a>, <a class="el" href="_graph_8hpp_source.html#l00409">Graph::InsertNewLayer()</a>, <a class="el" href="_tensor_8hpp_source.html#l00096">TensorInfo::SetDataType()</a>, and <a class="el" href="_layer_8cpp_source.html#l00058">OutputSlot::SetTensorInfo()</a>.</p>
<p class="reference">Referenced by <a class="el" href="_network_8cpp_source.html#l00133">AssignBackends()</a>, <a class="el" href="_optimizer_tests_8cpp_source.html#l00156">BOOST_AUTO_TEST_CASE()</a>, and <a class="el" href="_convert_fp32_network_to_fp16_8hpp_source.html#l00018">ConvertFp32NetworkToFp16Impl::Run()</a>.</p>
<div class="fragment"><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160;{</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> numOutputSlots = layer.GetNumOutputSlots();</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160;</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; std::vector&lt;ConvertFp32ToFp16Layer*&gt; convertLayers;</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; convertLayers.reserve(numOutputSlots);</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160;</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; <span class="comment">// Update FP16 output slots to FP32 on current layer</span></div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; ChangeOutputFp16ToFp32(layer);</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160;</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; <span class="comment">// Insert a ConvertFp32ToFp16Layer after each FP32 output slot</span></div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> slotIndex = 0u; slotIndex &lt; numOutputSlots; ++slotIndex)</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; {</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; OutputSlot&amp; outputSlot = layer.GetOutputSlot(slotIndex);</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; <span class="keywordflow">if</span>(outputSlot.GetTensorInfo().GetDataType() == DataType::Float32)</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; {</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; <span class="keyword">const</span> std::string name =</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; std::string(<span class="stringliteral">&quot;convert_fp32_to_fp16-&quot;</span> + std::to_string(slotIndex) + <span class="stringliteral">&quot;-&quot;</span>) + layer.GetName();</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; ConvertFp32ToFp16Layer* convertLayer =</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; graph.InsertNewLayer&lt;ConvertFp32ToFp16Layer&gt;(outputSlot, name.c_str());</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160;</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; TensorInfo convertInfo = convertLayer-&gt;GetInputSlot(0).GetConnectedOutputSlot()-&gt;GetTensorInfo();</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; convertInfo.SetDataType(DataType::Float16);</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160;</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; convertLayer-&gt;GetOutputSlot().SetTensorInfo(convertInfo);</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160;</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; convertLayers.emplace_back(convertLayer);</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; }</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; }</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160;</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; <span class="keywordflow">return</span> convertLayers;</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160;}</div></div><!-- fragment -->
</div>
</div>
<a id="a2616ffdae2db993af5c08019fb61860a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a2616ffdae2db993af5c08019fb61860a">&#9670;&nbsp;</a></span>InsertDebugLayerAfter()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">std::vector&lt; <a class="el" href="classarmnn_1_1_debug_layer.html">DebugLayer</a> * &gt; InsertDebugLayerAfter </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classarmnn_1_1_graph.html">Graph</a> &amp;&#160;</td>
<td class="paramname"><em>graph</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classarmnn_1_1_layer.html">Layer</a> &amp;&#160;</td>
<td class="paramname"><em>layer</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_network_utils_8cpp_source.html#l00112">112</a> of file <a class="el" href="_network_utils_8cpp_source.html">NetworkUtils.cpp</a>.</p>
<p class="reference">References <a class="el" href="_layer_8hpp_source.html#l00239">Layer::BeginOutputSlots()</a>, <a class="el" href="namespacearmnn.html#ae2f04a162585c0a5222a537efd5456aea83c2c4e9b658ccafbcbe6309c5d84c64">CpuRef</a>, <a class="el" href="_layer_8hpp_source.html#l00240">Layer::EndOutputSlots()</a>, <a class="el" href="_layer_8hpp_source.html#l00055">InputSlot::GetConnectedOutputSlot()</a>, <a class="el" href="_layer_8hpp_source.html#l00310">Layer::GetInputSlot()</a>, <a class="el" href="_layer_8hpp_source.html#l00216">Layer::GetNameStr()</a>, <a class="el" href="_layer_8hpp_source.html#l00308">Layer::GetNumOutputSlots()</a>, <a class="el" href="_layer_8hpp_source.html#l00312">Layer::GetOutputSlot()</a>, <a class="el" href="_layer_8cpp_source.html#l00063">OutputSlot::GetTensorInfo()</a>, <a class="el" href="_graph_8hpp_source.html#l00409">Graph::InsertNewLayer()</a>, <a class="el" href="_layer_8hpp_source.html#l00264">Layer::SetBackendId()</a>, and <a class="el" href="_layer_8cpp_source.html#l00058">OutputSlot::SetTensorInfo()</a>.</p>
<p class="reference">Referenced by <a class="el" href="_dynamic_quantization_visitor_8cpp_source.html#l00050">DynamicQuantizationVisitor::FinishVisit()</a>, and <a class="el" href="_add_debug_8hpp_source.html#l00019">AddDebugImpl::Run()</a>.</p>
<div class="fragment"><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160;{</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; std::vector&lt;DebugLayer*&gt; debugLayers;</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; debugLayers.reserve(layer.GetNumOutputSlots());</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160;</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; <span class="comment">// Connect a DebugLayer to each output slot of the layer</span></div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span> outputSlot = layer.BeginOutputSlots(); outputSlot != layer.EndOutputSlots(); ++outputSlot)</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; {</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; <span class="keyword">const</span> std::string debugName = std::string(<span class="stringliteral">&quot;DebugLayerAfter&quot;</span>) + layer.GetNameStr();</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160;</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; DebugLayer* debugLayer =</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; graph.InsertNewLayer&lt;DebugLayer&gt;(*outputSlot, debugName.c_str());</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160;</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; <span class="comment">// Sets output tensor info for the debug layer.</span></div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; BOOST_ASSERT(debugLayer-&gt;GetInputSlot(0).GetConnectedOutputSlot() == &amp;(*outputSlot));</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; TensorInfo debugInfo = debugLayer-&gt;GetInputSlot(0).GetConnectedOutputSlot()-&gt;GetTensorInfo();</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160;</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; debugLayer-&gt;GetOutputSlot().SetTensorInfo(debugInfo);</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160;</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; <span class="comment">// NOTE: It is OK to do this because DebugLayer is only supported on CpuRef</span></div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; debugLayer-&gt;SetBackendId(Compute::CpuRef);</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160;</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; debugLayers.emplace_back(debugLayer);</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; }</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160;</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; <span class="keywordflow">return</span> debugLayers;</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160;}</div></div><!-- fragment -->
</div>
</div>
<a id="ac3d98d09064176b259e8a9038b06699d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ac3d98d09064176b259e8a9038b06699d">&#9670;&nbsp;</a></span>InstanceNorm()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void InstanceNorm </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="structarmnn_1_1_instance_normalization_queue_descriptor.html">InstanceNormalizationQueueDescriptor</a> &amp;&#160;</td>
<td class="paramname"><em>data</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classarmnn_1_1_decoder.html">Decoder</a>&lt; float &gt; &amp;&#160;</td>
<td class="paramname"><em>inputDecoder</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classarmnn_1_1_encoder.html">Encoder</a>&lt; float &gt; &amp;&#160;</td>
<td class="paramname"><em>outputEncoder</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_instance_norm_8cpp_source.html#l00018">18</a> of file <a class="el" href="_instance_norm_8cpp_source.html">InstanceNorm.cpp</a>.</p>
<p class="reference">References <a class="el" href="classarmnn_1_1_decoder.html#ac729108381e2340bea12877971713ecb">Decoder&lt; IType &gt;::Get()</a>, <a class="el" href="_data_layout_indexed_8hpp_source.html#l00023">DataLayoutIndexed::GetChannelsIndex()</a>, <a class="el" href="_data_layout_indexed_8hpp_source.html#l00024">DataLayoutIndexed::GetHeightIndex()</a>, <a class="el" href="_data_layout_indexed_8hpp_source.html#l00027">DataLayoutIndexed::GetIndex()</a>, <a class="el" href="_tensor_8hpp_source.html#l00088">TensorInfo::GetShape()</a>, <a class="el" href="_ref_workload_utils_8hpp_source.html#l00025">GetTensorInfo()</a>, <a class="el" href="_data_layout_indexed_8hpp_source.html#l00025">DataLayoutIndexed::GetWidthIndex()</a>, <a class="el" href="_descriptors_8hpp_source.html#l00649">InstanceNormalizationDescriptor::m_Beta</a>, <a class="el" href="_descriptors_8hpp_source.html#l00653">InstanceNormalizationDescriptor::m_DataLayout</a>, <a class="el" href="_descriptors_8hpp_source.html#l00651">InstanceNormalizationDescriptor::m_Eps</a>, <a class="el" href="_descriptors_8hpp_source.html#l00647">InstanceNormalizationDescriptor::m_Gamma</a>, <a class="el" href="_workload_data_8hpp_source.html#l00030">QueueDescriptor::m_Inputs</a>, <a class="el" href="_workload_data_8hpp_source.html#l00049">QueueDescriptorWithParameters&lt; LayerDescriptor &gt;::m_Parameters</a>, and <a class="el" href="classarmnn_1_1_encoder.html#ae3b62b846a9c239f332830b9e36030eb">Encoder&lt; IType &gt;::Set()</a>.</p>
<p class="reference">Referenced by <a class="el" href="_ref_instance_normalization_workload_8cpp_source.html#l00021">RefInstanceNormalizationWorkload::Execute()</a>.</p>
<div class="fragment"><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;{</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160; <span class="keyword">const</span> TensorInfo&amp; inputInfo = <a class="code" href="namespacearmnn_utils.html#acee63cd08da47910fc166a1990988fa8">GetTensorInfo</a>(data.m_Inputs[0]);</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160; <span class="keyword">const</span> TensorShape inputShape = inputInfo.GetShape();</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; <a class="code" href="classarmnn_utils_1_1_data_layout_indexed.html">armnnUtils::DataLayoutIndexed</a> dataLayout(data.m_Parameters.m_DataLayout);</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> inputBatches = inputShape[0];</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> inputHeight = inputShape[dataLayout.GetHeightIndex()];</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> inputWidth = inputShape[dataLayout.GetWidthIndex()];</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> inputChannels = inputShape[dataLayout.GetChannelsIndex()];</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; <span class="keywordtype">float</span> beta = data.m_Parameters.m_Beta;</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; <span class="keywordtype">float</span> eps = data.m_Parameters.m_Eps;</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; <span class="keywordtype">float</span> gamma = data.m_Parameters.m_Gamma;</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> n = 0; n &lt; inputBatches; ++n)</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; {</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> c = 0; c &lt; inputChannels; ++c)</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; {</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; <span class="keywordtype">float</span> mean = 0, var = 0;</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; <span class="comment">//Calculate Mean</span></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> h = 0; h &lt; inputHeight; h++)</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; {</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> w = 0; w &lt; inputWidth; w++)</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; {</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> index = dataLayout.GetIndex(inputShape, n, c, h, w);</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; inputDecoder[index];</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; <span class="keywordtype">float</span> value = inputDecoder.<a class="code" href="classarmnn_1_1_decoder.html#ac729108381e2340bea12877971713ecb">Get</a>();</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; mean += value;</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; }</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; }</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; mean /= <span class="keyword">static_cast&lt;</span><span class="keywordtype">float</span><span class="keyword">&gt;</span>(inputHeight * inputWidth);</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160;</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; <span class="comment">//Calculate Variance</span></div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> h = 0; h &lt; inputHeight; h++)</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; {</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> w = 0; w &lt; inputWidth; w++)</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; {</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> index = dataLayout.GetIndex(inputShape, n, c, h, w);</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160;</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; inputDecoder[index];</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; <span class="keywordtype">float</span> value = inputDecoder.<a class="code" href="classarmnn_1_1_decoder.html#ac729108381e2340bea12877971713ecb">Get</a>();</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; var += (value - mean) * (value - mean);</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; }</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; }</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; var /= <span class="keyword">static_cast&lt;</span><span class="keywordtype">float</span><span class="keyword">&gt;</span>(inputHeight * inputWidth);</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160;</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; <span class="comment">// Apply Instance Normalisation</span></div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> h = 0; h &lt; inputHeight; ++h)</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; {</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> w = 0; w &lt; inputWidth; ++w)</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; {</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> index = dataLayout.GetIndex(inputShape, n, c, h, w);</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; inputDecoder[index];</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; outputEncoder[index];</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; outputEncoder.<a class="code" href="classarmnn_1_1_encoder.html#ae3b62b846a9c239f332830b9e36030eb">Set</a>((inputDecoder.<a class="code" href="classarmnn_1_1_decoder.html#ac729108381e2340bea12877971713ecb">Get</a>() - mean) * gamma / std::sqrt ( var + eps) + beta);</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; }</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160;</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; }</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; }</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; }</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160;}</div><div class="ttc" id="namespacearmnn_utils_html_acee63cd08da47910fc166a1990988fa8"><div class="ttname"><a href="namespacearmnn_utils.html#acee63cd08da47910fc166a1990988fa8">armnnUtils::GetTensorInfo</a></div><div class="ttdeci">armnn::TensorInfo GetTensorInfo(unsigned int numberOfBatches, unsigned int numberOfChannels, unsigned int height, unsigned int width, const armnn::DataLayout dataLayout, const armnn::DataType dataType)</div><div class="ttdef"><b>Definition:</b> <a href="_tensor_utils_8cpp_source.html#l00038">TensorUtils.cpp:38</a></div></div>
<div class="ttc" id="classarmnn_1_1_decoder_html_ac729108381e2340bea12877971713ecb"><div class="ttname"><a href="classarmnn_1_1_decoder.html#ac729108381e2340bea12877971713ecb">armnn::Decoder::Get</a></div><div class="ttdeci">virtual IType Get() const =0</div></div>
<div class="ttc" id="classarmnn_utils_1_1_data_layout_indexed_html"><div class="ttname"><a href="classarmnn_utils_1_1_data_layout_indexed.html">armnnUtils::DataLayoutIndexed</a></div><div class="ttdef"><b>Definition:</b> <a href="_data_layout_indexed_8hpp_source.html#l00017">DataLayoutIndexed.hpp:17</a></div></div>
<div class="ttc" id="classarmnn_1_1_encoder_html_ae3b62b846a9c239f332830b9e36030eb"><div class="ttname"><a href="classarmnn_1_1_encoder.html#ae3b62b846a9c239f332830b9e36030eb">armnn::Encoder::Set</a></div><div class="ttdeci">virtual void Set(IType right)=0</div></div>
</div><!-- fragment -->
</div>
</div>
<a id="abf6aad7bc221f8ad22b4d99cd020373b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#abf6aad7bc221f8ad22b4d99cd020373b">&#9670;&nbsp;</a></span>IntersectionOverUnion()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">float IntersectionOverUnion </td>
<td>(</td>
<td class="paramtype">const float *&#160;</td>
<td class="paramname"><em>boxI</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const float *&#160;</td>
<td class="paramname"><em>boxJ</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="backends_2reference_2workloads_2_detection_post_process_8cpp_source.html#l00031">31</a> of file <a class="el" href="backends_2reference_2workloads_2_detection_post_process_8cpp_source.html">DetectionPostProcess.cpp</a>.</p>
<p class="reference">Referenced by <a class="el" href="_ref_detection_post_process_tests_8cpp_source.html#l00042">BOOST_AUTO_TEST_CASE()</a>, and <a class="el" href="backends_2reference_2workloads_2_detection_post_process_8cpp_source.html#l00050">NonMaxSuppression()</a>.</p>
<div class="fragment"><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;{</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; <span class="comment">// Box-corner format: ymin, xmin, ymax, xmax.</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> yMin = 0;</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> xMin = 1;</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> yMax = 2;</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> xMax = 3;</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; <span class="keywordtype">float</span> areaI = (boxI[yMax] - boxI[yMin]) * (boxI[xMax] - boxI[xMin]);</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; <span class="keywordtype">float</span> areaJ = (boxJ[yMax] - boxJ[yMin]) * (boxJ[xMax] - boxJ[xMin]);</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; <span class="keywordtype">float</span> yMinIntersection = std::max(boxI[yMin], boxJ[yMin]);</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; <span class="keywordtype">float</span> xMinIntersection = std::max(boxI[xMin], boxJ[xMin]);</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; <span class="keywordtype">float</span> yMaxIntersection = std::min(boxI[yMax], boxJ[yMax]);</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; <span class="keywordtype">float</span> xMaxIntersection = std::min(boxI[xMax], boxJ[xMax]);</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <span class="keywordtype">float</span> areaIntersection = std::max(yMaxIntersection - yMinIntersection, 0.0f) *</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; std::max(xMaxIntersection - xMinIntersection, 0.0f);</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; <span class="keywordtype">float</span> areaUnion = areaI + areaJ - areaIntersection;</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; <span class="keywordflow">return</span> areaIntersection / areaUnion;</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;}</div></div><!-- fragment -->
</div>
</div>
<a id="a58bfb9626d373249745d78b95543116e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a58bfb9626d373249745d78b95543116e">&#9670;&nbsp;</a></span>IsActivationSupported()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">bool IsActivationSupported </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a> &amp;&#160;</td>
<td class="paramname"><em>backend</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>input</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>output</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="structarmnn_1_1_activation_descriptor.html">ActivationDescriptor</a> &amp;&#160;</td>
<td class="paramname"><em>descriptor</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">char *&#160;</td>
<td class="paramname"><em>reasonIfUnsupported</em> = <code>nullptr</code>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t&#160;</td>
<td class="paramname"><em>reasonIfUnsupportedMaxLength</em> = <code>1024</code>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.html" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.html">ILayerSupport</a> interfaces. </p>
<p class="definition">Definition at line <a class="el" href="_layer_support_8cpp_source.html#l00069">69</a> of file <a class="el" href="_layer_support_8cpp_source.html">LayerSupport.cpp</a>.</p>
<p class="reference">References <a class="el" href="_layer_support_8cpp_source.html#l00038">FORWARD_LAYER_SUPPORT_FUNC</a>.</p>
<div class="fragment"><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160;{</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; <a class="code" href="_layer_support_8cpp.html#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a>(backend, <a class="code" href="namespacearmnn.html#a58bfb9626d373249745d78b95543116e">IsActivationSupported</a>, input, output, descriptor);</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a58bfb9626d373249745d78b95543116e"><div class="ttname"><a href="namespacearmnn.html#a58bfb9626d373249745d78b95543116e">armnn::IsActivationSupported</a></div><div class="ttdeci">bool IsActivationSupported(const BackendId &amp;backend, const TensorInfo &amp;input, const TensorInfo &amp;output, const ActivationDescriptor &amp;descriptor, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</div><div class="ttdoc">Deprecated in favor of IBackend and ILayerSupport interfaces. </div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.html#l00069">LayerSupport.cpp:69</a></div></div>
<div class="ttc" id="_layer_support_8cpp_html_aaed0ec9df6d4157960512266e8b74b26"><div class="ttname"><a href="_layer_support_8cpp.html#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a></div><div class="ttdeci">#define FORWARD_LAYER_SUPPORT_FUNC(backendId, func,...)</div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.html#l00038">LayerSupport.cpp:38</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a1b01771dc5a057d09f8cd82492154a1f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a1b01771dc5a057d09f8cd82492154a1f">&#9670;&nbsp;</a></span>IsAdditionSupported()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">bool IsAdditionSupported </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a> &amp;&#160;</td>
<td class="paramname"><em>backend</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>input0</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>input1</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>output</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">char *&#160;</td>
<td class="paramname"><em>reasonIfUnsupported</em> = <code>nullptr</code>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t&#160;</td>
<td class="paramname"><em>reasonIfUnsupportedMaxLength</em> = <code>1024</code>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.html" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.html">ILayerSupport</a> interfaces. </p>
<p class="definition">Definition at line <a class="el" href="_layer_support_8cpp_source.html#l00079">79</a> of file <a class="el" href="_layer_support_8cpp_source.html">LayerSupport.cpp</a>.</p>
<p class="reference">References <a class="el" href="_layer_support_8cpp_source.html#l00064">CheckTensorDataTypesEqual()</a>, and <a class="el" href="_layer_support_8cpp_source.html#l00038">FORWARD_LAYER_SUPPORT_FUNC</a>.</p>
<div class="fragment"><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160;{</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; <span class="keywordflow">if</span>(!<a class="code" href="namespacearmnn.html#ac7cce6c8c3c53b2feeba6548fc3fb00c">CheckTensorDataTypesEqual</a>(input0, input1))</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; {</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; }</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160;</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; <a class="code" href="_layer_support_8cpp.html#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a>(backend, <a class="code" href="namespacearmnn.html#a1b01771dc5a057d09f8cd82492154a1f">IsAdditionSupported</a>, input0, input1, output);</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_ac7cce6c8c3c53b2feeba6548fc3fb00c"><div class="ttname"><a href="namespacearmnn.html#ac7cce6c8c3c53b2feeba6548fc3fb00c">armnn::CheckTensorDataTypesEqual</a></div><div class="ttdeci">bool CheckTensorDataTypesEqual(const TensorInfo &amp;input0, const TensorInfo &amp;input1)</div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.html#l00064">LayerSupport.cpp:64</a></div></div>
<div class="ttc" id="namespacearmnn_html_a1b01771dc5a057d09f8cd82492154a1f"><div class="ttname"><a href="namespacearmnn.html#a1b01771dc5a057d09f8cd82492154a1f">armnn::IsAdditionSupported</a></div><div class="ttdeci">bool IsAdditionSupported(const BackendId &amp;backend, const TensorInfo &amp;input0, const TensorInfo &amp;input1, const TensorInfo &amp;output, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</div><div class="ttdoc">Deprecated in favor of IBackend and ILayerSupport interfaces. </div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.html#l00079">LayerSupport.cpp:79</a></div></div>
<div class="ttc" id="_layer_support_8cpp_html_aaed0ec9df6d4157960512266e8b74b26"><div class="ttname"><a href="_layer_support_8cpp.html#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a></div><div class="ttdeci">#define FORWARD_LAYER_SUPPORT_FUNC(backendId, func,...)</div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.html#l00038">LayerSupport.cpp:38</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="aa8d5d17d1edd51d899fe699eb6156b58"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa8d5d17d1edd51d899fe699eb6156b58">&#9670;&nbsp;</a></span>IsArgMinMaxSupported()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">bool armnn::IsArgMinMaxSupported </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a> &amp;&#160;</td>
<td class="paramname"><em>backend</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>input</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>output</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="structarmnn_1_1_arg_min_max_descriptor.html">ArgMinMaxDescriptor</a> &amp;&#160;</td>
<td class="paramname"><em>descriptor</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">char *&#160;</td>
<td class="paramname"><em>reasonIfUnsupported</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t&#160;</td>
<td class="paramname"><em>reasonIfUnsupportedMaxLength</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_layer_support_8cpp_source.html#l00094">94</a> of file <a class="el" href="_layer_support_8cpp_source.html">LayerSupport.cpp</a>.</p>
<p class="reference">References <a class="el" href="_layer_support_8cpp_source.html#l00038">FORWARD_LAYER_SUPPORT_FUNC</a>.</p>
<div class="fragment"><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160;{</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; <a class="code" href="_layer_support_8cpp.html#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a>(backend, <a class="code" href="namespacearmnn.html#aa8d5d17d1edd51d899fe699eb6156b58">IsArgMinMaxSupported</a>, input, output, descriptor);</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160;}</div><div class="ttc" id="_layer_support_8cpp_html_aaed0ec9df6d4157960512266e8b74b26"><div class="ttname"><a href="_layer_support_8cpp.html#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a></div><div class="ttdeci">#define FORWARD_LAYER_SUPPORT_FUNC(backendId, func,...)</div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.html#l00038">LayerSupport.cpp:38</a></div></div>
<div class="ttc" id="namespacearmnn_html_aa8d5d17d1edd51d899fe699eb6156b58"><div class="ttname"><a href="namespacearmnn.html#aa8d5d17d1edd51d899fe699eb6156b58">armnn::IsArgMinMaxSupported</a></div><div class="ttdeci">bool IsArgMinMaxSupported(const BackendId &amp;backend, const TensorInfo &amp;input, const TensorInfo &amp;output, const ArgMinMaxDescriptor &amp;descriptor, char *reasonIfUnsupported, size_t reasonIfUnsupportedMaxLength)</div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.html#l00094">LayerSupport.cpp:94</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a7d18d6613bb865b66b05d4d6e0391934"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a7d18d6613bb865b66b05d4d6e0391934">&#9670;&nbsp;</a></span>IsBatchNormalizationSupported()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">bool IsBatchNormalizationSupported </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a> &amp;&#160;</td>
<td class="paramname"><em>backend</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>input</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>output</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>mean</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>var</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>beta</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>gamma</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="structarmnn_1_1_batch_normalization_descriptor.html">BatchNormalizationDescriptor</a> &amp;&#160;</td>
<td class="paramname"><em>descriptor</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">char *&#160;</td>
<td class="paramname"><em>reasonIfUnsupported</em> = <code>nullptr</code>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t&#160;</td>
<td class="paramname"><em>reasonIfUnsupportedMaxLength</em> = <code>1024</code>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.html" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.html">ILayerSupport</a> interfaces. </p>
<p class="definition">Definition at line <a class="el" href="_layer_support_8cpp_source.html#l00104">104</a> of file <a class="el" href="_layer_support_8cpp_source.html">LayerSupport.cpp</a>.</p>
<p class="reference">References <a class="el" href="_layer_support_8cpp_source.html#l00038">FORWARD_LAYER_SUPPORT_FUNC</a>.</p>
<div class="fragment"><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160;{</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; <a class="code" href="_layer_support_8cpp.html#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a>(backend,</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; <a class="code" href="namespacearmnn.html#a7d18d6613bb865b66b05d4d6e0391934">IsBatchNormalizationSupported</a>,</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; input,</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; output,</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; mean,</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; var,</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; beta,</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; gamma,</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; descriptor);</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a7d18d6613bb865b66b05d4d6e0391934"><div class="ttname"><a href="namespacearmnn.html#a7d18d6613bb865b66b05d4d6e0391934">armnn::IsBatchNormalizationSupported</a></div><div class="ttdeci">bool IsBatchNormalizationSupported(const BackendId &amp;backend, const TensorInfo &amp;input, const TensorInfo &amp;output, const TensorInfo &amp;mean, const TensorInfo &amp;var, const TensorInfo &amp;beta, const TensorInfo &amp;gamma, const BatchNormalizationDescriptor &amp;descriptor, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</div><div class="ttdoc">Deprecated in favor of IBackend and ILayerSupport interfaces. </div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.html#l00104">LayerSupport.cpp:104</a></div></div>
<div class="ttc" id="_layer_support_8cpp_html_aaed0ec9df6d4157960512266e8b74b26"><div class="ttname"><a href="_layer_support_8cpp.html#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a></div><div class="ttdeci">#define FORWARD_LAYER_SUPPORT_FUNC(backendId, func,...)</div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.html#l00038">LayerSupport.cpp:38</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a2399052d9cbb2b88720b07511a2e362f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a2399052d9cbb2b88720b07511a2e362f">&#9670;&nbsp;</a></span>IsBatchToSpaceNdSupported()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">bool IsBatchToSpaceNdSupported </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a> &amp;&#160;</td>
<td class="paramname"><em>backend</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>input</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>output</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="structarmnn_1_1_batch_to_space_nd_descriptor.html">BatchToSpaceNdDescriptor</a> &amp;&#160;</td>
<td class="paramname"><em>descriptor</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">char *&#160;</td>
<td class="paramname"><em>reasonIfUnsupported</em> = <code>nullptr</code>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t&#160;</td>
<td class="paramname"><em>reasonIfUnsupportedMaxLength</em> = <code>1024</code>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.html" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.html">ILayerSupport</a> interfaces. </p>
<p class="definition">Definition at line <a class="el" href="_layer_support_8cpp_source.html#l00126">126</a> of file <a class="el" href="_layer_support_8cpp_source.html">LayerSupport.cpp</a>.</p>
<p class="reference">References <a class="el" href="_layer_support_8cpp_source.html#l00038">FORWARD_LAYER_SUPPORT_FUNC</a>.</p>
<div class="fragment"><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160;{</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; <a class="code" href="_layer_support_8cpp.html#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a>(backend,</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; <a class="code" href="namespacearmnn.html#a2399052d9cbb2b88720b07511a2e362f">IsBatchToSpaceNdSupported</a>,</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; input,</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; output,</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; descriptor);</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a2399052d9cbb2b88720b07511a2e362f"><div class="ttname"><a href="namespacearmnn.html#a2399052d9cbb2b88720b07511a2e362f">armnn::IsBatchToSpaceNdSupported</a></div><div class="ttdeci">bool IsBatchToSpaceNdSupported(const BackendId &amp;backend, const TensorInfo &amp;input, const TensorInfo &amp;output, const BatchToSpaceNdDescriptor &amp;descriptor, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</div><div class="ttdoc">Deprecated in favor of IBackend and ILayerSupport interfaces. </div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.html#l00126">LayerSupport.cpp:126</a></div></div>
<div class="ttc" id="_layer_support_8cpp_html_aaed0ec9df6d4157960512266e8b74b26"><div class="ttname"><a href="_layer_support_8cpp.html#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a></div><div class="ttdeci">#define FORWARD_LAYER_SUPPORT_FUNC(backendId, func,...)</div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.html#l00038">LayerSupport.cpp:38</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a757df85e956e425c1a082d35a98ca4a9"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a757df85e956e425c1a082d35a98ca4a9">&#9670;&nbsp;</a></span>IsConcatSupported() <span class="overload">[1/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">bool armnn::IsConcatSupported </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a> &amp;&#160;</td>
<td class="paramname"><em>backend</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const std::vector&lt; const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> *&gt;&#160;</td>
<td class="paramname"><em>inputs</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>output</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="structarmnn_1_1_origins_descriptor.html">OriginsDescriptor</a> &amp;&#160;</td>
<td class="paramname"><em>descriptor</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">char *&#160;</td>
<td class="paramname"><em>reasonIfUnsupported</em> = <code>nullptr</code>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t&#160;</td>
<td class="paramname"><em>reasonIfUnsupportedMaxLength</em> = <code>1024</code>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.html" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.html">ILayerSupport</a> interfaces. </p>
<p class="reference">Referenced by <a class="el" href="_layer_support_8cpp_source.html#l00140">IsConcatSupported()</a>, <a class="el" href="_neon_layer_support_8cpp_source.html#l00493">NeonLayerSupport::IsMergerSupported()</a>, <a class="el" href="_cl_layer_support_8cpp_source.html#l00536">ClLayerSupport::IsMergerSupported()</a>, and <a class="el" href="_ref_layer_support_8cpp_source.html#l01209">RefLayerSupport::IsMergerSupported()</a>.</p>
</div>
</div>
<a id="ae1fc9dbaad02fff7f7227cc10536e1ee"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae1fc9dbaad02fff7f7227cc10536e1ee">&#9670;&nbsp;</a></span>IsConcatSupported() <span class="overload">[2/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">bool armnn::IsConcatSupported </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a> &amp;&#160;</td>
<td class="paramname"><em>backend</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">std::vector&lt; const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> *&gt;&#160;</td>
<td class="paramname"><em>inputs</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>output</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="structarmnn_1_1_origins_descriptor.html">OriginsDescriptor</a> &amp;&#160;</td>
<td class="paramname"><em>descriptor</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">char *&#160;</td>
<td class="paramname"><em>reasonIfUnsupported</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t&#160;</td>
<td class="paramname"><em>reasonIfUnsupportedMaxLength</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_layer_support_8cpp_source.html#l00140">140</a> of file <a class="el" href="_layer_support_8cpp_source.html">LayerSupport.cpp</a>.</p>
<p class="reference">References <a class="el" href="_layer_support_8cpp_source.html#l00038">FORWARD_LAYER_SUPPORT_FUNC</a>, and <a class="el" href="namespacearmnn.html#a757df85e956e425c1a082d35a98ca4a9">IsConcatSupported()</a>.</p>
<div class="fragment"><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160;{</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; BOOST_ASSERT(inputs.size() &gt; 0);</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160;</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; <a class="code" href="_layer_support_8cpp.html#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a>(backend, <a class="code" href="namespacearmnn.html#ae1fc9dbaad02fff7f7227cc10536e1ee">IsConcatSupported</a>, inputs, output, descriptor);</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_ae1fc9dbaad02fff7f7227cc10536e1ee"><div class="ttname"><a href="namespacearmnn.html#ae1fc9dbaad02fff7f7227cc10536e1ee">armnn::IsConcatSupported</a></div><div class="ttdeci">bool IsConcatSupported(const BackendId &amp;backend, std::vector&lt; const TensorInfo *&gt; inputs, const TensorInfo &amp;output, const OriginsDescriptor &amp;descriptor, char *reasonIfUnsupported, size_t reasonIfUnsupportedMaxLength)</div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.html#l00140">LayerSupport.cpp:140</a></div></div>
<div class="ttc" id="_layer_support_8cpp_html_aaed0ec9df6d4157960512266e8b74b26"><div class="ttname"><a href="_layer_support_8cpp.html#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a></div><div class="ttdeci">#define FORWARD_LAYER_SUPPORT_FUNC(backendId, func,...)</div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.html#l00038">LayerSupport.cpp:38</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="acc76cdec78906a3457a9c2293a453869"></a>
<h2 class="memtitle"><span class="permalink"><a href="#acc76cdec78906a3457a9c2293a453869">&#9670;&nbsp;</a></span>IsConstantSupported()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">bool IsConstantSupported </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a> &amp;&#160;</td>
<td class="paramname"><em>backend</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>output</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">char *&#160;</td>
<td class="paramname"><em>reasonIfUnsupported</em> = <code>nullptr</code>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t&#160;</td>
<td class="paramname"><em>reasonIfUnsupportedMaxLength</em> = <code>1024</code>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.html" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.html">ILayerSupport</a> interfaces. </p>
<p class="definition">Definition at line <a class="el" href="_layer_support_8cpp_source.html#l00152">152</a> of file <a class="el" href="_layer_support_8cpp_source.html">LayerSupport.cpp</a>.</p>
<p class="reference">References <a class="el" href="_layer_support_8cpp_source.html#l00038">FORWARD_LAYER_SUPPORT_FUNC</a>.</p>
<div class="fragment"><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160;{</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; <a class="code" href="_layer_support_8cpp.html#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a>(backend, <a class="code" href="namespacearmnn.html#acc76cdec78906a3457a9c2293a453869">IsConstantSupported</a>, output);</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160;}</div><div class="ttc" id="_layer_support_8cpp_html_aaed0ec9df6d4157960512266e8b74b26"><div class="ttname"><a href="_layer_support_8cpp.html#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a></div><div class="ttdeci">#define FORWARD_LAYER_SUPPORT_FUNC(backendId, func,...)</div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.html#l00038">LayerSupport.cpp:38</a></div></div>
<div class="ttc" id="namespacearmnn_html_acc76cdec78906a3457a9c2293a453869"><div class="ttname"><a href="namespacearmnn.html#acc76cdec78906a3457a9c2293a453869">armnn::IsConstantSupported</a></div><div class="ttdeci">bool IsConstantSupported(const BackendId &amp;backend, const TensorInfo &amp;output, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</div><div class="ttdoc">Deprecated in favor of IBackend and ILayerSupport interfaces. </div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.html#l00152">LayerSupport.cpp:152</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="aaa152f86599af5189c9d637fe7ade6d0"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aaa152f86599af5189c9d637fe7ade6d0">&#9670;&nbsp;</a></span>IsConvertFp16ToFp32Supported()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">bool IsConvertFp16ToFp32Supported </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a> &amp;&#160;</td>
<td class="paramname"><em>backend</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>input</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>output</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">char *&#160;</td>
<td class="paramname"><em>reasonIfUnsupported</em> = <code>nullptr</code>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t&#160;</td>
<td class="paramname"><em>reasonIfUnsupportedMaxLength</em> = <code>1024</code>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.html" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.html">ILayerSupport</a> interfaces. </p>
<p class="definition">Definition at line <a class="el" href="_layer_support_8cpp_source.html#l00160">160</a> of file <a class="el" href="_layer_support_8cpp_source.html">LayerSupport.cpp</a>.</p>
<p class="reference">References <a class="el" href="_layer_support_8cpp_source.html#l00038">FORWARD_LAYER_SUPPORT_FUNC</a>.</p>
<div class="fragment"><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160;{</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160; <a class="code" href="_layer_support_8cpp.html#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a>(backend, <a class="code" href="namespacearmnn.html#aaa152f86599af5189c9d637fe7ade6d0">IsConvertFp16ToFp32Supported</a>, input, output);</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160;}</div><div class="ttc" id="_layer_support_8cpp_html_aaed0ec9df6d4157960512266e8b74b26"><div class="ttname"><a href="_layer_support_8cpp.html#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a></div><div class="ttdeci">#define FORWARD_LAYER_SUPPORT_FUNC(backendId, func,...)</div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.html#l00038">LayerSupport.cpp:38</a></div></div>
<div class="ttc" id="namespacearmnn_html_aaa152f86599af5189c9d637fe7ade6d0"><div class="ttname"><a href="namespacearmnn.html#aaa152f86599af5189c9d637fe7ade6d0">armnn::IsConvertFp16ToFp32Supported</a></div><div class="ttdeci">bool IsConvertFp16ToFp32Supported(const BackendId &amp;backend, const TensorInfo &amp;input, const TensorInfo &amp;output, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</div><div class="ttdoc">Deprecated in favor of IBackend and ILayerSupport interfaces. </div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.html#l00160">LayerSupport.cpp:160</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a98994026cec1578ceb7aa74c834b00d9"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a98994026cec1578ceb7aa74c834b00d9">&#9670;&nbsp;</a></span>IsConvertFp32ToFp16Supported()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">bool IsConvertFp32ToFp16Supported </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a> &amp;&#160;</td>
<td class="paramname"><em>backend</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>input</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>output</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">char *&#160;</td>
<td class="paramname"><em>reasonIfUnsupported</em> = <code>nullptr</code>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t&#160;</td>
<td class="paramname"><em>reasonIfUnsupportedMaxLength</em> = <code>1024</code>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.html" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.html">ILayerSupport</a> interfaces. </p>
<p class="definition">Definition at line <a class="el" href="_layer_support_8cpp_source.html#l00169">169</a> of file <a class="el" href="_layer_support_8cpp_source.html">LayerSupport.cpp</a>.</p>
<p class="reference">References <a class="el" href="_layer_support_8cpp_source.html#l00038">FORWARD_LAYER_SUPPORT_FUNC</a>.</p>
<div class="fragment"><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160;{</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; <a class="code" href="_layer_support_8cpp.html#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a>(backend, <a class="code" href="namespacearmnn.html#a98994026cec1578ceb7aa74c834b00d9">IsConvertFp32ToFp16Supported</a>, input, output);</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160;}</div><div class="ttc" id="_layer_support_8cpp_html_aaed0ec9df6d4157960512266e8b74b26"><div class="ttname"><a href="_layer_support_8cpp.html#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a></div><div class="ttdeci">#define FORWARD_LAYER_SUPPORT_FUNC(backendId, func,...)</div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.html#l00038">LayerSupport.cpp:38</a></div></div>
<div class="ttc" id="namespacearmnn_html_a98994026cec1578ceb7aa74c834b00d9"><div class="ttname"><a href="namespacearmnn.html#a98994026cec1578ceb7aa74c834b00d9">armnn::IsConvertFp32ToFp16Supported</a></div><div class="ttdeci">bool IsConvertFp32ToFp16Supported(const BackendId &amp;backend, const TensorInfo &amp;input, const TensorInfo &amp;output, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</div><div class="ttdoc">Deprecated in favor of IBackend and ILayerSupport interfaces. </div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.html#l00169">LayerSupport.cpp:169</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="af22d4421773ce95e0f2324fc1a66c0d9"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af22d4421773ce95e0f2324fc1a66c0d9">&#9670;&nbsp;</a></span>IsConvolution2dSupported()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">bool IsConvolution2dSupported </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a> &amp;&#160;</td>
<td class="paramname"><em>backend</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>input</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>output</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="structarmnn_1_1_convolution2d_descriptor.html">Convolution2dDescriptor</a> &amp;&#160;</td>
<td class="paramname"><em>descriptor</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>weights</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_optional.html">Optional</a>&lt; <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &gt; &amp;&#160;</td>
<td class="paramname"><em>biases</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">char *&#160;</td>
<td class="paramname"><em>reasonIfUnsupported</em> = <code>nullptr</code>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t&#160;</td>
<td class="paramname"><em>reasonIfUnsupportedMaxLength</em> = <code>1024</code>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.html" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.html">ILayerSupport</a> interfaces. </p>
<p class="definition">Definition at line <a class="el" href="_layer_support_8cpp_source.html#l00178">178</a> of file <a class="el" href="_layer_support_8cpp_source.html">LayerSupport.cpp</a>.</p>
<p class="reference">References <a class="el" href="_layer_support_8cpp_source.html#l00038">FORWARD_LAYER_SUPPORT_FUNC</a>.</p>
<div class="fragment"><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160;{</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160; <a class="code" href="_layer_support_8cpp.html#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a>(backend, <a class="code" href="namespacearmnn.html#af22d4421773ce95e0f2324fc1a66c0d9">IsConvolution2dSupported</a>, input, output, descriptor, weights, biases);</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160;}</div><div class="ttc" id="_layer_support_8cpp_html_aaed0ec9df6d4157960512266e8b74b26"><div class="ttname"><a href="_layer_support_8cpp.html#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a></div><div class="ttdeci">#define FORWARD_LAYER_SUPPORT_FUNC(backendId, func,...)</div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.html#l00038">LayerSupport.cpp:38</a></div></div>
<div class="ttc" id="namespacearmnn_html_af22d4421773ce95e0f2324fc1a66c0d9"><div class="ttname"><a href="namespacearmnn.html#af22d4421773ce95e0f2324fc1a66c0d9">armnn::IsConvolution2dSupported</a></div><div class="ttdeci">bool IsConvolution2dSupported(const BackendId &amp;backend, const TensorInfo &amp;input, const TensorInfo &amp;output, const Convolution2dDescriptor &amp;descriptor, const TensorInfo &amp;weights, const Optional&lt; TensorInfo &gt; &amp;biases, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</div><div class="ttdoc">Deprecated in favor of IBackend and ILayerSupport interfaces. </div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.html#l00178">LayerSupport.cpp:178</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a6a2e058d934e9d784eab57ee7121d69c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a6a2e058d934e9d784eab57ee7121d69c">&#9670;&nbsp;</a></span>IsDataType()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">bool armnn::IsDataType </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="structarmnn_1_1_workload_info.html">WorkloadInfo</a> &amp;&#160;</td>
<td class="paramname"><em>info</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_ref_workload_factory_8cpp_source.html#l00032">32</a> of file <a class="el" href="_ref_workload_factory_8cpp_source.html">RefWorkloadFactory.cpp</a>.</p>
<p class="reference">References <a class="el" href="include_2armnn_2backends_2_workload_info_8hpp_source.html#l00018">WorkloadInfo::m_InputTensorInfos</a>, and <a class="el" href="include_2armnn_2backends_2_workload_info_8hpp_source.html#l00019">WorkloadInfo::m_OutputTensorInfos</a>.</p>
<div class="fragment"><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;{</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; <span class="keyword">auto</span> checkType = [](<span class="keyword">const</span> TensorInfo&amp; tensorInfo) {<span class="keywordflow">return</span> tensorInfo.GetDataType() == ArmnnType;};</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; <span class="keyword">auto</span> it = std::find_if(std::begin(<a class="code" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>.m_InputTensorInfos), std::end(<a class="code" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>.m_InputTensorInfos), checkType);</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; <span class="keywordflow">if</span> (it != std::end(<a class="code" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>.m_InputTensorInfos))</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; {</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; }</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; it = std::find_if(std::begin(<a class="code" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>.m_OutputTensorInfos), std::end(<a class="code" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>.m_OutputTensorInfos), checkType);</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; <span class="keywordflow">if</span> (it != std::end(<a class="code" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>.m_OutputTensorInfos))</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; {</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; }</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c"><div class="ttname"><a href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">armnn::BoostLogSeverityMapping::info</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a8b96de58aae24091d0ad761f27360630"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a8b96de58aae24091d0ad761f27360630">&#9670;&nbsp;</a></span>IsDebugSupported()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">bool IsDebugSupported </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a> &amp;&#160;</td>
<td class="paramname"><em>backend</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>input</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>output</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">char *&#160;</td>
<td class="paramname"><em>reasonIfUnsupported</em> = <code>nullptr</code>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t&#160;</td>
<td class="paramname"><em>reasonIfUnsupportedMaxLength</em> = <code>1024</code>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.html" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.html">ILayerSupport</a> interfaces. </p>
<p class="definition">Definition at line <a class="el" href="_layer_support_8cpp_source.html#l00190">190</a> of file <a class="el" href="_layer_support_8cpp_source.html">LayerSupport.cpp</a>.</p>
<p class="reference">References <a class="el" href="_layer_support_8cpp_source.html#l00038">FORWARD_LAYER_SUPPORT_FUNC</a>.</p>
<div class="fragment"><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160;{</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; <a class="code" href="_layer_support_8cpp.html#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a>(backend, <a class="code" href="namespacearmnn.html#a8b96de58aae24091d0ad761f27360630">IsDebugSupported</a>, input, output);</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a8b96de58aae24091d0ad761f27360630"><div class="ttname"><a href="namespacearmnn.html#a8b96de58aae24091d0ad761f27360630">armnn::IsDebugSupported</a></div><div class="ttdeci">bool IsDebugSupported(const BackendId &amp;backend, const TensorInfo &amp;input, const TensorInfo &amp;output, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</div><div class="ttdoc">Deprecated in favor of IBackend and ILayerSupport interfaces. </div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.html#l00190">LayerSupport.cpp:190</a></div></div>
<div class="ttc" id="_layer_support_8cpp_html_aaed0ec9df6d4157960512266e8b74b26"><div class="ttname"><a href="_layer_support_8cpp.html#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a></div><div class="ttdeci">#define FORWARD_LAYER_SUPPORT_FUNC(backendId, func,...)</div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.html#l00038">LayerSupport.cpp:38</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a399d38872500c6ac84ae031673176ef3"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a399d38872500c6ac84ae031673176ef3">&#9670;&nbsp;</a></span>IsDepthwiseConvolutionSupported()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">bool IsDepthwiseConvolutionSupported </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a> &amp;&#160;</td>
<td class="paramname"><em>backend</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>input</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>output</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="structarmnn_1_1_depthwise_convolution2d_descriptor.html">DepthwiseConvolution2dDescriptor</a> &amp;&#160;</td>
<td class="paramname"><em>descriptor</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>weights</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_optional.html">Optional</a>&lt; <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &gt; &amp;&#160;</td>
<td class="paramname"><em>biases</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">char *&#160;</td>
<td class="paramname"><em>reasonIfUnsupported</em> = <code>nullptr</code>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t&#160;</td>
<td class="paramname"><em>reasonIfUnsupportedMaxLength</em> = <code>1024</code>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.html" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.html">ILayerSupport</a> interfaces. </p>
<p class="definition">Definition at line <a class="el" href="_layer_support_8cpp_source.html#l00199">199</a> of file <a class="el" href="_layer_support_8cpp_source.html">LayerSupport.cpp</a>.</p>
<p class="reference">References <a class="el" href="_layer_support_8cpp_source.html#l00038">FORWARD_LAYER_SUPPORT_FUNC</a>, <a class="el" href="_descriptors_8hpp_source.html#l00486">DepthwiseConvolution2dDescriptor::m_DilationX</a>, and <a class="el" href="_descriptors_8hpp_source.html#l00488">DepthwiseConvolution2dDescriptor::m_DilationY</a>.</p>
<p class="reference">Referenced by <a class="el" href="_ref_layer_support_8cpp_source.html#l00676">RefLayerSupport::IsDilatedDepthwiseConvolutionSupported()</a>.</p>
<div class="fragment"><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160;{</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160; <span class="keywordflow">if</span> (descriptor.m_DilationX == 1 &amp;&amp; descriptor.m_DilationY == 1)</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160; {</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160; <span class="comment">// Pre 19.05 ArmNN did not have the dilation parameters.</span></div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160; <span class="comment">// This version of IsDepthwiseConvolutionSupported is called for backwards-compatibility</span></div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160; <a class="code" href="_layer_support_8cpp.html#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a>(backend,</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160; <a class="code" href="namespacearmnn.html#a399d38872500c6ac84ae031673176ef3">IsDepthwiseConvolutionSupported</a>,</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160; input,</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160; output,</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160; descriptor,</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160; weights,</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160; biases);</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160; }</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160; {</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160; <a class="code" href="_layer_support_8cpp.html#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a>(backend,</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160; IsDilatedDepthwiseConvolutionSupported,</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160; input,</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160; output,</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160; descriptor,</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160; weights,</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160; biases);</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160; }</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160;}</div><div class="ttc" id="_layer_support_8cpp_html_aaed0ec9df6d4157960512266e8b74b26"><div class="ttname"><a href="_layer_support_8cpp.html#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a></div><div class="ttdeci">#define FORWARD_LAYER_SUPPORT_FUNC(backendId, func,...)</div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.html#l00038">LayerSupport.cpp:38</a></div></div>
<div class="ttc" id="namespacearmnn_html_a399d38872500c6ac84ae031673176ef3"><div class="ttname"><a href="namespacearmnn.html#a399d38872500c6ac84ae031673176ef3">armnn::IsDepthwiseConvolutionSupported</a></div><div class="ttdeci">bool IsDepthwiseConvolutionSupported(const BackendId &amp;backend, const TensorInfo &amp;input, const TensorInfo &amp;output, const DepthwiseConvolution2dDescriptor &amp;descriptor, const TensorInfo &amp;weights, const Optional&lt; TensorInfo &gt; &amp;biases, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</div><div class="ttdoc">Deprecated in favor of IBackend and ILayerSupport interfaces. </div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.html#l00199">LayerSupport.cpp:199</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="ac92dceabfbc1e46fe74f699f733886a8"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ac92dceabfbc1e46fe74f699f733886a8">&#9670;&nbsp;</a></span>IsDequantizeSupported()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">bool IsDequantizeSupported </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a> &amp;&#160;</td>
<td class="paramname"><em>backend</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>input</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>output</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">char *&#160;</td>
<td class="paramname"><em>reasonIfUnsupported</em> = <code>nullptr</code>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t&#160;</td>
<td class="paramname"><em>reasonIfUnsupportedMaxLength</em> = <code>1024</code>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.html" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.html">ILayerSupport</a> interfaces. </p>
<p class="definition">Definition at line <a class="el" href="_layer_support_8cpp_source.html#l00232">232</a> of file <a class="el" href="_layer_support_8cpp_source.html">LayerSupport.cpp</a>.</p>
<p class="reference">References <a class="el" href="_layer_support_8cpp_source.html#l00038">FORWARD_LAYER_SUPPORT_FUNC</a>, and <a class="el" href="namespacearmnn.html#aa9da770c93f812b264861f98cfdd650c">IsDetectionPostProcessSupported()</a>.</p>
<div class="fragment"><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160;{</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160; <a class="code" href="_layer_support_8cpp.html#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a>(backend, <a class="code" href="namespacearmnn.html#ac92dceabfbc1e46fe74f699f733886a8">IsDequantizeSupported</a>, input, output);</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160;}</div><div class="ttc" id="_layer_support_8cpp_html_aaed0ec9df6d4157960512266e8b74b26"><div class="ttname"><a href="_layer_support_8cpp.html#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a></div><div class="ttdeci">#define FORWARD_LAYER_SUPPORT_FUNC(backendId, func,...)</div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.html#l00038">LayerSupport.cpp:38</a></div></div>
<div class="ttc" id="namespacearmnn_html_ac92dceabfbc1e46fe74f699f733886a8"><div class="ttname"><a href="namespacearmnn.html#ac92dceabfbc1e46fe74f699f733886a8">armnn::IsDequantizeSupported</a></div><div class="ttdeci">bool IsDequantizeSupported(const BackendId &amp;backend, const TensorInfo &amp;input, const TensorInfo &amp;output, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</div><div class="ttdoc">Deprecated in favor of IBackend and ILayerSupport interfaces. </div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.html#l00232">LayerSupport.cpp:232</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="aa9da770c93f812b264861f98cfdd650c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa9da770c93f812b264861f98cfdd650c">&#9670;&nbsp;</a></span>IsDetectionPostProcessSupported()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">bool armnn::IsDetectionPostProcessSupported </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a> &amp;&#160;</td>
<td class="paramname"><em>backend</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>input0</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>input1</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="structarmnn_1_1_detection_post_process_descriptor.html">DetectionPostProcessDescriptor</a> &amp;&#160;</td>
<td class="paramname"><em>descriptor</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">char *&#160;</td>
<td class="paramname"><em>reasonIfUnsupported</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t&#160;</td>
<td class="paramname"><em>reasonIfUnsupportedMaxLength</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="reference">Referenced by <a class="el" href="_layer_support_8cpp_source.html#l00232">IsDequantizeSupported()</a>.</p>
</div>
</div>
<a id="a29b4b6b364a31632597970d0bad3d78f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a29b4b6b364a31632597970d0bad3d78f">&#9670;&nbsp;</a></span>IsDivisionSupported()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">bool IsDivisionSupported </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a> &amp;&#160;</td>
<td class="paramname"><em>backend</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>input0</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>input1</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>output</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">char *&#160;</td>
<td class="paramname"><em>reasonIfUnsupported</em> = <code>nullptr</code>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t&#160;</td>
<td class="paramname"><em>reasonIfUnsupportedMaxLength</em> = <code>1024</code>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.html" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.html">ILayerSupport</a> interfaces. </p>
<p class="definition">Definition at line <a class="el" href="_layer_support_8cpp_source.html#l00248">248</a> of file <a class="el" href="_layer_support_8cpp_source.html">LayerSupport.cpp</a>.</p>
<p class="reference">References <a class="el" href="_layer_support_8cpp_source.html#l00038">FORWARD_LAYER_SUPPORT_FUNC</a>.</p>
<div class="fragment"><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160;{</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160; <a class="code" href="_layer_support_8cpp.html#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a>(backend, <a class="code" href="namespacearmnn.html#a29b4b6b364a31632597970d0bad3d78f">IsDivisionSupported</a>, input0, input1, output);</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a29b4b6b364a31632597970d0bad3d78f"><div class="ttname"><a href="namespacearmnn.html#a29b4b6b364a31632597970d0bad3d78f">armnn::IsDivisionSupported</a></div><div class="ttdeci">bool IsDivisionSupported(const BackendId &amp;backend, const TensorInfo &amp;input0, const TensorInfo &amp;input1, const TensorInfo &amp;output, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</div><div class="ttdoc">Deprecated in favor of IBackend and ILayerSupport interfaces. </div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.html#l00248">LayerSupport.cpp:248</a></div></div>
<div class="ttc" id="_layer_support_8cpp_html_aaed0ec9df6d4157960512266e8b74b26"><div class="ttname"><a href="_layer_support_8cpp.html#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a></div><div class="ttdeci">#define FORWARD_LAYER_SUPPORT_FUNC(backendId, func,...)</div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.html#l00038">LayerSupport.cpp:38</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a0e3cdea6143299b258a9c34b596bad4d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a0e3cdea6143299b258a9c34b596bad4d">&#9670;&nbsp;</a></span>IsEqualSupported()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">bool IsEqualSupported </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a> &amp;&#160;</td>
<td class="paramname"><em>backend</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>input0</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>input1</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>output</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">char *&#160;</td>
<td class="paramname"><em>reasonIfUnsupported</em> = <code>nullptr</code>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t&#160;</td>
<td class="paramname"><em>reasonIfUnsupportedMaxLength</em> = <code>1024</code>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.html" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.html">ILayerSupport</a> interfaces. </p>
<p class="definition">Definition at line <a class="el" href="_layer_support_8cpp_source.html#l00258">258</a> of file <a class="el" href="_layer_support_8cpp_source.html">LayerSupport.cpp</a>.</p>
<p class="reference">References <a class="el" href="namespacearmnn.html#a2d299363c9fc33334c571fa29ca4f58caf5f286e73bda105e538310b3190f75c5">Equal</a>, and <a class="el" href="_layer_support_8cpp_source.html#l00038">FORWARD_LAYER_SUPPORT_FUNC</a>.</p>
<div class="fragment"><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160;{</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160; <a class="code" href="_layer_support_8cpp.html#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a>(backend,</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160; IsComparisonSupported,</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160; input0,</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160; input1,</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160; output,</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160; ComparisonDescriptor(ComparisonOperation::Equal));</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160;}</div><div class="ttc" id="_layer_support_8cpp_html_aaed0ec9df6d4157960512266e8b74b26"><div class="ttname"><a href="_layer_support_8cpp.html#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a></div><div class="ttdeci">#define FORWARD_LAYER_SUPPORT_FUNC(backendId, func,...)</div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.html#l00038">LayerSupport.cpp:38</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="afe39427f8974f064b838df5c7f0ebebc"></a>
<h2 class="memtitle"><span class="permalink"><a href="#afe39427f8974f064b838df5c7f0ebebc">&#9670;&nbsp;</a></span>IsFakeQuantizationSupported()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">bool IsFakeQuantizationSupported </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a> &amp;&#160;</td>
<td class="paramname"><em>backend</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>input</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="structarmnn_1_1_fake_quantization_descriptor.html">FakeQuantizationDescriptor</a> &amp;&#160;</td>
<td class="paramname"><em>descriptor</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">char *&#160;</td>
<td class="paramname"><em>reasonIfUnsupported</em> = <code>nullptr</code>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t&#160;</td>
<td class="paramname"><em>reasonIfUnsupportedMaxLength</em> = <code>1024</code>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.html" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.html">ILayerSupport</a> interfaces. </p>
<p class="definition">Definition at line <a class="el" href="_layer_support_8cpp_source.html#l00273">273</a> of file <a class="el" href="_layer_support_8cpp_source.html">LayerSupport.cpp</a>.</p>
<p class="reference">References <a class="el" href="_layer_support_8cpp_source.html#l00038">FORWARD_LAYER_SUPPORT_FUNC</a>.</p>
<div class="fragment"><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160;{</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160; <a class="code" href="_layer_support_8cpp.html#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a>(backend, <a class="code" href="namespacearmnn.html#afe39427f8974f064b838df5c7f0ebebc">IsFakeQuantizationSupported</a>, input, descriptor);</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160;}</div><div class="ttc" id="_layer_support_8cpp_html_aaed0ec9df6d4157960512266e8b74b26"><div class="ttname"><a href="_layer_support_8cpp.html#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a></div><div class="ttdeci">#define FORWARD_LAYER_SUPPORT_FUNC(backendId, func,...)</div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.html#l00038">LayerSupport.cpp:38</a></div></div>
<div class="ttc" id="namespacearmnn_html_afe39427f8974f064b838df5c7f0ebebc"><div class="ttname"><a href="namespacearmnn.html#afe39427f8974f064b838df5c7f0ebebc">armnn::IsFakeQuantizationSupported</a></div><div class="ttdeci">bool IsFakeQuantizationSupported(const BackendId &amp;backend, const TensorInfo &amp;input, const FakeQuantizationDescriptor &amp;descriptor, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</div><div class="ttdoc">Deprecated in favor of IBackend and ILayerSupport interfaces. </div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.html#l00273">LayerSupport.cpp:273</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="ad78d822be14a8d585cd038cf0e73cd7e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad78d822be14a8d585cd038cf0e73cd7e">&#9670;&nbsp;</a></span>IsFloat16()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">bool armnn::IsFloat16 </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="structarmnn_1_1_workload_info.html">WorkloadInfo</a> &amp;&#160;</td>
<td class="paramname"><em>info</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_ref_workload_factory_8cpp_source.html#l00053">53</a> of file <a class="el" href="_ref_workload_factory_8cpp_source.html">RefWorkloadFactory.cpp</a>.</p>
<p class="reference">References <a class="el" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>.</p>
<p class="reference">Referenced by <a class="el" href="_ref_workload_factory_8cpp_source.html#l00198">RefWorkloadFactory::CreateDebug()</a>, and <a class="el" href="_ref_workload_factory_8cpp_source.html#l00433">RefWorkloadFactory::CreatePad()</a>.</p>
<div class="fragment"><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;{</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; <span class="keywordflow">return</span> IsDataType&lt;DataType::Float16&gt;(<a class="code" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>);</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c"><div class="ttname"><a href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">armnn::BoostLogSeverityMapping::info</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a89e9c52419c572f05bf9737a7a60b267"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a89e9c52419c572f05bf9737a7a60b267">&#9670;&nbsp;</a></span>IsFloorSupported()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">bool IsFloorSupported </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a> &amp;&#160;</td>
<td class="paramname"><em>backend</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>input</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>output</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">char *&#160;</td>
<td class="paramname"><em>reasonIfUnsupported</em> = <code>nullptr</code>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t&#160;</td>
<td class="paramname"><em>reasonIfUnsupportedMaxLength</em> = <code>1024</code>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.html" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.html">ILayerSupport</a> interfaces. </p>
<p class="definition">Definition at line <a class="el" href="_layer_support_8cpp_source.html#l00282">282</a> of file <a class="el" href="_layer_support_8cpp_source.html">LayerSupport.cpp</a>.</p>
<p class="reference">References <a class="el" href="_layer_support_8cpp_source.html#l00038">FORWARD_LAYER_SUPPORT_FUNC</a>, <a class="el" href="_tensor_8hpp_source.html#l00095">TensorInfo::GetDataType()</a>, and <a class="el" href="_tensor_8hpp_source.html#l00088">TensorInfo::GetShape()</a>.</p>
<div class="fragment"><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160;{</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160; <span class="comment">// By definition (that is, regardless of compute device), shapes and data type must match.</span></div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160; <span class="keywordflow">if</span> (input.GetShape() != output.GetShape() || input.GetDataType() != output.GetDataType())</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160; {</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160; }</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160;</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160; <a class="code" href="_layer_support_8cpp.html#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a>(backend, <a class="code" href="namespacearmnn.html#a89e9c52419c572f05bf9737a7a60b267">IsFloorSupported</a>, input, output);</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a89e9c52419c572f05bf9737a7a60b267"><div class="ttname"><a href="namespacearmnn.html#a89e9c52419c572f05bf9737a7a60b267">armnn::IsFloorSupported</a></div><div class="ttdeci">bool IsFloorSupported(const BackendId &amp;backend, const TensorInfo &amp;input, const TensorInfo &amp;output, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</div><div class="ttdoc">Deprecated in favor of IBackend and ILayerSupport interfaces. </div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.html#l00282">LayerSupport.cpp:282</a></div></div>
<div class="ttc" id="_layer_support_8cpp_html_aaed0ec9df6d4157960512266e8b74b26"><div class="ttname"><a href="_layer_support_8cpp.html#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a></div><div class="ttdeci">#define FORWARD_LAYER_SUPPORT_FUNC(backendId, func,...)</div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.html#l00038">LayerSupport.cpp:38</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="aa2f4e75d4a4f61b24de0dfe150952c80"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa2f4e75d4a4f61b24de0dfe150952c80">&#9670;&nbsp;</a></span>IsFullyConnectedSupported()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">bool IsFullyConnectedSupported </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a> &amp;&#160;</td>
<td class="paramname"><em>backend</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>input</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>output</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>weights</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>biases</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="structarmnn_1_1_fully_connected_descriptor.html">FullyConnectedDescriptor</a> &amp;&#160;</td>
<td class="paramname"><em>descriptor</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">char *&#160;</td>
<td class="paramname"><em>reasonIfUnsupported</em> = <code>nullptr</code>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t&#160;</td>
<td class="paramname"><em>reasonIfUnsupportedMaxLength</em> = <code>1024</code>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.html" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.html">ILayerSupport</a> interfaces. </p>
<p class="definition">Definition at line <a class="el" href="_layer_support_8cpp_source.html#l00296">296</a> of file <a class="el" href="_layer_support_8cpp_source.html">LayerSupport.cpp</a>.</p>
<p class="reference">References <a class="el" href="_layer_support_8cpp_source.html#l00038">FORWARD_LAYER_SUPPORT_FUNC</a>.</p>
<div class="fragment"><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160;{</div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160; <a class="code" href="_layer_support_8cpp.html#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a>(backend, <a class="code" href="namespacearmnn.html#aa2f4e75d4a4f61b24de0dfe150952c80">IsFullyConnectedSupported</a>, input, output, weights, biases, descriptor);</div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_aa2f4e75d4a4f61b24de0dfe150952c80"><div class="ttname"><a href="namespacearmnn.html#aa2f4e75d4a4f61b24de0dfe150952c80">armnn::IsFullyConnectedSupported</a></div><div class="ttdeci">bool IsFullyConnectedSupported(const BackendId &amp;backend, const TensorInfo &amp;input, const TensorInfo &amp;output, const TensorInfo &amp;weights, const TensorInfo &amp;biases, const FullyConnectedDescriptor &amp;descriptor, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</div><div class="ttdoc">Deprecated in favor of IBackend and ILayerSupport interfaces. </div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.html#l00296">LayerSupport.cpp:296</a></div></div>
<div class="ttc" id="_layer_support_8cpp_html_aaed0ec9df6d4157960512266e8b74b26"><div class="ttname"><a href="_layer_support_8cpp.html#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a></div><div class="ttdeci">#define FORWARD_LAYER_SUPPORT_FUNC(backendId, func,...)</div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.html#l00038">LayerSupport.cpp:38</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a658eea4e746b1e664796c48d7eaf19f0"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a658eea4e746b1e664796c48d7eaf19f0">&#9670;&nbsp;</a></span>IsGatherSupported()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">bool armnn::IsGatherSupported </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a> &amp;&#160;</td>
<td class="paramname"><em>backend</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>input0</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>input1</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>output</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">char *&#160;</td>
<td class="paramname"><em>reasonIfUnsupported</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t&#160;</td>
<td class="paramname"><em>reasonIfUnsupportedMaxLength</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_layer_support_8cpp_source.html#l00308">308</a> of file <a class="el" href="_layer_support_8cpp_source.html">LayerSupport.cpp</a>.</p>
<p class="reference">References <a class="el" href="_layer_support_8cpp_source.html#l00038">FORWARD_LAYER_SUPPORT_FUNC</a>.</p>
<div class="fragment"><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160;{</div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>&#160; <a class="code" href="_layer_support_8cpp.html#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a>(backend, <a class="code" href="namespacearmnn.html#a658eea4e746b1e664796c48d7eaf19f0">IsGatherSupported</a>, input0, input1, output);</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a658eea4e746b1e664796c48d7eaf19f0"><div class="ttname"><a href="namespacearmnn.html#a658eea4e746b1e664796c48d7eaf19f0">armnn::IsGatherSupported</a></div><div class="ttdeci">bool IsGatherSupported(const BackendId &amp;backend, const TensorInfo &amp;input0, const TensorInfo &amp;input1, const TensorInfo &amp;output, char *reasonIfUnsupported, size_t reasonIfUnsupportedMaxLength)</div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.html#l00308">LayerSupport.cpp:308</a></div></div>
<div class="ttc" id="_layer_support_8cpp_html_aaed0ec9df6d4157960512266e8b74b26"><div class="ttname"><a href="_layer_support_8cpp.html#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a></div><div class="ttdeci">#define FORWARD_LAYER_SUPPORT_FUNC(backendId, func,...)</div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.html#l00038">LayerSupport.cpp:38</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="adffa596b4bdecd54ca460853cd1439e2"></a>
<h2 class="memtitle"><span class="permalink"><a href="#adffa596b4bdecd54ca460853cd1439e2">&#9670;&nbsp;</a></span>IsGreaterSupported()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">bool IsGreaterSupported </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a> &amp;&#160;</td>
<td class="paramname"><em>backend</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>input0</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>input1</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>output</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">char *&#160;</td>
<td class="paramname"><em>reasonIfUnsupported</em> = <code>nullptr</code>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t&#160;</td>
<td class="paramname"><em>reasonIfUnsupportedMaxLength</em> = <code>1024</code>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.html" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.html">ILayerSupport</a> interfaces. </p>
<p class="definition">Definition at line <a class="el" href="_layer_support_8cpp_source.html#l00318">318</a> of file <a class="el" href="_layer_support_8cpp_source.html">LayerSupport.cpp</a>.</p>
<p class="reference">References <a class="el" href="_layer_support_8cpp_source.html#l00038">FORWARD_LAYER_SUPPORT_FUNC</a>, and <a class="el" href="namespacearmnn.html#a2d299363c9fc33334c571fa29ca4f58ca8768a6821cd735aea4f5b0df88c1fc6a">Greater</a>.</p>
<div class="fragment"><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>&#160;{</div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span>&#160; <a class="code" href="_layer_support_8cpp.html#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a>(backend,</div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span>&#160; IsComparisonSupported,</div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span>&#160; input0,</div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span>&#160; input1,</div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span>&#160; output,</div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span>&#160; ComparisonDescriptor(ComparisonOperation::Greater));</div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span>&#160;}</div><div class="ttc" id="_layer_support_8cpp_html_aaed0ec9df6d4157960512266e8b74b26"><div class="ttname"><a href="_layer_support_8cpp.html#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a></div><div class="ttdeci">#define FORWARD_LAYER_SUPPORT_FUNC(backendId, func,...)</div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.html#l00038">LayerSupport.cpp:38</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a197a353aa963497d29a07796268ea5c1"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a197a353aa963497d29a07796268ea5c1">&#9670;&nbsp;</a></span>IsInputSupported()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">bool IsInputSupported </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a> &amp;&#160;</td>
<td class="paramname"><em>backend</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>input</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">char *&#160;</td>
<td class="paramname"><em>reasonIfUnsupported</em> = <code>nullptr</code>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t&#160;</td>
<td class="paramname"><em>reasonIfUnsupportedMaxLength</em> = <code>1024</code>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.html" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.html">ILayerSupport</a> interfaces. </p>
<p class="definition">Definition at line <a class="el" href="_layer_support_8cpp_source.html#l00333">333</a> of file <a class="el" href="_layer_support_8cpp_source.html">LayerSupport.cpp</a>.</p>
<p class="reference">References <a class="el" href="_layer_support_8cpp_source.html#l00038">FORWARD_LAYER_SUPPORT_FUNC</a>.</p>
<div class="fragment"><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>&#160;{</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>&#160; <a class="code" href="_layer_support_8cpp.html#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a>(backend, <a class="code" href="namespacearmnn.html#a197a353aa963497d29a07796268ea5c1">IsInputSupported</a>, input);</div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>&#160;}</div><div class="ttc" id="_layer_support_8cpp_html_aaed0ec9df6d4157960512266e8b74b26"><div class="ttname"><a href="_layer_support_8cpp.html#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a></div><div class="ttdeci">#define FORWARD_LAYER_SUPPORT_FUNC(backendId, func,...)</div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.html#l00038">LayerSupport.cpp:38</a></div></div>
<div class="ttc" id="namespacearmnn_html_a197a353aa963497d29a07796268ea5c1"><div class="ttname"><a href="namespacearmnn.html#a197a353aa963497d29a07796268ea5c1">armnn::IsInputSupported</a></div><div class="ttdeci">bool IsInputSupported(const BackendId &amp;backend, const TensorInfo &amp;input, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</div><div class="ttdoc">Deprecated in favor of IBackend and ILayerSupport interfaces. </div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.html#l00333">LayerSupport.cpp:333</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a0906736b90464c0eb3ce5a87e05ebeee"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a0906736b90464c0eb3ce5a87e05ebeee">&#9670;&nbsp;</a></span>IsL2NormalizationSupported()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">bool IsL2NormalizationSupported </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a> &amp;&#160;</td>
<td class="paramname"><em>backend</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>input</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>output</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="structarmnn_1_1_l2_normalization_descriptor.html">L2NormalizationDescriptor</a> &amp;&#160;</td>
<td class="paramname"><em>descriptor</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">char *&#160;</td>
<td class="paramname"><em>reasonIfUnsupported</em> = <code>nullptr</code>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t&#160;</td>
<td class="paramname"><em>reasonIfUnsupportedMaxLength</em> = <code>1024</code>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.html" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.html">ILayerSupport</a> interfaces. </p>
<p class="definition">Definition at line <a class="el" href="_layer_support_8cpp_source.html#l00342">342</a> of file <a class="el" href="_layer_support_8cpp_source.html">LayerSupport.cpp</a>.</p>
<p class="reference">References <a class="el" href="_layer_support_8cpp_source.html#l00038">FORWARD_LAYER_SUPPORT_FUNC</a>.</p>
<div class="fragment"><div class="line"><a name="l00348"></a><span class="lineno"> 348</span>&#160;{</div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span>&#160; <a class="code" href="_layer_support_8cpp.html#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a>(backend, <a class="code" href="namespacearmnn.html#a0906736b90464c0eb3ce5a87e05ebeee">IsL2NormalizationSupported</a>, input, output, descriptor);</div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span>&#160;}</div><div class="ttc" id="_layer_support_8cpp_html_aaed0ec9df6d4157960512266e8b74b26"><div class="ttname"><a href="_layer_support_8cpp.html#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a></div><div class="ttdeci">#define FORWARD_LAYER_SUPPORT_FUNC(backendId, func,...)</div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.html#l00038">LayerSupport.cpp:38</a></div></div>
<div class="ttc" id="namespacearmnn_html_a0906736b90464c0eb3ce5a87e05ebeee"><div class="ttname"><a href="namespacearmnn.html#a0906736b90464c0eb3ce5a87e05ebeee">armnn::IsL2NormalizationSupported</a></div><div class="ttdeci">bool IsL2NormalizationSupported(const BackendId &amp;backend, const TensorInfo &amp;input, const TensorInfo &amp;output, const L2NormalizationDescriptor &amp;descriptor, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</div><div class="ttdoc">Deprecated in favor of IBackend and ILayerSupport interfaces. </div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.html#l00342">LayerSupport.cpp:342</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a3e8b3af7771ffb37ede50aa2d9cc3af6"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a3e8b3af7771ffb37ede50aa2d9cc3af6">&#9670;&nbsp;</a></span>IsLstmSupported()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">bool IsLstmSupported </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a> &amp;&#160;</td>
<td class="paramname"><em>backend</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>input</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>outputStateIn</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>cellStateIn</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>scratchBuffer</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>outputStateOut</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>cellStateOut</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>output</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="structarmnn_1_1_lstm_descriptor.html">LstmDescriptor</a> &amp;&#160;</td>
<td class="paramname"><em>descriptor</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="structarmnn_1_1_lstm_input_params_info.html">LstmInputParamsInfo</a> &amp;&#160;</td>
<td class="paramname"><em>paramsInfo</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">char *&#160;</td>
<td class="paramname"><em>reasonIfUnsupported</em> = <code>nullptr</code>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t&#160;</td>
<td class="paramname"><em>reasonIfUnsupportedMaxLength</em> = <code>1024</code>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.html" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.html">ILayerSupport</a> interfaces. </p>
<p class="definition">Definition at line <a class="el" href="_layer_support_8cpp_source.html#l00352">352</a> of file <a class="el" href="_layer_support_8cpp_source.html">LayerSupport.cpp</a>.</p>
<p class="reference">References <a class="el" href="_layer_support_8cpp_source.html#l00038">FORWARD_LAYER_SUPPORT_FUNC</a>.</p>
<div class="fragment"><div class="line"><a name="l00359"></a><span class="lineno"> 359</span>&#160;{</div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span>&#160; <a class="code" href="_layer_support_8cpp.html#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a>(backend, <a class="code" href="namespacearmnn.html#a3e8b3af7771ffb37ede50aa2d9cc3af6">IsLstmSupported</a>, input, outputStateIn, cellStateIn,</div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span>&#160; scratchBuffer, outputStateOut, cellStateOut,</div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span>&#160; output, descriptor, paramsInfo);</div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span>&#160;}</div><div class="ttc" id="_layer_support_8cpp_html_aaed0ec9df6d4157960512266e8b74b26"><div class="ttname"><a href="_layer_support_8cpp.html#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a></div><div class="ttdeci">#define FORWARD_LAYER_SUPPORT_FUNC(backendId, func,...)</div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.html#l00038">LayerSupport.cpp:38</a></div></div>
<div class="ttc" id="namespacearmnn_html_a3e8b3af7771ffb37ede50aa2d9cc3af6"><div class="ttname"><a href="namespacearmnn.html#a3e8b3af7771ffb37ede50aa2d9cc3af6">armnn::IsLstmSupported</a></div><div class="ttdeci">bool IsLstmSupported(const BackendId &amp;backend, const TensorInfo &amp;input, const TensorInfo &amp;outputStateIn, const TensorInfo &amp;cellStateIn, const TensorInfo &amp;scratchBuffer, const TensorInfo &amp;outputStateOut, const TensorInfo &amp;cellStateOut, const TensorInfo &amp;output, const LstmDescriptor &amp;descriptor, const LstmInputParamsInfo &amp;paramsInfo, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</div><div class="ttdoc">Deprecated in favor of IBackend and ILayerSupport interfaces. </div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.html#l00352">LayerSupport.cpp:352</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a3b85a270baf98ea6b040bd395c2d700a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a3b85a270baf98ea6b040bd395c2d700a">&#9670;&nbsp;</a></span>IsMaximumSupported()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">bool IsMaximumSupported </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a> &amp;&#160;</td>
<td class="paramname"><em>backend</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>input0</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>input1</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>output</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">char *&#160;</td>
<td class="paramname"><em>reasonIfUnSupported</em> = <code>nullptr</code>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t&#160;</td>
<td class="paramname"><em>reasonIfUnSupportedMaxLength</em> = <code>0</code>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.html" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.html">ILayerSupport</a> interfaces. </p>
<p class="definition">Definition at line <a class="el" href="_layer_support_8cpp_source.html#l00365">365</a> of file <a class="el" href="_layer_support_8cpp_source.html">LayerSupport.cpp</a>.</p>
<p class="reference">References <a class="el" href="_layer_support_8cpp_source.html#l00038">FORWARD_LAYER_SUPPORT_FUNC</a>.</p>
<div class="fragment"><div class="line"><a name="l00371"></a><span class="lineno"> 371</span>&#160;{</div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span>&#160; <a class="code" href="_layer_support_8cpp.html#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a>(backend, <a class="code" href="namespacearmnn.html#a3b85a270baf98ea6b040bd395c2d700a">IsMaximumSupported</a>, input0, input1, output);</div><div class="line"><a name="l00373"></a><span class="lineno"> 373</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a3b85a270baf98ea6b040bd395c2d700a"><div class="ttname"><a href="namespacearmnn.html#a3b85a270baf98ea6b040bd395c2d700a">armnn::IsMaximumSupported</a></div><div class="ttdeci">bool IsMaximumSupported(const BackendId &amp;backend, const TensorInfo &amp;input0, const TensorInfo &amp;input1, const TensorInfo &amp;output, char *reasonIfUnSupported=nullptr, size_t reasonIfUnSupportedMaxLength=0)</div><div class="ttdoc">Deprecated in favor of IBackend and ILayerSupport interfaces. </div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.html#l00365">LayerSupport.cpp:365</a></div></div>
<div class="ttc" id="_layer_support_8cpp_html_aaed0ec9df6d4157960512266e8b74b26"><div class="ttname"><a href="_layer_support_8cpp.html#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a></div><div class="ttdeci">#define FORWARD_LAYER_SUPPORT_FUNC(backendId, func,...)</div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.html#l00038">LayerSupport.cpp:38</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a0cdc60b4988b2193b97590e35f34a07e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a0cdc60b4988b2193b97590e35f34a07e">&#9670;&nbsp;</a></span>IsMeanSupported()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">bool IsMeanSupported </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a> &amp;&#160;</td>
<td class="paramname"><em>backend</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>input</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>output</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="structarmnn_1_1_mean_descriptor.html">MeanDescriptor</a> &amp;&#160;</td>
<td class="paramname"><em>descriptor</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">char *&#160;</td>
<td class="paramname"><em>reasonIfUnsupported</em> = <code>nullptr</code>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t&#160;</td>
<td class="paramname"><em>reasonIfUnsupportedMaxLength</em> = <code>1024</code>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.html" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.html">ILayerSupport</a> interfaces. </p>
<p class="definition">Definition at line <a class="el" href="_layer_support_8cpp_source.html#l00375">375</a> of file <a class="el" href="_layer_support_8cpp_source.html">LayerSupport.cpp</a>.</p>
<p class="reference">References <a class="el" href="_layer_support_8cpp_source.html#l00038">FORWARD_LAYER_SUPPORT_FUNC</a>.</p>
<div class="fragment"><div class="line"><a name="l00381"></a><span class="lineno"> 381</span>&#160;{</div><div class="line"><a name="l00382"></a><span class="lineno"> 382</span>&#160; <a class="code" href="_layer_support_8cpp.html#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a>(backend, <a class="code" href="namespacearmnn.html#a0cdc60b4988b2193b97590e35f34a07e">IsMeanSupported</a>, input, output, descriptor);</div><div class="line"><a name="l00383"></a><span class="lineno"> 383</span>&#160;}</div><div class="ttc" id="_layer_support_8cpp_html_aaed0ec9df6d4157960512266e8b74b26"><div class="ttname"><a href="_layer_support_8cpp.html#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a></div><div class="ttdeci">#define FORWARD_LAYER_SUPPORT_FUNC(backendId, func,...)</div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.html#l00038">LayerSupport.cpp:38</a></div></div>
<div class="ttc" id="namespacearmnn_html_a0cdc60b4988b2193b97590e35f34a07e"><div class="ttname"><a href="namespacearmnn.html#a0cdc60b4988b2193b97590e35f34a07e">armnn::IsMeanSupported</a></div><div class="ttdeci">bool IsMeanSupported(const BackendId &amp;backend, const TensorInfo &amp;input, const TensorInfo &amp;output, const MeanDescriptor &amp;descriptor, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</div><div class="ttdoc">Deprecated in favor of IBackend and ILayerSupport interfaces. </div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.html#l00375">LayerSupport.cpp:375</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a87ac712443e46c0deb38ab0eaf637e70"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a87ac712443e46c0deb38ab0eaf637e70">&#9670;&nbsp;</a></span>IsMemCopySupported()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">bool IsMemCopySupported </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a> &amp;&#160;</td>
<td class="paramname"><em>backend</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>input</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>output</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">char *&#160;</td>
<td class="paramname"><em>reasonIfUnsupported</em> = <code>nullptr</code>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t&#160;</td>
<td class="paramname"><em>reasonIfUnsupportedMaxLength</em> = <code>1024</code>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.html" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.html">ILayerSupport</a> interfaces. </p>
<p class="definition">Definition at line <a class="el" href="_layer_support_8cpp_source.html#l00385">385</a> of file <a class="el" href="_layer_support_8cpp_source.html">LayerSupport.cpp</a>.</p>
<p class="reference">References <a class="el" href="_layer_support_8cpp_source.html#l00038">FORWARD_LAYER_SUPPORT_FUNC</a>.</p>
<div class="fragment"><div class="line"><a name="l00390"></a><span class="lineno"> 390</span>&#160;{</div><div class="line"><a name="l00391"></a><span class="lineno"> 391</span>&#160; <a class="code" href="_layer_support_8cpp.html#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a>(backend, <a class="code" href="namespacearmnn.html#a87ac712443e46c0deb38ab0eaf637e70">IsMemCopySupported</a>, input, output);</div><div class="line"><a name="l00392"></a><span class="lineno"> 392</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a87ac712443e46c0deb38ab0eaf637e70"><div class="ttname"><a href="namespacearmnn.html#a87ac712443e46c0deb38ab0eaf637e70">armnn::IsMemCopySupported</a></div><div class="ttdeci">bool IsMemCopySupported(const BackendId &amp;backend, const TensorInfo &amp;input, const TensorInfo &amp;output, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</div><div class="ttdoc">Deprecated in favor of IBackend and ILayerSupport interfaces. </div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.html#l00385">LayerSupport.cpp:385</a></div></div>
<div class="ttc" id="_layer_support_8cpp_html_aaed0ec9df6d4157960512266e8b74b26"><div class="ttname"><a href="_layer_support_8cpp.html#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a></div><div class="ttdeci">#define FORWARD_LAYER_SUPPORT_FUNC(backendId, func,...)</div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.html#l00038">LayerSupport.cpp:38</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a99260bf94e4f8d0c8a527970cd52ce93"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a99260bf94e4f8d0c8a527970cd52ce93">&#9670;&nbsp;</a></span>IsMemImportSupported()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">bool armnn::IsMemImportSupported </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a> &amp;&#160;</td>
<td class="paramname"><em>backend</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>input</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>output</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">char *&#160;</td>
<td class="paramname"><em>reasonIfUnsupported</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t&#160;</td>
<td class="paramname"><em>reasonIfUnsupportedMaxLength</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_layer_support_8cpp_source.html#l00394">394</a> of file <a class="el" href="_layer_support_8cpp_source.html">LayerSupport.cpp</a>.</p>
<p class="reference">References <a class="el" href="_layer_support_8cpp_source.html#l00038">FORWARD_LAYER_SUPPORT_FUNC</a>.</p>
<div class="fragment"><div class="line"><a name="l00399"></a><span class="lineno"> 399</span>&#160;{</div><div class="line"><a name="l00400"></a><span class="lineno"> 400</span>&#160; <a class="code" href="_layer_support_8cpp.html#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a>(backend, <a class="code" href="namespacearmnn.html#a99260bf94e4f8d0c8a527970cd52ce93">IsMemImportSupported</a>, input, output);</div><div class="line"><a name="l00401"></a><span class="lineno"> 401</span>&#160;}</div><div class="ttc" id="_layer_support_8cpp_html_aaed0ec9df6d4157960512266e8b74b26"><div class="ttname"><a href="_layer_support_8cpp.html#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a></div><div class="ttdeci">#define FORWARD_LAYER_SUPPORT_FUNC(backendId, func,...)</div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.html#l00038">LayerSupport.cpp:38</a></div></div>
<div class="ttc" id="namespacearmnn_html_a99260bf94e4f8d0c8a527970cd52ce93"><div class="ttname"><a href="namespacearmnn.html#a99260bf94e4f8d0c8a527970cd52ce93">armnn::IsMemImportSupported</a></div><div class="ttdeci">bool IsMemImportSupported(const BackendId &amp;backend, const TensorInfo &amp;input, const TensorInfo &amp;output, char *reasonIfUnsupported, size_t reasonIfUnsupportedMaxLength)</div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.html#l00394">LayerSupport.cpp:394</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a6e2c7ec2b8d47bde2bc9fa04bb2091f6"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a6e2c7ec2b8d47bde2bc9fa04bb2091f6">&#9670;&nbsp;</a></span>IsMergerSupported() <span class="overload">[1/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">bool armnn::IsMergerSupported </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a> &amp;&#160;</td>
<td class="paramname"><em>backend</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const std::vector&lt; const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> *&gt;&#160;</td>
<td class="paramname"><em>inputs</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>output</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="structarmnn_1_1_origins_descriptor.html">OriginsDescriptor</a> &amp;&#160;</td>
<td class="paramname"><em>descriptor</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">char *&#160;</td>
<td class="paramname"><em>reasonIfUnsupported</em> = <code>nullptr</code>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t&#160;</td>
<td class="paramname"><em>reasonIfUnsupportedMaxLength</em> = <code>1024</code>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.html" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.html">ILayerSupport</a> interfaces. </p>
<p class="reference">Referenced by <a class="el" href="_layer_support_8cpp_source.html#l00414">IsMergerSupported()</a>.</p>
</div>
</div>
<a id="adf5de1faf58e2eea99a932883edc3ed0"></a>
<h2 class="memtitle"><span class="permalink"><a href="#adf5de1faf58e2eea99a932883edc3ed0">&#9670;&nbsp;</a></span>IsMergerSupported() <span class="overload">[2/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">bool armnn::IsMergerSupported </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a> &amp;&#160;</td>
<td class="paramname"><em>backend</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">std::vector&lt; const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> *&gt;&#160;</td>
<td class="paramname"><em>inputs</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>output</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="structarmnn_1_1_origins_descriptor.html">OriginsDescriptor</a> &amp;&#160;</td>
<td class="paramname"><em>descriptor</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">char *&#160;</td>
<td class="paramname"><em>reasonIfUnsupported</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t&#160;</td>
<td class="paramname"><em>reasonIfUnsupportedMaxLength</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_layer_support_8cpp_source.html#l00414">414</a> of file <a class="el" href="_layer_support_8cpp_source.html">LayerSupport.cpp</a>.</p>
<p class="reference">References <a class="el" href="_deprecated_8hpp_source.html#l00033">ARMNN_NO_DEPRECATE_WARN_BEGIN</a>, <a class="el" href="_deprecated_8hpp_source.html#l00034">ARMNN_NO_DEPRECATE_WARN_END</a>, <a class="el" href="_layer_support_8cpp_source.html#l00038">FORWARD_LAYER_SUPPORT_FUNC</a>, and <a class="el" href="namespacearmnn.html#a6e2c7ec2b8d47bde2bc9fa04bb2091f6">IsMergerSupported()</a>.</p>
<div class="fragment"><div class="line"><a name="l00420"></a><span class="lineno"> 420</span>&#160;{</div><div class="line"><a name="l00421"></a><span class="lineno"> 421</span>&#160; BOOST_ASSERT(inputs.size() &gt; 0);</div><div class="line"><a name="l00422"></a><span class="lineno"> 422</span>&#160;</div><div class="line"><a name="l00423"></a><span class="lineno"> 423</span>&#160; <a class="code" href="_deprecated_8hpp.html#ab66a241a0ed3ee89c866e777b035d0ed">ARMNN_NO_DEPRECATE_WARN_BEGIN</a></div><div class="line"><a name="l00424"></a><span class="lineno"> 424</span>&#160; <a class="code" href="_layer_support_8cpp.html#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a>(backend, <a class="code" href="namespacearmnn.html#adf5de1faf58e2eea99a932883edc3ed0">IsMergerSupported</a>, inputs, output, descriptor);</div><div class="line"><a name="l00425"></a><span class="lineno"> 425</span>&#160; <a class="code" href="_deprecated_8hpp.html#ad762b11b48e5c1d1c1743f529485728a">ARMNN_NO_DEPRECATE_WARN_END</a></div><div class="line"><a name="l00426"></a><span class="lineno"> 426</span>&#160;}</div><div class="ttc" id="_deprecated_8hpp_html_ab66a241a0ed3ee89c866e777b035d0ed"><div class="ttname"><a href="_deprecated_8hpp.html#ab66a241a0ed3ee89c866e777b035d0ed">ARMNN_NO_DEPRECATE_WARN_BEGIN</a></div><div class="ttdeci">#define ARMNN_NO_DEPRECATE_WARN_BEGIN</div><div class="ttdef"><b>Definition:</b> <a href="_deprecated_8hpp_source.html#l00033">Deprecated.hpp:33</a></div></div>
<div class="ttc" id="_layer_support_8cpp_html_aaed0ec9df6d4157960512266e8b74b26"><div class="ttname"><a href="_layer_support_8cpp.html#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a></div><div class="ttdeci">#define FORWARD_LAYER_SUPPORT_FUNC(backendId, func,...)</div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.html#l00038">LayerSupport.cpp:38</a></div></div>
<div class="ttc" id="namespacearmnn_html_adf5de1faf58e2eea99a932883edc3ed0"><div class="ttname"><a href="namespacearmnn.html#adf5de1faf58e2eea99a932883edc3ed0">armnn::IsMergerSupported</a></div><div class="ttdeci">bool IsMergerSupported(const BackendId &amp;backend, std::vector&lt; const TensorInfo *&gt; inputs, const TensorInfo &amp;output, const OriginsDescriptor &amp;descriptor, char *reasonIfUnsupported, size_t reasonIfUnsupportedMaxLength)</div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.html#l00414">LayerSupport.cpp:414</a></div></div>
<div class="ttc" id="_deprecated_8hpp_html_ad762b11b48e5c1d1c1743f529485728a"><div class="ttname"><a href="_deprecated_8hpp.html#ad762b11b48e5c1d1c1743f529485728a">ARMNN_NO_DEPRECATE_WARN_END</a></div><div class="ttdeci">#define ARMNN_NO_DEPRECATE_WARN_END</div><div class="ttdef"><b>Definition:</b> <a href="_deprecated_8hpp_source.html#l00034">Deprecated.hpp:34</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a7f518a73b9f7e41c5584c1f49bca8568"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a7f518a73b9f7e41c5584c1f49bca8568">&#9670;&nbsp;</a></span>IsMergeSupported()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">bool IsMergeSupported </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a> &amp;&#160;</td>
<td class="paramname"><em>backend</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>input0</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>input1</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>output</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">char *&#160;</td>
<td class="paramname"><em>reasonIfUnsupported</em> = <code>nullptr</code>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t&#160;</td>
<td class="paramname"><em>reasonIfUnsupportedMaxLength</em> = <code>1024</code>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.html" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.html">ILayerSupport</a> interfaces. </p>
<p class="definition">Definition at line <a class="el" href="_layer_support_8cpp_source.html#l00403">403</a> of file <a class="el" href="_layer_support_8cpp_source.html">LayerSupport.cpp</a>.</p>
<p class="reference">References <a class="el" href="_deprecated_8hpp_source.html#l00043">ARMNN_DEPRECATED_MSG</a>, and <a class="el" href="_layer_support_8cpp_source.html#l00038">FORWARD_LAYER_SUPPORT_FUNC</a>.</p>
<div class="fragment"><div class="line"><a name="l00409"></a><span class="lineno"> 409</span>&#160;{</div><div class="line"><a name="l00410"></a><span class="lineno"> 410</span>&#160; <a class="code" href="_layer_support_8cpp.html#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a>(backend, <a class="code" href="namespacearmnn.html#a7f518a73b9f7e41c5584c1f49bca8568">IsMergeSupported</a>, input0, input1, output);</div><div class="line"><a name="l00411"></a><span class="lineno"> 411</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a7f518a73b9f7e41c5584c1f49bca8568"><div class="ttname"><a href="namespacearmnn.html#a7f518a73b9f7e41c5584c1f49bca8568">armnn::IsMergeSupported</a></div><div class="ttdeci">bool IsMergeSupported(const BackendId &amp;backend, const TensorInfo &amp;input0, const TensorInfo &amp;input1, const TensorInfo &amp;output, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</div><div class="ttdoc">Deprecated in favor of IBackend and ILayerSupport interfaces. </div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.html#l00403">LayerSupport.cpp:403</a></div></div>
<div class="ttc" id="_layer_support_8cpp_html_aaed0ec9df6d4157960512266e8b74b26"><div class="ttname"><a href="_layer_support_8cpp.html#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a></div><div class="ttdeci">#define FORWARD_LAYER_SUPPORT_FUNC(backendId, func,...)</div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.html#l00038">LayerSupport.cpp:38</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="ab99d3d944b80f47bd1be70f63cc60abb"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab99d3d944b80f47bd1be70f63cc60abb">&#9670;&nbsp;</a></span>IsMinimumSupported()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">bool IsMinimumSupported </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a> &amp;&#160;</td>
<td class="paramname"><em>backend</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>input0</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>input1</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>output</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">char *&#160;</td>
<td class="paramname"><em>reasonIfUnsupported</em> = <code>nullptr</code>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t&#160;</td>
<td class="paramname"><em>reasonIfUnsupportedMaxLength</em> = <code>1024</code>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.html" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.html">ILayerSupport</a> interfaces. </p>
<p class="definition">Definition at line <a class="el" href="_layer_support_8cpp_source.html#l00428">428</a> of file <a class="el" href="_layer_support_8cpp_source.html">LayerSupport.cpp</a>.</p>
<p class="reference">References <a class="el" href="_layer_support_8cpp_source.html#l00038">FORWARD_LAYER_SUPPORT_FUNC</a>.</p>
<div class="fragment"><div class="line"><a name="l00434"></a><span class="lineno"> 434</span>&#160;{</div><div class="line"><a name="l00435"></a><span class="lineno"> 435</span>&#160; <a class="code" href="_layer_support_8cpp.html#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a>(backend, <a class="code" href="namespacearmnn.html#ab99d3d944b80f47bd1be70f63cc60abb">IsMinimumSupported</a>, input0, input1, output);</div><div class="line"><a name="l00436"></a><span class="lineno"> 436</span>&#160;}</div><div class="ttc" id="_layer_support_8cpp_html_aaed0ec9df6d4157960512266e8b74b26"><div class="ttname"><a href="_layer_support_8cpp.html#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a></div><div class="ttdeci">#define FORWARD_LAYER_SUPPORT_FUNC(backendId, func,...)</div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.html#l00038">LayerSupport.cpp:38</a></div></div>
<div class="ttc" id="namespacearmnn_html_ab99d3d944b80f47bd1be70f63cc60abb"><div class="ttname"><a href="namespacearmnn.html#ab99d3d944b80f47bd1be70f63cc60abb">armnn::IsMinimumSupported</a></div><div class="ttdeci">bool IsMinimumSupported(const BackendId &amp;backend, const TensorInfo &amp;input0, const TensorInfo &amp;input1, const TensorInfo &amp;output, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</div><div class="ttdoc">Deprecated in favor of IBackend and ILayerSupport interfaces. </div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.html#l00428">LayerSupport.cpp:428</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a56ff60c2946bf0b7e772007acce0d7ec"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a56ff60c2946bf0b7e772007acce0d7ec">&#9670;&nbsp;</a></span>IsMultiplicationSupported()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">bool IsMultiplicationSupported </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a> &amp;&#160;</td>
<td class="paramname"><em>backend</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>input0</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>input1</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>output</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">char *&#160;</td>
<td class="paramname"><em>reasonIfUnsupported</em> = <code>nullptr</code>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t&#160;</td>
<td class="paramname"><em>reasonIfUnsupportedMaxLength</em> = <code>1024</code>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.html" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.html">ILayerSupport</a> interfaces. </p>
<p class="definition">Definition at line <a class="el" href="_layer_support_8cpp_source.html#l00438">438</a> of file <a class="el" href="_layer_support_8cpp_source.html">LayerSupport.cpp</a>.</p>
<p class="reference">References <a class="el" href="_layer_support_8cpp_source.html#l00038">FORWARD_LAYER_SUPPORT_FUNC</a>.</p>
<div class="fragment"><div class="line"><a name="l00444"></a><span class="lineno"> 444</span>&#160;{</div><div class="line"><a name="l00445"></a><span class="lineno"> 445</span>&#160; <a class="code" href="_layer_support_8cpp.html#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a>(backend, <a class="code" href="namespacearmnn.html#a56ff60c2946bf0b7e772007acce0d7ec">IsMultiplicationSupported</a>, input0, input1, output);</div><div class="line"><a name="l00446"></a><span class="lineno"> 446</span>&#160;}</div><div class="ttc" id="_layer_support_8cpp_html_aaed0ec9df6d4157960512266e8b74b26"><div class="ttname"><a href="_layer_support_8cpp.html#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a></div><div class="ttdeci">#define FORWARD_LAYER_SUPPORT_FUNC(backendId, func,...)</div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.html#l00038">LayerSupport.cpp:38</a></div></div>
<div class="ttc" id="namespacearmnn_html_a56ff60c2946bf0b7e772007acce0d7ec"><div class="ttname"><a href="namespacearmnn.html#a56ff60c2946bf0b7e772007acce0d7ec">armnn::IsMultiplicationSupported</a></div><div class="ttdeci">bool IsMultiplicationSupported(const BackendId &amp;backend, const TensorInfo &amp;input0, const TensorInfo &amp;input1, const TensorInfo &amp;output, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</div><div class="ttdoc">Deprecated in favor of IBackend and ILayerSupport interfaces. </div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.html#l00438">LayerSupport.cpp:438</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a754b0ac19fd6341ce2b5f480c3b35e8e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a754b0ac19fd6341ce2b5f480c3b35e8e">&#9670;&nbsp;</a></span>IsNormalizationSupported()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">bool IsNormalizationSupported </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a> &amp;&#160;</td>
<td class="paramname"><em>backend</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>input</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>output</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="structarmnn_1_1_normalization_descriptor.html">NormalizationDescriptor</a> &amp;&#160;</td>
<td class="paramname"><em>descriptor</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">char *&#160;</td>
<td class="paramname"><em>reasonIfUnsupported</em> = <code>nullptr</code>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t&#160;</td>
<td class="paramname"><em>reasonIfUnsupportedMaxLength</em> = <code>1024</code>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.html" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.html">ILayerSupport</a> interfaces. </p>
<p class="definition">Definition at line <a class="el" href="_layer_support_8cpp_source.html#l00448">448</a> of file <a class="el" href="_layer_support_8cpp_source.html">LayerSupport.cpp</a>.</p>
<p class="reference">References <a class="el" href="_layer_support_8cpp_source.html#l00038">FORWARD_LAYER_SUPPORT_FUNC</a>.</p>
<div class="fragment"><div class="line"><a name="l00454"></a><span class="lineno"> 454</span>&#160;{</div><div class="line"><a name="l00455"></a><span class="lineno"> 455</span>&#160; <a class="code" href="_layer_support_8cpp.html#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a>(backend, <a class="code" href="namespacearmnn.html#a754b0ac19fd6341ce2b5f480c3b35e8e">IsNormalizationSupported</a>, input, output, descriptor);</div><div class="line"><a name="l00456"></a><span class="lineno"> 456</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a754b0ac19fd6341ce2b5f480c3b35e8e"><div class="ttname"><a href="namespacearmnn.html#a754b0ac19fd6341ce2b5f480c3b35e8e">armnn::IsNormalizationSupported</a></div><div class="ttdeci">bool IsNormalizationSupported(const BackendId &amp;backend, const TensorInfo &amp;input, const TensorInfo &amp;output, const NormalizationDescriptor &amp;descriptor, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</div><div class="ttdoc">Deprecated in favor of IBackend and ILayerSupport interfaces. </div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.html#l00448">LayerSupport.cpp:448</a></div></div>
<div class="ttc" id="_layer_support_8cpp_html_aaed0ec9df6d4157960512266e8b74b26"><div class="ttname"><a href="_layer_support_8cpp.html#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a></div><div class="ttdeci">#define FORWARD_LAYER_SUPPORT_FUNC(backendId, func,...)</div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.html#l00038">LayerSupport.cpp:38</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="ad05c0670c947d35d39b3b0217e9975cf"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad05c0670c947d35d39b3b0217e9975cf">&#9670;&nbsp;</a></span>IsOperationQueueDescriptor() <span class="overload">[1/4]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">constexpr bool armnn::IsOperationQueueDescriptor </td>
<td>(</td>
<td class="paramtype">const QueueDescriptorType &amp;&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_ref_workload_factory_8hpp_source.html#l00019">19</a> of file <a class="el" href="_ref_workload_factory_8hpp_source.html">RefWorkloadFactory.hpp</a>.</p>
<div class="fragment"><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;{ <span class="keywordflow">return</span> <span class="keyword">true</span>; }</div></div><!-- fragment -->
</div>
</div>
<a id="a93e7b76d19b33076b2a4eae44014d5ea"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a93e7b76d19b33076b2a4eae44014d5ea">&#9670;&nbsp;</a></span>IsOperationQueueDescriptor() <span class="overload">[2/4]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">constexpr bool armnn::IsOperationQueueDescriptor </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="structarmnn_1_1_mem_copy_queue_descriptor.html">MemCopyQueueDescriptor</a> &amp;&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_ref_workload_factory_8hpp_source.html#l00022">22</a> of file <a class="el" href="_ref_workload_factory_8hpp_source.html">RefWorkloadFactory.hpp</a>.</p>
<div class="fragment"><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;{ <span class="keywordflow">return</span> <span class="keyword">false</span>; }</div></div><!-- fragment -->
</div>
</div>
<a id="a05323af66b9f762e269a27562a2bbdd0"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a05323af66b9f762e269a27562a2bbdd0">&#9670;&nbsp;</a></span>IsOperationQueueDescriptor() <span class="overload">[3/4]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">constexpr bool armnn::IsOperationQueueDescriptor </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="structarmnn_1_1_constant_queue_descriptor.html">ConstantQueueDescriptor</a> &amp;&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_ref_workload_factory_8hpp_source.html#l00025">25</a> of file <a class="el" href="_ref_workload_factory_8hpp_source.html">RefWorkloadFactory.hpp</a>.</p>
<div class="fragment"><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;{ <span class="keywordflow">return</span> <span class="keyword">false</span>; }</div></div><!-- fragment -->
</div>
</div>
<a id="a91332212b6a2cc9c0ea32af03c600b4f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a91332212b6a2cc9c0ea32af03c600b4f">&#9670;&nbsp;</a></span>IsOperationQueueDescriptor() <span class="overload">[4/4]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">constexpr bool armnn::IsOperationQueueDescriptor </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="structarmnn_1_1_permute_queue_descriptor.html">PermuteQueueDescriptor</a> &amp;&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_ref_workload_factory_8hpp_source.html#l00028">28</a> of file <a class="el" href="_ref_workload_factory_8hpp_source.html">RefWorkloadFactory.hpp</a>.</p>
<div class="fragment"><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;{ <span class="keywordflow">return</span> <span class="keyword">false</span>; }</div></div><!-- fragment -->
</div>
</div>
<a id="a701cecec7714cf8bc9dca804f473610d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a701cecec7714cf8bc9dca804f473610d">&#9670;&nbsp;</a></span>IsOutputSupported()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">bool IsOutputSupported </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a> &amp;&#160;</td>
<td class="paramname"><em>backend</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>output</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">char *&#160;</td>
<td class="paramname"><em>reasonIfUnsupported</em> = <code>nullptr</code>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t&#160;</td>
<td class="paramname"><em>reasonIfUnsupportedMaxLength</em> = <code>1024</code>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.html" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.html">ILayerSupport</a> interfaces. </p>
<p class="definition">Definition at line <a class="el" href="_layer_support_8cpp_source.html#l00458">458</a> of file <a class="el" href="_layer_support_8cpp_source.html">LayerSupport.cpp</a>.</p>
<p class="reference">References <a class="el" href="_layer_support_8cpp_source.html#l00038">FORWARD_LAYER_SUPPORT_FUNC</a>.</p>
<div class="fragment"><div class="line"><a name="l00462"></a><span class="lineno"> 462</span>&#160;{</div><div class="line"><a name="l00463"></a><span class="lineno"> 463</span>&#160; <a class="code" href="_layer_support_8cpp.html#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a>(backend, <a class="code" href="namespacearmnn.html#a701cecec7714cf8bc9dca804f473610d">IsOutputSupported</a>, output);</div><div class="line"><a name="l00464"></a><span class="lineno"> 464</span>&#160;}</div><div class="ttc" id="_layer_support_8cpp_html_aaed0ec9df6d4157960512266e8b74b26"><div class="ttname"><a href="_layer_support_8cpp.html#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a></div><div class="ttdeci">#define FORWARD_LAYER_SUPPORT_FUNC(backendId, func,...)</div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.html#l00038">LayerSupport.cpp:38</a></div></div>
<div class="ttc" id="namespacearmnn_html_a701cecec7714cf8bc9dca804f473610d"><div class="ttname"><a href="namespacearmnn.html#a701cecec7714cf8bc9dca804f473610d">armnn::IsOutputSupported</a></div><div class="ttdeci">bool IsOutputSupported(const BackendId &amp;backend, const TensorInfo &amp;output, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</div><div class="ttdoc">Deprecated in favor of IBackend and ILayerSupport interfaces. </div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.html#l00458">LayerSupport.cpp:458</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a515e8a98d7ef9ecda64a2e1e5298461a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a515e8a98d7ef9ecda64a2e1e5298461a">&#9670;&nbsp;</a></span>IsPadSupported()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">bool IsPadSupported </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a> &amp;&#160;</td>
<td class="paramname"><em>backend</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>input</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>output</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="structarmnn_1_1_pad_descriptor.html">PadDescriptor</a> &amp;&#160;</td>
<td class="paramname"><em>descriptor</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">char *&#160;</td>
<td class="paramname"><em>reasonIfUnsupported</em> = <code>nullptr</code>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t&#160;</td>
<td class="paramname"><em>reasonIfUnsupportedMaxLength</em> = <code>1024</code>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.html" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.html">ILayerSupport</a> interfaces. </p>
<p class="definition">Definition at line <a class="el" href="_layer_support_8cpp_source.html#l00466">466</a> of file <a class="el" href="_layer_support_8cpp_source.html">LayerSupport.cpp</a>.</p>
<p class="reference">References <a class="el" href="_layer_support_8cpp_source.html#l00038">FORWARD_LAYER_SUPPORT_FUNC</a>.</p>
<div class="fragment"><div class="line"><a name="l00472"></a><span class="lineno"> 472</span>&#160;{</div><div class="line"><a name="l00473"></a><span class="lineno"> 473</span>&#160;</div><div class="line"><a name="l00474"></a><span class="lineno"> 474</span>&#160; <a class="code" href="_layer_support_8cpp.html#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a>(backend, <a class="code" href="namespacearmnn.html#a515e8a98d7ef9ecda64a2e1e5298461a">IsPadSupported</a>, input, output, descriptor);</div><div class="line"><a name="l00475"></a><span class="lineno"> 475</span>&#160;}</div><div class="ttc" id="_layer_support_8cpp_html_aaed0ec9df6d4157960512266e8b74b26"><div class="ttname"><a href="_layer_support_8cpp.html#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a></div><div class="ttdeci">#define FORWARD_LAYER_SUPPORT_FUNC(backendId, func,...)</div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.html#l00038">LayerSupport.cpp:38</a></div></div>
<div class="ttc" id="namespacearmnn_html_a515e8a98d7ef9ecda64a2e1e5298461a"><div class="ttname"><a href="namespacearmnn.html#a515e8a98d7ef9ecda64a2e1e5298461a">armnn::IsPadSupported</a></div><div class="ttdeci">bool IsPadSupported(const BackendId &amp;backend, const TensorInfo &amp;input, const TensorInfo &amp;output, const PadDescriptor &amp;descriptor, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</div><div class="ttdoc">Deprecated in favor of IBackend and ILayerSupport interfaces. </div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.html#l00466">LayerSupport.cpp:466</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="aa3a1bea3b3cd5611f13c06020dababc4"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa3a1bea3b3cd5611f13c06020dababc4">&#9670;&nbsp;</a></span>IsPermuteSupported()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">bool IsPermuteSupported </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a> &amp;&#160;</td>
<td class="paramname"><em>backend</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>input</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>output</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="structarmnn_1_1_permute_descriptor.html">PermuteDescriptor</a> &amp;&#160;</td>
<td class="paramname"><em>descriptor</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">char *&#160;</td>
<td class="paramname"><em>reasonIfUnsupported</em> = <code>nullptr</code>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t&#160;</td>
<td class="paramname"><em>reasonIfUnsupportedMaxLength</em> = <code>1024</code>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.html" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.html">ILayerSupport</a> interfaces. </p>
<p class="definition">Definition at line <a class="el" href="_layer_support_8cpp_source.html#l00501">501</a> of file <a class="el" href="_layer_support_8cpp_source.html">LayerSupport.cpp</a>.</p>
<p class="reference">References <a class="el" href="_layer_support_8cpp_source.html#l00038">FORWARD_LAYER_SUPPORT_FUNC</a>.</p>
<div class="fragment"><div class="line"><a name="l00507"></a><span class="lineno"> 507</span>&#160;{</div><div class="line"><a name="l00508"></a><span class="lineno"> 508</span>&#160; <a class="code" href="_layer_support_8cpp.html#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a>(backend, <a class="code" href="namespacearmnn.html#aa3a1bea3b3cd5611f13c06020dababc4">IsPermuteSupported</a>, input, output, descriptor);</div><div class="line"><a name="l00509"></a><span class="lineno"> 509</span>&#160;}</div><div class="ttc" id="_layer_support_8cpp_html_aaed0ec9df6d4157960512266e8b74b26"><div class="ttname"><a href="_layer_support_8cpp.html#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a></div><div class="ttdeci">#define FORWARD_LAYER_SUPPORT_FUNC(backendId, func,...)</div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.html#l00038">LayerSupport.cpp:38</a></div></div>
<div class="ttc" id="namespacearmnn_html_aa3a1bea3b3cd5611f13c06020dababc4"><div class="ttname"><a href="namespacearmnn.html#aa3a1bea3b3cd5611f13c06020dababc4">armnn::IsPermuteSupported</a></div><div class="ttdeci">bool IsPermuteSupported(const BackendId &amp;backend, const TensorInfo &amp;input, const TensorInfo &amp;output, const PermuteDescriptor &amp;descriptor, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</div><div class="ttdoc">Deprecated in favor of IBackend and ILayerSupport interfaces. </div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.html#l00501">LayerSupport.cpp:501</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="aea548aa1485adbeeb3e393a13bb6bff8"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aea548aa1485adbeeb3e393a13bb6bff8">&#9670;&nbsp;</a></span>IsPooling2dSupported()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">bool IsPooling2dSupported </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a> &amp;&#160;</td>
<td class="paramname"><em>backend</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>input</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>output</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="structarmnn_1_1_pooling2d_descriptor.html">Pooling2dDescriptor</a> &amp;&#160;</td>
<td class="paramname"><em>descriptor</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">char *&#160;</td>
<td class="paramname"><em>reasonIfUnsupported</em> = <code>nullptr</code>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t&#160;</td>
<td class="paramname"><em>reasonIfUnsupportedMaxLength</em> = <code>1024</code>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.html" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.html">ILayerSupport</a> interfaces. </p>
<p class="definition">Definition at line <a class="el" href="_layer_support_8cpp_source.html#l00511">511</a> of file <a class="el" href="_layer_support_8cpp_source.html">LayerSupport.cpp</a>.</p>
<p class="reference">References <a class="el" href="_layer_support_8cpp_source.html#l00038">FORWARD_LAYER_SUPPORT_FUNC</a>.</p>
<div class="fragment"><div class="line"><a name="l00517"></a><span class="lineno"> 517</span>&#160;{</div><div class="line"><a name="l00518"></a><span class="lineno"> 518</span>&#160; <a class="code" href="_layer_support_8cpp.html#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a>(backend, <a class="code" href="namespacearmnn.html#aea548aa1485adbeeb3e393a13bb6bff8">IsPooling2dSupported</a>, input, output, descriptor);</div><div class="line"><a name="l00519"></a><span class="lineno"> 519</span>&#160;}</div><div class="ttc" id="_layer_support_8cpp_html_aaed0ec9df6d4157960512266e8b74b26"><div class="ttname"><a href="_layer_support_8cpp.html#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a></div><div class="ttdeci">#define FORWARD_LAYER_SUPPORT_FUNC(backendId, func,...)</div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.html#l00038">LayerSupport.cpp:38</a></div></div>
<div class="ttc" id="namespacearmnn_html_aea548aa1485adbeeb3e393a13bb6bff8"><div class="ttname"><a href="namespacearmnn.html#aea548aa1485adbeeb3e393a13bb6bff8">armnn::IsPooling2dSupported</a></div><div class="ttdeci">bool IsPooling2dSupported(const BackendId &amp;backend, const TensorInfo &amp;input, const TensorInfo &amp;output, const Pooling2dDescriptor &amp;descriptor, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</div><div class="ttdoc">Deprecated in favor of IBackend and ILayerSupport interfaces. </div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.html#l00511">LayerSupport.cpp:511</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a3b4773564c3fd8c88e697ffe0afbe10d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a3b4773564c3fd8c88e697ffe0afbe10d">&#9670;&nbsp;</a></span>IsPreCompiledSupported()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">bool armnn::IsPreCompiledSupported </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a> &amp;&#160;</td>
<td class="paramname"><em>backend</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>input</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">char *&#160;</td>
<td class="paramname"><em>reasonIfUnsupported</em> = <code>nullptr</code>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t&#160;</td>
<td class="paramname"><em>reasonIfUnsupportedMaxLength</em> = <code>1024</code>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.html" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.html">ILayerSupport</a> interfaces. </p>
</div>
</div>
<a id="a5a0c1871f7e4822adb8b15e8ae76bca0"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a5a0c1871f7e4822adb8b15e8ae76bca0">&#9670;&nbsp;</a></span>IsPreluSupported()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">bool IsPreluSupported </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a> &amp;&#160;</td>
<td class="paramname"><em>backend</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>input</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>alpha</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>output</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">char *&#160;</td>
<td class="paramname"><em>reasonIfUnsupported</em> = <code>nullptr</code>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t&#160;</td>
<td class="paramname"><em>reasonIfUnsupportedMaxLength</em> = <code>1024</code>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.html" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.html">ILayerSupport</a> interfaces. </p>
<p class="definition">Definition at line <a class="el" href="_layer_support_8cpp_source.html#l00521">521</a> of file <a class="el" href="_layer_support_8cpp_source.html">LayerSupport.cpp</a>.</p>
<p class="reference">References <a class="el" href="_layer_support_8cpp_source.html#l00038">FORWARD_LAYER_SUPPORT_FUNC</a>.</p>
<div class="fragment"><div class="line"><a name="l00527"></a><span class="lineno"> 527</span>&#160;{</div><div class="line"><a name="l00528"></a><span class="lineno"> 528</span>&#160; <a class="code" href="_layer_support_8cpp.html#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a>(backend, <a class="code" href="namespacearmnn.html#a5a0c1871f7e4822adb8b15e8ae76bca0">IsPreluSupported</a>, input, alpha, output);</div><div class="line"><a name="l00529"></a><span class="lineno"> 529</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a5a0c1871f7e4822adb8b15e8ae76bca0"><div class="ttname"><a href="namespacearmnn.html#a5a0c1871f7e4822adb8b15e8ae76bca0">armnn::IsPreluSupported</a></div><div class="ttdeci">bool IsPreluSupported(const BackendId &amp;backend, const TensorInfo &amp;input, const TensorInfo &amp;alpha, const TensorInfo &amp;output, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</div><div class="ttdoc">Deprecated in favor of IBackend and ILayerSupport interfaces. </div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.html#l00521">LayerSupport.cpp:521</a></div></div>
<div class="ttc" id="_layer_support_8cpp_html_aaed0ec9df6d4157960512266e8b74b26"><div class="ttname"><a href="_layer_support_8cpp.html#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a></div><div class="ttdeci">#define FORWARD_LAYER_SUPPORT_FUNC(backendId, func,...)</div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.html#l00038">LayerSupport.cpp:38</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a47d136a5519331dee24f5e01b206ae7c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a47d136a5519331dee24f5e01b206ae7c">&#9670;&nbsp;</a></span>IsQAsymmS8()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">bool armnn::IsQAsymmS8 </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="structarmnn_1_1_workload_info.html">WorkloadInfo</a> &amp;&#160;</td>
<td class="paramname"><em>info</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_ref_workload_factory_8cpp_source.html#l00068">68</a> of file <a class="el" href="_ref_workload_factory_8cpp_source.html">RefWorkloadFactory.cpp</a>.</p>
<p class="reference">References <a class="el" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>.</p>
<p class="reference">Referenced by <a class="el" href="_ref_workload_factory_8cpp_source.html#l00198">RefWorkloadFactory::CreateDebug()</a>.</p>
<div class="fragment"><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160;{</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; <span class="keywordflow">return</span> IsDataType&lt;DataType::QAsymmS8&gt;(<a class="code" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>);</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c"><div class="ttname"><a href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">armnn::BoostLogSeverityMapping::info</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a37c36bbf668cd8a0d7dcd731c9b591d7"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a37c36bbf668cd8a0d7dcd731c9b591d7">&#9670;&nbsp;</a></span>IsQAsymmU8()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">bool armnn::IsQAsymmU8 </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="structarmnn_1_1_workload_info.html">WorkloadInfo</a> &amp;&#160;</td>
<td class="paramname"><em>info</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_ref_workload_factory_8cpp_source.html#l00073">73</a> of file <a class="el" href="_ref_workload_factory_8cpp_source.html">RefWorkloadFactory.cpp</a>.</p>
<p class="reference">References <a class="el" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>.</p>
<p class="reference">Referenced by <a class="el" href="_ref_workload_factory_8cpp_source.html#l00198">RefWorkloadFactory::CreateDebug()</a>.</p>
<div class="fragment"><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160;{</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; <span class="keywordflow">return</span> IsDataType&lt;DataType::QAsymmU8&gt;(<a class="code" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>);</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c"><div class="ttname"><a href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">armnn::BoostLogSeverityMapping::info</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="abcd0d843d5736b78740ae73249b6b977"></a>
<h2 class="memtitle"><span class="permalink"><a href="#abcd0d843d5736b78740ae73249b6b977">&#9670;&nbsp;</a></span>IsQSymmS16()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">bool armnn::IsQSymmS16 </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="structarmnn_1_1_workload_info.html">WorkloadInfo</a> &amp;&#160;</td>
<td class="paramname"><em>info</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_ref_workload_factory_8cpp_source.html#l00058">58</a> of file <a class="el" href="_ref_workload_factory_8cpp_source.html">RefWorkloadFactory.cpp</a>.</p>
<p class="reference">References <a class="el" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>.</p>
<p class="reference">Referenced by <a class="el" href="_ref_workload_factory_8cpp_source.html#l00198">RefWorkloadFactory::CreateDebug()</a>, <a class="el" href="_ref_workload_factory_8cpp_source.html#l00433">RefWorkloadFactory::CreatePad()</a>, and <a class="el" href="_ref_workload_factory_8cpp_source.html#l00447">RefWorkloadFactory::CreatePermute()</a>.</p>
<div class="fragment"><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160;{</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; <span class="keywordflow">return</span> IsDataType&lt;DataType::QSymmS16&gt;(<a class="code" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>);</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c"><div class="ttname"><a href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">armnn::BoostLogSeverityMapping::info</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a09a7cd515c3b495e61b2a5116bf6a335"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a09a7cd515c3b495e61b2a5116bf6a335">&#9670;&nbsp;</a></span>IsQSymmS8()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">bool armnn::IsQSymmS8 </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="structarmnn_1_1_workload_info.html">WorkloadInfo</a> &amp;&#160;</td>
<td class="paramname"><em>info</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_ref_workload_factory_8cpp_source.html#l00063">63</a> of file <a class="el" href="_ref_workload_factory_8cpp_source.html">RefWorkloadFactory.cpp</a>.</p>
<p class="reference">References <a class="el" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>.</p>
<p class="reference">Referenced by <a class="el" href="_ref_workload_factory_8cpp_source.html#l00198">RefWorkloadFactory::CreateDebug()</a>.</p>
<div class="fragment"><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160;{</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; <span class="keywordflow">return</span> IsDataType&lt;DataType::QSymmS8&gt;(<a class="code" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>);</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c"><div class="ttname"><a href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">armnn::BoostLogSeverityMapping::info</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="ad91bc7bfe29186f5d78c28386c6c5309"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad91bc7bfe29186f5d78c28386c6c5309">&#9670;&nbsp;</a></span>IsQuantized8BitType()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">constexpr bool armnn::IsQuantized8BitType </td>
<td>(</td>
<td class="paramtype"><a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a>&#160;</td>
<td class="paramname"><em>dataType</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_types_utils_8hpp_source.html#l00237">237</a> of file <a class="el" href="_types_utils_8hpp_source.html">TypesUtils.hpp</a>.</p>
<p class="reference">References <a class="el" href="_deprecated_8hpp_source.html#l00033">ARMNN_NO_DEPRECATE_WARN_BEGIN</a>, <a class="el" href="_deprecated_8hpp_source.html#l00034">ARMNN_NO_DEPRECATE_WARN_END</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a9d02ea768c081d4bdb2b7cab0b3f510d">QAsymmS8</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a0a3f57c876f5a230244c38e1453a8a6e">QAsymmU8</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a9945327825b115e93a3b89f4302e76db">QSymmS8</a>, and <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a34346ec9593088efe3a29c0dad92166d">QuantizedSymm8PerAxis</a>.</p>
<p class="reference">Referenced by <a class="el" href="_workload_data_8cpp_source.html#l00025">GetBiasDataType()</a>, <a class="el" href="_ref_layer_support_8cpp_source.html#l00410">RefLayerSupport::IsConvolution2dSupported()</a>, <a class="el" href="_ref_layer_support_8cpp_source.html#l00538">RefLayerSupport::IsDepthwiseConvolutionSupported()</a>, and <a class="el" href="_types_utils_8hpp_source.html#l00247">IsQuantizedType()</a>.</p>
<div class="fragment"><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160;{</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160; <a class="code" href="_deprecated_8hpp.html#ab66a241a0ed3ee89c866e777b035d0ed">ARMNN_NO_DEPRECATE_WARN_BEGIN</a></div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160; <span class="keywordflow">return</span> dataType == DataType::QAsymmU8 ||</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160; dataType == DataType::QAsymmS8 ||</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160; dataType == DataType::QSymmS8 ||</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160; dataType == DataType::QuantizedSymm8PerAxis;</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160; <a class="code" href="_deprecated_8hpp.html#ad762b11b48e5c1d1c1743f529485728a">ARMNN_NO_DEPRECATE_WARN_END</a></div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160;}</div><div class="ttc" id="_deprecated_8hpp_html_ab66a241a0ed3ee89c866e777b035d0ed"><div class="ttname"><a href="_deprecated_8hpp.html#ab66a241a0ed3ee89c866e777b035d0ed">ARMNN_NO_DEPRECATE_WARN_BEGIN</a></div><div class="ttdeci">#define ARMNN_NO_DEPRECATE_WARN_BEGIN</div><div class="ttdef"><b>Definition:</b> <a href="_deprecated_8hpp_source.html#l00033">Deprecated.hpp:33</a></div></div>
<div class="ttc" id="_deprecated_8hpp_html_ad762b11b48e5c1d1c1743f529485728a"><div class="ttname"><a href="_deprecated_8hpp.html#ad762b11b48e5c1d1c1743f529485728a">ARMNN_NO_DEPRECATE_WARN_END</a></div><div class="ttdeci">#define ARMNN_NO_DEPRECATE_WARN_END</div><div class="ttdef"><b>Definition:</b> <a href="_deprecated_8hpp_source.html#l00034">Deprecated.hpp:34</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a4069381c4737d57fc7fd299a61ad9ca1"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a4069381c4737d57fc7fd299a61ad9ca1">&#9670;&nbsp;</a></span>IsQuantizedLstmSupported()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">bool IsQuantizedLstmSupported </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a> &amp;&#160;</td>
<td class="paramname"><em>backend</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>input</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>previousCellStateIn</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>previousOutputIn</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>cellStateOut</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>output</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="structarmnn_1_1_quantized_lstm_input_params_info.html">QuantizedLstmInputParamsInfo</a> &amp;&#160;</td>
<td class="paramname"><em>paramsInfo</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">char *&#160;</td>
<td class="paramname"><em>reasonIfUnsupported</em> = <code>nullptr</code>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t&#160;</td>
<td class="paramname"><em>reasonIfUnsupportedMaxLength</em> = <code>1024</code>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.html" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.html">ILayerSupport</a> interfaces. </p>
<p class="definition">Definition at line <a class="el" href="_layer_support_8cpp_source.html#l00486">486</a> of file <a class="el" href="_layer_support_8cpp_source.html">LayerSupport.cpp</a>.</p>
<p class="reference">References <a class="el" href="_layer_support_8cpp_source.html#l00038">FORWARD_LAYER_SUPPORT_FUNC</a>.</p>
<div class="fragment"><div class="line"><a name="l00496"></a><span class="lineno"> 496</span>&#160;{</div><div class="line"><a name="l00497"></a><span class="lineno"> 497</span>&#160; <a class="code" href="_layer_support_8cpp.html#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a>(backend, <a class="code" href="namespacearmnn.html#a4069381c4737d57fc7fd299a61ad9ca1">IsQuantizedLstmSupported</a>, input, previousCellStateIn, previousOutputIn,</div><div class="line"><a name="l00498"></a><span class="lineno"> 498</span>&#160; cellStateOut, output, paramsInfo);</div><div class="line"><a name="l00499"></a><span class="lineno"> 499</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a4069381c4737d57fc7fd299a61ad9ca1"><div class="ttname"><a href="namespacearmnn.html#a4069381c4737d57fc7fd299a61ad9ca1">armnn::IsQuantizedLstmSupported</a></div><div class="ttdeci">bool IsQuantizedLstmSupported(const BackendId &amp;backend, const TensorInfo &amp;input, const TensorInfo &amp;previousCellStateIn, const TensorInfo &amp;previousOutputIn, const TensorInfo &amp;cellStateOut, const TensorInfo &amp;output, const QuantizedLstmInputParamsInfo &amp;paramsInfo, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</div><div class="ttdoc">Deprecated in favor of IBackend and ILayerSupport interfaces. </div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.html#l00486">LayerSupport.cpp:486</a></div></div>
<div class="ttc" id="_layer_support_8cpp_html_aaed0ec9df6d4157960512266e8b74b26"><div class="ttname"><a href="_layer_support_8cpp.html#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a></div><div class="ttdeci">#define FORWARD_LAYER_SUPPORT_FUNC(backendId, func,...)</div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.html#l00038">LayerSupport.cpp:38</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="ad44c007f21af2d0375e3ef9400a1b275"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad44c007f21af2d0375e3ef9400a1b275">&#9670;&nbsp;</a></span>IsQuantizedType() <span class="overload">[1/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">constexpr bool armnn::IsQuantizedType </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_types_utils_8hpp_source.html#l00232">232</a> of file <a class="el" href="_types_utils_8hpp_source.html">TypesUtils.hpp</a>.</p>
<p class="reference">Referenced by <a class="el" href="_tensor_8cpp_source.html#l00290">TensorInfo::IsQuantized()</a>, <a class="el" href="_workload_data_8cpp_source.html#l02197">QuantizeQueueDescriptor::Validate()</a>, and <a class="el" href="_workload_data_8cpp_source.html#l02512">DequantizeQueueDescriptor::Validate()</a>.</p>
<div class="fragment"><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160;{</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160; <span class="keywordflow">return</span> std::is_integral&lt;T&gt;::value;</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160;}</div></div><!-- fragment -->
</div>
</div>
<a id="aa172264d7075abf828e0b6894996a561"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa172264d7075abf828e0b6894996a561">&#9670;&nbsp;</a></span>IsQuantizedType() <span class="overload">[2/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">constexpr bool armnn::IsQuantizedType </td>
<td>(</td>
<td class="paramtype"><a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a>&#160;</td>
<td class="paramname"><em>dataType</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_types_utils_8hpp_source.html#l00247">247</a> of file <a class="el" href="_types_utils_8hpp_source.html">TypesUtils.hpp</a>.</p>
<p class="reference">References <a class="el" href="_types_utils_8hpp_source.html#l00237">IsQuantized8BitType()</a>, and <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7">QSymmS16</a>.</p>
<div class="fragment"><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160;{</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160; <span class="keywordflow">return</span> dataType == DataType::QSymmS16 || <a class="code" href="namespacearmnn.html#ad91bc7bfe29186f5d78c28386c6c5309">IsQuantized8BitType</a>(dataType);</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_ad91bc7bfe29186f5d78c28386c6c5309"><div class="ttname"><a href="namespacearmnn.html#ad91bc7bfe29186f5d78c28386c6c5309">armnn::IsQuantized8BitType</a></div><div class="ttdeci">constexpr bool IsQuantized8BitType(DataType dataType)</div><div class="ttdef"><b>Definition:</b> <a href="_types_utils_8hpp_source.html#l00237">TypesUtils.hpp:237</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a599a95f708fa0b6a6230dc6c9e73ea3e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a599a95f708fa0b6a6230dc6c9e73ea3e">&#9670;&nbsp;</a></span>IsQuantizeSupported()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">bool armnn::IsQuantizeSupported </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a> &amp;&#160;</td>
<td class="paramname"><em>backend</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>input</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>output</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">char *&#160;</td>
<td class="paramname"><em>reasonIfUnsupported</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t&#160;</td>
<td class="paramname"><em>reasonIfUnsupportedMaxLength</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_layer_support_8cpp_source.html#l00477">477</a> of file <a class="el" href="_layer_support_8cpp_source.html">LayerSupport.cpp</a>.</p>
<p class="reference">References <a class="el" href="_layer_support_8cpp_source.html#l00038">FORWARD_LAYER_SUPPORT_FUNC</a>.</p>
<div class="fragment"><div class="line"><a name="l00482"></a><span class="lineno"> 482</span>&#160;{</div><div class="line"><a name="l00483"></a><span class="lineno"> 483</span>&#160; <a class="code" href="_layer_support_8cpp.html#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a>(backend, <a class="code" href="namespacearmnn.html#a599a95f708fa0b6a6230dc6c9e73ea3e">IsQuantizeSupported</a>, input, output);</div><div class="line"><a name="l00484"></a><span class="lineno"> 484</span>&#160;}</div><div class="ttc" id="_layer_support_8cpp_html_aaed0ec9df6d4157960512266e8b74b26"><div class="ttname"><a href="_layer_support_8cpp.html#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a></div><div class="ttdeci">#define FORWARD_LAYER_SUPPORT_FUNC(backendId, func,...)</div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.html#l00038">LayerSupport.cpp:38</a></div></div>
<div class="ttc" id="namespacearmnn_html_a599a95f708fa0b6a6230dc6c9e73ea3e"><div class="ttname"><a href="namespacearmnn.html#a599a95f708fa0b6a6230dc6c9e73ea3e">armnn::IsQuantizeSupported</a></div><div class="ttdeci">bool IsQuantizeSupported(const BackendId &amp;backend, const TensorInfo &amp;input, const TensorInfo &amp;output, char *reasonIfUnsupported, size_t reasonIfUnsupportedMaxLength)</div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.html#l00477">LayerSupport.cpp:477</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a6b10dc0d12c7f4a52ad01b9975dbe908"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a6b10dc0d12c7f4a52ad01b9975dbe908">&#9670;&nbsp;</a></span>IsReadyForSplitAssignment()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">bool armnn::IsReadyForSplitAssignment </td>
<td>(</td>
<td class="paramtype">LayerSelectionInfo::LayerInfoContainer &amp;&#160;</td>
<td class="paramname"><em>layerInfos</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">LayerSelectionInfo &amp;&#160;</td>
<td class="paramname"><em>layerInfo</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_subgraph_view_selector_8cpp_source.html#l00366">366</a> of file <a class="el" href="_subgraph_view_selector_8cpp_source.html">SubgraphViewSelector.cpp</a>.</p>
<p class="reference">References <a class="el" href="_subgraph_view_selector_8cpp_source.html#l00259">ForEachLayerInput()</a>.</p>
<p class="reference">Referenced by <a class="el" href="_subgraph_view_selector_8cpp_source.html#l00381">SubgraphViewSelector::SelectSubgraphs()</a>.</p>
<div class="fragment"><div class="line"><a name="l00367"></a><span class="lineno"> 367</span>&#160;{</div><div class="line"><a name="l00368"></a><span class="lineno"> 368</span>&#160; <span class="keywordtype">bool</span> ready = <span class="keyword">true</span>;</div><div class="line"><a name="l00369"></a><span class="lineno"> 369</span>&#160; <a class="code" href="namespacearmnn.html#afce94270d9c4a51cd0c4ac6a58af4e26">ForEachLayerInput</a>(layerInfos, layerInfo,</div><div class="line"><a name="l00370"></a><span class="lineno"> 370</span>&#160; [&amp;ready](LayerSelectionInfo&amp; parentInfo)</div><div class="line"><a name="l00371"></a><span class="lineno"> 371</span>&#160; {</div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span>&#160; <span class="keywordflow">if</span> (!parentInfo.m_IsProcessed)</div><div class="line"><a name="l00373"></a><span class="lineno"> 373</span>&#160; {</div><div class="line"><a name="l00374"></a><span class="lineno"> 374</span>&#160; ready = false;</div><div class="line"><a name="l00375"></a><span class="lineno"> 375</span>&#160; }</div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span>&#160; });</div><div class="line"><a name="l00377"></a><span class="lineno"> 377</span>&#160; <span class="keywordflow">return</span> ready;</div><div class="line"><a name="l00378"></a><span class="lineno"> 378</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_afce94270d9c4a51cd0c4ac6a58af4e26"><div class="ttname"><a href="namespacearmnn.html#afce94270d9c4a51cd0c4ac6a58af4e26">armnn::ForEachLayerInput</a></div><div class="ttdeci">void ForEachLayerInput(LayerSelectionInfo::LayerInfoContainer &amp;layerInfos, LayerSelectionInfo &amp;layerInfo, Delegate function)</div><div class="ttdef"><b>Definition:</b> <a href="_subgraph_view_selector_8cpp_source.html#l00259">SubgraphViewSelector.cpp:259</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="af5014cbc003abcf201d4372b0012734c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af5014cbc003abcf201d4372b0012734c">&#9670;&nbsp;</a></span>IsReshapeSupported() <span class="overload">[1/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">bool armnn::IsReshapeSupported </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a> &amp;&#160;</td>
<td class="paramname"><em>backend</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>input</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="structarmnn_1_1_reshape_descriptor.html">ReshapeDescriptor</a> &amp;&#160;</td>
<td class="paramname"><em>descriptor</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">char *&#160;</td>
<td class="paramname"><em>reasonIfUnsupported</em> = <code>nullptr</code>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t&#160;</td>
<td class="paramname"><em>reasonIfUnsupportedMaxLength</em> = <code>1024</code>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.html" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.html">ILayerSupport</a> interfaces. </p>
<p class="reference">Referenced by <a class="el" href="_layer_support_8cpp_source.html#l00531">IsReshapeSupported()</a>.</p>
</div>
</div>
<a id="a4bb384bc41a94bc7c3b4f543cd3fd437"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a4bb384bc41a94bc7c3b4f543cd3fd437">&#9670;&nbsp;</a></span>IsReshapeSupported() <span class="overload">[2/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">bool armnn::IsReshapeSupported </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a> &amp;&#160;</td>
<td class="paramname"><em>backend</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>input</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>output</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="structarmnn_1_1_reshape_descriptor.html">ReshapeDescriptor</a> &amp;&#160;</td>
<td class="paramname"><em>descriptor</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">char *&#160;</td>
<td class="paramname"><em>reasonIfUnsupported</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t&#160;</td>
<td class="paramname"><em>reasonIfUnsupportedMaxLength</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_layer_support_8cpp_source.html#l00531">531</a> of file <a class="el" href="_layer_support_8cpp_source.html">LayerSupport.cpp</a>.</p>
<p class="reference">References <a class="el" href="_layer_support_8cpp_source.html#l00038">FORWARD_LAYER_SUPPORT_FUNC</a>, and <a class="el" href="namespacearmnn.html#af5014cbc003abcf201d4372b0012734c">IsReshapeSupported()</a>.</p>
<div class="fragment"><div class="line"><a name="l00537"></a><span class="lineno"> 537</span>&#160;{</div><div class="line"><a name="l00538"></a><span class="lineno"> 538</span>&#160; <a class="code" href="_layer_support_8cpp.html#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a>(backend, <a class="code" href="namespacearmnn.html#a4bb384bc41a94bc7c3b4f543cd3fd437">IsReshapeSupported</a>, input, output, descriptor);</div><div class="line"><a name="l00539"></a><span class="lineno"> 539</span>&#160;}</div><div class="ttc" id="_layer_support_8cpp_html_aaed0ec9df6d4157960512266e8b74b26"><div class="ttname"><a href="_layer_support_8cpp.html#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a></div><div class="ttdeci">#define FORWARD_LAYER_SUPPORT_FUNC(backendId, func,...)</div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.html#l00038">LayerSupport.cpp:38</a></div></div>
<div class="ttc" id="namespacearmnn_html_a4bb384bc41a94bc7c3b4f543cd3fd437"><div class="ttname"><a href="namespacearmnn.html#a4bb384bc41a94bc7c3b4f543cd3fd437">armnn::IsReshapeSupported</a></div><div class="ttdeci">bool IsReshapeSupported(const BackendId &amp;backend, const TensorInfo &amp;input, const TensorInfo &amp;output, const ReshapeDescriptor &amp;descriptor, char *reasonIfUnsupported, size_t reasonIfUnsupportedMaxLength)</div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.html#l00531">LayerSupport.cpp:531</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a936d3f949a334668f839fb0bdd170b72"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a936d3f949a334668f839fb0bdd170b72">&#9670;&nbsp;</a></span>IsResizeBilinearSupported()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">bool IsResizeBilinearSupported </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a> &amp;&#160;</td>
<td class="paramname"><em>backend</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>input</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>output</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">char *&#160;</td>
<td class="paramname"><em>reasonIfUnsupported</em> = <code>nullptr</code>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t&#160;</td>
<td class="paramname"><em>reasonIfUnsupportedMaxLength</em> = <code>1024</code>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.html" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.html">ILayerSupport</a> interfaces. </p>
<p class="definition">Definition at line <a class="el" href="_layer_support_8cpp_source.html#l00552">552</a> of file <a class="el" href="_layer_support_8cpp_source.html">LayerSupport.cpp</a>.</p>
<p class="reference">References <a class="el" href="namespacearmnn.html#a9a2af2f8c4af4f9efa8e79417d505ac4aaf17c98bbd83c27d6426d2ff3fa81d7f">Bilinear</a>, <a class="el" href="_layer_support_8cpp_source.html#l00038">FORWARD_LAYER_SUPPORT_FUNC</a>, <a class="el" href="_layer_support_8cpp_source.html#l00541">IsResizeSupported()</a>, <a class="el" href="_descriptors_8hpp_source.html#l00749">ResizeDescriptor::m_Method</a>, <a class="el" href="_descriptors_8hpp_source.html#l00746">ResizeDescriptor::m_TargetHeight</a>, and <a class="el" href="_descriptors_8hpp_source.html#l00744">ResizeDescriptor::m_TargetWidth</a>.</p>
<div class="fragment"><div class="line"><a name="l00557"></a><span class="lineno"> 557</span>&#160;{</div><div class="line"><a name="l00558"></a><span class="lineno"> 558</span>&#160; ResizeDescriptor descriptor;</div><div class="line"><a name="l00559"></a><span class="lineno"> 559</span>&#160; descriptor.m_Method = ResizeMethod::Bilinear;</div><div class="line"><a name="l00560"></a><span class="lineno"> 560</span>&#160;</div><div class="line"><a name="l00561"></a><span class="lineno"> 561</span>&#160; <span class="keyword">const</span> TensorShape&amp; outputShape = output.GetShape();</div><div class="line"><a name="l00562"></a><span class="lineno"> 562</span>&#160; descriptor.m_TargetWidth = outputShape[3];</div><div class="line"><a name="l00563"></a><span class="lineno"> 563</span>&#160; descriptor.m_TargetHeight = outputShape[2];</div><div class="line"><a name="l00564"></a><span class="lineno"> 564</span>&#160;</div><div class="line"><a name="l00565"></a><span class="lineno"> 565</span>&#160; <a class="code" href="_layer_support_8cpp.html#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a>(backend, <a class="code" href="namespacearmnn.html#a90a1aadb53c7537f225252afd681ff22">IsResizeSupported</a>, input, output, descriptor);</div><div class="line"><a name="l00566"></a><span class="lineno"> 566</span>&#160;}</div><div class="ttc" id="_layer_support_8cpp_html_aaed0ec9df6d4157960512266e8b74b26"><div class="ttname"><a href="_layer_support_8cpp.html#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a></div><div class="ttdeci">#define FORWARD_LAYER_SUPPORT_FUNC(backendId, func,...)</div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.html#l00038">LayerSupport.cpp:38</a></div></div>
<div class="ttc" id="namespacearmnn_html_a90a1aadb53c7537f225252afd681ff22"><div class="ttname"><a href="namespacearmnn.html#a90a1aadb53c7537f225252afd681ff22">armnn::IsResizeSupported</a></div><div class="ttdeci">bool IsResizeSupported(const BackendId &amp;backend, const TensorInfo &amp;input, const TensorInfo &amp;output, const ResizeDescriptor &amp;descriptor, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</div><div class="ttdoc">Deprecated in favor of IBackend and ILayerSupport interfaces. </div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.html#l00541">LayerSupport.cpp:541</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a90a1aadb53c7537f225252afd681ff22"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a90a1aadb53c7537f225252afd681ff22">&#9670;&nbsp;</a></span>IsResizeSupported()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">bool IsResizeSupported </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a> &amp;&#160;</td>
<td class="paramname"><em>backend</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>input</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>output</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="structarmnn_1_1_resize_descriptor.html">ResizeDescriptor</a> &amp;&#160;</td>
<td class="paramname"><em>descriptor</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">char *&#160;</td>
<td class="paramname"><em>reasonIfUnsupported</em> = <code>nullptr</code>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t&#160;</td>
<td class="paramname"><em>reasonIfUnsupportedMaxLength</em> = <code>1024</code>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.html" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.html">ILayerSupport</a> interfaces. </p>
<p class="definition">Definition at line <a class="el" href="_layer_support_8cpp_source.html#l00541">541</a> of file <a class="el" href="_layer_support_8cpp_source.html">LayerSupport.cpp</a>.</p>
<p class="reference">References <a class="el" href="_deprecated_8hpp_source.html#l00043">ARMNN_DEPRECATED_MSG</a>, and <a class="el" href="_layer_support_8cpp_source.html#l00038">FORWARD_LAYER_SUPPORT_FUNC</a>.</p>
<p class="reference">Referenced by <a class="el" href="_cl_layer_support_8cpp_source.html#l00663">ClLayerSupport::IsResizeBilinearSupported()</a>, <a class="el" href="_neon_layer_support_8cpp_source.html#l00643">NeonLayerSupport::IsResizeBilinearSupported()</a>, and <a class="el" href="_layer_support_8cpp_source.html#l00552">IsResizeBilinearSupported()</a>.</p>
<div class="fragment"><div class="line"><a name="l00547"></a><span class="lineno"> 547</span>&#160;{</div><div class="line"><a name="l00548"></a><span class="lineno"> 548</span>&#160; <a class="code" href="_layer_support_8cpp.html#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a>(backend, <a class="code" href="namespacearmnn.html#a90a1aadb53c7537f225252afd681ff22">IsResizeSupported</a>, input, output, descriptor);</div><div class="line"><a name="l00549"></a><span class="lineno"> 549</span>&#160;}</div><div class="ttc" id="_layer_support_8cpp_html_aaed0ec9df6d4157960512266e8b74b26"><div class="ttname"><a href="_layer_support_8cpp.html#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a></div><div class="ttdeci">#define FORWARD_LAYER_SUPPORT_FUNC(backendId, func,...)</div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.html#l00038">LayerSupport.cpp:38</a></div></div>
<div class="ttc" id="namespacearmnn_html_a90a1aadb53c7537f225252afd681ff22"><div class="ttname"><a href="namespacearmnn.html#a90a1aadb53c7537f225252afd681ff22">armnn::IsResizeSupported</a></div><div class="ttdeci">bool IsResizeSupported(const BackendId &amp;backend, const TensorInfo &amp;input, const TensorInfo &amp;output, const ResizeDescriptor &amp;descriptor, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</div><div class="ttdoc">Deprecated in favor of IBackend and ILayerSupport interfaces. </div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.html#l00541">LayerSupport.cpp:541</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="accc42ba9679a474e75b43cdf1efa9422"></a>
<h2 class="memtitle"><span class="permalink"><a href="#accc42ba9679a474e75b43cdf1efa9422">&#9670;&nbsp;</a></span>IsRsqrtSupported()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">bool IsRsqrtSupported </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a> &amp;&#160;</td>
<td class="paramname"><em>backend</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>input</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>output</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">char *&#160;</td>
<td class="paramname"><em>reasonIfUnsupported</em> = <code>nullptr</code>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t&#160;</td>
<td class="paramname"><em>reasonIfUnsupportedMaxLength</em> = <code>1024</code>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.html" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.html">ILayerSupport</a> interfaces. </p>
<p class="definition">Definition at line <a class="el" href="_layer_support_8cpp_source.html#l00568">568</a> of file <a class="el" href="_layer_support_8cpp_source.html">LayerSupport.cpp</a>.</p>
<p class="reference">References <a class="el" href="_layer_support_8cpp_source.html#l00038">FORWARD_LAYER_SUPPORT_FUNC</a>, and <a class="el" href="namespacearmnn.html#a1cfaa710db2a54673b21d2ea2da757c8a09bb7f6e2118c85a6a55bd4bf2beeca4">Rsqrt</a>.</p>
<div class="fragment"><div class="line"><a name="l00573"></a><span class="lineno"> 573</span>&#160;{</div><div class="line"><a name="l00574"></a><span class="lineno"> 574</span>&#160; <a class="code" href="_layer_support_8cpp.html#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a>(backend,</div><div class="line"><a name="l00575"></a><span class="lineno"> 575</span>&#160; IsElementwiseUnarySupported,</div><div class="line"><a name="l00576"></a><span class="lineno"> 576</span>&#160; input,</div><div class="line"><a name="l00577"></a><span class="lineno"> 577</span>&#160; output,</div><div class="line"><a name="l00578"></a><span class="lineno"> 578</span>&#160; ElementwiseUnaryDescriptor(UnaryOperation::Rsqrt));</div><div class="line"><a name="l00579"></a><span class="lineno"> 579</span>&#160;}</div><div class="ttc" id="_layer_support_8cpp_html_aaed0ec9df6d4157960512266e8b74b26"><div class="ttname"><a href="_layer_support_8cpp.html#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a></div><div class="ttdeci">#define FORWARD_LAYER_SUPPORT_FUNC(backendId, func,...)</div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.html#l00038">LayerSupport.cpp:38</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a87b99791ccf8793961db67ea19eb6fa4"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a87b99791ccf8793961db67ea19eb6fa4">&#9670;&nbsp;</a></span>IsSigned32()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">bool armnn::IsSigned32 </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="structarmnn_1_1_workload_info.html">WorkloadInfo</a> &amp;&#160;</td>
<td class="paramname"><em>info</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_ref_workload_factory_8cpp_source.html#l00048">48</a> of file <a class="el" href="_ref_workload_factory_8cpp_source.html">RefWorkloadFactory.cpp</a>.</p>
<p class="reference">References <a class="el" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>.</p>
<p class="reference">Referenced by <a class="el" href="_ref_workload_factory_8cpp_source.html#l00198">RefWorkloadFactory::CreateDebug()</a>.</p>
<div class="fragment"><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;{</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; <span class="keywordflow">return</span> IsDataType&lt;DataType::Signed32&gt;(<a class="code" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>);</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c"><div class="ttname"><a href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">armnn::BoostLogSeverityMapping::info</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a477695b3df8c0abd2efcf02051f61065"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a477695b3df8c0abd2efcf02051f61065">&#9670;&nbsp;</a></span>IsSoftmaxSupported()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">bool IsSoftmaxSupported </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a> &amp;&#160;</td>
<td class="paramname"><em>backend</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>input</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>output</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="structarmnn_1_1_softmax_descriptor.html">SoftmaxDescriptor</a> &amp;&#160;</td>
<td class="paramname"><em>descriptor</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">char *&#160;</td>
<td class="paramname"><em>reasonIfUnsupported</em> = <code>nullptr</code>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t&#160;</td>
<td class="paramname"><em>reasonIfUnsupportedMaxLength</em> = <code>1024</code>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.html" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.html">ILayerSupport</a> interfaces. </p>
<p class="definition">Definition at line <a class="el" href="_layer_support_8cpp_source.html#l00581">581</a> of file <a class="el" href="_layer_support_8cpp_source.html">LayerSupport.cpp</a>.</p>
<p class="reference">References <a class="el" href="_layer_support_8cpp_source.html#l00038">FORWARD_LAYER_SUPPORT_FUNC</a>.</p>
<div class="fragment"><div class="line"><a name="l00587"></a><span class="lineno"> 587</span>&#160;{</div><div class="line"><a name="l00588"></a><span class="lineno"> 588</span>&#160; <a class="code" href="_layer_support_8cpp.html#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a>(backend, <a class="code" href="namespacearmnn.html#a477695b3df8c0abd2efcf02051f61065">IsSoftmaxSupported</a>, input, output, descriptor);</div><div class="line"><a name="l00589"></a><span class="lineno"> 589</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a477695b3df8c0abd2efcf02051f61065"><div class="ttname"><a href="namespacearmnn.html#a477695b3df8c0abd2efcf02051f61065">armnn::IsSoftmaxSupported</a></div><div class="ttdeci">bool IsSoftmaxSupported(const BackendId &amp;backend, const TensorInfo &amp;input, const TensorInfo &amp;output, const SoftmaxDescriptor &amp;descriptor, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</div><div class="ttdoc">Deprecated in favor of IBackend and ILayerSupport interfaces. </div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.html#l00581">LayerSupport.cpp:581</a></div></div>
<div class="ttc" id="_layer_support_8cpp_html_aaed0ec9df6d4157960512266e8b74b26"><div class="ttname"><a href="_layer_support_8cpp.html#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a></div><div class="ttdeci">#define FORWARD_LAYER_SUPPORT_FUNC(backendId, func,...)</div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.html#l00038">LayerSupport.cpp:38</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a4b3a41e24d4b9e2b4cb431dc90c48970"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a4b3a41e24d4b9e2b4cb431dc90c48970">&#9670;&nbsp;</a></span>IsSpaceToBatchNdSupported()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">bool IsSpaceToBatchNdSupported </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a> &amp;&#160;</td>
<td class="paramname"><em>backend</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>input</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>output</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="structarmnn_1_1_space_to_batch_nd_descriptor.html">SpaceToBatchNdDescriptor</a> &amp;&#160;</td>
<td class="paramname"><em>descriptor</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">char *&#160;</td>
<td class="paramname"><em>reasonIfUnsupported</em> = <code>nullptr</code>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t&#160;</td>
<td class="paramname"><em>reasonIfUnsupportedMaxLength</em> = <code>1024</code>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.html" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.html">ILayerSupport</a> interfaces. </p>
<p class="definition">Definition at line <a class="el" href="_layer_support_8cpp_source.html#l00591">591</a> of file <a class="el" href="_layer_support_8cpp_source.html">LayerSupport.cpp</a>.</p>
<p class="reference">References <a class="el" href="_layer_support_8cpp_source.html#l00038">FORWARD_LAYER_SUPPORT_FUNC</a>.</p>
<div class="fragment"><div class="line"><a name="l00597"></a><span class="lineno"> 597</span>&#160;{</div><div class="line"><a name="l00598"></a><span class="lineno"> 598</span>&#160; <a class="code" href="_layer_support_8cpp.html#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a>(backend, <a class="code" href="namespacearmnn.html#a4b3a41e24d4b9e2b4cb431dc90c48970">IsSpaceToBatchNdSupported</a>, input, output, descriptor);</div><div class="line"><a name="l00599"></a><span class="lineno"> 599</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a4b3a41e24d4b9e2b4cb431dc90c48970"><div class="ttname"><a href="namespacearmnn.html#a4b3a41e24d4b9e2b4cb431dc90c48970">armnn::IsSpaceToBatchNdSupported</a></div><div class="ttdeci">bool IsSpaceToBatchNdSupported(const BackendId &amp;backend, const TensorInfo &amp;input, const TensorInfo &amp;output, const SpaceToBatchNdDescriptor &amp;descriptor, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</div><div class="ttdoc">Deprecated in favor of IBackend and ILayerSupport interfaces. </div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.html#l00591">LayerSupport.cpp:591</a></div></div>
<div class="ttc" id="_layer_support_8cpp_html_aaed0ec9df6d4157960512266e8b74b26"><div class="ttname"><a href="_layer_support_8cpp.html#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a></div><div class="ttdeci">#define FORWARD_LAYER_SUPPORT_FUNC(backendId, func,...)</div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.html#l00038">LayerSupport.cpp:38</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="addffaddb4bdb6ec506fe08debcce9b75"></a>
<h2 class="memtitle"><span class="permalink"><a href="#addffaddb4bdb6ec506fe08debcce9b75">&#9670;&nbsp;</a></span>IsSpaceToDepthSupported()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">bool IsSpaceToDepthSupported </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a> &amp;&#160;</td>
<td class="paramname"><em>backend</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>input</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>output</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="structarmnn_1_1_space_to_depth_descriptor.html">SpaceToDepthDescriptor</a> &amp;&#160;</td>
<td class="paramname"><em>descriptor</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">char *&#160;</td>
<td class="paramname"><em>reasonIfUnsupported</em> = <code>nullptr</code>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t&#160;</td>
<td class="paramname"><em>reasonIfUnsupportedMaxLength</em> = <code>1024</code>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.html" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.html">ILayerSupport</a> interfaces. </p>
<p class="definition">Definition at line <a class="el" href="_layer_support_8cpp_source.html#l00601">601</a> of file <a class="el" href="_layer_support_8cpp_source.html">LayerSupport.cpp</a>.</p>
<p class="reference">References <a class="el" href="_deprecated_8hpp_source.html#l00043">ARMNN_DEPRECATED_MSG</a>, and <a class="el" href="_layer_support_8cpp_source.html#l00038">FORWARD_LAYER_SUPPORT_FUNC</a>.</p>
<div class="fragment"><div class="line"><a name="l00607"></a><span class="lineno"> 607</span>&#160;{</div><div class="line"><a name="l00608"></a><span class="lineno"> 608</span>&#160; <a class="code" href="_layer_support_8cpp.html#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a>(backend, <a class="code" href="namespacearmnn.html#addffaddb4bdb6ec506fe08debcce9b75">IsSpaceToDepthSupported</a>, input, output, descriptor);</div><div class="line"><a name="l00609"></a><span class="lineno"> 609</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_addffaddb4bdb6ec506fe08debcce9b75"><div class="ttname"><a href="namespacearmnn.html#addffaddb4bdb6ec506fe08debcce9b75">armnn::IsSpaceToDepthSupported</a></div><div class="ttdeci">bool IsSpaceToDepthSupported(const BackendId &amp;backend, const TensorInfo &amp;input, const TensorInfo &amp;output, const SpaceToDepthDescriptor &amp;descriptor, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</div><div class="ttdoc">Deprecated in favor of IBackend and ILayerSupport interfaces. </div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.html#l00601">LayerSupport.cpp:601</a></div></div>
<div class="ttc" id="_layer_support_8cpp_html_aaed0ec9df6d4157960512266e8b74b26"><div class="ttname"><a href="_layer_support_8cpp.html#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a></div><div class="ttdeci">#define FORWARD_LAYER_SUPPORT_FUNC(backendId, func,...)</div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.html#l00038">LayerSupport.cpp:38</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a7ce5f7168bf0d1e7efe269d59ed564ba"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a7ce5f7168bf0d1e7efe269d59ed564ba">&#9670;&nbsp;</a></span>IsSplitterSupported() <span class="overload">[1/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">bool IsSplitterSupported </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a> &amp;&#160;</td>
<td class="paramname"><em>backend</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>input</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="structarmnn_1_1_views_descriptor.html">ViewsDescriptor</a> &amp;&#160;</td>
<td class="paramname"><em>descriptor</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">char *&#160;</td>
<td class="paramname"><em>reasonIfUnsupported</em> = <code>nullptr</code>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t&#160;</td>
<td class="paramname"><em>reasonIfUnsupportedMaxLength</em> = <code>1024</code>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_layer_support_8cpp_source.html#l00612">612</a> of file <a class="el" href="_layer_support_8cpp_source.html">LayerSupport.cpp</a>.</p>
<p class="reference">References <a class="el" href="_deprecated_8hpp_source.html#l00033">ARMNN_NO_DEPRECATE_WARN_BEGIN</a>, <a class="el" href="_deprecated_8hpp_source.html#l00034">ARMNN_NO_DEPRECATE_WARN_END</a>, and <a class="el" href="_layer_support_8cpp_source.html#l00038">FORWARD_LAYER_SUPPORT_FUNC</a>.</p>
<p class="reference">Referenced by <a class="el" href="_layer_support_8cpp_source.html#l00623">IsSplitterSupported()</a>.</p>
<div class="fragment"><div class="line"><a name="l00617"></a><span class="lineno"> 617</span>&#160;{</div><div class="line"><a name="l00618"></a><span class="lineno"> 618</span>&#160; <a class="code" href="_deprecated_8hpp.html#ab66a241a0ed3ee89c866e777b035d0ed">ARMNN_NO_DEPRECATE_WARN_BEGIN</a></div><div class="line"><a name="l00619"></a><span class="lineno"> 619</span>&#160; <a class="code" href="_layer_support_8cpp.html#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a>(backend, <a class="code" href="namespacearmnn.html#a7ce5f7168bf0d1e7efe269d59ed564ba">IsSplitterSupported</a>, input, descriptor);</div><div class="line"><a name="l00620"></a><span class="lineno"> 620</span>&#160; <a class="code" href="_deprecated_8hpp.html#ad762b11b48e5c1d1c1743f529485728a">ARMNN_NO_DEPRECATE_WARN_END</a></div><div class="line"><a name="l00621"></a><span class="lineno"> 621</span>&#160;}</div><div class="ttc" id="_deprecated_8hpp_html_ab66a241a0ed3ee89c866e777b035d0ed"><div class="ttname"><a href="_deprecated_8hpp.html#ab66a241a0ed3ee89c866e777b035d0ed">ARMNN_NO_DEPRECATE_WARN_BEGIN</a></div><div class="ttdeci">#define ARMNN_NO_DEPRECATE_WARN_BEGIN</div><div class="ttdef"><b>Definition:</b> <a href="_deprecated_8hpp_source.html#l00033">Deprecated.hpp:33</a></div></div>
<div class="ttc" id="namespacearmnn_html_a7ce5f7168bf0d1e7efe269d59ed564ba"><div class="ttname"><a href="namespacearmnn.html#a7ce5f7168bf0d1e7efe269d59ed564ba">armnn::IsSplitterSupported</a></div><div class="ttdeci">bool IsSplitterSupported(const BackendId &amp;backend, const TensorInfo &amp;input, const ViewsDescriptor &amp;descriptor, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.html#l00612">LayerSupport.cpp:612</a></div></div>
<div class="ttc" id="_layer_support_8cpp_html_aaed0ec9df6d4157960512266e8b74b26"><div class="ttname"><a href="_layer_support_8cpp.html#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a></div><div class="ttdeci">#define FORWARD_LAYER_SUPPORT_FUNC(backendId, func,...)</div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.html#l00038">LayerSupport.cpp:38</a></div></div>
<div class="ttc" id="_deprecated_8hpp_html_ad762b11b48e5c1d1c1743f529485728a"><div class="ttname"><a href="_deprecated_8hpp.html#ad762b11b48e5c1d1c1743f529485728a">ARMNN_NO_DEPRECATE_WARN_END</a></div><div class="ttdeci">#define ARMNN_NO_DEPRECATE_WARN_END</div><div class="ttdef"><b>Definition:</b> <a href="_deprecated_8hpp_source.html#l00034">Deprecated.hpp:34</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a6487e532e0cb72a210096185e31e2bd6"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a6487e532e0cb72a210096185e31e2bd6">&#9670;&nbsp;</a></span>IsSplitterSupported() <span class="overload">[2/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">bool IsSplitterSupported </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a> &amp;&#160;</td>
<td class="paramname"><em>backend</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>input</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const std::vector&lt; std::reference_wrapper&lt; <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &gt;&gt; &amp;&#160;</td>
<td class="paramname"><em>outputs</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="structarmnn_1_1_views_descriptor.html">ViewsDescriptor</a> &amp;&#160;</td>
<td class="paramname"><em>descriptor</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">char *&#160;</td>
<td class="paramname"><em>reasonIfUnsupported</em> = <code>nullptr</code>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t&#160;</td>
<td class="paramname"><em>reasonIfUnsupportedMaxLength</em> = <code>1024</code>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.html" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.html">ILayerSupport</a> interfaces. </p>
<p class="definition">Definition at line <a class="el" href="_layer_support_8cpp_source.html#l00623">623</a> of file <a class="el" href="_layer_support_8cpp_source.html">LayerSupport.cpp</a>.</p>
<p class="reference">References <a class="el" href="_layer_support_8cpp_source.html#l00038">FORWARD_LAYER_SUPPORT_FUNC</a>, and <a class="el" href="_layer_support_8cpp_source.html#l00612">IsSplitterSupported()</a>.</p>
<div class="fragment"><div class="line"><a name="l00629"></a><span class="lineno"> 629</span>&#160;{</div><div class="line"><a name="l00630"></a><span class="lineno"> 630</span>&#160; <a class="code" href="_layer_support_8cpp.html#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a>(backend, <a class="code" href="namespacearmnn.html#a7ce5f7168bf0d1e7efe269d59ed564ba">IsSplitterSupported</a>, input, outputs, descriptor);</div><div class="line"><a name="l00631"></a><span class="lineno"> 631</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a7ce5f7168bf0d1e7efe269d59ed564ba"><div class="ttname"><a href="namespacearmnn.html#a7ce5f7168bf0d1e7efe269d59ed564ba">armnn::IsSplitterSupported</a></div><div class="ttdeci">bool IsSplitterSupported(const BackendId &amp;backend, const TensorInfo &amp;input, const ViewsDescriptor &amp;descriptor, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.html#l00612">LayerSupport.cpp:612</a></div></div>
<div class="ttc" id="_layer_support_8cpp_html_aaed0ec9df6d4157960512266e8b74b26"><div class="ttname"><a href="_layer_support_8cpp.html#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a></div><div class="ttdeci">#define FORWARD_LAYER_SUPPORT_FUNC(backendId, func,...)</div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.html#l00038">LayerSupport.cpp:38</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a10e8442be2b8596afd5770e98b904caa"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a10e8442be2b8596afd5770e98b904caa">&#9670;&nbsp;</a></span>IsStackSupported()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">bool armnn::IsStackSupported </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a> &amp;&#160;</td>
<td class="paramname"><em>backend</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const std::vector&lt; const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> *&gt;&#160;</td>
<td class="paramname"><em>inputs</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>output</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="structarmnn_1_1_stack_descriptor.html">StackDescriptor</a> &amp;&#160;</td>
<td class="paramname"><em>descriptor</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">char *&#160;</td>
<td class="paramname"><em>reasonIfUnsupported</em> = <code>nullptr</code>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t&#160;</td>
<td class="paramname"><em>reasonIfUnsupportedMaxLength</em> = <code>1024</code>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.html" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.html">ILayerSupport</a> interfaces. </p>
</div>
</div>
<a id="aebe3dc6730e1b29aee9c9f33b8f94121"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aebe3dc6730e1b29aee9c9f33b8f94121">&#9670;&nbsp;</a></span>IsStridedSliceSupported()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">bool IsStridedSliceSupported </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a> &amp;&#160;</td>
<td class="paramname"><em>backend</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>input</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>output</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="structarmnn_1_1_strided_slice_descriptor.html">StridedSliceDescriptor</a> &amp;&#160;</td>
<td class="paramname"><em>descriptor</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">char *&#160;</td>
<td class="paramname"><em>reasonIfUnsupported</em> = <code>nullptr</code>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t&#160;</td>
<td class="paramname"><em>reasonIfUnsupportedMaxLength</em> = <code>1024</code>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.html" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.html">ILayerSupport</a> interfaces. </p>
<p class="definition">Definition at line <a class="el" href="_layer_support_8cpp_source.html#l00633">633</a> of file <a class="el" href="_layer_support_8cpp_source.html">LayerSupport.cpp</a>.</p>
<p class="reference">References <a class="el" href="_layer_support_8cpp_source.html#l00038">FORWARD_LAYER_SUPPORT_FUNC</a>.</p>
<div class="fragment"><div class="line"><a name="l00639"></a><span class="lineno"> 639</span>&#160;{</div><div class="line"><a name="l00640"></a><span class="lineno"> 640</span>&#160; <a class="code" href="_layer_support_8cpp.html#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a>(backend, <a class="code" href="namespacearmnn.html#aebe3dc6730e1b29aee9c9f33b8f94121">IsStridedSliceSupported</a>, input, output, descriptor);</div><div class="line"><a name="l00641"></a><span class="lineno"> 641</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_aebe3dc6730e1b29aee9c9f33b8f94121"><div class="ttname"><a href="namespacearmnn.html#aebe3dc6730e1b29aee9c9f33b8f94121">armnn::IsStridedSliceSupported</a></div><div class="ttdeci">bool IsStridedSliceSupported(const BackendId &amp;backend, const TensorInfo &amp;input, const TensorInfo &amp;output, const StridedSliceDescriptor &amp;descriptor, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</div><div class="ttdoc">Deprecated in favor of IBackend and ILayerSupport interfaces. </div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.html#l00633">LayerSupport.cpp:633</a></div></div>
<div class="ttc" id="_layer_support_8cpp_html_aaed0ec9df6d4157960512266e8b74b26"><div class="ttname"><a href="_layer_support_8cpp.html#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a></div><div class="ttdeci">#define FORWARD_LAYER_SUPPORT_FUNC(backendId, func,...)</div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.html#l00038">LayerSupport.cpp:38</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="afbf752a51fa513e0a54e343be130d962"></a>
<h2 class="memtitle"><span class="permalink"><a href="#afbf752a51fa513e0a54e343be130d962">&#9670;&nbsp;</a></span>IsSubtractionSupported()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">bool IsSubtractionSupported </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a> &amp;&#160;</td>
<td class="paramname"><em>backend</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>input0</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>input1</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>output</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">char *&#160;</td>
<td class="paramname"><em>reasonIfUnsupported</em> = <code>nullptr</code>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t&#160;</td>
<td class="paramname"><em>reasonIfUnsupportedMaxLength</em> = <code>1024</code>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.html" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.html">ILayerSupport</a> interfaces. </p>
<p class="definition">Definition at line <a class="el" href="_layer_support_8cpp_source.html#l00643">643</a> of file <a class="el" href="_layer_support_8cpp_source.html">LayerSupport.cpp</a>.</p>
<p class="reference">References <a class="el" href="_layer_support_8cpp_source.html#l00038">FORWARD_LAYER_SUPPORT_FUNC</a>.</p>
<div class="fragment"><div class="line"><a name="l00649"></a><span class="lineno"> 649</span>&#160;{</div><div class="line"><a name="l00650"></a><span class="lineno"> 650</span>&#160; <a class="code" href="_layer_support_8cpp.html#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a>(backend, <a class="code" href="namespacearmnn.html#afbf752a51fa513e0a54e343be130d962">IsSubtractionSupported</a>, input0, input1, output);</div><div class="line"><a name="l00651"></a><span class="lineno"> 651</span>&#160;}</div><div class="ttc" id="_layer_support_8cpp_html_aaed0ec9df6d4157960512266e8b74b26"><div class="ttname"><a href="_layer_support_8cpp.html#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a></div><div class="ttdeci">#define FORWARD_LAYER_SUPPORT_FUNC(backendId, func,...)</div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.html#l00038">LayerSupport.cpp:38</a></div></div>
<div class="ttc" id="namespacearmnn_html_afbf752a51fa513e0a54e343be130d962"><div class="ttname"><a href="namespacearmnn.html#afbf752a51fa513e0a54e343be130d962">armnn::IsSubtractionSupported</a></div><div class="ttdeci">bool IsSubtractionSupported(const BackendId &amp;backend, const TensorInfo &amp;input0, const TensorInfo &amp;input1, const TensorInfo &amp;output, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</div><div class="ttdoc">Deprecated in favor of IBackend and ILayerSupport interfaces. </div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.html#l00643">LayerSupport.cpp:643</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="af6dbe371ec651a8e0063624fdf32afc0"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af6dbe371ec651a8e0063624fdf32afc0">&#9670;&nbsp;</a></span>IsSupportedForDataTypeGeneric()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">bool armnn::IsSupportedForDataTypeGeneric </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classarmnn_1_1_optional.html">Optional</a>&lt; std::string &amp;&gt;&#160;</td>
<td class="paramname"><em>reasonIfUnsupported</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a>&#160;</td>
<td class="paramname"><em>dataType</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">Float16Func&#160;</td>
<td class="paramname"><em>float16FuncPtr</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">Float32Func&#160;</td>
<td class="paramname"><em>float32FuncPtr</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">Uint8Func&#160;</td>
<td class="paramname"><em>uint8FuncPtr</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">Int32Func&#160;</td>
<td class="paramname"><em>int32FuncPtr</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">BooleanFunc&#160;</td>
<td class="paramname"><em>booleanFuncPtr</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">Params &amp;&amp;...&#160;</td>
<td class="paramname"><em>params</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_layer_support_common_8hpp_source.html#l00028">28</a> of file <a class="el" href="_layer_support_common_8hpp_source.html">LayerSupportCommon.hpp</a>.</p>
<p class="reference">References <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a27226c864bac7454a8504f8edb15d95b">Boolean</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a26e6ed77470c6f2f830ecf874e6c0d55">Float16</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">Float32</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a0a3f57c876f5a230244c38e1453a8a6e">QAsymmU8</a>, and <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6accedffbc6e5308e33d3843e8bdc0dad7">Signed32</a>.</p>
<p class="reference">Referenced by <a class="el" href="_ref_layer_support_8cpp_source.html#l00370">RefLayerSupport::IsConvertFp16ToFp32Supported()</a>, <a class="el" href="_ref_layer_support_8cpp_source.html#l00390">RefLayerSupport::IsConvertFp32ToFp16Supported()</a>, and <a class="el" href="_neon_layer_support_8cpp_source.html#l00379">NeonLayerSupport::IsFloorSupported()</a>.</p>
<div class="fragment"><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;{</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; <span class="keywordflow">switch</span>(dataType)</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; {</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; <span class="keywordflow">case</span> DataType::Float16:</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; <span class="keywordflow">return</span> float16FuncPtr(reasonIfUnsupported, std::forward&lt;Params&gt;(params)...);</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; <span class="keywordflow">case</span> DataType::Float32:</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; <span class="keywordflow">return</span> float32FuncPtr(reasonIfUnsupported, std::forward&lt;Params&gt;(params)...);</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; <span class="keywordflow">case</span> DataType::QAsymmU8:</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <span class="keywordflow">return</span> uint8FuncPtr(reasonIfUnsupported, std::forward&lt;Params&gt;(params)...);</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <span class="keywordflow">case</span> DataType::Signed32:</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; <span class="keywordflow">return</span> int32FuncPtr(reasonIfUnsupported, std::forward&lt;Params&gt;(params)...);</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; <span class="keywordflow">case</span> DataType::Boolean:</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; <span class="keywordflow">return</span> booleanFuncPtr(reasonIfUnsupported, std::forward&lt;Params&gt;(params)...);</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; <span class="keywordflow">default</span>:</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; }</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160;}</div></div><!-- fragment -->
</div>
</div>
<a id="a85fcfea412723413a05f0743c84053aa"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a85fcfea412723413a05f0743c84053aa">&#9670;&nbsp;</a></span>IsSwitchSupported()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">bool IsSwitchSupported </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a> &amp;&#160;</td>
<td class="paramname"><em>backend</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>input0</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>input1</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>output0</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>output1</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">char *&#160;</td>
<td class="paramname"><em>reasonIfUnsupported</em> = <code>nullptr</code>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t&#160;</td>
<td class="paramname"><em>reasonIfUnsupportedMaxLength</em> = <code>1024</code>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.html" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.html">ILayerSupport</a> interfaces. </p>
<p class="definition">Definition at line <a class="el" href="_layer_support_8cpp_source.html#l00653">653</a> of file <a class="el" href="_layer_support_8cpp_source.html">LayerSupport.cpp</a>.</p>
<p class="reference">References <a class="el" href="_layer_support_8cpp_source.html#l00038">FORWARD_LAYER_SUPPORT_FUNC</a>.</p>
<div class="fragment"><div class="line"><a name="l00660"></a><span class="lineno"> 660</span>&#160;{</div><div class="line"><a name="l00661"></a><span class="lineno"> 661</span>&#160; <a class="code" href="_layer_support_8cpp.html#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a>(backend, <a class="code" href="namespacearmnn.html#a85fcfea412723413a05f0743c84053aa">IsSwitchSupported</a>, input0, input1, output0, output1);</div><div class="line"><a name="l00662"></a><span class="lineno"> 662</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a85fcfea412723413a05f0743c84053aa"><div class="ttname"><a href="namespacearmnn.html#a85fcfea412723413a05f0743c84053aa">armnn::IsSwitchSupported</a></div><div class="ttdeci">bool IsSwitchSupported(const BackendId &amp;backend, const TensorInfo &amp;input0, const TensorInfo &amp;input1, const TensorInfo &amp;output0, const TensorInfo &amp;output1, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</div><div class="ttdoc">Deprecated in favor of IBackend and ILayerSupport interfaces. </div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.html#l00653">LayerSupport.cpp:653</a></div></div>
<div class="ttc" id="_layer_support_8cpp_html_aaed0ec9df6d4157960512266e8b74b26"><div class="ttname"><a href="_layer_support_8cpp.html#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a></div><div class="ttdeci">#define FORWARD_LAYER_SUPPORT_FUNC(backendId, func,...)</div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.html#l00038">LayerSupport.cpp:38</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="ac6cc8e0bd35d229486fe6d844d88e0d4"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ac6cc8e0bd35d229486fe6d844d88e0d4">&#9670;&nbsp;</a></span>IsTransposeConvolution2dSupported()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">bool armnn::IsTransposeConvolution2dSupported </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a> &amp;&#160;</td>
<td class="paramname"><em>backend</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>input</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>output</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="structarmnn_1_1_transpose_convolution2d_descriptor.html">TransposeConvolution2dDescriptor</a> &amp;&#160;</td>
<td class="paramname"><em>descriptor</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>weights</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_optional.html">Optional</a>&lt; <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &gt; &amp;&#160;</td>
<td class="paramname"><em>biases</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">char *&#160;</td>
<td class="paramname"><em>reasonIfUnsupported</em> = <code>nullptr</code>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t&#160;</td>
<td class="paramname"><em>reasonIfUnsupportedMaxLength</em> = <code>1024</code>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.html" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.html">ILayerSupport</a> interfaces. </p>
</div>
</div>
<a id="ac4fb1513cf6f4f3f40ab3d6559ec4067"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ac4fb1513cf6f4f3f40ab3d6559ec4067">&#9670;&nbsp;</a></span>LayerEnumOf() <span class="overload">[1/57]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">constexpr <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a> armnn::LayerEnumOf </td>
<td>(</td>
<td class="paramtype">const T *&#160;</td>
<td class="paramname"> = <code>nullptr</code></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="afb1e69829289fb07cc349c0884f27abd"></a>
<h2 class="memtitle"><span class="permalink"><a href="#afb1e69829289fb07cc349c0884f27abd">&#9670;&nbsp;</a></span>LayerEnumOf() <span class="overload">[2/57]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">constexpr <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a> armnn::LayerEnumOf </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_activation_layer.html">ActivationLayer</a> *&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_layers_fwd_8hpp_source.html#l00093">93</a> of file <a class="el" href="_layers_fwd_8hpp_source.html">LayersFwd.hpp</a>.</p>
</div>
</div>
<a id="acc630e11a5baa28ad5723568a7a60109"></a>
<h2 class="memtitle"><span class="permalink"><a href="#acc630e11a5baa28ad5723568a7a60109">&#9670;&nbsp;</a></span>LayerEnumOf() <span class="overload">[3/57]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">constexpr <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a> armnn::LayerEnumOf </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_addition_layer.html">AdditionLayer</a> *&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_layers_fwd_8hpp_source.html#l00094">94</a> of file <a class="el" href="_layers_fwd_8hpp_source.html">LayersFwd.hpp</a>.</p>
</div>
</div>
<a id="a324e860c347972fce7a1c07531bed06e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a324e860c347972fce7a1c07531bed06e">&#9670;&nbsp;</a></span>LayerEnumOf() <span class="overload">[4/57]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">constexpr <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a> armnn::LayerEnumOf </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_arg_min_max_layer.html">ArgMinMaxLayer</a> *&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_layers_fwd_8hpp_source.html#l00095">95</a> of file <a class="el" href="_layers_fwd_8hpp_source.html">LayersFwd.hpp</a>.</p>
</div>
</div>
<a id="ae22db3ab5196edbb2e4e5244adc512e3"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae22db3ab5196edbb2e4e5244adc512e3">&#9670;&nbsp;</a></span>LayerEnumOf() <span class="overload">[5/57]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">constexpr <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a> armnn::LayerEnumOf </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_batch_normalization_layer.html">BatchNormalizationLayer</a> *&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_layers_fwd_8hpp_source.html#l00096">96</a> of file <a class="el" href="_layers_fwd_8hpp_source.html">LayersFwd.hpp</a>.</p>
</div>
</div>
<a id="a87ffe3fb58ec36989d343e53e23fb0f8"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a87ffe3fb58ec36989d343e53e23fb0f8">&#9670;&nbsp;</a></span>LayerEnumOf() <span class="overload">[6/57]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">constexpr <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a> armnn::LayerEnumOf </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_batch_to_space_nd_layer.html">BatchToSpaceNdLayer</a> *&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_layers_fwd_8hpp_source.html#l00097">97</a> of file <a class="el" href="_layers_fwd_8hpp_source.html">LayersFwd.hpp</a>.</p>
</div>
</div>
<a id="a43b8024cb70c07116be132ca28b12a21"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a43b8024cb70c07116be132ca28b12a21">&#9670;&nbsp;</a></span>LayerEnumOf() <span class="overload">[7/57]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">constexpr <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a> armnn::LayerEnumOf </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_comparison_layer.html">ComparisonLayer</a> *&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_layers_fwd_8hpp_source.html#l00098">98</a> of file <a class="el" href="_layers_fwd_8hpp_source.html">LayersFwd.hpp</a>.</p>
</div>
</div>
<a id="a300c356944bb1e9d2dff6191d1c3501c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a300c356944bb1e9d2dff6191d1c3501c">&#9670;&nbsp;</a></span>LayerEnumOf() <span class="overload">[8/57]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">constexpr <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a> armnn::LayerEnumOf </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_concat_layer.html">ConcatLayer</a> *&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_layers_fwd_8hpp_source.html#l00099">99</a> of file <a class="el" href="_layers_fwd_8hpp_source.html">LayersFwd.hpp</a>.</p>
</div>
</div>
<a id="a307007c2249288fe158bfdfaf9e1c413"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a307007c2249288fe158bfdfaf9e1c413">&#9670;&nbsp;</a></span>LayerEnumOf() <span class="overload">[9/57]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">constexpr <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a> armnn::LayerEnumOf </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_constant_layer.html">ConstantLayer</a> *&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_layers_fwd_8hpp_source.html#l00100">100</a> of file <a class="el" href="_layers_fwd_8hpp_source.html">LayersFwd.hpp</a>.</p>
</div>
</div>
<a id="a4471d39d8390fc550c1f8688639e66f5"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a4471d39d8390fc550c1f8688639e66f5">&#9670;&nbsp;</a></span>LayerEnumOf() <span class="overload">[10/57]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">constexpr <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a> armnn::LayerEnumOf </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_convert_fp16_to_fp32_layer.html">ConvertFp16ToFp32Layer</a> *&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_layers_fwd_8hpp_source.html#l00101">101</a> of file <a class="el" href="_layers_fwd_8hpp_source.html">LayersFwd.hpp</a>.</p>
</div>
</div>
<a id="af8df06bed5f1257864645e45948afa5c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af8df06bed5f1257864645e45948afa5c">&#9670;&nbsp;</a></span>LayerEnumOf() <span class="overload">[11/57]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">constexpr <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a> armnn::LayerEnumOf </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_convert_fp32_to_fp16_layer.html">ConvertFp32ToFp16Layer</a> *&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_layers_fwd_8hpp_source.html#l00102">102</a> of file <a class="el" href="_layers_fwd_8hpp_source.html">LayersFwd.hpp</a>.</p>
</div>
</div>
<a id="ab2f52d0c728933e36f581a07676d9fe9"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab2f52d0c728933e36f581a07676d9fe9">&#9670;&nbsp;</a></span>LayerEnumOf() <span class="overload">[12/57]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">constexpr <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a> armnn::LayerEnumOf </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_convolution2d_layer.html">Convolution2dLayer</a> *&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_layers_fwd_8hpp_source.html#l00103">103</a> of file <a class="el" href="_layers_fwd_8hpp_source.html">LayersFwd.hpp</a>.</p>
</div>
</div>
<a id="ad596268fcd03c87a4b6fde86f4732546"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad596268fcd03c87a4b6fde86f4732546">&#9670;&nbsp;</a></span>LayerEnumOf() <span class="overload">[13/57]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">constexpr <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a> armnn::LayerEnumOf </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_debug_layer.html">DebugLayer</a> *&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_layers_fwd_8hpp_source.html#l00104">104</a> of file <a class="el" href="_layers_fwd_8hpp_source.html">LayersFwd.hpp</a>.</p>
</div>
</div>
<a id="a939154289f544a02baec0735b27b8894"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a939154289f544a02baec0735b27b8894">&#9670;&nbsp;</a></span>LayerEnumOf() <span class="overload">[14/57]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">constexpr <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a> armnn::LayerEnumOf </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_depth_to_space_layer.html">DepthToSpaceLayer</a> *&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_layers_fwd_8hpp_source.html#l00105">105</a> of file <a class="el" href="_layers_fwd_8hpp_source.html">LayersFwd.hpp</a>.</p>
</div>
</div>
<a id="a26a46c27bca08b5bd26abba341f1d795"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a26a46c27bca08b5bd26abba341f1d795">&#9670;&nbsp;</a></span>LayerEnumOf() <span class="overload">[15/57]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">constexpr <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a> armnn::LayerEnumOf </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_depthwise_convolution2d_layer.html">DepthwiseConvolution2dLayer</a> *&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_layers_fwd_8hpp_source.html#l00106">106</a> of file <a class="el" href="_layers_fwd_8hpp_source.html">LayersFwd.hpp</a>.</p>
</div>
</div>
<a id="a95e2d190d7483017b4f4841dd07776e5"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a95e2d190d7483017b4f4841dd07776e5">&#9670;&nbsp;</a></span>LayerEnumOf() <span class="overload">[16/57]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">constexpr <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a> armnn::LayerEnumOf </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_dequantize_layer.html">DequantizeLayer</a> *&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_layers_fwd_8hpp_source.html#l00107">107</a> of file <a class="el" href="_layers_fwd_8hpp_source.html">LayersFwd.hpp</a>.</p>
</div>
</div>
<a id="a22772d461066f995cd72d13066b0f46d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a22772d461066f995cd72d13066b0f46d">&#9670;&nbsp;</a></span>LayerEnumOf() <span class="overload">[17/57]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">constexpr <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a> armnn::LayerEnumOf </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_detection_post_process_layer.html">DetectionPostProcessLayer</a> *&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_layers_fwd_8hpp_source.html#l00108">108</a> of file <a class="el" href="_layers_fwd_8hpp_source.html">LayersFwd.hpp</a>.</p>
</div>
</div>
<a id="a955b1001b8c57c60ce443a1e31468f20"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a955b1001b8c57c60ce443a1e31468f20">&#9670;&nbsp;</a></span>LayerEnumOf() <span class="overload">[18/57]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">constexpr <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a> armnn::LayerEnumOf </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_division_layer.html">DivisionLayer</a> *&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_layers_fwd_8hpp_source.html#l00109">109</a> of file <a class="el" href="_layers_fwd_8hpp_source.html">LayersFwd.hpp</a>.</p>
</div>
</div>
<a id="a72f7601d11f32c8d9ccb49a80fcf662a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a72f7601d11f32c8d9ccb49a80fcf662a">&#9670;&nbsp;</a></span>LayerEnumOf() <span class="overload">[19/57]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">constexpr <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a> armnn::LayerEnumOf </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_elementwise_unary_layer.html">ElementwiseUnaryLayer</a> *&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_layers_fwd_8hpp_source.html#l00110">110</a> of file <a class="el" href="_layers_fwd_8hpp_source.html">LayersFwd.hpp</a>.</p>
</div>
</div>
<a id="a4acae0cdcdfab8e941af5c4e42e58cb3"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a4acae0cdcdfab8e941af5c4e42e58cb3">&#9670;&nbsp;</a></span>LayerEnumOf() <span class="overload">[20/57]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">constexpr <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a> armnn::LayerEnumOf </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_fake_quantization_layer.html">FakeQuantizationLayer</a> *&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_layers_fwd_8hpp_source.html#l00111">111</a> of file <a class="el" href="_layers_fwd_8hpp_source.html">LayersFwd.hpp</a>.</p>
</div>
</div>
<a id="a575f5487e62465b6b9edbc447a26f32f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a575f5487e62465b6b9edbc447a26f32f">&#9670;&nbsp;</a></span>LayerEnumOf() <span class="overload">[21/57]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">constexpr <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a> armnn::LayerEnumOf </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_floor_layer.html">FloorLayer</a> *&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_layers_fwd_8hpp_source.html#l00112">112</a> of file <a class="el" href="_layers_fwd_8hpp_source.html">LayersFwd.hpp</a>.</p>
</div>
</div>
<a id="aa689e4a3aa77e9d9e5851f566c5eb8b3"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa689e4a3aa77e9d9e5851f566c5eb8b3">&#9670;&nbsp;</a></span>LayerEnumOf() <span class="overload">[22/57]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">constexpr <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a> armnn::LayerEnumOf </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_fully_connected_layer.html">FullyConnectedLayer</a> *&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_layers_fwd_8hpp_source.html#l00113">113</a> of file <a class="el" href="_layers_fwd_8hpp_source.html">LayersFwd.hpp</a>.</p>
</div>
</div>
<a id="a548fb17a9bff172e751ae4bd3add62b5"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a548fb17a9bff172e751ae4bd3add62b5">&#9670;&nbsp;</a></span>LayerEnumOf() <span class="overload">[23/57]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">constexpr <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a> armnn::LayerEnumOf </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_gather_layer.html">GatherLayer</a> *&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_layers_fwd_8hpp_source.html#l00114">114</a> of file <a class="el" href="_layers_fwd_8hpp_source.html">LayersFwd.hpp</a>.</p>
</div>
</div>
<a id="adef1c8c63daa9d348a29e74eac33a054"></a>
<h2 class="memtitle"><span class="permalink"><a href="#adef1c8c63daa9d348a29e74eac33a054">&#9670;&nbsp;</a></span>LayerEnumOf() <span class="overload">[24/57]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">constexpr <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a> armnn::LayerEnumOf </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_input_layer.html">InputLayer</a> *&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_layers_fwd_8hpp_source.html#l00115">115</a> of file <a class="el" href="_layers_fwd_8hpp_source.html">LayersFwd.hpp</a>.</p>
</div>
</div>
<a id="a57bcf309be7adcc91001834979f87bde"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a57bcf309be7adcc91001834979f87bde">&#9670;&nbsp;</a></span>LayerEnumOf() <span class="overload">[25/57]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">constexpr <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a> armnn::LayerEnumOf </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_instance_normalization_layer.html">InstanceNormalizationLayer</a> *&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_layers_fwd_8hpp_source.html#l00116">116</a> of file <a class="el" href="_layers_fwd_8hpp_source.html">LayersFwd.hpp</a>.</p>
</div>
</div>
<a id="a36f16b97bcb662caaa4eae24ea16cccf"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a36f16b97bcb662caaa4eae24ea16cccf">&#9670;&nbsp;</a></span>LayerEnumOf() <span class="overload">[26/57]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">constexpr <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a> armnn::LayerEnumOf </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_l2_normalization_layer.html">L2NormalizationLayer</a> *&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_layers_fwd_8hpp_source.html#l00117">117</a> of file <a class="el" href="_layers_fwd_8hpp_source.html">LayersFwd.hpp</a>.</p>
</div>
</div>
<a id="afb6f9bd4f43118749a0336074bed7b35"></a>
<h2 class="memtitle"><span class="permalink"><a href="#afb6f9bd4f43118749a0336074bed7b35">&#9670;&nbsp;</a></span>LayerEnumOf() <span class="overload">[27/57]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">constexpr <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a> armnn::LayerEnumOf </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_log_softmax_layer.html">LogSoftmaxLayer</a> *&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_layers_fwd_8hpp_source.html#l00118">118</a> of file <a class="el" href="_layers_fwd_8hpp_source.html">LayersFwd.hpp</a>.</p>
</div>
</div>
<a id="a0d08fb555c6d1cba705fd73b71797a28"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a0d08fb555c6d1cba705fd73b71797a28">&#9670;&nbsp;</a></span>LayerEnumOf() <span class="overload">[28/57]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">constexpr <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a> armnn::LayerEnumOf </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_lstm_layer.html">LstmLayer</a> *&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_layers_fwd_8hpp_source.html#l00119">119</a> of file <a class="el" href="_layers_fwd_8hpp_source.html">LayersFwd.hpp</a>.</p>
</div>
</div>
<a id="a6b231c8a547d4030d9a4a1618810c20b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a6b231c8a547d4030d9a4a1618810c20b">&#9670;&nbsp;</a></span>LayerEnumOf() <span class="overload">[29/57]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">constexpr <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a> armnn::LayerEnumOf </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_maximum_layer.html">MaximumLayer</a> *&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_layers_fwd_8hpp_source.html#l00120">120</a> of file <a class="el" href="_layers_fwd_8hpp_source.html">LayersFwd.hpp</a>.</p>
</div>
</div>
<a id="af079ba32db74f53aba1ad19193cd2a4b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af079ba32db74f53aba1ad19193cd2a4b">&#9670;&nbsp;</a></span>LayerEnumOf() <span class="overload">[30/57]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">constexpr <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a> armnn::LayerEnumOf </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_mean_layer.html">MeanLayer</a> *&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_layers_fwd_8hpp_source.html#l00121">121</a> of file <a class="el" href="_layers_fwd_8hpp_source.html">LayersFwd.hpp</a>.</p>
</div>
</div>
<a id="aa17969606f64ea581c28431f2395e653"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa17969606f64ea581c28431f2395e653">&#9670;&nbsp;</a></span>LayerEnumOf() <span class="overload">[31/57]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">constexpr <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a> armnn::LayerEnumOf </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_mem_copy_layer.html">MemCopyLayer</a> *&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_layers_fwd_8hpp_source.html#l00122">122</a> of file <a class="el" href="_layers_fwd_8hpp_source.html">LayersFwd.hpp</a>.</p>
</div>
</div>
<a id="a70f3d83f6d1e3918eab895c8083058fa"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a70f3d83f6d1e3918eab895c8083058fa">&#9670;&nbsp;</a></span>LayerEnumOf() <span class="overload">[32/57]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">constexpr <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a> armnn::LayerEnumOf </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_mem_import_layer.html">MemImportLayer</a> *&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_layers_fwd_8hpp_source.html#l00123">123</a> of file <a class="el" href="_layers_fwd_8hpp_source.html">LayersFwd.hpp</a>.</p>
</div>
</div>
<a id="a9e8199bdc39f928f694591a41d7aa0c0"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a9e8199bdc39f928f694591a41d7aa0c0">&#9670;&nbsp;</a></span>LayerEnumOf() <span class="overload">[33/57]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">constexpr <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a> armnn::LayerEnumOf </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_merge_layer.html">MergeLayer</a> *&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_layers_fwd_8hpp_source.html#l00124">124</a> of file <a class="el" href="_layers_fwd_8hpp_source.html">LayersFwd.hpp</a>.</p>
</div>
</div>
<a id="ad32a13408ace1c1fa520ed64a2cbe70f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad32a13408ace1c1fa520ed64a2cbe70f">&#9670;&nbsp;</a></span>LayerEnumOf() <span class="overload">[34/57]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">constexpr <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a> armnn::LayerEnumOf </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_minimum_layer.html">MinimumLayer</a> *&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_layers_fwd_8hpp_source.html#l00125">125</a> of file <a class="el" href="_layers_fwd_8hpp_source.html">LayersFwd.hpp</a>.</p>
</div>
</div>
<a id="a40f1546c0fa69f318eeab4b29cc64b70"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a40f1546c0fa69f318eeab4b29cc64b70">&#9670;&nbsp;</a></span>LayerEnumOf() <span class="overload">[35/57]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">constexpr <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a> armnn::LayerEnumOf </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_multiplication_layer.html">MultiplicationLayer</a> *&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_layers_fwd_8hpp_source.html#l00126">126</a> of file <a class="el" href="_layers_fwd_8hpp_source.html">LayersFwd.hpp</a>.</p>
</div>
</div>
<a id="a140713619ee498a149854a5376b8d072"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a140713619ee498a149854a5376b8d072">&#9670;&nbsp;</a></span>LayerEnumOf() <span class="overload">[36/57]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">constexpr <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a> armnn::LayerEnumOf </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_normalization_layer.html">NormalizationLayer</a> *&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_layers_fwd_8hpp_source.html#l00127">127</a> of file <a class="el" href="_layers_fwd_8hpp_source.html">LayersFwd.hpp</a>.</p>
</div>
</div>
<a id="a7a6e68f66d1d3819640b0f2d46a55fd1"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a7a6e68f66d1d3819640b0f2d46a55fd1">&#9670;&nbsp;</a></span>LayerEnumOf() <span class="overload">[37/57]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">constexpr <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a> armnn::LayerEnumOf </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_output_layer.html">OutputLayer</a> *&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_layers_fwd_8hpp_source.html#l00128">128</a> of file <a class="el" href="_layers_fwd_8hpp_source.html">LayersFwd.hpp</a>.</p>
</div>
</div>
<a id="ab6f1994db909dcc399cb1f8bc50c2d3d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab6f1994db909dcc399cb1f8bc50c2d3d">&#9670;&nbsp;</a></span>LayerEnumOf() <span class="overload">[38/57]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">constexpr <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a> armnn::LayerEnumOf </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_pad_layer.html">PadLayer</a> *&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_layers_fwd_8hpp_source.html#l00129">129</a> of file <a class="el" href="_layers_fwd_8hpp_source.html">LayersFwd.hpp</a>.</p>
</div>
</div>
<a id="a1e6b17606926b8f69dbeda7f7ff1df95"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a1e6b17606926b8f69dbeda7f7ff1df95">&#9670;&nbsp;</a></span>LayerEnumOf() <span class="overload">[39/57]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">constexpr <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a> armnn::LayerEnumOf </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_permute_layer.html">PermuteLayer</a> *&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_layers_fwd_8hpp_source.html#l00130">130</a> of file <a class="el" href="_layers_fwd_8hpp_source.html">LayersFwd.hpp</a>.</p>
</div>
</div>
<a id="ade84059b48b38da3a233bed287864c5b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ade84059b48b38da3a233bed287864c5b">&#9670;&nbsp;</a></span>LayerEnumOf() <span class="overload">[40/57]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">constexpr <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a> armnn::LayerEnumOf </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_pooling2d_layer.html">Pooling2dLayer</a> *&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_layers_fwd_8hpp_source.html#l00131">131</a> of file <a class="el" href="_layers_fwd_8hpp_source.html">LayersFwd.hpp</a>.</p>
</div>
</div>
<a id="a6e5eaa19ff232f11daa9a1c6caccf7fe"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a6e5eaa19ff232f11daa9a1c6caccf7fe">&#9670;&nbsp;</a></span>LayerEnumOf() <span class="overload">[41/57]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">constexpr <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a> armnn::LayerEnumOf </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_pre_compiled_layer.html">PreCompiledLayer</a> *&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_layers_fwd_8hpp_source.html#l00132">132</a> of file <a class="el" href="_layers_fwd_8hpp_source.html">LayersFwd.hpp</a>.</p>
</div>
</div>
<a id="a58a5defa35b12773a97760efadffef4f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a58a5defa35b12773a97760efadffef4f">&#9670;&nbsp;</a></span>LayerEnumOf() <span class="overload">[42/57]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">constexpr <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a> armnn::LayerEnumOf </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_prelu_layer.html">PreluLayer</a> *&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_layers_fwd_8hpp_source.html#l00133">133</a> of file <a class="el" href="_layers_fwd_8hpp_source.html">LayersFwd.hpp</a>.</p>
</div>
</div>
<a id="aaaaf64c0888ab25bfae770bd4c2ec34b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aaaaf64c0888ab25bfae770bd4c2ec34b">&#9670;&nbsp;</a></span>LayerEnumOf() <span class="overload">[43/57]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">constexpr <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a> armnn::LayerEnumOf </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_quantize_layer.html">QuantizeLayer</a> *&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_layers_fwd_8hpp_source.html#l00134">134</a> of file <a class="el" href="_layers_fwd_8hpp_source.html">LayersFwd.hpp</a>.</p>
</div>
</div>
<a id="a31bcd6f755df954a4d7b020a09499105"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a31bcd6f755df954a4d7b020a09499105">&#9670;&nbsp;</a></span>LayerEnumOf() <span class="overload">[44/57]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">constexpr <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a> armnn::LayerEnumOf </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_quantized_lstm_layer.html">QuantizedLstmLayer</a> *&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_layers_fwd_8hpp_source.html#l00135">135</a> of file <a class="el" href="_layers_fwd_8hpp_source.html">LayersFwd.hpp</a>.</p>
</div>
</div>
<a id="a6a17f58da2071720e3003a56a092aab3"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a6a17f58da2071720e3003a56a092aab3">&#9670;&nbsp;</a></span>LayerEnumOf() <span class="overload">[45/57]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">constexpr <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a> armnn::LayerEnumOf </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_reshape_layer.html">ReshapeLayer</a> *&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_layers_fwd_8hpp_source.html#l00136">136</a> of file <a class="el" href="_layers_fwd_8hpp_source.html">LayersFwd.hpp</a>.</p>
</div>
</div>
<a id="aafc370ea363f0565c3a8bced1e37c79e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aafc370ea363f0565c3a8bced1e37c79e">&#9670;&nbsp;</a></span>LayerEnumOf() <span class="overload">[46/57]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">constexpr <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a> armnn::LayerEnumOf </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_resize_layer.html">ResizeLayer</a> *&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_layers_fwd_8hpp_source.html#l00137">137</a> of file <a class="el" href="_layers_fwd_8hpp_source.html">LayersFwd.hpp</a>.</p>
</div>
</div>
<a id="a3cbbb4e00618b072ace46751e660a295"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a3cbbb4e00618b072ace46751e660a295">&#9670;&nbsp;</a></span>LayerEnumOf() <span class="overload">[47/57]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">constexpr <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a> armnn::LayerEnumOf </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_slice_layer.html">SliceLayer</a> *&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_layers_fwd_8hpp_source.html#l00138">138</a> of file <a class="el" href="_layers_fwd_8hpp_source.html">LayersFwd.hpp</a>.</p>
</div>
</div>
<a id="af6af4b51e08d3e811620811ab5e0cd2d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af6af4b51e08d3e811620811ab5e0cd2d">&#9670;&nbsp;</a></span>LayerEnumOf() <span class="overload">[48/57]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">constexpr <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a> armnn::LayerEnumOf </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_softmax_layer.html">SoftmaxLayer</a> *&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_layers_fwd_8hpp_source.html#l00139">139</a> of file <a class="el" href="_layers_fwd_8hpp_source.html">LayersFwd.hpp</a>.</p>
</div>
</div>
<a id="ac2d31ced5505a9d05287f5b71d25e34a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ac2d31ced5505a9d05287f5b71d25e34a">&#9670;&nbsp;</a></span>LayerEnumOf() <span class="overload">[49/57]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">constexpr <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a> armnn::LayerEnumOf </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_space_to_batch_nd_layer.html">SpaceToBatchNdLayer</a> *&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_layers_fwd_8hpp_source.html#l00140">140</a> of file <a class="el" href="_layers_fwd_8hpp_source.html">LayersFwd.hpp</a>.</p>
</div>
</div>
<a id="a81c31de4f532a95ab85ed6d999029332"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a81c31de4f532a95ab85ed6d999029332">&#9670;&nbsp;</a></span>LayerEnumOf() <span class="overload">[50/57]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">constexpr <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a> armnn::LayerEnumOf </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_space_to_depth_layer.html">SpaceToDepthLayer</a> *&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_layers_fwd_8hpp_source.html#l00141">141</a> of file <a class="el" href="_layers_fwd_8hpp_source.html">LayersFwd.hpp</a>.</p>
</div>
</div>
<a id="a24d3abbfc1ed81df673452c7148aa0cc"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a24d3abbfc1ed81df673452c7148aa0cc">&#9670;&nbsp;</a></span>LayerEnumOf() <span class="overload">[51/57]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">constexpr <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a> armnn::LayerEnumOf </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_splitter_layer.html">SplitterLayer</a> *&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_layers_fwd_8hpp_source.html#l00142">142</a> of file <a class="el" href="_layers_fwd_8hpp_source.html">LayersFwd.hpp</a>.</p>
</div>
</div>
<a id="ab676aab9119d1417764849099a099ecf"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab676aab9119d1417764849099a099ecf">&#9670;&nbsp;</a></span>LayerEnumOf() <span class="overload">[52/57]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">constexpr <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a> armnn::LayerEnumOf </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_stack_layer.html">StackLayer</a> *&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_layers_fwd_8hpp_source.html#l00143">143</a> of file <a class="el" href="_layers_fwd_8hpp_source.html">LayersFwd.hpp</a>.</p>
</div>
</div>
<a id="a1b5ff142f1d4420a8d83d9bcff1bfff4"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a1b5ff142f1d4420a8d83d9bcff1bfff4">&#9670;&nbsp;</a></span>LayerEnumOf() <span class="overload">[53/57]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">constexpr <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a> armnn::LayerEnumOf </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_stand_in_layer.html">StandInLayer</a> *&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_layers_fwd_8hpp_source.html#l00144">144</a> of file <a class="el" href="_layers_fwd_8hpp_source.html">LayersFwd.hpp</a>.</p>
</div>
</div>
<a id="ad640080ff4ea3e4f9ff05823e32ce15f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad640080ff4ea3e4f9ff05823e32ce15f">&#9670;&nbsp;</a></span>LayerEnumOf() <span class="overload">[54/57]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">constexpr <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a> armnn::LayerEnumOf </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_strided_slice_layer.html">StridedSliceLayer</a> *&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_layers_fwd_8hpp_source.html#l00145">145</a> of file <a class="el" href="_layers_fwd_8hpp_source.html">LayersFwd.hpp</a>.</p>
</div>
</div>
<a id="a9cc235c8c5e2ef3d2788cd558d676b0a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a9cc235c8c5e2ef3d2788cd558d676b0a">&#9670;&nbsp;</a></span>LayerEnumOf() <span class="overload">[55/57]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">constexpr <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a> armnn::LayerEnumOf </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_subtraction_layer.html">SubtractionLayer</a> *&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_layers_fwd_8hpp_source.html#l00146">146</a> of file <a class="el" href="_layers_fwd_8hpp_source.html">LayersFwd.hpp</a>.</p>
</div>
</div>
<a id="a110b9fdf7f17a1d065cd59ebc4bb76f7"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a110b9fdf7f17a1d065cd59ebc4bb76f7">&#9670;&nbsp;</a></span>LayerEnumOf() <span class="overload">[56/57]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">constexpr <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a> armnn::LayerEnumOf </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_switch_layer.html">SwitchLayer</a> *&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_layers_fwd_8hpp_source.html#l00147">147</a> of file <a class="el" href="_layers_fwd_8hpp_source.html">LayersFwd.hpp</a>.</p>
</div>
</div>
<a id="a60af5a86cf0261d0bdf4312736ab4461"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a60af5a86cf0261d0bdf4312736ab4461">&#9670;&nbsp;</a></span>LayerEnumOf() <span class="overload">[57/57]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">constexpr <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a> armnn::LayerEnumOf </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_transpose_convolution2d_layer.html">TransposeConvolution2dLayer</a> *&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_layers_fwd_8hpp_source.html#l00148">148</a> of file <a class="el" href="_layers_fwd_8hpp_source.html">LayersFwd.hpp</a>.</p>
</div>
</div>
<a id="a71f2cc06b097cb5c4f0a1f48130a823b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a71f2cc06b097cb5c4f0a1f48130a823b">&#9670;&nbsp;</a></span>LevelToString()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">std::string armnn::LevelToString </td>
<td>(</td>
<td class="paramtype"><a class="el" href="namespacearmnn.html#a93a3ba385cad27c4774e5fe64c025d3d">LogSeverity</a>&#160;</td>
<td class="paramname"><em>level</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_logging_8hpp_source.html#l00014">14</a> of file <a class="el" href="_logging_8hpp_source.html">Logging.hpp</a>.</p>
<p class="reference">References <a class="el" href="namespacearmnn.html#a93a3ba385cad27c4774e5fe64c025d3daa603905470e2a5b8c13e96b579ef0dba">Debug</a>, <a class="el" href="namespacearmnn.html#a93a3ba385cad27c4774e5fe64c025d3da902b0d55fddef6f8d651fe1035b7d4bd">Error</a>, <a class="el" href="namespacearmnn.html#a93a3ba385cad27c4774e5fe64c025d3da882384ec38ce8d9582b57e70861730e4">Fatal</a>, <a class="el" href="namespacearmnn.html#a93a3ba385cad27c4774e5fe64c025d3da4059b0251f66a18cb56f544728796875">Info</a>, <a class="el" href="namespacearmnn.html#a93a3ba385cad27c4774e5fe64c025d3dadd4ec0ac4e58f7c32a01244ae91150b1">Trace</a>, and <a class="el" href="namespacearmnn.html#a93a3ba385cad27c4774e5fe64c025d3da0eaadb4fcb48a0a0ed7bc9868be9fbaa">Warning</a>.</p>
<p class="reference">Referenced by <a class="el" href="_logging_8hpp_source.html#l00056">ScopedRecord::ScopedRecord()</a>.</p>
<div class="fragment"><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;{</div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160; <span class="keywordflow">switch</span>(level)</div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160; {</div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160; <span class="keywordflow">case</span> LogSeverity::Trace:</div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;Trace&quot;</span>;</div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacearmnn.html#a5aae369ef847a00062925cea8e9be9c4">LogSeverity::Debug</a>:</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;Debug&quot;</span>;</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160; <span class="keywordflow">case</span> LogSeverity::Info:</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;Info&quot;</span>;</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160; <span class="keywordflow">case</span> LogSeverity::Warning:</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;Warning&quot;</span>;</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; <span class="keywordflow">case</span> LogSeverity::Error:</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;Error&quot;</span>;</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; <span class="keywordflow">case</span> LogSeverity::Fatal:</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;Fatal&quot;</span>;</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; <span class="keywordflow">default</span>:</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;Log&quot;</span>;</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; }</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a5aae369ef847a00062925cea8e9be9c4"><div class="ttname"><a href="namespacearmnn.html#a5aae369ef847a00062925cea8e9be9c4">armnn::Debug</a></div><div class="ttdeci">void Debug(const TensorInfo &amp;inputInfo, const T *inputData, LayerGuid guid, const std::string &amp;layerName, unsigned int slotIndex)</div><div class="ttdef"><b>Definition:</b> <a href="_debug_8cpp_source.html#l00019">Debug.cpp:19</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="ac52e04c0e349e25bcdaa72c27395ef8f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ac52e04c0e349e25bcdaa72c27395ef8f">&#9670;&nbsp;</a></span>LogSoftmax()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void LogSoftmax </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classarmnn_1_1_decoder.html">Decoder</a>&lt; float &gt; &amp;&#160;</td>
<td class="paramname"><em>input</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classarmnn_1_1_encoder.html">Encoder</a>&lt; float &gt; &amp;&#160;</td>
<td class="paramname"><em>output</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>inputInfo</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="namespacearmnn.html#ac14705405cbcdd580df613de6766fe65">LogSoftmaxDescriptor</a> &amp;&#160;</td>
<td class="paramname"><em>descriptor</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_log_softmax_8cpp_source.html#l00030">30</a> of file <a class="el" href="_log_softmax_8cpp_source.html">LogSoftmax.cpp</a>.</p>
<p class="reference">References <a class="el" href="classarmnn_1_1_decoder.html#ac729108381e2340bea12877971713ecb">Decoder&lt; IType &gt;::Get()</a>, <a class="el" href="_tensor_8hpp_source.html#l00043">TensorShape::GetNumDimensions()</a>, <a class="el" href="_tensor_8hpp_source.html#l00092">TensorInfo::GetNumDimensions()</a>, <a class="el" href="_tensor_utils_8cpp_source.html#l00113">armnnUtils::GetNumElementsBetween()</a>, <a class="el" href="_tensor_8hpp_source.html#l00088">TensorInfo::GetShape()</a>, <a class="el" href="_descriptors_8hpp_source.html#l00138">SoftmaxDescriptor::m_Axis</a>, <a class="el" href="_descriptors_8hpp_source.html#l00136">SoftmaxDescriptor::m_Beta</a>, and <a class="el" href="classarmnn_1_1_encoder.html#ae3b62b846a9c239f332830b9e36030eb">Encoder&lt; IType &gt;::Set()</a>.</p>
<p class="reference">Referenced by <a class="el" href="_serializer_tests_8cpp_source.html#l01399">BOOST_AUTO_TEST_CASE()</a>.</p>
<div class="fragment"><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;{</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> numDimensions = inputInfo.GetNumDimensions();</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; <span class="keywordtype">bool</span> axisIsValid = ValidateAxis(descriptor.m_Axis, numDimensions);</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; BOOST_ASSERT_MSG(axisIsValid,</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; <span class="stringliteral">&quot;Axis index is not in range [-numDimensions, numDimensions).&quot;</span>);</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; boost::ignore_unused(axisIsValid);</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> uAxis = descriptor.m_Axis &lt; 0 ?</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; numDimensions - boost::numeric_cast&lt;<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>&gt;(std::abs(descriptor.m_Axis)) :</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; boost::numeric_cast&lt;unsigned int&gt;(descriptor.m_Axis);</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; <span class="keyword">const</span> TensorShape&amp; inputShape = inputInfo.GetShape();</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> outerSize = <a class="code" href="namespacearmnn_utils.html#af57864f5e03358d14c2988edae912b8b">armnnUtils::GetNumElementsBetween</a>(inputShape, 0, uAxis);</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> axisSize = inputShape[uAxis];</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> innerSize = <a class="code" href="namespacearmnn_utils.html#af57864f5e03358d14c2988edae912b8b">armnnUtils::GetNumElementsBetween</a>(inputShape,</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; uAxis + 1,</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; inputShape.GetNumDimensions());</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160;</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> outer = 0; outer &lt; outerSize; ++outer)</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; {</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> inner = 0; inner &lt; innerSize; ++inner)</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; {</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; <span class="comment">// Find max</span></div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; input[outer * axisSize * innerSize + inner];</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; <span class="keywordtype">float</span> maxValue = input.<a class="code" href="classarmnn_1_1_decoder.html#ac729108381e2340bea12877971713ecb">Get</a>();</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 1u; i &lt; axisSize; ++i)</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; {</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; input[(outer * axisSize + i) * innerSize + inner];</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; maxValue = std::max(maxValue, input.<a class="code" href="classarmnn_1_1_decoder.html#ac729108381e2340bea12877971713ecb">Get</a>());</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; }</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160;</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; <span class="comment">// Compute sum</span></div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; <span class="keywordtype">float</span> sum = 0.0f;</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0u; i &lt; axisSize; ++i)</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; {</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; input[(outer * axisSize + i) * innerSize + inner];</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; sum += std::exp((input.<a class="code" href="classarmnn_1_1_decoder.html#ac729108381e2340bea12877971713ecb">Get</a>() - maxValue) * descriptor.m_Beta);</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; }</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160;</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; <span class="comment">// Compute log sum</span></div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; <span class="keyword">const</span> <span class="keywordtype">float</span> logSum = std::log(sum);</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160;</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; <span class="comment">// Compute result</span></div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0u; i &lt; axisSize; ++i)</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; {</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> index = (outer * axisSize + i) * innerSize + inner;</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160;</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; input [index];</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; output[index];</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160;</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; output.<a class="code" href="classarmnn_1_1_encoder.html#ae3b62b846a9c239f332830b9e36030eb">Set</a>((input.<a class="code" href="classarmnn_1_1_decoder.html#ac729108381e2340bea12877971713ecb">Get</a>() - maxValue) * descriptor.m_Beta - logSum);</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; }</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; }</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; }</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160;}</div><div class="ttc" id="classarmnn_1_1_decoder_html_ac729108381e2340bea12877971713ecb"><div class="ttname"><a href="classarmnn_1_1_decoder.html#ac729108381e2340bea12877971713ecb">armnn::Decoder::Get</a></div><div class="ttdeci">virtual IType Get() const =0</div></div>
<div class="ttc" id="namespacearmnn_utils_html_af57864f5e03358d14c2988edae912b8b"><div class="ttname"><a href="namespacearmnn_utils.html#af57864f5e03358d14c2988edae912b8b">armnnUtils::GetNumElementsBetween</a></div><div class="ttdeci">unsigned int GetNumElementsBetween(const armnn::TensorShape &amp;shape, unsigned int firstAxisInclusive, unsigned int lastAxisExclusive)</div><div class="ttdef"><b>Definition:</b> <a href="_tensor_utils_8cpp_source.html#l00113">TensorUtils.cpp:113</a></div></div>
<div class="ttc" id="classarmnn_1_1_encoder_html_ae3b62b846a9c239f332830b9e36030eb"><div class="ttname"><a href="classarmnn_1_1_encoder.html#ae3b62b846a9c239f332830b9e36030eb">armnn::Encoder::Set</a></div><div class="ttdeci">virtual void Set(IType right)=0</div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a27ecdfeeea12de313f2b97d309a35d9d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a27ecdfeeea12de313f2b97d309a35d9d">&#9670;&nbsp;</a></span>LowerString()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">std::string armnn::LowerString </td>
<td>(</td>
<td class="paramtype">std::string&#160;</td>
<td class="paramname"><em>value</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_cl_backend_context_8cpp_source.html#l00061">61</a> of file <a class="el" href="_cl_backend_context_8cpp_source.html">ClBackendContext.cpp</a>.</p>
<div class="fragment"><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160;{</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; std::transform(value.begin(), value.end(), value.begin(),</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; [](<span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> c){ <span class="keywordflow">return</span> std::tolower(c); });</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160;</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; <span class="keywordflow">return</span> value;</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160;}</div></div><!-- fragment -->
</div>
</div>
<a id="a1545cb162c5a64d75d9c0c05e8ea387c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a1545cb162c5a64d75d9c0c05e8ea387c">&#9670;&nbsp;</a></span>MakeDecoder() <span class="overload">[1/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">std::unique_ptr&lt;<a class="el" href="classarmnn_1_1_decoder.html">Decoder</a>&lt;T&gt; &gt; armnn::MakeDecoder </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>info</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const void *&#160;</td>
<td class="paramname"><em>data</em> = <code>nullptr</code>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_decoders_8hpp_source.html#l00070">70</a> of file <a class="el" href="_decoders_8hpp_source.html">Decoders.hpp</a>.</p>
<p class="reference">References <a class="el" href="_deprecated_8hpp_source.html#l00033">ARMNN_NO_DEPRECATE_WARN_BEGIN</a>, <a class="el" href="_deprecated_8hpp_source.html#l00034">ARMNN_NO_DEPRECATE_WARN_END</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a26e6ed77470c6f2f830ecf874e6c0d55">Float16</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">Float32</a>, <a class="el" href="_tensor_8hpp_source.html#l00095">TensorInfo::GetDataType()</a>, <a class="el" href="_tensor_utils_8cpp_source.html#l00152">armnnUtils::GetPerAxisParams()</a>, <a class="el" href="_tensor_8cpp_source.html#l00264">TensorInfo::GetQuantizationOffset()</a>, <a class="el" href="_tensor_8cpp_source.html#l00247">TensorInfo::GetQuantizationScale()</a>, <a class="el" href="_tensor_8cpp_source.html#l00232">TensorInfo::HasPerAxisQuantization()</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a9d02ea768c081d4bdb2b7cab0b3f510d">QAsymmS8</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a0a3f57c876f5a230244c38e1453a8a6e">QAsymmU8</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7">QSymmS16</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a9945327825b115e93a3b89f4302e76db">QSymmS8</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a34346ec9593088efe3a29c0dad92166d">QuantizedSymm8PerAxis</a>, and <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6accedffbc6e5308e33d3843e8bdc0dad7">Signed32</a>.</p>
<div class="fragment"><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160;{</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; <span class="keywordflow">switch</span>(<a class="code" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>.GetDataType())</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; {</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; <a class="code" href="_deprecated_8hpp.html#ab66a241a0ed3ee89c866e777b035d0ed">ARMNN_NO_DEPRECATE_WARN_BEGIN</a></div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a34346ec9593088efe3a29c0dad92166d">armnn::DataType::QuantizedSymm8PerAxis</a>:</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; {</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; std::pair&lt;unsigned int, std::vector&lt;float&gt;&gt; params = <a class="code" href="namespacearmnn_utils.html#a1826e433f7e6817976a8175b4ef8296c">armnnUtils::GetPerAxisParams</a>(info);</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; <span class="keywordflow">return</span> std::make_unique&lt;QSymm8PerAxisDecoder&gt;(</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; <span class="keyword">static_cast&lt;</span><span class="keyword">const </span>int8_t*<span class="keyword">&gt;</span>(data),</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; params.second,</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; params.first);</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; }</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; <a class="code" href="_deprecated_8hpp.html#ad762b11b48e5c1d1c1743f529485728a">ARMNN_NO_DEPRECATE_WARN_END</a></div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; <span class="keywordflow">case</span> DataType::QAsymmS8:</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; {</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; <span class="keywordflow">return</span> std::make_unique&lt;QASymmS8Decoder&gt;(</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; <span class="keyword">static_cast&lt;</span><span class="keyword">const </span>int8_t*<span class="keyword">&gt;</span>(data),</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; <a class="code" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>.GetQuantizationScale(),</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; <a class="code" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>.GetQuantizationOffset());</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; }</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; <span class="keywordflow">case</span> DataType::QAsymmU8:</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; {</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; <span class="keywordflow">return</span> std::make_unique&lt;QASymm8Decoder&gt;(</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; <span class="keyword">static_cast&lt;</span><span class="keyword">const </span>uint8_t*<span class="keyword">&gt;</span>(data),</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; <a class="code" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>.GetQuantizationScale(),</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; <a class="code" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>.GetQuantizationOffset());</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; }</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; <span class="keywordflow">case</span> DataType::QSymmS16:</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; {</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; <span class="keywordflow">return</span> std::make_unique&lt;QSymm16Decoder&gt;(</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; <span class="keyword">static_cast&lt;</span><span class="keyword">const </span>int16_t*<span class="keyword">&gt;</span>(data),</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; <a class="code" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>.GetQuantizationScale(),</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; <a class="code" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>.GetQuantizationOffset());</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; }</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; <span class="keywordflow">case</span> DataType::Float16:</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; {</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; <span class="keywordflow">return</span> std::make_unique&lt;Float16Decoder&gt;(<span class="keyword">static_cast&lt;</span><span class="keyword">const </span><a class="code" href="namespacearmnn.html#a0f38fa92b2468d5378258a2b074c1a31">Half</a>*<span class="keyword">&gt;</span>(data));</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; }</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; <span class="keywordflow">case</span> DataType::Float32:</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; {</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; <span class="keywordflow">return</span> std::make_unique&lt;Float32Decoder&gt;(<span class="keyword">static_cast&lt;</span><span class="keyword">const </span><span class="keywordtype">float</span>*<span class="keyword">&gt;</span>(data));</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; }</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; <span class="keywordflow">case</span> DataType::Signed32:</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; {</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; <span class="keywordflow">return</span> MakeSigned32Decoder(info, data);</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; }</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; <span class="keywordflow">case</span> DataType::QSymmS8:</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; {</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>.HasPerAxisQuantization())</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; {</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; std::pair&lt;unsigned int, std::vector&lt;float&gt;&gt; params = <a class="code" href="namespacearmnn_utils.html#a1826e433f7e6817976a8175b4ef8296c">armnnUtils::GetPerAxisParams</a>(info);</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; <span class="keywordflow">return</span> std::make_unique&lt;QSymm8PerAxisDecoder&gt;(</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; <span class="keyword">static_cast&lt;</span><span class="keyword">const </span>int8_t*<span class="keyword">&gt;</span>(data),</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; params.second,</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; params.first);</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; }</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; {</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; <span class="keywordflow">return</span> std::make_unique&lt;QSymmS8Decoder&gt;(</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; <span class="keyword">static_cast&lt;</span><span class="keyword">const </span>int8_t*<span class="keyword">&gt;</span>(data),</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; <a class="code" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>.GetQuantizationScale(),</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; <a class="code" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>.GetQuantizationOffset());</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; }</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; }</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; <span class="keywordflow">default</span>:</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; {</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; BOOST_ASSERT_MSG(<span class="keyword">false</span>, <span class="stringliteral">&quot;Unsupported Data Type!&quot;</span>);</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; }</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; }</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a0f38fa92b2468d5378258a2b074c1a31"><div class="ttname"><a href="namespacearmnn.html#a0f38fa92b2468d5378258a2b074c1a31">armnn::Half</a></div><div class="ttdeci">half_float::half Half</div><div class="ttdef"><b>Definition:</b> <a href="_half_8hpp_source.html#l00016">Half.hpp:16</a></div></div>
<div class="ttc" id="namespacearmnn_html_a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c"><div class="ttname"><a href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">armnn::BoostLogSeverityMapping::info</a></div></div>
<div class="ttc" id="_deprecated_8hpp_html_ab66a241a0ed3ee89c866e777b035d0ed"><div class="ttname"><a href="_deprecated_8hpp.html#ab66a241a0ed3ee89c866e777b035d0ed">ARMNN_NO_DEPRECATE_WARN_BEGIN</a></div><div class="ttdeci">#define ARMNN_NO_DEPRECATE_WARN_BEGIN</div><div class="ttdef"><b>Definition:</b> <a href="_deprecated_8hpp_source.html#l00033">Deprecated.hpp:33</a></div></div>
<div class="ttc" id="namespacearmnn_utils_html_a1826e433f7e6817976a8175b4ef8296c"><div class="ttname"><a href="namespacearmnn_utils.html#a1826e433f7e6817976a8175b4ef8296c">armnnUtils::GetPerAxisParams</a></div><div class="ttdeci">std::pair&lt; unsigned int, std::vector&lt; float &gt; &gt; GetPerAxisParams(const armnn::TensorInfo &amp;info)</div><div class="ttdef"><b>Definition:</b> <a href="_tensor_utils_8cpp_source.html#l00152">TensorUtils.cpp:152</a></div></div>
<div class="ttc" id="namespacearmnn_html_ad8ed01ff3ff33333d8e19db4d2818bb6a34346ec9593088efe3a29c0dad92166d"><div class="ttname"><a href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a34346ec9593088efe3a29c0dad92166d">armnn::DataType::QuantizedSymm8PerAxis</a></div></div>
<div class="ttc" id="_deprecated_8hpp_html_ad762b11b48e5c1d1c1743f529485728a"><div class="ttname"><a href="_deprecated_8hpp.html#ad762b11b48e5c1d1c1743f529485728a">ARMNN_NO_DEPRECATE_WARN_END</a></div><div class="ttdeci">#define ARMNN_NO_DEPRECATE_WARN_END</div><div class="ttdef"><b>Definition:</b> <a href="_deprecated_8hpp_source.html#l00034">Deprecated.hpp:34</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="adb59a379c467b6d48874e946183b4d21"></a>
<h2 class="memtitle"><span class="permalink"><a href="#adb59a379c467b6d48874e946183b4d21">&#9670;&nbsp;</a></span>MakeDecoder() <span class="overload">[2/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">std::unique_ptr&lt;<a class="el" href="classarmnn_1_1_decoder.html">Decoder</a>&lt;float&gt; &gt; armnn::MakeDecoder </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>info</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const void *&#160;</td>
<td class="paramname"><em>data</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_decoders_8hpp_source.html#l00070">70</a> of file <a class="el" href="_decoders_8hpp_source.html">Decoders.hpp</a>.</p>
<p class="reference">References <a class="el" href="_deprecated_8hpp_source.html#l00033">ARMNN_NO_DEPRECATE_WARN_BEGIN</a>, <a class="el" href="_deprecated_8hpp_source.html#l00034">ARMNN_NO_DEPRECATE_WARN_END</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a26e6ed77470c6f2f830ecf874e6c0d55">Float16</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">Float32</a>, <a class="el" href="_tensor_8hpp_source.html#l00095">TensorInfo::GetDataType()</a>, <a class="el" href="_tensor_utils_8cpp_source.html#l00152">armnnUtils::GetPerAxisParams()</a>, <a class="el" href="_tensor_8cpp_source.html#l00264">TensorInfo::GetQuantizationOffset()</a>, <a class="el" href="_tensor_8cpp_source.html#l00247">TensorInfo::GetQuantizationScale()</a>, <a class="el" href="_tensor_8cpp_source.html#l00232">TensorInfo::HasPerAxisQuantization()</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a9d02ea768c081d4bdb2b7cab0b3f510d">QAsymmS8</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a0a3f57c876f5a230244c38e1453a8a6e">QAsymmU8</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7">QSymmS16</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a9945327825b115e93a3b89f4302e76db">QSymmS8</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a34346ec9593088efe3a29c0dad92166d">QuantizedSymm8PerAxis</a>, and <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6accedffbc6e5308e33d3843e8bdc0dad7">Signed32</a>.</p>
<div class="fragment"><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160;{</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; <span class="keywordflow">switch</span>(<a class="code" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>.GetDataType())</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; {</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; <a class="code" href="_deprecated_8hpp.html#ab66a241a0ed3ee89c866e777b035d0ed">ARMNN_NO_DEPRECATE_WARN_BEGIN</a></div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a34346ec9593088efe3a29c0dad92166d">armnn::DataType::QuantizedSymm8PerAxis</a>:</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; {</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; std::pair&lt;unsigned int, std::vector&lt;float&gt;&gt; params = <a class="code" href="namespacearmnn_utils.html#a1826e433f7e6817976a8175b4ef8296c">armnnUtils::GetPerAxisParams</a>(info);</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; <span class="keywordflow">return</span> std::make_unique&lt;QSymm8PerAxisDecoder&gt;(</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; <span class="keyword">static_cast&lt;</span><span class="keyword">const </span>int8_t*<span class="keyword">&gt;</span>(data),</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; params.second,</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; params.first);</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; }</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; <a class="code" href="_deprecated_8hpp.html#ad762b11b48e5c1d1c1743f529485728a">ARMNN_NO_DEPRECATE_WARN_END</a></div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; <span class="keywordflow">case</span> DataType::QAsymmS8:</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; {</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; <span class="keywordflow">return</span> std::make_unique&lt;QASymmS8Decoder&gt;(</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; <span class="keyword">static_cast&lt;</span><span class="keyword">const </span>int8_t*<span class="keyword">&gt;</span>(data),</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; <a class="code" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>.GetQuantizationScale(),</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; <a class="code" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>.GetQuantizationOffset());</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; }</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; <span class="keywordflow">case</span> DataType::QAsymmU8:</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; {</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; <span class="keywordflow">return</span> std::make_unique&lt;QASymm8Decoder&gt;(</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; <span class="keyword">static_cast&lt;</span><span class="keyword">const </span>uint8_t*<span class="keyword">&gt;</span>(data),</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; <a class="code" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>.GetQuantizationScale(),</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; <a class="code" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>.GetQuantizationOffset());</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; }</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; <span class="keywordflow">case</span> DataType::QSymmS16:</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; {</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; <span class="keywordflow">return</span> std::make_unique&lt;QSymm16Decoder&gt;(</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; <span class="keyword">static_cast&lt;</span><span class="keyword">const </span>int16_t*<span class="keyword">&gt;</span>(data),</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; <a class="code" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>.GetQuantizationScale(),</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; <a class="code" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>.GetQuantizationOffset());</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; }</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; <span class="keywordflow">case</span> DataType::Float16:</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; {</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; <span class="keywordflow">return</span> std::make_unique&lt;Float16Decoder&gt;(<span class="keyword">static_cast&lt;</span><span class="keyword">const </span><a class="code" href="namespacearmnn.html#a0f38fa92b2468d5378258a2b074c1a31">Half</a>*<span class="keyword">&gt;</span>(data));</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; }</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; <span class="keywordflow">case</span> DataType::Float32:</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; {</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; <span class="keywordflow">return</span> std::make_unique&lt;Float32Decoder&gt;(<span class="keyword">static_cast&lt;</span><span class="keyword">const </span><span class="keywordtype">float</span>*<span class="keyword">&gt;</span>(data));</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; }</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; <span class="keywordflow">case</span> DataType::Signed32:</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; {</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; <span class="keywordflow">return</span> MakeSigned32Decoder(info, data);</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; }</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; <span class="keywordflow">case</span> DataType::QSymmS8:</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; {</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>.HasPerAxisQuantization())</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; {</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; std::pair&lt;unsigned int, std::vector&lt;float&gt;&gt; params = <a class="code" href="namespacearmnn_utils.html#a1826e433f7e6817976a8175b4ef8296c">armnnUtils::GetPerAxisParams</a>(info);</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; <span class="keywordflow">return</span> std::make_unique&lt;QSymm8PerAxisDecoder&gt;(</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; <span class="keyword">static_cast&lt;</span><span class="keyword">const </span>int8_t*<span class="keyword">&gt;</span>(data),</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; params.second,</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; params.first);</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; }</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; {</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; <span class="keywordflow">return</span> std::make_unique&lt;QSymmS8Decoder&gt;(</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; <span class="keyword">static_cast&lt;</span><span class="keyword">const </span>int8_t*<span class="keyword">&gt;</span>(data),</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; <a class="code" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>.GetQuantizationScale(),</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; <a class="code" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>.GetQuantizationOffset());</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; }</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; }</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; <span class="keywordflow">default</span>:</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; {</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; BOOST_ASSERT_MSG(<span class="keyword">false</span>, <span class="stringliteral">&quot;Unsupported Data Type!&quot;</span>);</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; }</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; }</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a0f38fa92b2468d5378258a2b074c1a31"><div class="ttname"><a href="namespacearmnn.html#a0f38fa92b2468d5378258a2b074c1a31">armnn::Half</a></div><div class="ttdeci">half_float::half Half</div><div class="ttdef"><b>Definition:</b> <a href="_half_8hpp_source.html#l00016">Half.hpp:16</a></div></div>
<div class="ttc" id="namespacearmnn_html_a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c"><div class="ttname"><a href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">armnn::BoostLogSeverityMapping::info</a></div></div>
<div class="ttc" id="_deprecated_8hpp_html_ab66a241a0ed3ee89c866e777b035d0ed"><div class="ttname"><a href="_deprecated_8hpp.html#ab66a241a0ed3ee89c866e777b035d0ed">ARMNN_NO_DEPRECATE_WARN_BEGIN</a></div><div class="ttdeci">#define ARMNN_NO_DEPRECATE_WARN_BEGIN</div><div class="ttdef"><b>Definition:</b> <a href="_deprecated_8hpp_source.html#l00033">Deprecated.hpp:33</a></div></div>
<div class="ttc" id="namespacearmnn_utils_html_a1826e433f7e6817976a8175b4ef8296c"><div class="ttname"><a href="namespacearmnn_utils.html#a1826e433f7e6817976a8175b4ef8296c">armnnUtils::GetPerAxisParams</a></div><div class="ttdeci">std::pair&lt; unsigned int, std::vector&lt; float &gt; &gt; GetPerAxisParams(const armnn::TensorInfo &amp;info)</div><div class="ttdef"><b>Definition:</b> <a href="_tensor_utils_8cpp_source.html#l00152">TensorUtils.cpp:152</a></div></div>
<div class="ttc" id="namespacearmnn_html_ad8ed01ff3ff33333d8e19db4d2818bb6a34346ec9593088efe3a29c0dad92166d"><div class="ttname"><a href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a34346ec9593088efe3a29c0dad92166d">armnn::DataType::QuantizedSymm8PerAxis</a></div></div>
<div class="ttc" id="_deprecated_8hpp_html_ad762b11b48e5c1d1c1743f529485728a"><div class="ttname"><a href="_deprecated_8hpp.html#ad762b11b48e5c1d1c1743f529485728a">ARMNN_NO_DEPRECATE_WARN_END</a></div><div class="ttdeci">#define ARMNN_NO_DEPRECATE_WARN_END</div><div class="ttdef"><b>Definition:</b> <a href="_deprecated_8hpp_source.html#l00034">Deprecated.hpp:34</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a56867cc5245724ab56953604b1eec9ee"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a56867cc5245724ab56953604b1eec9ee">&#9670;&nbsp;</a></span>MakeEncoder() <span class="overload">[1/3]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">std::unique_ptr&lt;<a class="el" href="classarmnn_1_1_encoder.html">Encoder</a>&lt;T&gt; &gt; armnn::MakeEncoder </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>info</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">void *&#160;</td>
<td class="paramname"><em>data</em> = <code>nullptr</code>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_encoders_8hpp_source.html#l00021">21</a> of file <a class="el" href="_encoders_8hpp_source.html">Encoders.hpp</a>.</p>
<p class="reference">References <a class="el" href="_deprecated_8hpp_source.html#l00033">ARMNN_NO_DEPRECATE_WARN_BEGIN</a>, <a class="el" href="_deprecated_8hpp_source.html#l00034">ARMNN_NO_DEPRECATE_WARN_END</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a27226c864bac7454a8504f8edb15d95b">Boolean</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a26e6ed77470c6f2f830ecf874e6c0d55">Float16</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">Float32</a>, <a class="el" href="_tensor_8hpp_source.html#l00095">TensorInfo::GetDataType()</a>, <a class="el" href="_tensor_utils_8cpp_source.html#l00152">armnnUtils::GetPerAxisParams()</a>, <a class="el" href="_tensor_8cpp_source.html#l00264">TensorInfo::GetQuantizationOffset()</a>, <a class="el" href="_tensor_8cpp_source.html#l00247">TensorInfo::GetQuantizationScale()</a>, <a class="el" href="_tensor_8cpp_source.html#l00232">TensorInfo::HasPerAxisQuantization()</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a9d02ea768c081d4bdb2b7cab0b3f510d">QAsymmS8</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a0a3f57c876f5a230244c38e1453a8a6e">QAsymmU8</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7">QSymmS16</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a9945327825b115e93a3b89f4302e76db">QSymmS8</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a34346ec9593088efe3a29c0dad92166d">QuantizedSymm8PerAxis</a>, and <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6accedffbc6e5308e33d3843e8bdc0dad7">Signed32</a>.</p>
<div class="fragment"><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;{</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160; <span class="keywordflow">switch</span>(<a class="code" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>.GetDataType())</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160; {</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; <a class="code" href="_deprecated_8hpp.html#ab66a241a0ed3ee89c866e777b035d0ed">ARMNN_NO_DEPRECATE_WARN_BEGIN</a></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a34346ec9593088efe3a29c0dad92166d">armnn::DataType::QuantizedSymm8PerAxis</a>:</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; {</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; std::pair&lt;unsigned int, std::vector&lt;float&gt;&gt; params = <a class="code" href="namespacearmnn_utils.html#a1826e433f7e6817976a8175b4ef8296c">armnnUtils::GetPerAxisParams</a>(info);</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; <span class="keywordflow">return</span> std::make_unique&lt;QSymm8PerAxisEncoder&gt;(</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; <span class="keyword">static_cast&lt;</span>int8_t*<span class="keyword">&gt;</span>(data),</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; params.second,</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; params.first);</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; }</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; <a class="code" href="_deprecated_8hpp.html#ad762b11b48e5c1d1c1743f529485728a">ARMNN_NO_DEPRECATE_WARN_END</a></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a9d02ea768c081d4bdb2b7cab0b3f510d">armnn::DataType::QAsymmS8</a>:</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; {</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; <span class="keywordflow">return</span> std::make_unique&lt;QASymmS8Encoder&gt;(</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; <span class="keyword">static_cast&lt;</span>int8_t*<span class="keyword">&gt;</span>(data),</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; <a class="code" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>.GetQuantizationScale(),</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; <a class="code" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>.GetQuantizationOffset());</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; }</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a0a3f57c876f5a230244c38e1453a8a6e">armnn::DataType::QAsymmU8</a>:</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; {</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <span class="keywordflow">return</span> std::make_unique&lt;QASymm8Encoder&gt;(</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <span class="keyword">static_cast&lt;</span>uint8_t*<span class="keyword">&gt;</span>(data),</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; <a class="code" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>.GetQuantizationScale(),</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; <a class="code" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>.GetQuantizationOffset());</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; }</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; <span class="keywordflow">case</span> DataType::QSymmS8:</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; {</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>.HasPerAxisQuantization())</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; {</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; std::pair&lt;unsigned int, std::vector&lt;float&gt;&gt; params = <a class="code" href="namespacearmnn_utils.html#a1826e433f7e6817976a8175b4ef8296c">armnnUtils::GetPerAxisParams</a>(info);</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; <span class="keywordflow">return</span> std::make_unique&lt;QSymm8PerAxisEncoder&gt;(</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; <span class="keyword">static_cast&lt;</span>int8_t*<span class="keyword">&gt;</span>(data),</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; params.second,</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; params.first);</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; }</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; {</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; <span class="keywordflow">return</span> std::make_unique&lt;QSymmS8Encoder&gt;(</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; <span class="keyword">static_cast&lt;</span>int8_t*<span class="keyword">&gt;</span>(data),</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; <a class="code" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>.GetQuantizationScale(),</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; <a class="code" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>.GetQuantizationOffset());</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; }</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; }</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7">armnn::DataType::QSymmS16</a>:</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; {</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; <span class="keywordflow">return</span> std::make_unique&lt;QSymm16Encoder&gt;(</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; <span class="keyword">static_cast&lt;</span>int16_t*<span class="keyword">&gt;</span>(data),</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; <a class="code" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>.GetQuantizationScale(),</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; <a class="code" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>.GetQuantizationOffset());</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; }</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6accedffbc6e5308e33d3843e8bdc0dad7">armnn::DataType::Signed32</a>:</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; {</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; <span class="keywordflow">return</span> std::make_unique&lt;Int32Encoder&gt;(<span class="keyword">static_cast&lt;</span>int32_t*<span class="keyword">&gt;</span>(data));</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; }</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a26e6ed77470c6f2f830ecf874e6c0d55">armnn::DataType::Float16</a>:</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; {</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; <span class="keywordflow">return</span> std::make_unique&lt;Float16Encoder&gt;(<span class="keyword">static_cast&lt;</span><a class="code" href="namespacearmnn.html#a0f38fa92b2468d5378258a2b074c1a31">Half</a>*<span class="keyword">&gt;</span>(data));</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; }</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">armnn::DataType::Float32</a>:</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; {</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; <span class="keywordflow">return</span> std::make_unique&lt;Float32Encoder&gt;(<span class="keyword">static_cast&lt;</span><span class="keywordtype">float</span>*<span class="keyword">&gt;</span>(data));</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; }</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; <span class="keywordflow">default</span>:</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; {</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; BOOST_ASSERT_MSG(<span class="keyword">false</span>, <span class="stringliteral">&quot;Unsupported target Data Type!&quot;</span>);</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; }</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; }</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a0f38fa92b2468d5378258a2b074c1a31"><div class="ttname"><a href="namespacearmnn.html#a0f38fa92b2468d5378258a2b074c1a31">armnn::Half</a></div><div class="ttdeci">half_float::half Half</div><div class="ttdef"><b>Definition:</b> <a href="_half_8hpp_source.html#l00016">Half.hpp:16</a></div></div>
<div class="ttc" id="namespacearmnn_html_ad8ed01ff3ff33333d8e19db4d2818bb6a0a3f57c876f5a230244c38e1453a8a6e"><div class="ttname"><a href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a0a3f57c876f5a230244c38e1453a8a6e">armnn::DataType::QAsymmU8</a></div></div>
<div class="ttc" id="namespacearmnn_html_a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c"><div class="ttname"><a href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">armnn::BoostLogSeverityMapping::info</a></div></div>
<div class="ttc" id="namespacearmnn_html_ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204"><div class="ttname"><a href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">armnn::DataType::Float32</a></div></div>
<div class="ttc" id="namespacearmnn_html_ad8ed01ff3ff33333d8e19db4d2818bb6a9d02ea768c081d4bdb2b7cab0b3f510d"><div class="ttname"><a href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a9d02ea768c081d4bdb2b7cab0b3f510d">armnn::DataType::QAsymmS8</a></div></div>
<div class="ttc" id="namespacearmnn_html_ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7"><div class="ttname"><a href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7">armnn::DataType::QSymmS16</a></div></div>
<div class="ttc" id="_deprecated_8hpp_html_ab66a241a0ed3ee89c866e777b035d0ed"><div class="ttname"><a href="_deprecated_8hpp.html#ab66a241a0ed3ee89c866e777b035d0ed">ARMNN_NO_DEPRECATE_WARN_BEGIN</a></div><div class="ttdeci">#define ARMNN_NO_DEPRECATE_WARN_BEGIN</div><div class="ttdef"><b>Definition:</b> <a href="_deprecated_8hpp_source.html#l00033">Deprecated.hpp:33</a></div></div>
<div class="ttc" id="namespacearmnn_utils_html_a1826e433f7e6817976a8175b4ef8296c"><div class="ttname"><a href="namespacearmnn_utils.html#a1826e433f7e6817976a8175b4ef8296c">armnnUtils::GetPerAxisParams</a></div><div class="ttdeci">std::pair&lt; unsigned int, std::vector&lt; float &gt; &gt; GetPerAxisParams(const armnn::TensorInfo &amp;info)</div><div class="ttdef"><b>Definition:</b> <a href="_tensor_utils_8cpp_source.html#l00152">TensorUtils.cpp:152</a></div></div>
<div class="ttc" id="namespacearmnn_html_ad8ed01ff3ff33333d8e19db4d2818bb6a34346ec9593088efe3a29c0dad92166d"><div class="ttname"><a href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a34346ec9593088efe3a29c0dad92166d">armnn::DataType::QuantizedSymm8PerAxis</a></div></div>
<div class="ttc" id="namespacearmnn_html_ad8ed01ff3ff33333d8e19db4d2818bb6accedffbc6e5308e33d3843e8bdc0dad7"><div class="ttname"><a href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6accedffbc6e5308e33d3843e8bdc0dad7">armnn::DataType::Signed32</a></div></div>
<div class="ttc" id="namespacearmnn_html_ad8ed01ff3ff33333d8e19db4d2818bb6a26e6ed77470c6f2f830ecf874e6c0d55"><div class="ttname"><a href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a26e6ed77470c6f2f830ecf874e6c0d55">armnn::DataType::Float16</a></div></div>
<div class="ttc" id="_deprecated_8hpp_html_ad762b11b48e5c1d1c1743f529485728a"><div class="ttname"><a href="_deprecated_8hpp.html#ad762b11b48e5c1d1c1743f529485728a">ARMNN_NO_DEPRECATE_WARN_END</a></div><div class="ttdeci">#define ARMNN_NO_DEPRECATE_WARN_END</div><div class="ttdef"><b>Definition:</b> <a href="_deprecated_8hpp_source.html#l00034">Deprecated.hpp:34</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a363da7c8d642ea382e3bd2f1c6283d52"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a363da7c8d642ea382e3bd2f1c6283d52">&#9670;&nbsp;</a></span>MakeEncoder() <span class="overload">[2/3]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">std::unique_ptr&lt;<a class="el" href="classarmnn_1_1_encoder.html">Encoder</a>&lt;float&gt; &gt; armnn::MakeEncoder </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>info</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">void *&#160;</td>
<td class="paramname"><em>data</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_encoders_8hpp_source.html#l00021">21</a> of file <a class="el" href="_encoders_8hpp_source.html">Encoders.hpp</a>.</p>
<p class="reference">References <a class="el" href="_deprecated_8hpp_source.html#l00033">ARMNN_NO_DEPRECATE_WARN_BEGIN</a>, <a class="el" href="_deprecated_8hpp_source.html#l00034">ARMNN_NO_DEPRECATE_WARN_END</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a26e6ed77470c6f2f830ecf874e6c0d55">Float16</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">Float32</a>, <a class="el" href="_tensor_8hpp_source.html#l00095">TensorInfo::GetDataType()</a>, <a class="el" href="_tensor_utils_8cpp_source.html#l00152">armnnUtils::GetPerAxisParams()</a>, <a class="el" href="_tensor_8cpp_source.html#l00264">TensorInfo::GetQuantizationOffset()</a>, <a class="el" href="_tensor_8cpp_source.html#l00247">TensorInfo::GetQuantizationScale()</a>, <a class="el" href="_tensor_8cpp_source.html#l00232">TensorInfo::HasPerAxisQuantization()</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a9d02ea768c081d4bdb2b7cab0b3f510d">QAsymmS8</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a0a3f57c876f5a230244c38e1453a8a6e">QAsymmU8</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7">QSymmS16</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a9945327825b115e93a3b89f4302e76db">QSymmS8</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a34346ec9593088efe3a29c0dad92166d">QuantizedSymm8PerAxis</a>, and <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6accedffbc6e5308e33d3843e8bdc0dad7">Signed32</a>.</p>
<div class="fragment"><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;{</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160; <span class="keywordflow">switch</span>(<a class="code" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>.GetDataType())</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160; {</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; <a class="code" href="_deprecated_8hpp.html#ab66a241a0ed3ee89c866e777b035d0ed">ARMNN_NO_DEPRECATE_WARN_BEGIN</a></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a34346ec9593088efe3a29c0dad92166d">armnn::DataType::QuantizedSymm8PerAxis</a>:</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; {</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; std::pair&lt;unsigned int, std::vector&lt;float&gt;&gt; params = <a class="code" href="namespacearmnn_utils.html#a1826e433f7e6817976a8175b4ef8296c">armnnUtils::GetPerAxisParams</a>(info);</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; <span class="keywordflow">return</span> std::make_unique&lt;QSymm8PerAxisEncoder&gt;(</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; <span class="keyword">static_cast&lt;</span>int8_t*<span class="keyword">&gt;</span>(data),</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; params.second,</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; params.first);</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; }</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; <a class="code" href="_deprecated_8hpp.html#ad762b11b48e5c1d1c1743f529485728a">ARMNN_NO_DEPRECATE_WARN_END</a></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a9d02ea768c081d4bdb2b7cab0b3f510d">armnn::DataType::QAsymmS8</a>:</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; {</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; <span class="keywordflow">return</span> std::make_unique&lt;QASymmS8Encoder&gt;(</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; <span class="keyword">static_cast&lt;</span>int8_t*<span class="keyword">&gt;</span>(data),</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; <a class="code" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>.GetQuantizationScale(),</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; <a class="code" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>.GetQuantizationOffset());</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; }</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a0a3f57c876f5a230244c38e1453a8a6e">armnn::DataType::QAsymmU8</a>:</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; {</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <span class="keywordflow">return</span> std::make_unique&lt;QASymm8Encoder&gt;(</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <span class="keyword">static_cast&lt;</span>uint8_t*<span class="keyword">&gt;</span>(data),</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; <a class="code" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>.GetQuantizationScale(),</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; <a class="code" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>.GetQuantizationOffset());</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; }</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; <span class="keywordflow">case</span> DataType::QSymmS8:</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; {</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>.HasPerAxisQuantization())</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; {</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; std::pair&lt;unsigned int, std::vector&lt;float&gt;&gt; params = <a class="code" href="namespacearmnn_utils.html#a1826e433f7e6817976a8175b4ef8296c">armnnUtils::GetPerAxisParams</a>(info);</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; <span class="keywordflow">return</span> std::make_unique&lt;QSymm8PerAxisEncoder&gt;(</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; <span class="keyword">static_cast&lt;</span>int8_t*<span class="keyword">&gt;</span>(data),</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; params.second,</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; params.first);</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; }</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; {</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; <span class="keywordflow">return</span> std::make_unique&lt;QSymmS8Encoder&gt;(</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; <span class="keyword">static_cast&lt;</span>int8_t*<span class="keyword">&gt;</span>(data),</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; <a class="code" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>.GetQuantizationScale(),</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; <a class="code" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>.GetQuantizationOffset());</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; }</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; }</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7">armnn::DataType::QSymmS16</a>:</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; {</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; <span class="keywordflow">return</span> std::make_unique&lt;QSymm16Encoder&gt;(</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; <span class="keyword">static_cast&lt;</span>int16_t*<span class="keyword">&gt;</span>(data),</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; <a class="code" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>.GetQuantizationScale(),</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; <a class="code" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>.GetQuantizationOffset());</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; }</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6accedffbc6e5308e33d3843e8bdc0dad7">armnn::DataType::Signed32</a>:</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; {</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; <span class="keywordflow">return</span> std::make_unique&lt;Int32Encoder&gt;(<span class="keyword">static_cast&lt;</span>int32_t*<span class="keyword">&gt;</span>(data));</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; }</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a26e6ed77470c6f2f830ecf874e6c0d55">armnn::DataType::Float16</a>:</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; {</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; <span class="keywordflow">return</span> std::make_unique&lt;Float16Encoder&gt;(<span class="keyword">static_cast&lt;</span><a class="code" href="namespacearmnn.html#a0f38fa92b2468d5378258a2b074c1a31">Half</a>*<span class="keyword">&gt;</span>(data));</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; }</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">armnn::DataType::Float32</a>:</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; {</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; <span class="keywordflow">return</span> std::make_unique&lt;Float32Encoder&gt;(<span class="keyword">static_cast&lt;</span><span class="keywordtype">float</span>*<span class="keyword">&gt;</span>(data));</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; }</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; <span class="keywordflow">default</span>:</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; {</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; BOOST_ASSERT_MSG(<span class="keyword">false</span>, <span class="stringliteral">&quot;Unsupported target Data Type!&quot;</span>);</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; }</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; }</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a0f38fa92b2468d5378258a2b074c1a31"><div class="ttname"><a href="namespacearmnn.html#a0f38fa92b2468d5378258a2b074c1a31">armnn::Half</a></div><div class="ttdeci">half_float::half Half</div><div class="ttdef"><b>Definition:</b> <a href="_half_8hpp_source.html#l00016">Half.hpp:16</a></div></div>
<div class="ttc" id="namespacearmnn_html_ad8ed01ff3ff33333d8e19db4d2818bb6a0a3f57c876f5a230244c38e1453a8a6e"><div class="ttname"><a href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a0a3f57c876f5a230244c38e1453a8a6e">armnn::DataType::QAsymmU8</a></div></div>
<div class="ttc" id="namespacearmnn_html_a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c"><div class="ttname"><a href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">armnn::BoostLogSeverityMapping::info</a></div></div>
<div class="ttc" id="namespacearmnn_html_ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204"><div class="ttname"><a href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">armnn::DataType::Float32</a></div></div>
<div class="ttc" id="namespacearmnn_html_ad8ed01ff3ff33333d8e19db4d2818bb6a9d02ea768c081d4bdb2b7cab0b3f510d"><div class="ttname"><a href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a9d02ea768c081d4bdb2b7cab0b3f510d">armnn::DataType::QAsymmS8</a></div></div>
<div class="ttc" id="namespacearmnn_html_ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7"><div class="ttname"><a href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7">armnn::DataType::QSymmS16</a></div></div>
<div class="ttc" id="_deprecated_8hpp_html_ab66a241a0ed3ee89c866e777b035d0ed"><div class="ttname"><a href="_deprecated_8hpp.html#ab66a241a0ed3ee89c866e777b035d0ed">ARMNN_NO_DEPRECATE_WARN_BEGIN</a></div><div class="ttdeci">#define ARMNN_NO_DEPRECATE_WARN_BEGIN</div><div class="ttdef"><b>Definition:</b> <a href="_deprecated_8hpp_source.html#l00033">Deprecated.hpp:33</a></div></div>
<div class="ttc" id="namespacearmnn_utils_html_a1826e433f7e6817976a8175b4ef8296c"><div class="ttname"><a href="namespacearmnn_utils.html#a1826e433f7e6817976a8175b4ef8296c">armnnUtils::GetPerAxisParams</a></div><div class="ttdeci">std::pair&lt; unsigned int, std::vector&lt; float &gt; &gt; GetPerAxisParams(const armnn::TensorInfo &amp;info)</div><div class="ttdef"><b>Definition:</b> <a href="_tensor_utils_8cpp_source.html#l00152">TensorUtils.cpp:152</a></div></div>
<div class="ttc" id="namespacearmnn_html_ad8ed01ff3ff33333d8e19db4d2818bb6a34346ec9593088efe3a29c0dad92166d"><div class="ttname"><a href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a34346ec9593088efe3a29c0dad92166d">armnn::DataType::QuantizedSymm8PerAxis</a></div></div>
<div class="ttc" id="namespacearmnn_html_ad8ed01ff3ff33333d8e19db4d2818bb6accedffbc6e5308e33d3843e8bdc0dad7"><div class="ttname"><a href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6accedffbc6e5308e33d3843e8bdc0dad7">armnn::DataType::Signed32</a></div></div>
<div class="ttc" id="namespacearmnn_html_ad8ed01ff3ff33333d8e19db4d2818bb6a26e6ed77470c6f2f830ecf874e6c0d55"><div class="ttname"><a href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a26e6ed77470c6f2f830ecf874e6c0d55">armnn::DataType::Float16</a></div></div>
<div class="ttc" id="_deprecated_8hpp_html_ad762b11b48e5c1d1c1743f529485728a"><div class="ttname"><a href="_deprecated_8hpp.html#ad762b11b48e5c1d1c1743f529485728a">ARMNN_NO_DEPRECATE_WARN_END</a></div><div class="ttdeci">#define ARMNN_NO_DEPRECATE_WARN_END</div><div class="ttdef"><b>Definition:</b> <a href="_deprecated_8hpp_source.html#l00034">Deprecated.hpp:34</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a6fcd01a9cdee158d3022ad089c27c078"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a6fcd01a9cdee158d3022ad089c27c078">&#9670;&nbsp;</a></span>MakeEncoder() <span class="overload">[3/3]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">std::unique_ptr&lt;<a class="el" href="classarmnn_1_1_encoder.html">Encoder</a>&lt;bool&gt; &gt; armnn::MakeEncoder </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>info</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">void *&#160;</td>
<td class="paramname"><em>data</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_encoders_8hpp_source.html#l00096">96</a> of file <a class="el" href="_encoders_8hpp_source.html">Encoders.hpp</a>.</p>
<p class="reference">References <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a27226c864bac7454a8504f8edb15d95b">Boolean</a>, and <a class="el" href="_tensor_8hpp_source.html#l00095">TensorInfo::GetDataType()</a>.</p>
<div class="fragment"><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160;{</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; <span class="keywordflow">switch</span>(<a class="code" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>.GetDataType())</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; {</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a27226c864bac7454a8504f8edb15d95b">armnn::DataType::Boolean</a>:</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; {</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; <span class="keywordflow">return</span> std::make_unique&lt;BooleanEncoder&gt;(<span class="keyword">static_cast&lt;</span>uint8_t*<span class="keyword">&gt;</span>(data));</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; }</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; <span class="keywordflow">default</span>:</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; {</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; BOOST_ASSERT_MSG(<span class="keyword">false</span>, <span class="stringliteral">&quot;Cannot encode from boolean. Not supported target Data Type!&quot;</span>);</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; }</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; }</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c"><div class="ttname"><a href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">armnn::BoostLogSeverityMapping::info</a></div></div>
<div class="ttc" id="namespacearmnn_html_ad8ed01ff3ff33333d8e19db4d2818bb6a27226c864bac7454a8504f8edb15d95b"><div class="ttname"><a href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a27226c864bac7454a8504f8edb15d95b">armnn::DataType::Boolean</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="ae0ae21bef03ed19f252c72c660e571a4"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae0ae21bef03ed19f252c72c660e571a4">&#9670;&nbsp;</a></span>MakeInfo()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">arm_compute::DetectionPostProcessLayerInfo armnn::MakeInfo </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="structarmnn_1_1_detection_post_process_descriptor.html">DetectionPostProcessDescriptor</a> &amp;&#160;</td>
<td class="paramname"><em>desc</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_neon_detection_post_process_workload_8cpp_source.html#l00018">18</a> of file <a class="el" href="_neon_detection_post_process_workload_8cpp_source.html">NeonDetectionPostProcessWorkload.cpp</a>.</p>
<p class="reference">References <a class="el" href="_descriptors_8hpp_source.html#l00531">DetectionPostProcessDescriptor::m_DetectionsPerClass</a>, <a class="el" href="_descriptors_8hpp_source.html#l00529">DetectionPostProcessDescriptor::m_MaxClassesPerDetection</a>, <a class="el" href="_descriptors_8hpp_source.html#l00527">DetectionPostProcessDescriptor::m_MaxDetections</a>, <a class="el" href="_descriptors_8hpp_source.html#l00535">DetectionPostProcessDescriptor::m_NmsIouThreshold</a>, <a class="el" href="_descriptors_8hpp_source.html#l00533">DetectionPostProcessDescriptor::m_NmsScoreThreshold</a>, <a class="el" href="_descriptors_8hpp_source.html#l00537">DetectionPostProcessDescriptor::m_NumClasses</a>, and <a class="el" href="_descriptors_8hpp_source.html#l00539">DetectionPostProcessDescriptor::m_UseRegularNms</a>.</p>
<p class="reference">Referenced by <a class="el" href="_neon_detection_post_process_workload_8cpp_source.html#l00033">NeonDetectionPostProcessValidate()</a>.</p>
<div class="fragment"><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;{</div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160; <span class="keywordflow">return</span> arm_compute::DetectionPostProcessLayerInfo(desc.m_MaxDetections,</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160; desc.m_MaxClassesPerDetection,</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160; desc.m_NmsScoreThreshold,</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160; desc.m_NmsIouThreshold,</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160; desc.m_NumClasses,</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; { desc.m_ScaleX,</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; desc.m_ScaleY,</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; desc.m_ScaleW,</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; desc.m_ScaleH },</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; desc.m_UseRegularNms,</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; desc.m_DetectionsPerClass);</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;}</div></div><!-- fragment -->
</div>
</div>
<a id="aa7427025a851113a492de0b68b23d22a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa7427025a851113a492de0b68b23d22a">&#9670;&nbsp;</a></span>MakeOptimizations()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classarmnn_1_1_optimizer.html#ad1794808004025d6e06c176507197b24">Optimizer::Optimizations</a> armnn::MakeOptimizations </td>
<td>(</td>
<td class="paramtype">Args &amp;&amp;...&#160;</td>
<td class="paramname"><em>args</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_optimizer_8hpp_source.html#l00043">43</a> of file <a class="el" href="_optimizer_8hpp_source.html">Optimizer.hpp</a>.</p>
<p class="reference">References <a class="el" href="_optimizer_8hpp_source.html#l00030">Append()</a>.</p>
<p class="reference">Referenced by <a class="el" href="_convert_constants_float_to_half_tests_8cpp_source.html#l00018">BOOST_AUTO_TEST_CASE()</a>, and <a class="el" href="_network_8cpp_source.html#l00807">Optimize()</a>.</p>
<div class="fragment"><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;{</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; Optimizer::Optimizations optimizations;</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; <a class="code" href="namespacearmnn.html#a0c8a28b71e49c04596289ff281e58f1a">Append</a>(optimizations, std::forward&lt;Args&gt;(args)...);</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; <span class="keywordflow">return</span> optimizations;</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a0c8a28b71e49c04596289ff281e58f1a"><div class="ttname"><a href="namespacearmnn.html#a0c8a28b71e49c04596289ff281e58f1a">armnn::Append</a></div><div class="ttdeci">void Append(Optimizer::Optimizations &amp;optimizations, Front &amp;&amp;front, Others &amp;&amp;... others)</div><div class="ttdef"><b>Definition:</b> <a href="_optimizer_8hpp_source.html#l00036">Optimizer.hpp:36</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a77780137c47f528921f6537447060f05"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a77780137c47f528921f6537447060f05">&#9670;&nbsp;</a></span>MakeOptional()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classarmnn_1_1_optional.html">Optional</a>&lt;T&gt; armnn::MakeOptional </td>
<td>(</td>
<td class="paramtype">Args &amp;&amp;...&#160;</td>
<td class="paramname"><em>args</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_optional_8hpp_source.html#l00304">304</a> of file <a class="el" href="_optional_8hpp_source.html">Optional.hpp</a>.</p>
<p class="reference">References <a class="el" href="_optional_8hpp_source.html#l00041">CONSTRUCT_IN_PLACE</a>.</p>
<div class="fragment"><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160;{</div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160; <span class="keywordflow">return</span> Optional&lt;T&gt;(<a class="code" href="_optional_8hpp.html#acbec11f88a308826fa811f370d363a4a">CONSTRUCT_IN_PLACE</a>, std::forward&lt;Args&gt;(args)...);</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160;}</div><div class="ttc" id="_optional_8hpp_html_acbec11f88a308826fa811f370d363a4a"><div class="ttname"><a href="_optional_8hpp.html#acbec11f88a308826fa811f370d363a4a">CONSTRUCT_IN_PLACE</a></div><div class="ttdeci">#define CONSTRUCT_IN_PLACE</div><div class="ttdef"><b>Definition:</b> <a href="_optional_8hpp_source.html#l00041">Optional.hpp:41</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a165ae372a7f67cad64ef3395d30122ce"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a165ae372a7f67cad64ef3395d30122ce">&#9670;&nbsp;</a></span>Mean()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void Mean </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">armnn::TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>inputInfo</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">armnn::TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>outputInfo</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const std::vector&lt; unsigned int &gt; &amp;&#160;</td>
<td class="paramname"><em>axis</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classarmnn_1_1_decoder.html">Decoder</a>&lt; float &gt; &amp;&#160;</td>
<td class="paramname"><em>input</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classarmnn_1_1_encoder.html">Encoder</a>&lt; float &gt; &amp;&#160;</td>
<td class="paramname"><em>output</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="backends_2reference_2workloads_2_mean_8cpp_source.html#l00071">71</a> of file <a class="el" href="backends_2reference_2workloads_2_mean_8cpp_source.html">Mean.cpp</a>.</p>
<p class="reference">References <a class="el" href="classarmnn_1_1_decoder.html#ac729108381e2340bea12877971713ecb">Decoder&lt; IType &gt;::Get()</a>, <a class="el" href="_tensor_8hpp_source.html#l00092">TensorInfo::GetNumDimensions()</a>, <a class="el" href="_tensor_8hpp_source.html#l00088">TensorInfo::GetShape()</a>, <a class="el" href="backends_2reference_2workloads_2_mean_8cpp_source.html#l00018">NextIndex()</a>, <a class="el" href="backends_2reference_2workloads_2_mean_8cpp_source.html#l00039">ReducedOutputOffset()</a>, and <a class="el" href="classarmnn_1_1_encoder.html#ae3b62b846a9c239f332830b9e36030eb">Encoder&lt; IType &gt;::Set()</a>.</p>
<p class="reference">Referenced by <a class="el" href="_serializer_tests_8cpp_source.html#l01456">BOOST_AUTO_TEST_CASE()</a>.</p>
<div class="fragment"><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160;{</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160;</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> inputNumDims = inputInfo.<a class="code" href="classarmnn_1_1_tensor_info.html#a157e27d41e9f6b21f0d3c025fa47dc24">GetNumDimensions</a>();</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> outputNumDims = outputInfo.<a class="code" href="classarmnn_1_1_tensor_info.html#a157e27d41e9f6b21f0d3c025fa47dc24">GetNumDimensions</a>();</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160;</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; <a class="code" href="classarmnn_1_1_tensor_shape.html">armnn::TensorShape</a> outputDims = outputInfo.<a class="code" href="classarmnn_1_1_tensor_info.html#a8b5d0f8a24e9d9238f412260a552acf8">GetShape</a>();</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; <a class="code" href="classarmnn_1_1_tensor_shape.html">armnn::TensorShape</a> inputDims = inputInfo.<a class="code" href="classarmnn_1_1_tensor_info.html#a8b5d0f8a24e9d9238f412260a552acf8">GetShape</a>();</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160;</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; <span class="comment">// Initialise output data.</span></div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> numOutputs = 1;</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> idx = 0; idx &lt; outputNumDims; ++idx)</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; {</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; numOutputs *= outputDims[idx];</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; }</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160;</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; std::vector&lt;float&gt; tempSum(numOutputs);</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> idx = 0; idx &lt; numOutputs; ++idx)</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; {</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; output[idx];</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; output.<a class="code" href="classarmnn_1_1_encoder.html#ae3b62b846a9c239f332830b9e36030eb">Set</a>(0.0f);</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; tempSum[idx] = 0.0f;</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; }</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160;</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; <span class="comment">// Initialise temp index.</span></div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; std::vector&lt;unsigned int&gt; tempIndex(inputNumDims);</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> idx = 0; idx &lt; inputNumDims; ++idx)</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; {</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; tempIndex[idx] = 0;</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; }</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160;</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; std::vector&lt;unsigned int&gt; resolvedAxis = axis;</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; <span class="keywordflow">if</span> (resolvedAxis.empty())</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; {</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> idx = 0; idx &lt; inputNumDims; ++idx)</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; {</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; resolvedAxis.push_back(idx);</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; }</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; }</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; <span class="keyword">auto</span> numResolvedAxis = boost::numeric_cast&lt;<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>&gt;(resolvedAxis.size());</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160;</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; <span class="comment">// Iterates through input_data and sum up the reduced axis.</span></div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">bool</span> hasNext = <span class="keyword">true</span>; hasNext; hasNext = <a class="code" href="namespacearmnn.html#a869f740e9c2fcb8642350c6e3d0b3742">NextIndex</a>(inputNumDims, inputDims, tempIndex))</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; {</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> inputOffset = <a class="code" href="namespacearmnn.html#ae86f1ca23eaa764da9e589cc8e39a969">ReducedOutputOffset</a>(inputNumDims, inputDims, tempIndex, 0, {});</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> outputOffset = <a class="code" href="namespacearmnn.html#ae86f1ca23eaa764da9e589cc8e39a969">ReducedOutputOffset</a>(inputNumDims, inputDims, tempIndex,</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; numResolvedAxis, resolvedAxis);</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; input[inputOffset];</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; tempSum[outputOffset] += input.<a class="code" href="classarmnn_1_1_decoder.html#ac729108381e2340bea12877971713ecb">Get</a>();</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; }</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160;</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; <span class="comment">// Takes average by num of elements added to get mean.</span></div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; <span class="keywordtype">size_t</span> numElementsInAxis = 1;</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> idx = 0; idx &lt; numResolvedAxis; ++idx)</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; {</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> current = inputDims[resolvedAxis[idx]];</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; BOOST_ASSERT(boost::numeric_cast&lt;float&gt;(current) &lt;</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; (std::numeric_limits&lt;float&gt;::max() / boost::numeric_cast&lt;float&gt;(numElementsInAxis)));</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; numElementsInAxis *= current;</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; }</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; <span class="keywordflow">if</span> (numElementsInAxis &gt; 0) {</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> idx = 0; idx &lt; numOutputs; ++idx)</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; {</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; output[idx];</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; output.<a class="code" href="classarmnn_1_1_encoder.html#ae3b62b846a9c239f332830b9e36030eb">Set</a>(tempSum[idx] / boost::numeric_cast&lt;float&gt;(numElementsInAxis));</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; }</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; }</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160;}</div><div class="ttc" id="classarmnn_1_1_tensor_info_html_a157e27d41e9f6b21f0d3c025fa47dc24"><div class="ttname"><a href="classarmnn_1_1_tensor_info.html#a157e27d41e9f6b21f0d3c025fa47dc24">armnn::TensorInfo::GetNumDimensions</a></div><div class="ttdeci">unsigned int GetNumDimensions() const</div><div class="ttdef"><b>Definition:</b> <a href="_tensor_8hpp_source.html#l00092">Tensor.hpp:92</a></div></div>
<div class="ttc" id="namespacearmnn_html_a869f740e9c2fcb8642350c6e3d0b3742"><div class="ttname"><a href="namespacearmnn.html#a869f740e9c2fcb8642350c6e3d0b3742">armnn::NextIndex</a></div><div class="ttdeci">bool NextIndex(const unsigned int numDims, const armnn::TensorShape &amp;dims, std::vector&lt; unsigned int &gt; &amp;current)</div><div class="ttdef"><b>Definition:</b> <a href="backends_2reference_2workloads_2_mean_8cpp_source.html#l00018">Mean.cpp:18</a></div></div>
<div class="ttc" id="classarmnn_1_1_tensor_shape_html"><div class="ttname"><a href="classarmnn_1_1_tensor_shape.html">armnn::TensorShape</a></div><div class="ttdef"><b>Definition:</b> <a href="_tensor_8hpp_source.html#l00020">Tensor.hpp:20</a></div></div>
<div class="ttc" id="namespacearmnn_html_ae86f1ca23eaa764da9e589cc8e39a969"><div class="ttname"><a href="namespacearmnn.html#ae86f1ca23eaa764da9e589cc8e39a969">armnn::ReducedOutputOffset</a></div><div class="ttdeci">unsigned int ReducedOutputOffset(const unsigned int numDims, const armnn::TensorShape &amp;dims, std::vector&lt; unsigned int &gt; &amp;index, const unsigned int numAxis, const std::vector&lt; unsigned int &gt; &amp;axis)</div><div class="ttdef"><b>Definition:</b> <a href="backends_2reference_2workloads_2_mean_8cpp_source.html#l00039">Mean.cpp:39</a></div></div>
<div class="ttc" id="classarmnn_1_1_decoder_html_ac729108381e2340bea12877971713ecb"><div class="ttname"><a href="classarmnn_1_1_decoder.html#ac729108381e2340bea12877971713ecb">armnn::Decoder::Get</a></div><div class="ttdeci">virtual IType Get() const =0</div></div>
<div class="ttc" id="classarmnn_1_1_tensor_info_html_a8b5d0f8a24e9d9238f412260a552acf8"><div class="ttname"><a href="classarmnn_1_1_tensor_info.html#a8b5d0f8a24e9d9238f412260a552acf8">armnn::TensorInfo::GetShape</a></div><div class="ttdeci">const TensorShape &amp; GetShape() const</div><div class="ttdef"><b>Definition:</b> <a href="_tensor_8hpp_source.html#l00088">Tensor.hpp:88</a></div></div>
<div class="ttc" id="classarmnn_1_1_encoder_html_ae3b62b846a9c239f332830b9e36030eb"><div class="ttname"><a href="classarmnn_1_1_encoder.html#ae3b62b846a9c239f332830b9e36030eb">armnn::Encoder::Set</a></div><div class="ttdeci">virtual void Set(IType right)=0</div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a17955517b0d148f7ffdbffe8b46e41e0"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a17955517b0d148f7ffdbffe8b46e41e0">&#9670;&nbsp;</a></span>MockBackendId()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">constexpr const char* armnn::MockBackendId </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_mock_backend_id_8hpp_source.html#l00011">11</a> of file <a class="el" href="_mock_backend_id_8hpp_source.html">MockBackendId.hpp</a>.</p>
<p class="reference">Referenced by <a class="el" href="_backend_profiling_tests_8cpp_source.html#l00111">BOOST_AUTO_TEST_CASE()</a>, <a class="el" href="_mock_backend_8cpp_source.html#l00091">MockBackend::GetIdStatic()</a>, and <a class="el" href="_mock_backend_8cpp_source.html#l00134">MockBackend::OptimizeSubgraphView()</a>.</p>
<div class="fragment"><div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;{ <span class="keywordflow">return</span> <span class="stringliteral">&quot;MockAcc&quot;</span>; }</div></div><!-- fragment -->
</div>
</div>
<a id="afc773aec6f845adc0cc547ce475dfe3f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#afc773aec6f845adc0cc547ce475dfe3f">&#9670;&nbsp;</a></span>NeonAbsWorkloadValidate()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">arm_compute::Status NeonAbsWorkloadValidate </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>input</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>output</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_neon_abs_workload_8cpp_source.html#l00018">18</a> of file <a class="el" href="_neon_abs_workload_8cpp_source.html">NeonAbsWorkload.cpp</a>.</p>
<p class="reference">Referenced by <a class="el" href="_neon_layer_support_8cpp_source.html#l00356">NeonLayerSupport::IsElementwiseUnarySupported()</a>.</p>
<div class="fragment"><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;{</div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInput = armcomputetensorutils::BuildArmComputeTensorInfo(input);</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclOutput = armcomputetensorutils::BuildArmComputeTensorInfo(output);</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160; <span class="keywordflow">return</span> arm_compute::NEAbsLayer::validate(&amp;aclInput, &amp;aclOutput);</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;}</div></div><!-- fragment -->
</div>
</div>
<a id="a46495807633a01d826851e1cb498f071"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a46495807633a01d826851e1cb498f071">&#9670;&nbsp;</a></span>NeonActivationWorkloadValidate()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">arm_compute::Status NeonActivationWorkloadValidate </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>input</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>output</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="structarmnn_1_1_activation_descriptor.html">ActivationDescriptor</a> &amp;&#160;</td>
<td class="paramname"><em>descriptor</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_neon_activation_workload_8cpp_source.html#l00015">15</a> of file <a class="el" href="_neon_activation_workload_8cpp_source.html">NeonActivationWorkload.cpp</a>.</p>
<p class="reference">Referenced by <a class="el" href="_neon_layer_support_8cpp_source.html#l00131">NeonLayerSupport::IsActivationSupported()</a>.</p>
<div class="fragment"><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;{</div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInput = armcomputetensorutils::BuildArmComputeTensorInfo(input);</div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclOutput = armcomputetensorutils::BuildArmComputeTensorInfo(output);</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160; <span class="keyword">const</span> arm_compute::ActivationLayerInfo activationLayerInfo =</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160; <a class="code" href="namespacearmnn.html#ad701d0d29baa4266ab4d33b090aa661c">ConvertActivationDescriptorToAclActivationLayerInfo</a>(descriptor);</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; <span class="keywordflow">return</span> arm_compute::NEActivationLayer::validate(&amp;aclInput,</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; &amp;aclOutput,</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; activationLayerInfo);</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_ad701d0d29baa4266ab4d33b090aa661c"><div class="ttname"><a href="namespacearmnn.html#ad701d0d29baa4266ab4d33b090aa661c">armnn::ConvertActivationDescriptorToAclActivationLayerInfo</a></div><div class="ttdeci">arm_compute::ActivationLayerInfo ConvertActivationDescriptorToAclActivationLayerInfo(const ActivationDescriptor &amp;actDesc)</div><div class="ttdef"><b>Definition:</b> <a href="_arm_compute_utils_8hpp_source.html#l00073">ArmComputeUtils.hpp:73</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="afc541536011ccfb06853c45bfaba2dfd"></a>
<h2 class="memtitle"><span class="permalink"><a href="#afc541536011ccfb06853c45bfaba2dfd">&#9670;&nbsp;</a></span>NeonAdditionWorkloadValidate()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">arm_compute::Status NeonAdditionWorkloadValidate </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>input0</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>input1</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>output</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_neon_addition_workload_8cpp_source.html#l00017">17</a> of file <a class="el" href="_neon_addition_workload_8cpp_source.html">NeonAdditionWorkload.cpp</a>.</p>
<p class="reference">Referenced by <a class="el" href="_neon_layer_support_8cpp_source.html#l00144">NeonLayerSupport::IsAdditionSupported()</a>.</p>
<div class="fragment"><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;{</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInput0 = armcomputetensorutils::BuildArmComputeTensorInfo(input0);</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInput1 = armcomputetensorutils::BuildArmComputeTensorInfo(input1);</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclOutput = armcomputetensorutils::BuildArmComputeTensorInfo(output);</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; <span class="keywordflow">return</span> arm_compute::NEArithmeticAddition::validate(&amp;aclInput0,</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; &amp;aclInput1,</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; &amp;aclOutput,</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; arm_compute::ConvertPolicy::SATURATE);</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;}</div></div><!-- fragment -->
</div>
</div>
<a id="a61d1f39297fec6e3062e4047dc5f236e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a61d1f39297fec6e3062e4047dc5f236e">&#9670;&nbsp;</a></span>NeonArgMinMaxWorkloadValidate()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">arm_compute::Status NeonArgMinMaxWorkloadValidate </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>input</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>output</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="structarmnn_1_1_arg_min_max_descriptor.html">ArgMinMaxDescriptor</a> &amp;&#160;</td>
<td class="paramname"><em>descriptor</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_neon_arg_min_max_workload_8cpp_source.html#l00029">29</a> of file <a class="el" href="_neon_arg_min_max_workload_8cpp_source.html">NeonArgMinMaxWorkload.cpp</a>.</p>
<p class="reference">Referenced by <a class="el" href="_neon_layer_support_8cpp_source.html#l00156">NeonLayerSupport::IsArgMinMaxSupported()</a>.</p>
<div class="fragment"><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;{</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInput = armcomputetensorutils::BuildArmComputeTensorInfo(input);</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclOutput = armcomputetensorutils::BuildArmComputeTensorInfo(output);</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; <span class="keyword">auto</span> numDims = input.GetNumDimensions();</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; <span class="keyword">auto</span> unsignedAxis = <a class="code" href="namespacearmnn_utils.html#ac93cb1365b4bcb67df2a3164606096c5">armnnUtils::GetUnsignedAxis</a>(numDims, descriptor.m_Axis);</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; <span class="keywordtype">int</span> aclAxis = boost::numeric_cast&lt;<span class="keywordtype">int</span>&gt;(CalcAclAxis(numDims, unsignedAxis));</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; <span class="keywordflow">if</span> (descriptor.m_Function == ArgMinMaxFunction::Max)</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; {</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; <span class="keywordflow">return</span> arm_compute::NEArgMinMaxLayer::validate(&amp;aclInput, aclAxis, &amp;aclOutput,</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; arm_compute::ReductionOperation::ARG_IDX_MAX);</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; }</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; {</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; <span class="keywordflow">return</span> arm_compute::NEArgMinMaxLayer::validate(&amp;aclInput, aclAxis, &amp;aclOutput,</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; arm_compute::ReductionOperation::ARG_IDX_MIN);</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; }</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;}</div><div class="ttc" id="namespacearmnn_utils_html_ac93cb1365b4bcb67df2a3164606096c5"><div class="ttname"><a href="namespacearmnn_utils.html#ac93cb1365b4bcb67df2a3164606096c5">armnnUtils::GetUnsignedAxis</a></div><div class="ttdeci">unsigned int GetUnsignedAxis(const unsigned int inputDimension, const int axis)</div><div class="ttdef"><b>Definition:</b> <a href="_tensor_utils_8cpp_source.html#l00127">TensorUtils.cpp:127</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a3a34a305e5187f3a3c67030d3bebbdb0"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a3a34a305e5187f3a3c67030d3bebbdb0">&#9670;&nbsp;</a></span>NeonBackendId()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">constexpr const char* armnn::NeonBackendId </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_neon_backend_id_8hpp_source.html#l00010">10</a> of file <a class="el" href="_neon_backend_id_8hpp_source.html">NeonBackendId.hpp</a>.</p>
<p class="reference">Referenced by <a class="el" href="_neon_backend_8cpp_source.html#l00029">NeonBackend::GetIdStatic()</a>.</p>
<div class="fragment"><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;{ <span class="keywordflow">return</span> <span class="stringliteral">&quot;CpuAcc&quot;</span>; }</div></div><!-- fragment -->
</div>
</div>
<a id="a6c856ceba1828fe201b2b6c032d70371"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a6c856ceba1828fe201b2b6c032d70371">&#9670;&nbsp;</a></span>NeonBatchNormalizationValidate()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">arm_compute::Status NeonBatchNormalizationValidate </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>input</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>output</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>mean</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>var</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>beta</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>gamma</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="structarmnn_1_1_batch_normalization_descriptor.html">BatchNormalizationDescriptor</a> &amp;&#160;</td>
<td class="paramname"><em>descriptor</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_neon_batch_normalization_workload_8cpp_source.html#l00020">20</a> of file <a class="el" href="_neon_batch_normalization_workload_8cpp_source.html">NeonBatchNormalizationWorkload.cpp</a>.</p>
<p class="reference">Referenced by <a class="el" href="_neon_layer_support_8cpp_source.html#l00168">NeonLayerSupport::IsBatchNormalizationSupported()</a>.</p>
<div class="fragment"><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;{</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInputInfo =</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; armcomputetensorutils::BuildArmComputeTensorInfo(input, descriptor.m_DataLayout);</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclOutputInfo =</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; armcomputetensorutils::BuildArmComputeTensorInfo(output, descriptor.m_DataLayout);</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclMeanInfo =</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; armcomputetensorutils::BuildArmComputeTensorInfo(mean, descriptor.m_DataLayout);</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclVarInfo =</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; armcomputetensorutils::BuildArmComputeTensorInfo(var, descriptor.m_DataLayout);</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclBetaInfo =</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; armcomputetensorutils::BuildArmComputeTensorInfo(beta, descriptor.m_DataLayout);</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclGammaInfo =</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; armcomputetensorutils::BuildArmComputeTensorInfo(gamma, descriptor.m_DataLayout);</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; <span class="keywordflow">return</span> arm_compute::NEBatchNormalizationLayer::validate(&amp;aclInputInfo,</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; &amp;aclOutputInfo,</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; &amp;aclMeanInfo,</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; &amp;aclVarInfo,</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; &amp;aclBetaInfo,</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; &amp;aclGammaInfo,</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; descriptor.m_Eps);</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;}</div></div><!-- fragment -->
</div>
</div>
<a id="a00623eeb8f77dac6dbbc1395b5270dbb"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a00623eeb8f77dac6dbbc1395b5270dbb">&#9670;&nbsp;</a></span>NeonBatchToSpaceNdWorkloadValidate()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">arm_compute::Status NeonBatchToSpaceNdWorkloadValidate </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>input</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>output</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="structarmnn_1_1_batch_to_space_nd_descriptor.html">BatchToSpaceNdDescriptor</a> &amp;&#160;</td>
<td class="paramname"><em>desc</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_neon_batch_to_space_nd_workload_8cpp_source.html#l00016">16</a> of file <a class="el" href="_neon_batch_to_space_nd_workload_8cpp_source.html">NeonBatchToSpaceNdWorkload.cpp</a>.</p>
<p class="reference">Referenced by <a class="el" href="_neon_layer_support_8cpp_source.html#l00188">NeonLayerSupport::IsBatchToSpaceNdSupported()</a>.</p>
<div class="fragment"><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;{</div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInputInfo = BuildArmComputeTensorInfo(input, desc.m_DataLayout);</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclOutputInfo = BuildArmComputeTensorInfo(output, desc.m_DataLayout);</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160; <span class="comment">// ArmNN blockShape is [H, W] Cl asks for W, H</span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160; int32_t blockHeight = boost::numeric_cast&lt;int32_t&gt;(desc.m_BlockShape[0]);</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; int32_t blockWidth = boost::numeric_cast&lt;int32_t&gt;(desc.m_BlockShape[1]);</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; <span class="keyword">const</span> <a class="code" href="namespacearmnn.html#a67a0db04d321a74b7e7fcfd3f1a3f70b">arm_compute::Status</a> aclStatus = arm_compute::NEBatchToSpaceLayer::validate(&amp;aclInputInfo,</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; blockWidth,</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; blockHeight,</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; &amp;aclOutputInfo);</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; <span class="keywordflow">return</span> aclStatus;</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a67a0db04d321a74b7e7fcfd3f1a3f70b"><div class="ttname"><a href="namespacearmnn.html#a67a0db04d321a74b7e7fcfd3f1a3f70b">armnn::Status</a></div><div class="ttdeci">Status</div><div class="ttdef"><b>Definition:</b> <a href="_types_8hpp_source.html#l00026">Types.hpp:26</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a8a219633e750d6daffcef3b641fa11f3"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a8a219633e750d6daffcef3b641fa11f3">&#9670;&nbsp;</a></span>NeonConcatWorkloadValidate()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">arm_compute::Status NeonConcatWorkloadValidate </td>
<td>(</td>
<td class="paramtype">const std::vector&lt; const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> *&gt; &amp;&#160;</td>
<td class="paramname"><em>inputs</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>output</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="structarmnn_1_1_origins_descriptor.html">OriginsDescriptor</a> &amp;&#160;</td>
<td class="paramname"><em>descriptor</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_neon_concat_workload_8cpp_source.html#l00028">28</a> of file <a class="el" href="_neon_concat_workload_8cpp_source.html">NeonConcatWorkload.cpp</a>.</p>
<p class="reference">Referenced by <a class="el" href="_neon_layer_support_8cpp_source.html#l00218">NeonLayerSupport::IsConcatSupported()</a>.</p>
<div class="fragment"><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;{</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; std::vector&lt;arm_compute::TensorInfo&gt; aclInputs;</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> TensorInfo* input : inputs)</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; {</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; arm_compute::TensorInfo aclInputInfo = BuildArmComputeTensorInfo(*input, <a class="code" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0a6b99f356fe3b30a2a850b5ea897c289f">armnn::DataLayout::NCHW</a>);</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; aclInputs.emplace_back(aclInputInfo);</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; }</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclOutputInfo = BuildArmComputeTensorInfo(output);</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; std::vector&lt;arm_compute::ITensorInfo*&gt; aclInputPtrs;</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; <span class="keywordflow">for</span> (arm_compute::ITensorInfo&amp; input : aclInputs)</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; {</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; aclInputPtrs.emplace_back(&amp;input);</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; }</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; <span class="keywordtype">size_t</span> aclAxis = CalcAxis(descriptor);</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; <span class="keywordflow">return</span> arm_compute::NEConcatenateLayer::validate(aclInputPtrs, &amp;aclOutputInfo, aclAxis);</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_ad1d5cce2d9e9a5d61c243e5c989112e0a6b99f356fe3b30a2a850b5ea897c289f"><div class="ttname"><a href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0a6b99f356fe3b30a2a850b5ea897c289f">armnn::DataLayout::NCHW</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="af64bb043263ba7d09c98fd88da60726d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af64bb043263ba7d09c98fd88da60726d">&#9670;&nbsp;</a></span>NeonConvolution2dWorkloadValidate()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">arm_compute::Status NeonConvolution2dWorkloadValidate </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>input</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>output</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="structarmnn_1_1_convolution2d_descriptor.html">Convolution2dDescriptor</a> &amp;&#160;</td>
<td class="paramname"><em>descriptor</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>weights</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_optional.html">Optional</a>&lt; <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &gt; &amp;&#160;</td>
<td class="paramname"><em>biases</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_neon_convolution2d_workload_8cpp_source.html#l00022">22</a> of file <a class="el" href="_neon_convolution2d_workload_8cpp_source.html">NeonConvolution2dWorkload.cpp</a>.</p>
<p class="reference">Referenced by <a class="el" href="_neon_layer_support_8cpp_source.html#l00286">NeonLayerSupport::IsConvolution2dSupported()</a>.</p>
<div class="fragment"><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;{</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInputInfo = BuildArmComputeTensorInfo(input, descriptor.m_DataLayout);</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclOutputInfo = BuildArmComputeTensorInfo(output, descriptor.m_DataLayout);</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclWeightsInfo = BuildArmComputeTensorInfo(weights, descriptor.m_DataLayout);</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; <span class="keyword">const</span> arm_compute::Size2D aclDilationInfo = BuildArmComputeSize2D(descriptor.m_DilationX,</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; descriptor.m_DilationY);</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; arm_compute::TensorInfo aclBiasesInfo;</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; arm_compute::TensorInfo *optionalAclBiasesInfo = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; <span class="keywordflow">if</span> (descriptor.m_BiasEnabled)</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; {</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; BOOST_ASSERT(biases.has_value());</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; aclBiasesInfo = BuildArmComputeTensorInfo(biases.value(), descriptor.m_DataLayout);</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; optionalAclBiasesInfo = &amp;aclBiasesInfo;</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; }</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; arm_compute::PadStrideInfo layerInfo = BuildArmComputePadStrideInfo(descriptor);</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; <span class="keywordflow">return</span> arm_compute::NEConvolutionLayer::validate(&amp;aclInputInfo,</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; &amp;aclWeightsInfo,</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; optionalAclBiasesInfo,</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; &amp;aclOutputInfo,</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; layerInfo,</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; arm_compute::WeightsInfo(),</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; aclDilationInfo);</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160;}</div></div><!-- fragment -->
</div>
</div>
<a id="a116d88067bf98ce9858ab73e68f605f9"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a116d88067bf98ce9858ab73e68f605f9">&#9670;&nbsp;</a></span>NeonDepthToSpaceWorkloadValidate()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">arm_compute::Status NeonDepthToSpaceWorkloadValidate </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>input</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>output</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="namespacearmnn.html#a3647f60510bc8ddaced01c51b0ee8714">DepthToSpaceDescriptor</a> &amp;&#160;</td>
<td class="paramname"><em>descriptor</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_neon_depth_to_space_workload_8cpp_source.html#l00020">20</a> of file <a class="el" href="_neon_depth_to_space_workload_8cpp_source.html">NeonDepthToSpaceWorkload.cpp</a>.</p>
<p class="reference">References <a class="el" href="_descriptors_8hpp_source.html#l00830">SpaceToDepthDescriptor::m_DataLayout</a>.</p>
<p class="reference">Referenced by <a class="el" href="_neon_layer_support_8cpp_source.html#l00302">NeonLayerSupport::IsDepthToSpaceSupported()</a>.</p>
<div class="fragment"><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;{</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160; <a class="code" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0">DataLayout</a> dataLayout = descriptor.m_DataLayout;</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInput = BuildArmComputeTensorInfo(input, dataLayout);</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclOutput = BuildArmComputeTensorInfo(output, dataLayout);</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; int32_t blockSize = boost::numeric_cast&lt;int32_t&gt;(descriptor.m_BlockSize);</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; <span class="keywordflow">return</span> arm_compute::NEDepthToSpaceLayer::validate(&amp;aclInput, &amp;aclOutput, blockSize);</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_ad1d5cce2d9e9a5d61c243e5c989112e0"><div class="ttname"><a href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0">armnn::DataLayout</a></div><div class="ttdeci">DataLayout</div><div class="ttdef"><b>Definition:</b> <a href="_types_8hpp_source.html#l00048">Types.hpp:48</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a168ebb908e1ee4bac24cb7992510de73"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a168ebb908e1ee4bac24cb7992510de73">&#9670;&nbsp;</a></span>NeonDepthwiseConvolutionWorkloadValidate()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">arm_compute::Status NeonDepthwiseConvolutionWorkloadValidate </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>input</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>output</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="structarmnn_1_1_depthwise_convolution2d_descriptor.html">DepthwiseConvolution2dDescriptor</a> &amp;&#160;</td>
<td class="paramname"><em>descriptor</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>weights</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_optional.html">Optional</a>&lt; <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &gt; &amp;&#160;</td>
<td class="paramname"><em>biases</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_neon_depthwise_convolution_workload_8cpp_source.html#l00028">28</a> of file <a class="el" href="_neon_depthwise_convolution_workload_8cpp_source.html">NeonDepthwiseConvolutionWorkload.cpp</a>.</p>
<p class="reference">Referenced by <a class="el" href="_neon_layer_support_8cpp_source.html#l00314">NeonLayerSupport::IsDepthwiseConvolutionSupported()</a>, and <a class="el" href="_neon_layer_support_8cpp_source.html#l00340">NeonLayerSupport::IsDilatedDepthwiseConvolutionSupported()</a>.</p>
<div class="fragment"><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;{</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInputInfo = BuildArmComputeTensorInfo(input, descriptor.<a class="code" href="structarmnn_1_1_depthwise_convolution2d_descriptor.html#a6089e1ca91914015777ea780a513131a">m_DataLayout</a>);</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclOutputInfo = BuildArmComputeTensorInfo(output, descriptor.<a class="code" href="structarmnn_1_1_depthwise_convolution2d_descriptor.html#a6089e1ca91914015777ea780a513131a">m_DataLayout</a>);</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; <span class="comment">// ArmNN&#39;s weight format is [ M, I, H, W ]</span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> aclDepthMultiplier = weights.<a class="code" href="classarmnn_1_1_tensor_info.html#a8b5d0f8a24e9d9238f412260a552acf8">GetShape</a>()[0];</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; <span class="comment">// Convert the weight format from ArmNN&#39;s [ M, I, H, W ] (does NOT depend on the data layout) to either</span></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; <span class="comment">// [ 1, H, W, I * M ] (if NHWC) or [ 1, I * M, H, W ] (if NCHW), as required by the compute library</span></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; <a class="code" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> weightsPermuted = <a class="code" href="namespacearmnn.html#a1e8288eac7e909fdb58b6113d816763a">ConvertWeightTensorInfoFromArmnnToAcl</a>(weights, descriptor.<a class="code" href="structarmnn_1_1_depthwise_convolution2d_descriptor.html#a6089e1ca91914015777ea780a513131a">m_DataLayout</a>);</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <span class="comment">// Convert the weights into the compute library format</span></div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclWeightsInfo = BuildArmComputeTensorInfo(weightsPermuted, descriptor.<a class="code" href="structarmnn_1_1_depthwise_convolution2d_descriptor.html#a6089e1ca91914015777ea780a513131a">m_DataLayout</a>);</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; arm_compute::TensorInfo aclBiasesInfo;</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; arm_compute::TensorInfo *optionalAclBiasesInfo = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; <span class="keywordflow">if</span> (descriptor.<a class="code" href="structarmnn_1_1_depthwise_convolution2d_descriptor.html#aea202e14d8874cefd9a0f778022b7e25">m_BiasEnabled</a>)</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; {</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; BOOST_ASSERT(biases.<a class="code" href="classarmnn_1_1_optional_base.html#a86b749ce2c4bc627fa8a1fcfaf0e314f">has_value</a>());</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160;</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; aclBiasesInfo = BuildArmComputeTensorInfo(biases.<a class="code" href="classarmnn_1_1_optional_reference_switch.html#a77c7d528ac063d870b8c8426ec81c1c3">value</a>(), descriptor.<a class="code" href="structarmnn_1_1_depthwise_convolution2d_descriptor.html#a6089e1ca91914015777ea780a513131a">m_DataLayout</a>);</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; optionalAclBiasesInfo = &amp;aclBiasesInfo;</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; }</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160;</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; arm_compute::PadStrideInfo aclPadStrideInfo = BuildArmComputePadStrideInfo(descriptor);</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; <span class="keyword">const</span> arm_compute::Size2D aclDilationInfo = BuildArmComputeSize2D(</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; descriptor.<a class="code" href="structarmnn_1_1_depthwise_convolution2d_descriptor.html#aa3c6a77a963a98ccb8ea7b8fd008a8c1">m_DilationX</a>,descriptor.<a class="code" href="structarmnn_1_1_depthwise_convolution2d_descriptor.html#a302b688d88dd73cde0fb1faef6679907">m_DilationY</a>);</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160;</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; <span class="keywordflow">return</span> arm_compute::NEDepthwiseConvolutionLayer::validate(&amp;aclInputInfo,</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; &amp;aclWeightsInfo,</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; optionalAclBiasesInfo,</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; &amp;aclOutputInfo,</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; aclPadStrideInfo,</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; aclDepthMultiplier,</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; arm_compute::ActivationLayerInfo(),</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; aclDilationInfo);</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160;}</div><div class="ttc" id="structarmnn_1_1_depthwise_convolution2d_descriptor_html_aa3c6a77a963a98ccb8ea7b8fd008a8c1"><div class="ttname"><a href="structarmnn_1_1_depthwise_convolution2d_descriptor.html#aa3c6a77a963a98ccb8ea7b8fd008a8c1">armnn::DepthwiseConvolution2dDescriptor::m_DilationX</a></div><div class="ttdeci">uint32_t m_DilationX</div><div class="ttdoc">Dilation factor value for width dimension. </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.html#l00486">Descriptors.hpp:486</a></div></div>
<div class="ttc" id="classarmnn_1_1_tensor_info_html"><div class="ttname"><a href="classarmnn_1_1_tensor_info.html">armnn::TensorInfo</a></div><div class="ttdef"><b>Definition:</b> <a href="_tensor_8hpp_source.html#l00053">Tensor.hpp:53</a></div></div>
<div class="ttc" id="structarmnn_1_1_depthwise_convolution2d_descriptor_html_a6089e1ca91914015777ea780a513131a"><div class="ttname"><a href="structarmnn_1_1_depthwise_convolution2d_descriptor.html#a6089e1ca91914015777ea780a513131a">armnn::DepthwiseConvolution2dDescriptor::m_DataLayout</a></div><div class="ttdeci">DataLayout m_DataLayout</div><div class="ttdoc">The data layout to be used (NCHW, NHWC). </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.html#l00492">Descriptors.hpp:492</a></div></div>
<div class="ttc" id="structarmnn_1_1_depthwise_convolution2d_descriptor_html_aea202e14d8874cefd9a0f778022b7e25"><div class="ttname"><a href="structarmnn_1_1_depthwise_convolution2d_descriptor.html#aea202e14d8874cefd9a0f778022b7e25">armnn::DepthwiseConvolution2dDescriptor::m_BiasEnabled</a></div><div class="ttdeci">bool m_BiasEnabled</div><div class="ttdoc">Enable/disable bias. </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.html#l00490">Descriptors.hpp:490</a></div></div>
<div class="ttc" id="classarmnn_1_1_tensor_info_html_a8b5d0f8a24e9d9238f412260a552acf8"><div class="ttname"><a href="classarmnn_1_1_tensor_info.html#a8b5d0f8a24e9d9238f412260a552acf8">armnn::TensorInfo::GetShape</a></div><div class="ttdeci">const TensorShape &amp; GetShape() const</div><div class="ttdef"><b>Definition:</b> <a href="_tensor_8hpp_source.html#l00088">Tensor.hpp:88</a></div></div>
<div class="ttc" id="classarmnn_1_1_optional_base_html_a86b749ce2c4bc627fa8a1fcfaf0e314f"><div class="ttname"><a href="classarmnn_1_1_optional_base.html#a86b749ce2c4bc627fa8a1fcfaf0e314f">armnn::OptionalBase::has_value</a></div><div class="ttdeci">bool has_value() const noexcept</div><div class="ttdef"><b>Definition:</b> <a href="_optional_8hpp_source.html#l00053">Optional.hpp:53</a></div></div>
<div class="ttc" id="namespacearmnn_html_a1e8288eac7e909fdb58b6113d816763a"><div class="ttname"><a href="namespacearmnn.html#a1e8288eac7e909fdb58b6113d816763a">armnn::ConvertWeightTensorInfoFromArmnnToAcl</a></div><div class="ttdeci">TensorInfo ConvertWeightTensorInfoFromArmnnToAcl(const TensorInfo &amp;weightInfo, DataLayout dataLayout)</div><div class="ttdef"><b>Definition:</b> <a href="_workload_utils_8cpp_source.html#l00109">WorkloadUtils.cpp:109</a></div></div>
<div class="ttc" id="structarmnn_1_1_depthwise_convolution2d_descriptor_html_a302b688d88dd73cde0fb1faef6679907"><div class="ttname"><a href="structarmnn_1_1_depthwise_convolution2d_descriptor.html#a302b688d88dd73cde0fb1faef6679907">armnn::DepthwiseConvolution2dDescriptor::m_DilationY</a></div><div class="ttdeci">uint32_t m_DilationY</div><div class="ttdoc">Dilation factor value for height dimension. </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.html#l00488">Descriptors.hpp:488</a></div></div>
<div class="ttc" id="classarmnn_1_1_optional_reference_switch_html_a77c7d528ac063d870b8c8426ec81c1c3"><div class="ttname"><a href="classarmnn_1_1_optional_reference_switch.html#a77c7d528ac063d870b8c8426ec81c1c3">armnn::OptionalReferenceSwitch&lt; std::is_reference&lt; T &gt;::value, T &gt;::value</a></div><div class="ttdeci">const T &amp; value() const</div><div class="ttdef"><b>Definition:</b> <a href="_optional_8hpp_source.html#l00146">Optional.hpp:146</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="acefede7cc57c71ea4cfe1c888bb413e0"></a>
<h2 class="memtitle"><span class="permalink"><a href="#acefede7cc57c71ea4cfe1c888bb413e0">&#9670;&nbsp;</a></span>NeonDequantizeWorkloadValidate()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">arm_compute::Status NeonDequantizeWorkloadValidate </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>input</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>output</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_neon_dequantize_workload_8cpp_source.html#l00021">21</a> of file <a class="el" href="_neon_dequantize_workload_8cpp_source.html">NeonDequantizeWorkload.cpp</a>.</p>
<p class="reference">Referenced by <a class="el" href="_neon_layer_support_8cpp_source.html#l00330">NeonLayerSupport::IsDequantizeSupported()</a>.</p>
<div class="fragment"><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;{</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInput = BuildArmComputeTensorInfo(input);</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclOutput = BuildArmComputeTensorInfo(output);</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; <span class="keywordflow">return</span> arm_compute::NEDequantizationLayer::validate(&amp;aclInput, &amp;aclOutput);</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;}</div></div><!-- fragment -->
</div>
</div>
<a id="a304243ccb52986da06388dc57deae88f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a304243ccb52986da06388dc57deae88f">&#9670;&nbsp;</a></span>NeonDetectionPostProcessValidate()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">arm_compute::Status NeonDetectionPostProcessValidate </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>boxEncodings</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>scores</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>anchors</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>detectionBoxes</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>detectionClasses</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>detectionScores</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>numDetections</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="structarmnn_1_1_detection_post_process_descriptor.html">DetectionPostProcessDescriptor</a> &amp;&#160;</td>
<td class="paramname"><em>desc</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_neon_detection_post_process_workload_8cpp_source.html#l00033">33</a> of file <a class="el" href="_neon_detection_post_process_workload_8cpp_source.html">NeonDetectionPostProcessWorkload.cpp</a>.</p>
<p class="reference">References <a class="el" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>, and <a class="el" href="_neon_detection_post_process_workload_8cpp_source.html#l00018">MakeInfo()</a>.</p>
<div class="fragment"><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;{</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; arm_compute::DetectionPostProcessLayerInfo <a class="code" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a> = <a class="code" href="namespacearmnn.html#ae0ae21bef03ed19f252c72c660e571a4">MakeInfo</a>(desc);</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclBoxEncodings =</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; armcomputetensorutils::BuildArmComputeTensorInfo(<a class="code" href="_neon_end_to_end_tests_8cpp.html#ada422a73ac4e68bcb1b1b1f0b44028d9">boxEncodings</a>);</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclScores =</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; armcomputetensorutils::BuildArmComputeTensorInfo(<a class="code" href="_neon_end_to_end_tests_8cpp.html#a0348e6bb67ace72535bd105219bb6237">scores</a>);</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclAnchors =</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; armcomputetensorutils::BuildArmComputeTensorInfo(<a class="code" href="_neon_end_to_end_tests_8cpp.html#ac0981848e4ae57729f14f72bd4caa9f8">anchors</a>);</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160;</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; arm_compute::TensorInfo aclDetectionBoxes =</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; armcomputetensorutils::BuildArmComputeTensorInfo(detectionBoxes);</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160;</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; arm_compute::TensorInfo aclDetectionClasses =</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; armcomputetensorutils::BuildArmComputeTensorInfo(detectionClasses);</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160;</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; arm_compute::TensorInfo aclDetectionScores =</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; armcomputetensorutils::BuildArmComputeTensorInfo(detectionScores);</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160;</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; arm_compute::TensorInfo aclNumDetections =</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; armcomputetensorutils::BuildArmComputeTensorInfo(numDetections);</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160;</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; <span class="keywordflow">return</span> arm_compute::NEDetectionPostProcessLayer::validate(</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; &amp;aclBoxEncodings,</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; &amp;aclScores,</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; &amp;aclAnchors,</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; &amp;aclDetectionBoxes,</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; &amp;aclDetectionClasses,</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; &amp;aclDetectionScores,</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; &amp;aclNumDetections,</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; info);</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c"><div class="ttname"><a href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">armnn::BoostLogSeverityMapping::info</a></div></div>
<div class="ttc" id="_neon_end_to_end_tests_8cpp_html_a0348e6bb67ace72535bd105219bb6237"><div class="ttname"><a href="_neon_end_to_end_tests_8cpp.html#a0348e6bb67ace72535bd105219bb6237">scores</a></div><div class="ttdeci">std::vector&lt; float &gt; scores({ 0.0f, 0.9f, 0.8f, 0.0f, 0.75f, 0.72f, 0.0f, 0.6f, 0.5f, 0.0f, 0.93f, 0.95f, 0.0f, 0.5f, 0.4f, 0.0f, 0.3f, 0.2f })</div></div>
<div class="ttc" id="_neon_end_to_end_tests_8cpp_html_ada422a73ac4e68bcb1b1b1f0b44028d9"><div class="ttname"><a href="_neon_end_to_end_tests_8cpp.html#ada422a73ac4e68bcb1b1b1f0b44028d9">boxEncodings</a></div><div class="ttdeci">std::vector&lt; float &gt; boxEncodings({ 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, 0.0f, 0.0f, 0.0f, -1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f })</div></div>
<div class="ttc" id="_neon_end_to_end_tests_8cpp_html_ac0981848e4ae57729f14f72bd4caa9f8"><div class="ttname"><a href="_neon_end_to_end_tests_8cpp.html#ac0981848e4ae57729f14f72bd4caa9f8">anchors</a></div><div class="ttdeci">std::vector&lt; float &gt; anchors({ 0.5f, 0.5f, 1.0f, 1.0f, 0.5f, 0.5f, 1.0f, 1.0f, 0.5f, 0.5f, 1.0f, 1.0f, 0.5f, 10.5f, 1.0f, 1.0f, 0.5f, 10.5f, 1.0f, 1.0f, 0.5f, 100.5f, 1.0f, 1.0f })</div></div>
<div class="ttc" id="namespacearmnn_html_ae0ae21bef03ed19f252c72c660e571a4"><div class="ttname"><a href="namespacearmnn.html#ae0ae21bef03ed19f252c72c660e571a4">armnn::MakeInfo</a></div><div class="ttdeci">arm_compute::DetectionPostProcessLayerInfo MakeInfo(const DetectionPostProcessDescriptor &amp;desc)</div><div class="ttdef"><b>Definition:</b> <a href="_neon_detection_post_process_workload_8cpp_source.html#l00018">NeonDetectionPostProcessWorkload.cpp:18</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a3a62359fc5ebfe9628871c0ba79fb37c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a3a62359fc5ebfe9628871c0ba79fb37c">&#9670;&nbsp;</a></span>NeonDivisionWorkloadValidate()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">arm_compute::Status NeonDivisionWorkloadValidate </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>input0</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>input1</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>output</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_neon_division_workload_8cpp_source.html#l00013">13</a> of file <a class="el" href="_neon_division_workload_8cpp_source.html">NeonDivisionWorkload.cpp</a>.</p>
<p class="reference">Referenced by <a class="el" href="_neon_layer_support_8cpp_source.html#l00525">NeonLayerSupport::IsDivisionSupported()</a>.</p>
<div class="fragment"><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;{</div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInput0 = armcomputetensorutils::BuildArmComputeTensorInfo(input0);</div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInput1 = armcomputetensorutils::BuildArmComputeTensorInfo(input1);</div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclOutput = armcomputetensorutils::BuildArmComputeTensorInfo(output);</div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160; <span class="keywordflow">return</span> arm_compute::NEElementwiseDivision::validate(&amp;aclInput0,</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160; &amp;aclInput1,</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160; &amp;aclOutput);</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;}</div></div><!-- fragment -->
</div>
</div>
<a id="a0b7897a2a04016aa7fa24e2a1d10e944"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a0b7897a2a04016aa7fa24e2a1d10e944">&#9670;&nbsp;</a></span>NeonFullyConnectedWorkloadValidate()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">arm_compute::Status NeonFullyConnectedWorkloadValidate </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>input</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>output</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>weights</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>biases</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="structarmnn_1_1_fully_connected_descriptor.html">FullyConnectedDescriptor</a> &amp;&#160;</td>
<td class="paramname"><em>descriptor</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_neon_fully_connected_workload_8cpp_source.html#l00019">19</a> of file <a class="el" href="_neon_fully_connected_workload_8cpp_source.html">NeonFullyConnectedWorkload.cpp</a>.</p>
<p class="reference">Referenced by <a class="el" href="_neon_layer_support_8cpp_source.html#l00394">NeonLayerSupport::IsFullyConnectedSupported()</a>.</p>
<div class="fragment"><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;{</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInput = BuildArmComputeTensorInfo(input);</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclOutput = BuildArmComputeTensorInfo(output);</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclWeights = BuildArmComputeTensorInfo(weights);</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; arm_compute::TensorInfo aclBiases;</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; arm_compute::TensorInfo *optionalAclBiases = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; <span class="keywordflow">if</span> (descriptor.m_BiasEnabled)</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; {</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; aclBiases = BuildArmComputeTensorInfo(biases);</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; optionalAclBiases = &amp;aclBiases;</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; }</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; <span class="keyword">const</span> arm_compute::FullyConnectedLayerInfo fullyConnectedLayerInfo =</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; <a class="code" href="namespacearmnn.html#abccab9266ab13dbd806445af31ddbba7">ConvertFullyConnectedDescriptorToAclFullyConnectedLayerInfo</a>(descriptor);</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; <span class="keywordflow">return</span> arm_compute::NEFullyConnectedLayer::validate(&amp;aclInput,</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; &amp;aclWeights,</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; optionalAclBiases,</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; &amp;aclOutput,</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; fullyConnectedLayerInfo);</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_abccab9266ab13dbd806445af31ddbba7"><div class="ttname"><a href="namespacearmnn.html#abccab9266ab13dbd806445af31ddbba7">armnn::ConvertFullyConnectedDescriptorToAclFullyConnectedLayerInfo</a></div><div class="ttdeci">arm_compute::FullyConnectedLayerInfo ConvertFullyConnectedDescriptorToAclFullyConnectedLayerInfo(const FullyConnectedDescriptor &amp;fullyConnectedDesc)</div><div class="ttdef"><b>Definition:</b> <a href="_arm_compute_utils_8hpp_source.html#l00118">ArmComputeUtils.hpp:118</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="ad536149438b0481b7278ad741e18fb5a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad536149438b0481b7278ad741e18fb5a">&#9670;&nbsp;</a></span>NeonGreaterWorkloadValidate()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">arm_compute::Status NeonGreaterWorkloadValidate </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>input0</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>input1</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>output</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_neon_greater_workload_8cpp_source.html#l00013">13</a> of file <a class="el" href="_neon_greater_workload_8cpp_source.html">NeonGreaterWorkload.cpp</a>.</p>
<p class="reference">Referenced by <a class="el" href="_neon_layer_support_8cpp_source.html#l00200">NeonLayerSupport::IsComparisonSupported()</a>.</p>
<div class="fragment"><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;{</div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInput0 = armcomputetensorutils::BuildArmComputeTensorInfo(input0);</div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInput1 = armcomputetensorutils::BuildArmComputeTensorInfo(input1);</div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclOutput = armcomputetensorutils::BuildArmComputeTensorInfo(output);</div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160; <span class="keywordflow">return</span> arm_compute::NEGreater::validate(&amp;aclInput0,</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160; &amp;aclInput1,</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160; &amp;aclOutput);</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;}</div></div><!-- fragment -->
</div>
</div>
<a id="aea722abe239545030f4c6fe4e083816f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aea722abe239545030f4c6fe4e083816f">&#9670;&nbsp;</a></span>NeonInstanceNormalizationWorkloadValidate()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">arm_compute::Status NeonInstanceNormalizationWorkloadValidate </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>input</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>output</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="structarmnn_1_1_instance_normalization_descriptor.html">InstanceNormalizationDescriptor</a> &amp;&#160;</td>
<td class="paramname"><em>descriptor</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_neon_instance_normalization_workload_8cpp_source.html#l00019">19</a> of file <a class="el" href="_neon_instance_normalization_workload_8cpp_source.html">NeonInstanceNormalizationWorkload.cpp</a>.</p>
<p class="reference">Referenced by <a class="el" href="_neon_layer_support_8cpp_source.html#l00425">NeonLayerSupport::IsInstanceNormalizationSupported()</a>.</p>
<div class="fragment"><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;{</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInputInfo = BuildArmComputeTensorInfo(input, descriptor.m_DataLayout);</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclOutputInfo = BuildArmComputeTensorInfo(output, descriptor.m_DataLayout);</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; <span class="keywordflow">return</span> arm_compute::NEInstanceNormalizationLayer::validate(&amp;aclInputInfo,</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; &amp;aclOutputInfo,</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; descriptor.m_Gamma,</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; descriptor.m_Beta,</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; descriptor.m_Eps);</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;}</div></div><!-- fragment -->
</div>
</div>
<a id="ae838df3960d2b5d18d73ed2a07aee917"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae838df3960d2b5d18d73ed2a07aee917">&#9670;&nbsp;</a></span>NeonL2NormalizationWorkloadValidate()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">arm_compute::Status NeonL2NormalizationWorkloadValidate </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>input</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>output</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="structarmnn_1_1_l2_normalization_descriptor.html">L2NormalizationDescriptor</a> &amp;&#160;</td>
<td class="paramname"><em>descriptor</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_neon_l2_normalization_float_workload_8cpp_source.html#l00018">18</a> of file <a class="el" href="_neon_l2_normalization_float_workload_8cpp_source.html">NeonL2NormalizationFloatWorkload.cpp</a>.</p>
<p class="reference">Referenced by <a class="el" href="_neon_layer_support_8cpp_source.html#l00437">NeonLayerSupport::IsL2NormalizationSupported()</a>.</p>
<div class="fragment"><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;{</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInput = BuildArmComputeTensorInfo(input, descriptor.m_DataLayout);</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclOutput = BuildArmComputeTensorInfo(output, descriptor.m_DataLayout);</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; <span class="keywordtype">int</span> axis = (descriptor.m_DataLayout == DataLayout::NCHW) ? 2 : 0;</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; <span class="keywordflow">return</span> arm_compute::NEL2NormalizeLayer::validate(&amp;aclInput, &amp;aclOutput, axis, descriptor.m_Eps);</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;}</div></div><!-- fragment -->
</div>
</div>
<a id="a9e06cc2a2ac8b88fc72972695a17910f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a9e06cc2a2ac8b88fc72972695a17910f">&#9670;&nbsp;</a></span>NeonLstmFloatWorkloadValidate()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">arm_compute::Status NeonLstmFloatWorkloadValidate </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>input</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>outputStateIn</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>cellStateIn</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>scratchBuffer</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>outputStateOut</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>cellStateOut</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>output</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="structarmnn_1_1_lstm_descriptor.html">LstmDescriptor</a> &amp;&#160;</td>
<td class="paramname"><em>descriptor</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="structarmnn_1_1_lstm_input_params_info.html">LstmInputParamsInfo</a> &amp;&#160;</td>
<td class="paramname"><em>paramsInfo</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_neon_lstm_float_workload_8cpp_source.html#l00271">271</a> of file <a class="el" href="_neon_lstm_float_workload_8cpp_source.html">NeonLstmFloatWorkload.cpp</a>.</p>
<p class="reference">Referenced by <a class="el" href="_neon_layer_support_8cpp_source.html#l00445">NeonLayerSupport::IsLstmSupported()</a>.</p>
<div class="fragment"><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160;{</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160; arm_compute::LSTMParams&lt;arm_compute::ITensorInfo&gt; lstm_params_info;</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160;</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160; <span class="comment">// The inputs and outputs</span></div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInputInfo = BuildArmComputeTensorInfo(input);</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclOutputStateInInfo = BuildArmComputeTensorInfo(outputStateIn);</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclCellStateInInfo = BuildArmComputeTensorInfo(cellStateIn);</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclScratchBufferInfo = BuildArmComputeTensorInfo(scratchBuffer);</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclOutputStateOutInfo = BuildArmComputeTensorInfo(outputStateOut);</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclCellStateOutInfo = BuildArmComputeTensorInfo(cellStateOut);</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclOutputInfo = BuildArmComputeTensorInfo(output);</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160;</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160; <span class="comment">// Basic parameters</span></div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInputToForgetWeightsInfo</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160; = BuildArmComputeTensorInfo(paramsInfo.GetInputToForgetWeights());</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInputToCellWeightsInfo</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160; = BuildArmComputeTensorInfo(paramsInfo.GetInputToCellWeights());</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInputToOutputWeightsInfo</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160; = BuildArmComputeTensorInfo(paramsInfo.GetInputToOutputWeights());</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclRecurrentToForgetWeightsInfo</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160; = BuildArmComputeTensorInfo(paramsInfo.GetRecurrentToForgetWeights());</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclRecurrentToCellWeightsInfo</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160; = BuildArmComputeTensorInfo(paramsInfo.GetRecurrentToCellWeights());</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclRecurrentToOutputWeightsInfo</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160; = BuildArmComputeTensorInfo(paramsInfo.GetRecurrentToOutputWeights());</div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclForgetGateBiasInfo</div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160; = BuildArmComputeTensorInfo(paramsInfo.GetForgetGateBias());</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclCellBiasInfo</div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160; = BuildArmComputeTensorInfo(paramsInfo.GetCellBias());</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclOutputGateBiasInfo</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160; = BuildArmComputeTensorInfo(paramsInfo.GetOutputGateBias());</div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160;</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160; arm_compute::TensorInfo aclInputToInputWeightsInfo;</div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160; arm_compute::TensorInfo aclRecurrentToInputWeightsInfo;</div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160; arm_compute::TensorInfo aclCellToInputWeightsInfo;</div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>&#160; arm_compute::TensorInfo aclInputGateBiasInfo;</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160; arm_compute::TensorInfo aclProjectionWeightsInfo;</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>&#160; arm_compute::TensorInfo aclProjectionBiasInfo;</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160; arm_compute::TensorInfo aclCellToForgetWeightsInfo;</div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160; arm_compute::TensorInfo aclCellToOutputWeightsInfo;</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160;</div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span>&#160; arm_compute::TensorInfo aclInputLayerNormWeightsInfo;</div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>&#160; arm_compute::TensorInfo aclForgetLayerNormWeightsInfo;</div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160; arm_compute::TensorInfo aclCellLayerNormWeightsInfo;</div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>&#160; arm_compute::TensorInfo aclOutputLayerNormWeightsInfo;</div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span>&#160;</div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span>&#160;</div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span>&#160; <span class="keywordflow">if</span> (!descriptor.m_CifgEnabled)</div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span>&#160; {</div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span>&#160; <span class="keywordflow">if</span> (descriptor.m_PeepholeEnabled)</div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span>&#160; {</div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span>&#160; aclCellToInputWeightsInfo = BuildArmComputeTensorInfo(paramsInfo.GetCellToInputWeights());</div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span>&#160; }</div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span>&#160; aclInputToInputWeightsInfo = BuildArmComputeTensorInfo(paramsInfo.GetInputToInputWeights());</div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span>&#160; aclRecurrentToInputWeightsInfo = BuildArmComputeTensorInfo(paramsInfo.GetRecurrentToInputWeights());</div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span>&#160; aclInputGateBiasInfo = BuildArmComputeTensorInfo(paramsInfo.GetInputGateBias());</div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span>&#160;</div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>&#160; lstm_params_info.set_cifg_params(&amp;aclInputToInputWeightsInfo, &amp;aclRecurrentToInputWeightsInfo,</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>&#160; descriptor.m_PeepholeEnabled ? &amp;aclCellToInputWeightsInfo : <span class="keyword">nullptr</span>,</div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>&#160; &amp;aclInputGateBiasInfo);</div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>&#160; }</div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span>&#160;</div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span>&#160; <span class="keywordflow">if</span> (descriptor.m_ProjectionEnabled)</div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span>&#160; {</div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span>&#160; <span class="keywordflow">if</span> (paramsInfo.m_ProjectionBias != <span class="keyword">nullptr</span>)</div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span>&#160; {</div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span>&#160; aclProjectionBiasInfo = BuildArmComputeTensorInfo(paramsInfo.GetProjectionBias());</div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span>&#160; }</div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span>&#160; aclProjectionWeightsInfo = BuildArmComputeTensorInfo(paramsInfo.GetProjectionWeights());</div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span>&#160;</div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span>&#160; lstm_params_info.set_projection_params(&amp;aclProjectionWeightsInfo,</div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span>&#160; paramsInfo.m_ProjectionBias != <span class="keyword">nullptr</span> ?</div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>&#160; &amp;aclProjectionBiasInfo : <span class="keyword">nullptr</span>);</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160; }</div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span>&#160;</div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span>&#160; <span class="keywordflow">if</span> (descriptor.m_PeepholeEnabled)</div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span>&#160; {</div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span>&#160; aclCellToForgetWeightsInfo = BuildArmComputeTensorInfo(paramsInfo.GetCellToForgetWeights());</div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span>&#160; aclCellToOutputWeightsInfo = BuildArmComputeTensorInfo(paramsInfo.GetCellToOutputWeights());</div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span>&#160;</div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span>&#160; lstm_params_info.set_peephole_params(&amp;aclCellToForgetWeightsInfo, &amp;aclCellToOutputWeightsInfo);</div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span>&#160; }</div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span>&#160;</div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span>&#160; <span class="keywordflow">if</span> (descriptor.m_LayerNormEnabled)</div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span>&#160; {</div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span>&#160; <span class="keywordflow">if</span> (!descriptor.m_CifgEnabled)</div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span>&#160; {</div><div class="line"><a name="l00367"></a><span class="lineno"> 367</span>&#160; aclInputLayerNormWeightsInfo = BuildArmComputeTensorInfo(paramsInfo.GetInputLayerNormWeights());</div><div class="line"><a name="l00368"></a><span class="lineno"> 368</span>&#160; }</div><div class="line"><a name="l00369"></a><span class="lineno"> 369</span>&#160; aclForgetLayerNormWeightsInfo = BuildArmComputeTensorInfo(paramsInfo.GetForgetLayerNormWeights());</div><div class="line"><a name="l00370"></a><span class="lineno"> 370</span>&#160; aclCellLayerNormWeightsInfo = BuildArmComputeTensorInfo(paramsInfo.GetCellLayerNormWeights());</div><div class="line"><a name="l00371"></a><span class="lineno"> 371</span>&#160; aclOutputLayerNormWeightsInfo = BuildArmComputeTensorInfo(paramsInfo.GetOutputLayerNormWeights());</div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span>&#160;</div><div class="line"><a name="l00373"></a><span class="lineno"> 373</span>&#160; lstm_params_info.set_layer_normalization_params(descriptor.m_CifgEnabled ?</div><div class="line"><a name="l00374"></a><span class="lineno"> 374</span>&#160; <span class="keyword">nullptr</span> : &amp;aclInputLayerNormWeightsInfo,</div><div class="line"><a name="l00375"></a><span class="lineno"> 375</span>&#160; &amp;aclForgetLayerNormWeightsInfo,</div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span>&#160; &amp;aclCellLayerNormWeightsInfo,</div><div class="line"><a name="l00377"></a><span class="lineno"> 377</span>&#160; &amp;aclOutputLayerNormWeightsInfo);</div><div class="line"><a name="l00378"></a><span class="lineno"> 378</span>&#160; }</div><div class="line"><a name="l00379"></a><span class="lineno"> 379</span>&#160;</div><div class="line"><a name="l00380"></a><span class="lineno"> 380</span>&#160; <span class="keywordtype">float</span> cell_threshold = descriptor.m_ClippingThresCell;</div><div class="line"><a name="l00381"></a><span class="lineno"> 381</span>&#160; <span class="keywordtype">float</span> projection_threshold = descriptor.m_ClippingThresProj;</div><div class="line"><a name="l00382"></a><span class="lineno"> 382</span>&#160;</div><div class="line"><a name="l00383"></a><span class="lineno"> 383</span>&#160; <span class="comment">// for preparing the object for the class ActivationLayerInfo, we need to consider 5 situations</span></div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span>&#160; arm_compute::ActivationLayerInfo activationLayerInfo;</div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span>&#160; <span class="keywordflow">switch</span> (descriptor.m_ActivationFunc)</div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span>&#160; {</div><div class="line"><a name="l00387"></a><span class="lineno"> 387</span>&#160; <span class="keywordflow">case</span> 0:</div><div class="line"><a name="l00388"></a><span class="lineno"> 388</span>&#160; <span class="comment">// no activation, do nothing</span></div><div class="line"><a name="l00389"></a><span class="lineno"> 389</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span>&#160; <span class="keywordflow">case</span> 1:</div><div class="line"><a name="l00391"></a><span class="lineno"> 391</span>&#160; activationLayerInfo = arm_compute::ActivationLayerInfo(</div><div class="line"><a name="l00392"></a><span class="lineno"> 392</span>&#160; arm_compute::ActivationLayerInfo::ActivationFunction::RELU);</div><div class="line"><a name="l00393"></a><span class="lineno"> 393</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00394"></a><span class="lineno"> 394</span>&#160; <span class="keywordflow">case</span> 3:</div><div class="line"><a name="l00395"></a><span class="lineno"> 395</span>&#160; activationLayerInfo = arm_compute::ActivationLayerInfo(</div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span>&#160; arm_compute::ActivationLayerInfo::ActivationFunction::BOUNDED_RELU, 6.0);</div><div class="line"><a name="l00397"></a><span class="lineno"> 397</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00398"></a><span class="lineno"> 398</span>&#160; <span class="keywordflow">case</span> 4:</div><div class="line"><a name="l00399"></a><span class="lineno"> 399</span>&#160; activationLayerInfo = arm_compute::ActivationLayerInfo(</div><div class="line"><a name="l00400"></a><span class="lineno"> 400</span>&#160; arm_compute::ActivationLayerInfo::ActivationFunction::TANH, 1.0, 1.0);</div><div class="line"><a name="l00401"></a><span class="lineno"> 401</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00402"></a><span class="lineno"> 402</span>&#160; <span class="keywordflow">case</span> 6:</div><div class="line"><a name="l00403"></a><span class="lineno"> 403</span>&#160; activationLayerInfo = arm_compute::ActivationLayerInfo(</div><div class="line"><a name="l00404"></a><span class="lineno"> 404</span>&#160; arm_compute::ActivationLayerInfo::ActivationFunction::LOGISTIC);</div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00406"></a><span class="lineno"> 406</span>&#160; <span class="keywordflow">default</span>:</div><div class="line"><a name="l00407"></a><span class="lineno"> 407</span>&#160; <span class="keywordflow">throw</span> <a class="code" href="classarmnn_1_1_exception.html">armnn::Exception</a>(<span class="stringliteral">&quot;Wrong Type of Activation Function!&quot;</span>);</div><div class="line"><a name="l00408"></a><span class="lineno"> 408</span>&#160; }</div><div class="line"><a name="l00409"></a><span class="lineno"> 409</span>&#160;</div><div class="line"><a name="l00410"></a><span class="lineno"> 410</span>&#160; <span class="keywordflow">return</span> arm_compute::NELSTMLayer::validate(&amp;aclInputInfo,</div><div class="line"><a name="l00411"></a><span class="lineno"> 411</span>&#160; &amp;aclInputToForgetWeightsInfo,</div><div class="line"><a name="l00412"></a><span class="lineno"> 412</span>&#160; &amp;aclInputToCellWeightsInfo,</div><div class="line"><a name="l00413"></a><span class="lineno"> 413</span>&#160; &amp;aclInputToOutputWeightsInfo,</div><div class="line"><a name="l00414"></a><span class="lineno"> 414</span>&#160; &amp;aclRecurrentToForgetWeightsInfo,</div><div class="line"><a name="l00415"></a><span class="lineno"> 415</span>&#160; &amp;aclRecurrentToCellWeightsInfo,</div><div class="line"><a name="l00416"></a><span class="lineno"> 416</span>&#160; &amp;aclRecurrentToOutputWeightsInfo,</div><div class="line"><a name="l00417"></a><span class="lineno"> 417</span>&#160; &amp;aclForgetGateBiasInfo,</div><div class="line"><a name="l00418"></a><span class="lineno"> 418</span>&#160; &amp;aclCellBiasInfo,</div><div class="line"><a name="l00419"></a><span class="lineno"> 419</span>&#160; &amp;aclOutputGateBiasInfo,</div><div class="line"><a name="l00420"></a><span class="lineno"> 420</span>&#160; &amp;aclOutputStateInInfo,</div><div class="line"><a name="l00421"></a><span class="lineno"> 421</span>&#160; &amp;aclCellStateInInfo,</div><div class="line"><a name="l00422"></a><span class="lineno"> 422</span>&#160; &amp;aclScratchBufferInfo,</div><div class="line"><a name="l00423"></a><span class="lineno"> 423</span>&#160; &amp;aclOutputStateOutInfo,</div><div class="line"><a name="l00424"></a><span class="lineno"> 424</span>&#160; &amp;aclCellStateOutInfo,</div><div class="line"><a name="l00425"></a><span class="lineno"> 425</span>&#160; &amp;aclOutputInfo,</div><div class="line"><a name="l00426"></a><span class="lineno"> 426</span>&#160; lstm_params_info,</div><div class="line"><a name="l00427"></a><span class="lineno"> 427</span>&#160; activationLayerInfo,</div><div class="line"><a name="l00428"></a><span class="lineno"> 428</span>&#160; cell_threshold,</div><div class="line"><a name="l00429"></a><span class="lineno"> 429</span>&#160; projection_threshold);</div><div class="line"><a name="l00430"></a><span class="lineno"> 430</span>&#160;}</div><div class="ttc" id="classarmnn_1_1_exception_html"><div class="ttname"><a href="classarmnn_1_1_exception.html">armnn::Exception</a></div><div class="ttdoc">Base class for all ArmNN exceptions so that users can filter to just those. </div><div class="ttdef"><b>Definition:</b> <a href="_exceptions_8hpp_source.html#l00046">Exceptions.hpp:46</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a8d2ea79addd8ef64be2ca0dad3408f00"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a8d2ea79addd8ef64be2ca0dad3408f00">&#9670;&nbsp;</a></span>NeonMaximumWorkloadValidate()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">arm_compute::Status NeonMaximumWorkloadValidate </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>input0</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>input1</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>output</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_neon_maximum_workload_8cpp_source.html#l00013">13</a> of file <a class="el" href="_neon_maximum_workload_8cpp_source.html">NeonMaximumWorkload.cpp</a>.</p>
<p class="reference">Referenced by <a class="el" href="_neon_layer_support_8cpp_source.html#l00469">NeonLayerSupport::IsMaximumSupported()</a>.</p>
<div class="fragment"><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;{</div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInput0 = armcomputetensorutils::BuildArmComputeTensorInfo(input0);</div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInput1 = armcomputetensorutils::BuildArmComputeTensorInfo(input1);</div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclOutput = armcomputetensorutils::BuildArmComputeTensorInfo(output);</div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160; <span class="keywordflow">return</span> arm_compute::NEElementwiseMax::validate(&amp;aclInput0,</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160; &amp;aclInput1,</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160; &amp;aclOutput);</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;}</div></div><!-- fragment -->
</div>
</div>
<a id="ab81dd6d40850f8fea025ee7ce51f86d0"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab81dd6d40850f8fea025ee7ce51f86d0">&#9670;&nbsp;</a></span>NeonMeanWorkloadValidate()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">arm_compute::Status NeonMeanWorkloadValidate </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>input</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>output</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="structarmnn_1_1_mean_descriptor.html">MeanDescriptor</a> &amp;&#160;</td>
<td class="paramname"><em>desc</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_neon_mean_workload_8cpp_source.html#l00018">18</a> of file <a class="el" href="_neon_mean_workload_8cpp_source.html">NeonMeanWorkload.cpp</a>.</p>
<p class="reference">Referenced by <a class="el" href="_neon_layer_support_8cpp_source.html#l00481">NeonLayerSupport::IsMeanSupported()</a>.</p>
<div class="fragment"><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;{</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInputInfo = armcomputetensorutils::BuildArmComputeTensorInfo(input);</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclOutputInfo = armcomputetensorutils::BuildArmComputeTensorInfo(output);</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; <a class="code" href="namespacearmnn.html#ac6e86c1def7f674d3c4cb7f577874aa6">arm_compute::Coordinates</a> coords = BuildArmComputeReductionCoordinates(aclInputInfo.num_dimensions(),</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; input.GetNumDimensions(),</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; desc.m_Axis);</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; <span class="keywordflow">return</span> arm_compute::NEReduceMean::validate(&amp;aclInputInfo, coords, desc.m_KeepDims, &amp;aclOutputInfo);</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_ac6e86c1def7f674d3c4cb7f577874aa6"><div class="ttname"><a href="namespacearmnn.html#ac6e86c1def7f674d3c4cb7f577874aa6">armnn::Coordinates</a></div><div class="ttdeci">std::array&lt; unsigned int, MaxNumOfTensorDimensions &gt; Coordinates</div><div class="ttdef"><b>Definition:</b> <a href="_internal_types_8hpp_source.html#l00079">InternalTypes.hpp:79</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="ab81159ebfa638af1b91fe1e8c5de1955"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab81159ebfa638af1b91fe1e8c5de1955">&#9670;&nbsp;</a></span>NeonMinimumWorkloadValidate()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">arm_compute::Status NeonMinimumWorkloadValidate </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>input0</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>input1</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>output</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Validate function for validating the inputs and output. </p><dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">input0</td><td>The input0 value to be validated. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">input1</td><td>The input1 value to be validated. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">output</td><td>The output value to be validated. </td></tr>
</table>
</dd>
</dl>
<p class="definition">Definition at line <a class="el" href="_neon_minimum_workload_8cpp_source.html#l00013">13</a> of file <a class="el" href="_neon_minimum_workload_8cpp_source.html">NeonMinimumWorkload.cpp</a>.</p>
<p class="reference">Referenced by <a class="el" href="_neon_layer_support_8cpp_source.html#l00501">NeonLayerSupport::IsMinimumSupported()</a>.</p>
<div class="fragment"><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;{</div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInput0 = armcomputetensorutils::BuildArmComputeTensorInfo(input0);</div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInput1 = armcomputetensorutils::BuildArmComputeTensorInfo(input1);</div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclOutput = armcomputetensorutils::BuildArmComputeTensorInfo(output);</div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160; <span class="keywordflow">return</span> arm_compute::NEElementwiseMin::validate(&amp;aclInput0,</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160; &amp;aclInput1,</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160; &amp;aclOutput);</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;}</div></div><!-- fragment -->
</div>
</div>
<a id="a38bdbed2a1e28ab15cac0cc0f42c3fa6"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a38bdbed2a1e28ab15cac0cc0f42c3fa6">&#9670;&nbsp;</a></span>NeonMultiplicationWorkloadValidate()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">arm_compute::Status NeonMultiplicationWorkloadValidate </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>input0</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>input1</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>output</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_neon_multiplication_workload_8cpp_source.html#l00015">15</a> of file <a class="el" href="_neon_multiplication_workload_8cpp_source.html">NeonMultiplicationWorkload.cpp</a>.</p>
<p class="reference">Referenced by <a class="el" href="_neon_layer_support_8cpp_source.html#l00513">NeonLayerSupport::IsMultiplicationSupported()</a>.</p>
<div class="fragment"><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;{</div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInput1 = armcomputetensorutils::BuildArmComputeTensorInfo(input0);</div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInput2 = armcomputetensorutils::BuildArmComputeTensorInfo(input1);</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclOutput = armcomputetensorutils::BuildArmComputeTensorInfo(output);</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160; <span class="comment">// At the time of writing, configure() will fail if a rounding policy other than TO_ZERO is supplied to it,</span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160; <span class="comment">// when providing a scale of 1.0 for F32 tensors, even though the provided rounding policy appears to be</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; <span class="comment">// ignored for F32 tensors.</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; <span class="keywordflow">return</span> arm_compute::NEPixelWiseMultiplication::validate(&amp;aclInput1,</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; &amp;aclInput2,</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; &amp;aclOutput,</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; 1.0f,</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; arm_compute::ConvertPolicy::SATURATE,</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; arm_compute::RoundingPolicy::TO_ZERO);</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;}</div></div><!-- fragment -->
</div>
</div>
<a id="a2ec6297db90d1d4c258c13d2d72b13d9"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a2ec6297db90d1d4c258c13d2d72b13d9">&#9670;&nbsp;</a></span>NeonNormalizationWorkloadValidate()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">arm_compute::Status NeonNormalizationWorkloadValidate </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>input</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>output</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="structarmnn_1_1_normalization_descriptor.html">NormalizationDescriptor</a> &amp;&#160;</td>
<td class="paramname"><em>descriptor</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_neon_normalization_float_workload_8cpp_source.html#l00047">47</a> of file <a class="el" href="_neon_normalization_float_workload_8cpp_source.html">NeonNormalizationFloatWorkload.cpp</a>.</p>
<p class="reference">Referenced by <a class="el" href="_neon_layer_support_8cpp_source.html#l00537">NeonLayerSupport::IsNormalizationSupported()</a>.</p>
<div class="fragment"><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;{</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInput = BuildArmComputeTensorInfo(input, descriptor.m_DataLayout);</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclOutput = BuildArmComputeTensorInfo(output, descriptor.m_DataLayout);</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160;</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; arm_compute::NormalizationLayerInfo normalizationInfo = BuildArmComputeNormalizationLayerInfo(descriptor);</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160;</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; <span class="keywordflow">return</span> arm_compute::NENormalizationLayer::validate(&amp;aclInput, &amp;aclOutput, normalizationInfo);</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160;}</div></div><!-- fragment -->
</div>
</div>
<a id="a39209c0c078e83227222eb885317c2c5"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a39209c0c078e83227222eb885317c2c5">&#9670;&nbsp;</a></span>NeonPadWorkloadValidate()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">arm_compute::Status NeonPadWorkloadValidate </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>input</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>output</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="structarmnn_1_1_pad_descriptor.html">PadDescriptor</a> &amp;&#160;</td>
<td class="paramname"><em>descriptor</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_neon_pad_workload_8cpp_source.html#l00048">48</a> of file <a class="el" href="_neon_pad_workload_8cpp_source.html">NeonPadWorkload.cpp</a>.</p>
<p class="reference">Referenced by <a class="el" href="_neon_layer_support_8cpp_source.html#l00555">NeonLayerSupport::IsPadSupported()</a>.</p>
<div class="fragment"><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160;{</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInputInfo = BuildArmComputeTensorInfo(input);</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclOutputInfo = BuildArmComputeTensorInfo(output);</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; std::vector&lt;std::pair&lt;unsigned int, unsigned int&gt;&gt; reversed_PadList(descriptor.m_PadList.size());</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160;</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; std::reverse_copy(std::begin(descriptor.m_PadList),</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; std::end(descriptor.m_PadList),</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; std::begin(reversed_PadList));</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160;</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; arm_compute::PaddingList padList = <span class="keyword">static_cast&lt;</span>arm_compute::PaddingList<span class="keyword">&gt;</span>(reversed_PadList);</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160;</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; <span class="keywordflow">return</span> arm_compute::NEPadLayer::validate(&amp;aclInputInfo, &amp;aclOutputInfo, padList);</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160;}</div></div><!-- fragment -->
</div>
</div>
<a id="a70650f6b1d3b8511fcdb989ca769cdbb"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a70650f6b1d3b8511fcdb989ca769cdbb">&#9670;&nbsp;</a></span>NeonPermuteWorkloadValidate()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">arm_compute::Status NeonPermuteWorkloadValidate </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>input</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>output</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="structarmnn_1_1_permute_descriptor.html">PermuteDescriptor</a> &amp;&#160;</td>
<td class="paramname"><em>descriptor</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_neon_permute_workload_8cpp_source.html#l00015">15</a> of file <a class="el" href="_neon_permute_workload_8cpp_source.html">NeonPermuteWorkload.cpp</a>.</p>
<p class="reference">Referenced by <a class="el" href="_neon_layer_support_8cpp_source.html#l00567">NeonLayerSupport::IsPermuteSupported()</a>.</p>
<div class="fragment"><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;{</div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInputInfo = armcomputetensorutils::BuildArmComputeTensorInfo(input);</div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclOutputInfo = armcomputetensorutils::BuildArmComputeTensorInfo(output);</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160; <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_permutation_vector.html">armnn::PermutationVector</a>&amp; mappings = descriptor.m_DimMappings;</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160; <span class="keywordflow">return</span> arm_compute::NEPermute::validate(&amp;aclInputInfo, &amp;aclOutputInfo,</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160; armcomputetensorutils::BuildArmComputePermutationVector(mappings));</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;}</div><div class="ttc" id="classarmnn_1_1_permutation_vector_html"><div class="ttname"><a href="classarmnn_1_1_permutation_vector.html">armnn::PermutationVector</a></div><div class="ttdef"><b>Definition:</b> <a href="_types_8hpp_source.html#l00170">Types.hpp:170</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a1f07655db8ad7f2738bb0d3d9e2316cc"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a1f07655db8ad7f2738bb0d3d9e2316cc">&#9670;&nbsp;</a></span>NeonPooling2dWorkloadValidate()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">arm_compute::Status NeonPooling2dWorkloadValidate </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>input</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>output</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="structarmnn_1_1_pooling2d_descriptor.html">Pooling2dDescriptor</a> &amp;&#160;</td>
<td class="paramname"><em>descriptor</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_neon_pooling2d_workload_8cpp_source.html#l00020">20</a> of file <a class="el" href="_neon_pooling2d_workload_8cpp_source.html">NeonPooling2dWorkload.cpp</a>.</p>
<p class="reference">Referenced by <a class="el" href="_neon_layer_support_8cpp_source.html#l00575">NeonLayerSupport::IsPooling2dSupported()</a>.</p>
<div class="fragment"><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;{</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInputInfo =</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; BuildArmComputeTensorInfo(input, descriptor.m_DataLayout);</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclOutputInfo =</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; BuildArmComputeTensorInfo(output, descriptor.m_DataLayout);</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; arm_compute::PoolingLayerInfo layerInfo = BuildArmComputePoolingLayerInfo(descriptor);</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; <span class="keywordflow">return</span> arm_compute::NEPoolingLayer::validate(&amp;aclInputInfo, &amp;aclOutputInfo, layerInfo);</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;}</div></div><!-- fragment -->
</div>
</div>
<a id="a188adc104b16db3dc23ed2c5ff06cbb8"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a188adc104b16db3dc23ed2c5ff06cbb8">&#9670;&nbsp;</a></span>NeonPreluWorkloadValidate()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">arm_compute::Status NeonPreluWorkloadValidate </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>input</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>alpha</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>output</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_neon_prelu_workload_8cpp_source.html#l00015">15</a> of file <a class="el" href="_neon_prelu_workload_8cpp_source.html">NeonPreluWorkload.cpp</a>.</p>
<p class="reference">Referenced by <a class="el" href="_neon_layer_support_8cpp_source.html#l00583">NeonLayerSupport::IsPreluSupported()</a>.</p>
<div class="fragment"><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;{</div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInput = armcomputetensorutils::BuildArmComputeTensorInfo(input);</div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclAlpha = armcomputetensorutils::BuildArmComputeTensorInfo(alpha);</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclOutput = armcomputetensorutils::BuildArmComputeTensorInfo(output);</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160; <span class="keywordflow">return</span> arm_compute::NEPReluLayer::validate(&amp;aclInput,</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160; &amp;aclAlpha,</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; &amp;aclOutput);</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;}</div></div><!-- fragment -->
</div>
</div>
<a id="ae83632e641892ad2de78f316376f6bd0"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae83632e641892ad2de78f316376f6bd0">&#9670;&nbsp;</a></span>NeonQuantizedLstmWorkloadValidate()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">arm_compute::Status NeonQuantizedLstmWorkloadValidate </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>input</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>cellStateIn</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>outputStateIn</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>cellStateOut</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>outputStateOut</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="structarmnn_1_1_quantized_lstm_input_params_info.html">QuantizedLstmInputParamsInfo</a> &amp;&#160;</td>
<td class="paramname"><em>paramsInfo</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_neon_quantized_lstm_workload_8cpp_source.html#l00130">130</a> of file <a class="el" href="_neon_quantized_lstm_workload_8cpp_source.html">NeonQuantizedLstmWorkload.cpp</a>.</p>
<p class="reference">Referenced by <a class="el" href="_neon_layer_support_8cpp_source.html#l00601">NeonLayerSupport::IsQuantizedLstmSupported()</a>.</p>
<div class="fragment"><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160;{</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; <span class="comment">// The inputs and outputs</span></div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInputInfo = BuildArmComputeTensorInfo(input);</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclCellStateInInfo = BuildArmComputeTensorInfo(cellStateIn);</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclOutputStateInInfo = BuildArmComputeTensorInfo(outputStateIn);</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclCellStateOutInfo = BuildArmComputeTensorInfo(cellStateOut);</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclOutputStateOutInfo = BuildArmComputeTensorInfo(outputStateOut);</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160;</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; <span class="comment">// Basic parameters</span></div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInputToInputWeightsInfo</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; = BuildArmComputeTensorInfo(paramsInfo.GetInputToInputWeights());</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInputToForgetWeightsInfo</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; = BuildArmComputeTensorInfo(paramsInfo.GetInputToForgetWeights());</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInputToCellWeightsInfo</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; = BuildArmComputeTensorInfo(paramsInfo.GetInputToCellWeights());</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInputToOutputWeightsInfo</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; = BuildArmComputeTensorInfo(paramsInfo.GetInputToOutputWeights());</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160;</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclRecurrentToInputWeightsInfo</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; = BuildArmComputeTensorInfo(paramsInfo.GetRecurrentToInputWeights());</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclRecurrentToForgetWeightsInfo</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; = BuildArmComputeTensorInfo(paramsInfo.GetRecurrentToForgetWeights());</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclRecurrentToCellWeightsInfo</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; = BuildArmComputeTensorInfo(paramsInfo.GetRecurrentToCellWeights());</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclRecurrentToOutputWeightsInfo</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; = BuildArmComputeTensorInfo(paramsInfo.GetRecurrentToOutputWeights());</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160;</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInputGateBiasInfo</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; = BuildArmComputeTensorInfo(paramsInfo.GetInputGateBias());</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclForgetGateBiasInfo</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160; = BuildArmComputeTensorInfo(paramsInfo.GetForgetGateBias());</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclCellBiasInfo</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160; = BuildArmComputeTensorInfo(paramsInfo.GetCellBias());</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclOutputGateBiasInfo</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; = BuildArmComputeTensorInfo(paramsInfo.GetOutputGateBias());</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160;</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; <span class="keywordflow">return</span> arm_compute::NELSTMLayerQuantized::validate(&amp;aclInputInfo,</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160; &amp;aclInputToInputWeightsInfo,</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; &amp;aclInputToForgetWeightsInfo,</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; &amp;aclInputToCellWeightsInfo,</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; &amp;aclInputToOutputWeightsInfo,</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160; &amp;aclRecurrentToInputWeightsInfo,</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160; &amp;aclRecurrentToForgetWeightsInfo,</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160; &amp;aclRecurrentToCellWeightsInfo,</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160; &amp;aclRecurrentToOutputWeightsInfo,</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160; &amp;aclInputGateBiasInfo,</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160; &amp;aclForgetGateBiasInfo,</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; &amp;aclCellBiasInfo,</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160; &amp;aclOutputGateBiasInfo,</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; &amp;aclCellStateInInfo,</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160; &amp;aclOutputStateInInfo,</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160; &amp;aclCellStateOutInfo,</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160; &amp;aclOutputStateOutInfo);</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160;}</div></div><!-- fragment -->
</div>
</div>
<a id="a4d1e35c8bbe48e99dd522ac0f75f77d7"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a4d1e35c8bbe48e99dd522ac0f75f77d7">&#9670;&nbsp;</a></span>NeonQuantizeWorkloadValidate()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">arm_compute::Status NeonQuantizeWorkloadValidate </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>input</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>output</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_neon_quantize_workload_8cpp_source.html#l00019">19</a> of file <a class="el" href="_neon_quantize_workload_8cpp_source.html">NeonQuantizeWorkload.cpp</a>.</p>
<p class="reference">Referenced by <a class="el" href="_neon_layer_support_8cpp_source.html#l00591">NeonLayerSupport::IsQuantizeSupported()</a>.</p>
<div class="fragment"><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;{</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo neonInputInfo = armcomputetensorutils::BuildArmComputeTensorInfo(input);</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo neonOutputInfo = armcomputetensorutils::BuildArmComputeTensorInfo(output);</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160; <span class="keywordflow">return</span> arm_compute::NEQuantizationLayer::validate(&amp;neonInputInfo, &amp;neonOutputInfo);</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;}</div></div><!-- fragment -->
</div>
</div>
<a id="a430021076042c8157a926a3bb3a37152"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a430021076042c8157a926a3bb3a37152">&#9670;&nbsp;</a></span>NeonReshapeWorkloadValidate()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">arm_compute::Status NeonReshapeWorkloadValidate </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>input</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>output</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_neon_reshape_workload_8cpp_source.html#l00017">17</a> of file <a class="el" href="_neon_reshape_workload_8cpp_source.html">NeonReshapeWorkload.cpp</a>.</p>
<p class="reference">Referenced by <a class="el" href="_neon_layer_support_8cpp_source.html#l00619">NeonLayerSupport::IsReshapeSupported()</a>.</p>
<div class="fragment"><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;{</div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInputInfo = armcomputetensorutils::BuildArmComputeTensorInfo(input);</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclOutputInfo = armcomputetensorutils::BuildArmComputeTensorInfo(output);</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160; <span class="keywordflow">return</span> arm_compute::NEReshapeLayer::validate(&amp;aclInputInfo, &amp;aclOutputInfo);</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;}</div></div><!-- fragment -->
</div>
</div>
<a id="a552d65f4e0a6c9e7c7796e77590063e9"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a552d65f4e0a6c9e7c7796e77590063e9">&#9670;&nbsp;</a></span>NeonResizeWorkloadValidate()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">arm_compute::Status NeonResizeWorkloadValidate </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>input</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>output</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="structarmnn_1_1_resize_descriptor.html">ResizeDescriptor</a> &amp;&#160;</td>
<td class="paramname"><em>descriptor</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_neon_resize_workload_8cpp_source.html#l00020">20</a> of file <a class="el" href="_neon_resize_workload_8cpp_source.html">NeonResizeWorkload.cpp</a>.</p>
<p class="reference">Referenced by <a class="el" href="_neon_layer_support_8cpp_source.html#l00631">NeonLayerSupport::IsResizeSupported()</a>.</p>
<div class="fragment"><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;{</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160; arm_compute::TensorInfo aclInputInfo = BuildArmComputeTensorInfo(input);</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; arm_compute::TensorInfo aclOutputInfo = BuildArmComputeTensorInfo(output);</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; <a class="code" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0">arm_compute::DataLayout</a> aclDataLayout = ConvertDataLayout(descriptor.m_DataLayout);</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; aclInputInfo.set_data_layout(aclDataLayout);</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; aclOutputInfo.set_data_layout(aclDataLayout);</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; arm_compute::InterpolationPolicy aclInterpolationPolicy =</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; <a class="code" href="namespacearmnn.html#ae9bdcb8ac91731109dc423d6ed476204">ConvertResizeMethodToAclInterpolationPolicy</a>(descriptor.m_Method);</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; <span class="keywordflow">return</span> arm_compute::NEScale::validate(&amp;aclInputInfo,</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; &amp;aclOutputInfo,</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; aclInterpolationPolicy,</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; arm_compute::BorderMode::REPLICATE,</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; arm_compute::PixelValue(0.f),</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; arm_compute::SamplingPolicy::TOP_LEFT);</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_ae9bdcb8ac91731109dc423d6ed476204"><div class="ttname"><a href="namespacearmnn.html#ae9bdcb8ac91731109dc423d6ed476204">armnn::ConvertResizeMethodToAclInterpolationPolicy</a></div><div class="ttdeci">arm_compute::InterpolationPolicy ConvertResizeMethodToAclInterpolationPolicy(ResizeMethod resizeMethod)</div><div class="ttdef"><b>Definition:</b> <a href="_arm_compute_utils_8hpp_source.html#l00125">ArmComputeUtils.hpp:125</a></div></div>
<div class="ttc" id="namespacearmnn_html_ad1d5cce2d9e9a5d61c243e5c989112e0"><div class="ttname"><a href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0">armnn::DataLayout</a></div><div class="ttdeci">DataLayout</div><div class="ttdef"><b>Definition:</b> <a href="_types_8hpp_source.html#l00048">Types.hpp:48</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="aa7d1b5e38aa8cb731519ff12e2a73350"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa7d1b5e38aa8cb731519ff12e2a73350">&#9670;&nbsp;</a></span>NeonRsqrtWorkloadValidate()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">arm_compute::Status NeonRsqrtWorkloadValidate </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>input</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>output</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_neon_rsqrt_workload_8cpp_source.html#l00018">18</a> of file <a class="el" href="_neon_rsqrt_workload_8cpp_source.html">NeonRsqrtWorkload.cpp</a>.</p>
<p class="reference">Referenced by <a class="el" href="_neon_layer_support_8cpp_source.html#l00356">NeonLayerSupport::IsElementwiseUnarySupported()</a>.</p>
<div class="fragment"><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;{</div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInput = armcomputetensorutils::BuildArmComputeTensorInfo(input);</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclOutput = armcomputetensorutils::BuildArmComputeTensorInfo(output);</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160; <span class="keywordflow">return</span> arm_compute::NERsqrtLayer::validate(&amp;aclInput, &amp;aclOutput);</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;}</div></div><!-- fragment -->
</div>
</div>
<a id="a0a223c0997e3f7faa373ed55f954252b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a0a223c0997e3f7faa373ed55f954252b">&#9670;&nbsp;</a></span>NeonSliceWorkloadValidate()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">arm_compute::Status NeonSliceWorkloadValidate </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>input</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>output</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="structarmnn_1_1_slice_descriptor.html">SliceDescriptor</a> &amp;&#160;</td>
<td class="paramname"><em>descriptor</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_neon_slice_workload_8cpp_source.html#l00019">19</a> of file <a class="el" href="_neon_slice_workload_8cpp_source.html">NeonSliceWorkload.cpp</a>.</p>
<p class="reference">Referenced by <a class="el" href="_neon_layer_support_8cpp_source.html#l00666">NeonLayerSupport::IsSliceSupported()</a>.</p>
<div class="fragment"><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;{</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInputInfo = armcomputetensorutils::BuildArmComputeTensorInfo(input);</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclOutputInfo = armcomputetensorutils::BuildArmComputeTensorInfo(output);</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; <a class="code" href="namespacearmnn.html#ac6e86c1def7f674d3c4cb7f577874aa6">arm_compute::Coordinates</a> starts;</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; <a class="code" href="namespacearmnn.html#ac6e86c1def7f674d3c4cb7f577874aa6">arm_compute::Coordinates</a> ends;</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; std::tie(starts, ends) = <a class="code" href="namespacearmnn.html#ab40e30cea5a328a3c35aa32f9b7db1c1">SetNeonSliceData</a>(descriptor.m_Begin, descriptor.m_Size);</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; <span class="keywordflow">return</span> arm_compute::NESlice::validate(&amp;aclInputInfo, &amp;aclOutputInfo, starts, ends);</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_ab40e30cea5a328a3c35aa32f9b7db1c1"><div class="ttname"><a href="namespacearmnn.html#ab40e30cea5a328a3c35aa32f9b7db1c1">armnn::SetNeonSliceData</a></div><div class="ttdeci">auto SetNeonSliceData(const std::vector&lt; unsigned int &gt; &amp;m_begin, const std::vector&lt; unsigned int &gt; &amp;m_size)</div><div class="ttdef"><b>Definition:</b> <a href="_neon_workload_utils_8hpp_source.html#l00088">NeonWorkloadUtils.hpp:88</a></div></div>
<div class="ttc" id="namespacearmnn_html_ac6e86c1def7f674d3c4cb7f577874aa6"><div class="ttname"><a href="namespacearmnn.html#ac6e86c1def7f674d3c4cb7f577874aa6">armnn::Coordinates</a></div><div class="ttdeci">std::array&lt; unsigned int, MaxNumOfTensorDimensions &gt; Coordinates</div><div class="ttdef"><b>Definition:</b> <a href="_internal_types_8hpp_source.html#l00079">InternalTypes.hpp:79</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a4077a9771ba9c551f4ce61863f65e798"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a4077a9771ba9c551f4ce61863f65e798">&#9670;&nbsp;</a></span>NeonSoftmaxWorkloadValidate()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">arm_compute::Status NeonSoftmaxWorkloadValidate </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>input</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>output</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="structarmnn_1_1_softmax_descriptor.html">SoftmaxDescriptor</a> &amp;&#160;</td>
<td class="paramname"><em>descriptor</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_neon_softmax_base_workload_8cpp_source.html#l00016">16</a> of file <a class="el" href="_neon_softmax_base_workload_8cpp_source.html">NeonSoftmaxBaseWorkload.cpp</a>.</p>
<p class="reference">Referenced by <a class="el" href="_neon_layer_support_8cpp_source.html#l00678">NeonLayerSupport::IsSoftmaxSupported()</a>.</p>
<div class="fragment"><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;{</div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInputInfo = armcomputetensorutils::BuildArmComputeTensorInfo(input);</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclOutputInfo = armcomputetensorutils::BuildArmComputeTensorInfo(output);</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> aclAxis = <a class="code" href="namespacearmnn.html#aa70ebe7b7898fe69ce24db803caa373e">ComputeSoftmaxAclAxis</a>(descriptor, input);</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160; <span class="keywordflow">return</span> arm_compute::NESoftmaxLayer::validate(&amp;aclInputInfo, &amp;aclOutputInfo, descriptor.m_Beta, aclAxis);</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_aa70ebe7b7898fe69ce24db803caa373e"><div class="ttname"><a href="namespacearmnn.html#aa70ebe7b7898fe69ce24db803caa373e">armnn::ComputeSoftmaxAclAxis</a></div><div class="ttdeci">unsigned int ComputeSoftmaxAclAxis(const SoftmaxDescriptor &amp;softmaxDesc, const armnn::TensorInfo &amp;tensor)</div><div class="ttdef"><b>Definition:</b> <a href="_arm_compute_utils_8hpp_source.html#l00138">ArmComputeUtils.hpp:138</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="ab29257da888af2c4971db1344d8a526c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab29257da888af2c4971db1344d8a526c">&#9670;&nbsp;</a></span>NeonSpaceToBatchNdWorkloadValidate()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">arm_compute::Status NeonSpaceToBatchNdWorkloadValidate </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>input</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>output</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="structarmnn_1_1_space_to_batch_nd_descriptor.html">SpaceToBatchNdDescriptor</a> &amp;&#160;</td>
<td class="paramname"><em>descriptor</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_neon_space_to_batch_nd_workload_8cpp_source.html#l00016">16</a> of file <a class="el" href="_neon_space_to_batch_nd_workload_8cpp_source.html">NeonSpaceToBatchNdWorkload.cpp</a>.</p>
<p class="reference">Referenced by <a class="el" href="_neon_layer_support_8cpp_source.html#l00686">NeonLayerSupport::IsSpaceToBatchNdSupported()</a>.</p>
<div class="fragment"><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;{</div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInputInfo = BuildArmComputeTensorInfo(input, descriptor.m_DataLayout);</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclOutputInfo = BuildArmComputeTensorInfo(output, descriptor.m_DataLayout);</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160; <span class="comment">// ArmNN blockShape is [H, W] Cl asks for W, H</span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160; int32_t blockHeight = boost::numeric_cast&lt;int32_t&gt;(descriptor.m_BlockShape[0]);</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; int32_t blockWidth = boost::numeric_cast&lt;int32_t&gt;(descriptor.m_BlockShape[1]);</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; arm_compute::Size2D paddingLeftTop = BuildArmComputeSize2D(</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; descriptor.m_PadList[1].first, descriptor.m_PadList[0].first);</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; arm_compute::Size2D paddingRightBottom = BuildArmComputeSize2D(</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; descriptor.m_PadList[1].second, descriptor.m_PadList[0].second);</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; <span class="keywordflow">return</span> arm_compute::NESpaceToBatchLayer::validate(&amp;aclInputInfo,</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; blockWidth,</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; blockHeight,</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; paddingLeftTop,</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; paddingRightBottom,</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; &amp;aclOutputInfo);</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;}</div></div><!-- fragment -->
</div>
</div>
<a id="af6d2d40482240def4614deb694933d1e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af6d2d40482240def4614deb694933d1e">&#9670;&nbsp;</a></span>NeonSpaceToDepthWorkloadValidate()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">arm_compute::Status NeonSpaceToDepthWorkloadValidate </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>input</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>output</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="structarmnn_1_1_space_to_depth_descriptor.html">SpaceToDepthDescriptor</a> &amp;&#160;</td>
<td class="paramname"><em>descriptor</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_neon_space_to_depth_workload_8cpp_source.html#l00015">15</a> of file <a class="el" href="_neon_space_to_depth_workload_8cpp_source.html">NeonSpaceToDepthWorkload.cpp</a>.</p>
<p class="reference">References <a class="el" href="_descriptors_8hpp_source.html#l00830">SpaceToDepthDescriptor::m_DataLayout</a>.</p>
<p class="reference">Referenced by <a class="el" href="_neon_layer_support_8cpp_source.html#l00698">NeonLayerSupport::IsSpaceToDepthSupported()</a>.</p>
<div class="fragment"><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;{</div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160; <a class="code" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0">DataLayout</a> dataLayout = descriptor.m_DataLayout;</div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInput = BuildArmComputeTensorInfo(input, dataLayout);</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclOutput = BuildArmComputeTensorInfo(output, dataLayout);</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160; int32_t blockSize = boost::numeric_cast&lt;int32_t&gt;(descriptor.m_BlockSize);</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; <span class="keywordflow">return</span> arm_compute::NESpaceToDepthLayer::validate(&amp;aclInput, &amp;aclOutput, blockSize);</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_ad1d5cce2d9e9a5d61c243e5c989112e0"><div class="ttname"><a href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0">armnn::DataLayout</a></div><div class="ttdeci">DataLayout</div><div class="ttdef"><b>Definition:</b> <a href="_types_8hpp_source.html#l00048">Types.hpp:48</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="aab5ea316b3decb05430323d847e3a773"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aab5ea316b3decb05430323d847e3a773">&#9670;&nbsp;</a></span>NeonSplitterWorkloadValidate()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">arm_compute::Status NeonSplitterWorkloadValidate </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>input</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const std::vector&lt; std::reference_wrapper&lt; <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &gt;&gt; &amp;&#160;</td>
<td class="paramname"><em>outputs</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">unsigned int&#160;</td>
<td class="paramname"><em>splitAxis</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_neon_splitter_workload_8cpp_source.html#l00031">31</a> of file <a class="el" href="_neon_splitter_workload_8cpp_source.html">NeonSplitterWorkload.cpp</a>.</p>
<p class="reference">Referenced by <a class="el" href="_neon_layer_support_8cpp_source.html#l00721">NeonLayerSupport::IsSplitterSupported()</a>.</p>
<div class="fragment"><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;{</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInputInfo = BuildArmComputeTensorInfo(input);</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; <span class="keywordtype">size_t</span> numOutputs = outputs.size();</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; std::vector&lt;arm_compute::TensorInfo&gt; aclOutputs;</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; aclOutputs.reserve(numOutputs);</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; std::vector&lt;arm_compute::ITensorInfo*&gt; aclOutputPtr;</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; aclOutputPtr.reserve(numOutputs);</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0u; i &lt; outputs.size(); ++i)</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; {</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; aclOutputs.emplace_back(BuildArmComputeTensorInfo(outputs[i]));</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; aclOutputPtr.emplace_back(&amp;aclOutputs.back());</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; }</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> aclAxis = CalcAclAxis(input.GetNumDimensions(), splitAxis);</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; <span class="keywordflow">return</span> arm_compute::NESplit::validate(&amp;aclInputInfo, aclOutputPtr, aclAxis);</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160;}</div></div><!-- fragment -->
</div>
</div>
<a id="a65c83c74bdbd66cdd547d331998952eb"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a65c83c74bdbd66cdd547d331998952eb">&#9670;&nbsp;</a></span>NeonStackWorkloadValidate()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">arm_compute::Status NeonStackWorkloadValidate </td>
<td>(</td>
<td class="paramtype">const std::vector&lt; const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> *&gt; &amp;&#160;</td>
<td class="paramname"><em>inputs</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>output</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="structarmnn_1_1_stack_descriptor.html">StackDescriptor</a> &amp;&#160;</td>
<td class="paramname"><em>descriptor</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_neon_stack_workload_8cpp_source.html#l00028">28</a> of file <a class="el" href="_neon_stack_workload_8cpp_source.html">NeonStackWorkload.cpp</a>.</p>
<p class="reference">Referenced by <a class="el" href="_neon_layer_support_8cpp_source.html#l00754">NeonLayerSupport::IsStackSupported()</a>.</p>
<div class="fragment"><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;{</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; std::vector&lt;arm_compute::TensorInfo&gt; aclInputs;</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> TensorInfo* input : inputs)</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; {</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; arm_compute::TensorInfo aclInputInfo = BuildArmComputeTensorInfo(*input, <a class="code" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0a6b99f356fe3b30a2a850b5ea897c289f">armnn::DataLayout::NCHW</a>);</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; aclInputs.emplace_back(aclInputInfo);</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; }</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; std::vector&lt;arm_compute::ITensorInfo*&gt; aclInputPtrs;</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; <span class="keywordflow">for</span> (arm_compute::ITensorInfo&amp; input : aclInputs)</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; {</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; aclInputPtrs.emplace_back(&amp;input);</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; }</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclOutputInfo = BuildArmComputeTensorInfo(output);</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; <span class="keywordtype">int</span> aclAxis = CalcAxis(descriptor.m_Axis, descriptor.m_InputShape.GetNumDimensions());</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; <span class="keywordflow">return</span> arm_compute::NEStackLayer::validate(aclInputPtrs, aclAxis, &amp;aclOutputInfo);</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_ad1d5cce2d9e9a5d61c243e5c989112e0a6b99f356fe3b30a2a850b5ea897c289f"><div class="ttname"><a href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0a6b99f356fe3b30a2a850b5ea897c289f">armnn::DataLayout::NCHW</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="ac71d08bf1257807c112b4d019802acc3"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ac71d08bf1257807c112b4d019802acc3">&#9670;&nbsp;</a></span>NeonStridedSliceWorkloadValidate()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">arm_compute::Status NeonStridedSliceWorkloadValidate </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>input</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>output</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="structarmnn_1_1_strided_slice_descriptor.html">StridedSliceDescriptor</a> &amp;&#160;</td>
<td class="paramname"><em>descriptor</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_neon_strided_slice_workload_8cpp_source.html#l00017">17</a> of file <a class="el" href="_neon_strided_slice_workload_8cpp_source.html">NeonStridedSliceWorkload.cpp</a>.</p>
<p class="reference">Referenced by <a class="el" href="_neon_layer_support_8cpp_source.html#l00766">NeonLayerSupport::IsStridedSliceSupported()</a>.</p>
<div class="fragment"><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;{</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInput = armcomputetensorutils::BuildArmComputeTensorInfo(input);</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclOutput = armcomputetensorutils::BuildArmComputeTensorInfo(output);</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160; <a class="code" href="namespacearmnn.html#ac6e86c1def7f674d3c4cb7f577874aa6">arm_compute::Coordinates</a> starts;</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; <a class="code" href="namespacearmnn.html#ac6e86c1def7f674d3c4cb7f577874aa6">arm_compute::Coordinates</a> ends;</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; <a class="code" href="namespacearmnn.html#ac6e86c1def7f674d3c4cb7f577874aa6">arm_compute::Coordinates</a> strides;</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; std::tie(starts, ends, strides) = <a class="code" href="namespacearmnn.html#a01d1e745f360ccd0b655214645bcef32">SetNeonStridedSliceData</a>(descriptor.m_Begin,</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; descriptor.m_End,</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; descriptor.m_Stride);</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; <span class="keyword">auto</span> numDimensions = boost::numeric_cast&lt;<span class="keywordtype">int</span>&gt;(input.GetNumDimensions());</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; int32_t begin_mask = <a class="code" href="namespacearmnn.html#ad69ffa576a596b9eb20ab6a41420c541">ConvertMaskToACLFormat</a>(descriptor.m_BeginMask, numDimensions);</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; int32_t end_mask = <a class="code" href="namespacearmnn.html#ad69ffa576a596b9eb20ab6a41420c541">ConvertMaskToACLFormat</a>(descriptor.m_EndMask, numDimensions);</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; int32_t shrink_axis_mask = <a class="code" href="namespacearmnn.html#ad69ffa576a596b9eb20ab6a41420c541">ConvertMaskToACLFormat</a>(descriptor.m_ShrinkAxisMask, numDimensions);</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; <span class="keywordflow">return</span> arm_compute::NEStridedSlice::validate(&amp;aclInput,</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; &amp;aclOutput,</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; starts,</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; ends,</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; strides,</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; begin_mask,</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; end_mask,</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; shrink_axis_mask);</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_ac6e86c1def7f674d3c4cb7f577874aa6"><div class="ttname"><a href="namespacearmnn.html#ac6e86c1def7f674d3c4cb7f577874aa6">armnn::Coordinates</a></div><div class="ttdeci">std::array&lt; unsigned int, MaxNumOfTensorDimensions &gt; Coordinates</div><div class="ttdef"><b>Definition:</b> <a href="_internal_types_8hpp_source.html#l00079">InternalTypes.hpp:79</a></div></div>
<div class="ttc" id="namespacearmnn_html_a01d1e745f360ccd0b655214645bcef32"><div class="ttname"><a href="namespacearmnn.html#a01d1e745f360ccd0b655214645bcef32">armnn::SetNeonStridedSliceData</a></div><div class="ttdeci">auto SetNeonStridedSliceData(const std::vector&lt; int &gt; &amp;m_begin, const std::vector&lt; int &gt; &amp;m_end, const std::vector&lt; int &gt; &amp;m_stride)</div><div class="ttdef"><b>Definition:</b> <a href="_neon_workload_utils_8hpp_source.html#l00066">NeonWorkloadUtils.hpp:66</a></div></div>
<div class="ttc" id="namespacearmnn_html_ad69ffa576a596b9eb20ab6a41420c541"><div class="ttname"><a href="namespacearmnn.html#ad69ffa576a596b9eb20ab6a41420c541">armnn::ConvertMaskToACLFormat</a></div><div class="ttdeci">int32_t ConvertMaskToACLFormat(int32_t mask, int32_t numDim)</div><div class="ttdef"><b>Definition:</b> <a href="_workload_utils_8cpp_source.html#l00192">WorkloadUtils.cpp:192</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a73c15f02c46f64c1adf0fafb4c7c2cac"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a73c15f02c46f64c1adf0fafb4c7c2cac">&#9670;&nbsp;</a></span>NeonSubtractionWorkloadValidate()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">arm_compute::Status NeonSubtractionWorkloadValidate </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>input0</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>input1</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>output</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_neon_subtraction_workload_8cpp_source.html#l00017">17</a> of file <a class="el" href="_neon_subtraction_workload_8cpp_source.html">NeonSubtractionWorkload.cpp</a>.</p>
<p class="reference">Referenced by <a class="el" href="_neon_layer_support_8cpp_source.html#l00778">NeonLayerSupport::IsSubtractionSupported()</a>.</p>
<div class="fragment"><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;{</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInput0 = armcomputetensorutils::BuildArmComputeTensorInfo(input0);</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInput1 = armcomputetensorutils::BuildArmComputeTensorInfo(input1);</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclOutput = armcomputetensorutils::BuildArmComputeTensorInfo(output);</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; <span class="keywordflow">return</span> arm_compute::NEArithmeticSubtraction::validate(&amp;aclInput0,</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; &amp;aclInput1,</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; &amp;aclOutput,</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; arm_compute::ConvertPolicy::SATURATE);</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;}</div></div><!-- fragment -->
</div>
</div>
<a id="aad5d4888304a57fb22c4608dc5d94dc1"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aad5d4888304a57fb22c4608dc5d94dc1">&#9670;&nbsp;</a></span>NeonTensorHandleFactoryId()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">constexpr const char* armnn::NeonTensorHandleFactoryId </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_neon_tensor_handle_factory_8hpp_source.html#l00014">14</a> of file <a class="el" href="_neon_tensor_handle_factory_8hpp_source.html">NeonTensorHandleFactory.hpp</a>.</p>
<p class="reference">Referenced by <a class="el" href="_neon_tensor_handle_factory_8cpp_source.html#l00084">NeonTensorHandleFactory::GetIdStatic()</a>.</p>
<div class="fragment"><div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;{ <span class="keywordflow">return</span> <span class="stringliteral">&quot;Arm/Neon/TensorHandleFactory&quot;</span>; }</div></div><!-- fragment -->
</div>
</div>
<a id="abc73c3c9a09f91c22c64d7c166e9be4d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#abc73c3c9a09f91c22c64d7c166e9be4d">&#9670;&nbsp;</a></span>NeonTransposeConvolution2dWorkloadValidate()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">arm_compute::Status NeonTransposeConvolution2dWorkloadValidate </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>input</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>output</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="structarmnn_1_1_transpose_convolution2d_descriptor.html">TransposeConvolution2dDescriptor</a> &amp;&#160;</td>
<td class="paramname"><em>descriptor</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>weights</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_optional.html">Optional</a>&lt; <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &gt; &amp;&#160;</td>
<td class="paramname"><em>biases</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_neon_transpose_convolution2d_workload_8cpp_source.html#l00026">26</a> of file <a class="el" href="_neon_transpose_convolution2d_workload_8cpp_source.html">NeonTransposeConvolution2dWorkload.cpp</a>.</p>
<p class="reference">Referenced by <a class="el" href="_neon_layer_support_8cpp_source.html#l00790">NeonLayerSupport::IsTransposeConvolution2dSupported()</a>.</p>
<div class="fragment"><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;{</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInputInfo = BuildArmComputeTensorInfo(input, descriptor.m_DataLayout);</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclOutputInfo = BuildArmComputeTensorInfo(output, descriptor.m_DataLayout);</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclWeightsInfo = BuildArmComputeTensorInfo(weights, descriptor.m_DataLayout);</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; arm_compute::TensorInfo aclBiasesInfo;</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; arm_compute::TensorInfo *optionalAclBiasesInfo = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; <span class="keywordflow">if</span> (descriptor.m_BiasEnabled)</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; {</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; BOOST_ASSERT(biases.has_value());</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; aclBiasesInfo = BuildArmComputeTensorInfo(biases.value(), descriptor.m_DataLayout);</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; optionalAclBiasesInfo = &amp;aclBiasesInfo;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; }</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; arm_compute::PadStrideInfo layerInfo = BuildArmComputePadStrideInfo(descriptor);</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; <span class="keywordflow">return</span> arm_compute::NEDeconvolutionLayer::validate(&amp;aclInputInfo,</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; &amp;aclWeightsInfo,</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; optionalAclBiasesInfo,</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; &amp;aclOutputInfo,</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; layerInfo);</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;}</div></div><!-- fragment -->
</div>
</div>
<a id="a869f740e9c2fcb8642350c6e3d0b3742"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a869f740e9c2fcb8642350c6e3d0b3742">&#9670;&nbsp;</a></span>NextIndex()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">bool armnn::NextIndex </td>
<td>(</td>
<td class="paramtype">const unsigned int&#160;</td>
<td class="paramname"><em>numDims</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_shape.html">armnn::TensorShape</a> &amp;&#160;</td>
<td class="paramname"><em>dims</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">std::vector&lt; unsigned int &gt; &amp;&#160;</td>
<td class="paramname"><em>current</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="backends_2reference_2workloads_2_mean_8cpp_source.html#l00018">18</a> of file <a class="el" href="backends_2reference_2workloads_2_mean_8cpp_source.html">Mean.cpp</a>.</p>
<p class="reference">Referenced by <a class="el" href="backends_2reference_2workloads_2_mean_8cpp_source.html#l00071">Mean()</a>.</p>
<div class="fragment"><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;{</div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> carry = 1;</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> idx = numDims; idx-- &gt; 0; )</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160; {</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> current_val = current[idx] + carry;</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; <span class="keywordflow">if</span> (dims[idx] == current_val)</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; {</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; current[idx] = 0;</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; }</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; {</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; current[idx] = current_val;</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; carry = 0;</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; }</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; }</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; <span class="keywordflow">return</span> (carry == 0);</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;}</div></div><!-- fragment -->
</div>
</div>
<a id="ac8c641d4a69c9a85c487cfbc7ea4d73c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ac8c641d4a69c9a85c487cfbc7ea4d73c">&#9670;&nbsp;</a></span>NonMaxSuppression()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">std::vector&lt; unsigned int &gt; NonMaxSuppression </td>
<td>(</td>
<td class="paramtype">unsigned int&#160;</td>
<td class="paramname"><em>numBoxes</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const std::vector&lt; float &gt; &amp;&#160;</td>
<td class="paramname"><em>boxCorners</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const std::vector&lt; float &gt; &amp;&#160;</td>
<td class="paramname"><em>scores</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">float&#160;</td>
<td class="paramname"><em>nmsScoreThreshold</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">unsigned int&#160;</td>
<td class="paramname"><em>maxDetection</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">float&#160;</td>
<td class="paramname"><em>nmsIouThreshold</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="backends_2reference_2workloads_2_detection_post_process_8cpp_source.html#l00050">50</a> of file <a class="el" href="backends_2reference_2workloads_2_detection_post_process_8cpp_source.html">DetectionPostProcess.cpp</a>.</p>
<p class="reference">References <a class="el" href="backends_2reference_2workloads_2_detection_post_process_8cpp_source.html#l00018">GenerateRangeK()</a>, <a class="el" href="backends_2reference_2workloads_2_detection_post_process_8cpp_source.html#l00031">IntersectionOverUnion()</a>, and <a class="el" href="backends_2reference_2workloads_2_detection_post_process_8cpp_source.html#l00025">TopKSort()</a>.</p>
<p class="reference">Referenced by <a class="el" href="_ref_detection_post_process_tests_8cpp_source.html#l00050">BOOST_AUTO_TEST_CASE()</a>, and <a class="el" href="backends_2reference_2workloads_2_detection_post_process_8cpp_source.html#l00141">DetectionPostProcess()</a>.</p>
<div class="fragment"><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160;{</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; <span class="comment">// Select boxes that have scores above a given threshold.</span></div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; std::vector&lt;float&gt; scoresAboveThreshold;</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; std::vector&lt;unsigned int&gt; indicesAboveThreshold;</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i &lt; numBoxes; ++i)</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; {</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="_neon_end_to_end_tests_8cpp.html#a0348e6bb67ace72535bd105219bb6237">scores</a>[i] &gt;= nmsScoreThreshold)</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; {</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; scoresAboveThreshold.push_back(<a class="code" href="_neon_end_to_end_tests_8cpp.html#a0348e6bb67ace72535bd105219bb6237">scores</a>[i]);</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; indicesAboveThreshold.push_back(i);</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; }</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; }</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160;</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; <span class="comment">// Sort the indices based on scores.</span></div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> numAboveThreshold = boost::numeric_cast&lt;<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>&gt;(scoresAboveThreshold.size());</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; std::vector&lt;unsigned int&gt; sortedIndices = <a class="code" href="namespacearmnn.html#ae8ed5c640761fb6744aec0ee16388417">GenerateRangeK</a>(numAboveThreshold);</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; <a class="code" href="namespacearmnn.html#a2748f45e58b1c612d473043f711d1434">TopKSort</a>(numAboveThreshold, sortedIndices.data(), scoresAboveThreshold.data(), numAboveThreshold);</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160;</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; <span class="comment">// Number of output cannot be more than max detections specified in the option.</span></div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> numOutput = std::min(maxDetection, numAboveThreshold);</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; std::vector&lt;unsigned int&gt; outputIndices;</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; std::vector&lt;bool&gt; visited(numAboveThreshold, <span class="keyword">false</span>);</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160;</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; <span class="comment">// Prune out the boxes with high intersection over union by keeping the box with higher score.</span></div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i &lt; numAboveThreshold; ++i)</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; {</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; <span class="keywordflow">if</span> (outputIndices.size() &gt;= numOutput)</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; {</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; }</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; <span class="keywordflow">if</span> (!visited[sortedIndices[i]])</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; {</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; outputIndices.push_back(indicesAboveThreshold[sortedIndices[i]]);</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; }</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> j = i + 1; j &lt; numAboveThreshold; ++j)</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; {</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> iIndex = indicesAboveThreshold[sortedIndices[i]] * 4;</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> jIndex = indicesAboveThreshold[sortedIndices[j]] * 4;</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespacearmnn.html#abf6aad7bc221f8ad22b4d99cd020373b">IntersectionOverUnion</a>(&amp;boxCorners[iIndex], &amp;boxCorners[jIndex]) &gt; nmsIouThreshold)</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; {</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; visited[sortedIndices[j]] = <span class="keyword">true</span>;</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; }</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; }</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; }</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; <span class="keywordflow">return</span> outputIndices;</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160;}</div><div class="ttc" id="_neon_end_to_end_tests_8cpp_html_a0348e6bb67ace72535bd105219bb6237"><div class="ttname"><a href="_neon_end_to_end_tests_8cpp.html#a0348e6bb67ace72535bd105219bb6237">scores</a></div><div class="ttdeci">std::vector&lt; float &gt; scores({ 0.0f, 0.9f, 0.8f, 0.0f, 0.75f, 0.72f, 0.0f, 0.6f, 0.5f, 0.0f, 0.93f, 0.95f, 0.0f, 0.5f, 0.4f, 0.0f, 0.3f, 0.2f })</div></div>
<div class="ttc" id="namespacearmnn_html_a2748f45e58b1c612d473043f711d1434"><div class="ttname"><a href="namespacearmnn.html#a2748f45e58b1c612d473043f711d1434">armnn::TopKSort</a></div><div class="ttdeci">void TopKSort(unsigned int k, unsigned int *indices, const float *values, unsigned int numElement)</div><div class="ttdef"><b>Definition:</b> <a href="backends_2reference_2workloads_2_detection_post_process_8cpp_source.html#l00025">DetectionPostProcess.cpp:25</a></div></div>
<div class="ttc" id="namespacearmnn_html_ae8ed5c640761fb6744aec0ee16388417"><div class="ttname"><a href="namespacearmnn.html#ae8ed5c640761fb6744aec0ee16388417">armnn::GenerateRangeK</a></div><div class="ttdeci">std::vector&lt; unsigned int &gt; GenerateRangeK(unsigned int k)</div><div class="ttdef"><b>Definition:</b> <a href="backends_2reference_2workloads_2_detection_post_process_8cpp_source.html#l00018">DetectionPostProcess.cpp:18</a></div></div>
<div class="ttc" id="namespacearmnn_html_abf6aad7bc221f8ad22b4d99cd020373b"><div class="ttname"><a href="namespacearmnn.html#abf6aad7bc221f8ad22b4d99cd020373b">armnn::IntersectionOverUnion</a></div><div class="ttdeci">float IntersectionOverUnion(const float *boxI, const float *boxJ)</div><div class="ttdef"><b>Definition:</b> <a href="backends_2reference_2workloads_2_detection_post_process_8cpp_source.html#l00031">DetectionPostProcess.cpp:31</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="ac70a495c61526a0500b33b23db86ca27"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ac70a495c61526a0500b33b23db86ca27">&#9670;&nbsp;</a></span>Offset()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">unsigned int armnn::Offset </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_shape.html">TensorShape</a> &amp;&#160;</td>
<td class="paramname"><em>shape</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">unsigned int&#160;</td>
<td class="paramname"><em>batch</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">unsigned int&#160;</td>
<td class="paramname"><em>height</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">unsigned int&#160;</td>
<td class="paramname"><em>width</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">unsigned int&#160;</td>
<td class="paramname"><em>channels</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_utils_1_1_data_layout_indexed.html">DataLayoutIndexed</a> &amp;&#160;</td>
<td class="paramname"><em>dataLayout</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="backends_2reference_2workloads_2_batch_to_space_n_d_8cpp_source.html#l00019">19</a> of file <a class="el" href="backends_2reference_2workloads_2_batch_to_space_n_d_8cpp_source.html">BatchToSpaceNd.cpp</a>.</p>
<p class="reference">References <a class="el" href="_data_layout_indexed_8hpp_source.html#l00023">DataLayoutIndexed::GetChannelsIndex()</a>, <a class="el" href="_data_layout_indexed_8hpp_source.html#l00022">DataLayoutIndexed::GetDataLayout()</a>, <a class="el" href="_data_layout_indexed_8hpp_source.html#l00024">DataLayoutIndexed::GetHeightIndex()</a>, <a class="el" href="_data_layout_indexed_8hpp_source.html#l00025">DataLayoutIndexed::GetWidthIndex()</a>, and <a class="el" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0ad066db54b89b0912e7e7c6da51e2da51">NHWC</a>.</p>
<p class="reference">Referenced by <a class="el" href="backends_2reference_2workloads_2_batch_to_space_n_d_8cpp_source.html#l00035">BatchToSpaceNd()</a>.</p>
<div class="fragment"><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;{</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160; <span class="keywordflow">if</span> (dataLayout.<a class="code" href="classarmnn_utils_1_1_data_layout_indexed.html#a7d8b3d755b6ca8f5533657969efb06c4">GetDataLayout</a>() == DataLayout::NHWC)</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160; {</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160; <span class="keywordflow">return</span> ((batch * shape[dataLayout.<a class="code" href="classarmnn_utils_1_1_data_layout_indexed.html#a61c00316c443adc233c24e85c6c5b740">GetHeightIndex</a>()] + height) * shape[dataLayout.<a class="code" href="classarmnn_utils_1_1_data_layout_indexed.html#a414e6f95548e6f7a01d5028b55ad3941">GetWidthIndex</a>()] + width) *</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; shape[dataLayout.<a class="code" href="classarmnn_utils_1_1_data_layout_indexed.html#a861b2621ee46e4b63379988b360b8cd9">GetChannelsIndex</a>()] + channels;</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; }</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; {</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; <span class="keywordflow">return</span> ((batch * shape[dataLayout.<a class="code" href="classarmnn_utils_1_1_data_layout_indexed.html#a861b2621ee46e4b63379988b360b8cd9">GetChannelsIndex</a>()] + channels) *</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; shape[dataLayout.<a class="code" href="classarmnn_utils_1_1_data_layout_indexed.html#a61c00316c443adc233c24e85c6c5b740">GetHeightIndex</a>()] + height) *</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; shape[dataLayout.<a class="code" href="classarmnn_utils_1_1_data_layout_indexed.html#a414e6f95548e6f7a01d5028b55ad3941">GetWidthIndex</a>()] + width;</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; }</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;}</div><div class="ttc" id="classarmnn_utils_1_1_data_layout_indexed_html_a7d8b3d755b6ca8f5533657969efb06c4"><div class="ttname"><a href="classarmnn_utils_1_1_data_layout_indexed.html#a7d8b3d755b6ca8f5533657969efb06c4">armnnUtils::DataLayoutIndexed::GetDataLayout</a></div><div class="ttdeci">armnn::DataLayout GetDataLayout() const</div><div class="ttdef"><b>Definition:</b> <a href="_data_layout_indexed_8hpp_source.html#l00022">DataLayoutIndexed.hpp:22</a></div></div>
<div class="ttc" id="classarmnn_utils_1_1_data_layout_indexed_html_a61c00316c443adc233c24e85c6c5b740"><div class="ttname"><a href="classarmnn_utils_1_1_data_layout_indexed.html#a61c00316c443adc233c24e85c6c5b740">armnnUtils::DataLayoutIndexed::GetHeightIndex</a></div><div class="ttdeci">unsigned int GetHeightIndex() const</div><div class="ttdef"><b>Definition:</b> <a href="_data_layout_indexed_8hpp_source.html#l00024">DataLayoutIndexed.hpp:24</a></div></div>
<div class="ttc" id="classarmnn_utils_1_1_data_layout_indexed_html_a414e6f95548e6f7a01d5028b55ad3941"><div class="ttname"><a href="classarmnn_utils_1_1_data_layout_indexed.html#a414e6f95548e6f7a01d5028b55ad3941">armnnUtils::DataLayoutIndexed::GetWidthIndex</a></div><div class="ttdeci">unsigned int GetWidthIndex() const</div><div class="ttdef"><b>Definition:</b> <a href="_data_layout_indexed_8hpp_source.html#l00025">DataLayoutIndexed.hpp:25</a></div></div>
<div class="ttc" id="classarmnn_utils_1_1_data_layout_indexed_html_a861b2621ee46e4b63379988b360b8cd9"><div class="ttname"><a href="classarmnn_utils_1_1_data_layout_indexed.html#a861b2621ee46e4b63379988b360b8cd9">armnnUtils::DataLayoutIndexed::GetChannelsIndex</a></div><div class="ttdeci">unsigned int GetChannelsIndex() const</div><div class="ttdef"><b>Definition:</b> <a href="_data_layout_indexed_8hpp_source.html#l00023">DataLayoutIndexed.hpp:23</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a5b0313cb554380d6e4dfb24c31f9e605"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a5b0313cb554380d6e4dfb24c31f9e605">&#9670;&nbsp;</a></span>operator<<() <span class="overload">[1/8]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">std::ostream&amp; armnn::operator&lt;&lt; </td>
<td>(</td>
<td class="paramtype">std::ostream &amp;&#160;</td>
<td class="paramname"><em>os</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const std::vector&lt; <a class="el" href="namespacearmnn.html#ae2f04a162585c0a5222a537efd5456ae">Compute</a> &gt; &amp;&#160;</td>
<td class="paramname"><em>compute</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Deprecated function that will be removed together with the Compute enum </p>
<p class="definition">Definition at line <a class="el" href="_backend_id_8hpp_source.html#l00047">47</a> of file <a class="el" href="_backend_id_8hpp_source.html">BackendId.hpp</a>.</p>
<p class="reference">References <a class="el" href="_backend_id_8hpp_source.html#l00034">GetComputeDeviceAsCString()</a>.</p>
<div class="fragment"><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;{</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespacearmnn.html#ae2f04a162585c0a5222a537efd5456ae">Compute</a>&amp; comp : compute)</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; {</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; os &lt;&lt; <a class="code" href="namespacearmnn.html#a6bab17bfd45c2fa4592c431bc25ad10e">GetComputeDeviceAsCString</a>(comp) &lt;&lt; <span class="stringliteral">&quot; &quot;</span>;</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; }</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; <span class="keywordflow">return</span> os;</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_ae2f04a162585c0a5222a537efd5456ae"><div class="ttname"><a href="namespacearmnn.html#ae2f04a162585c0a5222a537efd5456ae">armnn::Compute</a></div><div class="ttdeci">Compute</div><div class="ttdef"><b>Definition:</b> <a href="_backend_id_8hpp_source.html#l00021">BackendId.hpp:21</a></div></div>
<div class="ttc" id="namespacearmnn_html_a6bab17bfd45c2fa4592c431bc25ad10e"><div class="ttname"><a href="namespacearmnn.html#a6bab17bfd45c2fa4592c431bc25ad10e">armnn::GetComputeDeviceAsCString</a></div><div class="ttdeci">constexpr char const * GetComputeDeviceAsCString(Compute compute)</div><div class="ttdef"><b>Definition:</b> <a href="_backend_id_8hpp_source.html#l00034">BackendId.hpp:34</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a127a59fdf5e6d2fa74f87f9265de958b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a127a59fdf5e6d2fa74f87f9265de958b">&#9670;&nbsp;</a></span>operator<<() <span class="overload">[2/8]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">std::ostream&amp; armnn::operator&lt;&lt; </td>
<td>(</td>
<td class="paramtype">std::ostream &amp;&#160;</td>
<td class="paramname"><em>os</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const std::set&lt; <a class="el" href="namespacearmnn.html#ae2f04a162585c0a5222a537efd5456ae">Compute</a> &gt; &amp;&#160;</td>
<td class="paramname"><em>compute</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Deprecated function that will be removed together with the Compute enum </p>
<p class="definition">Definition at line <a class="el" href="_backend_id_8hpp_source.html#l00058">58</a> of file <a class="el" href="_backend_id_8hpp_source.html">BackendId.hpp</a>.</p>
<p class="reference">References <a class="el" href="_backend_id_8hpp_source.html#l00034">GetComputeDeviceAsCString()</a>.</p>
<div class="fragment"><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160;{</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespacearmnn.html#ae2f04a162585c0a5222a537efd5456ae">Compute</a>&amp; comp : compute)</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; {</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; os &lt;&lt; <a class="code" href="namespacearmnn.html#a6bab17bfd45c2fa4592c431bc25ad10e">GetComputeDeviceAsCString</a>(comp) &lt;&lt; <span class="stringliteral">&quot; &quot;</span>;</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; }</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; <span class="keywordflow">return</span> os;</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_ae2f04a162585c0a5222a537efd5456ae"><div class="ttname"><a href="namespacearmnn.html#ae2f04a162585c0a5222a537efd5456ae">armnn::Compute</a></div><div class="ttdeci">Compute</div><div class="ttdef"><b>Definition:</b> <a href="_backend_id_8hpp_source.html#l00021">BackendId.hpp:21</a></div></div>
<div class="ttc" id="namespacearmnn_html_a6bab17bfd45c2fa4592c431bc25ad10e"><div class="ttname"><a href="namespacearmnn.html#a6bab17bfd45c2fa4592c431bc25ad10e">armnn::GetComputeDeviceAsCString</a></div><div class="ttdeci">constexpr char const * GetComputeDeviceAsCString(Compute compute)</div><div class="ttdef"><b>Definition:</b> <a href="_backend_id_8hpp_source.html#l00034">BackendId.hpp:34</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a14de37f4c695ac066f999aa75b7cb136"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a14de37f4c695ac066f999aa75b7cb136">&#9670;&nbsp;</a></span>operator<<() <span class="overload">[3/8]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">std::ostream&amp; armnn::operator&lt;&lt; </td>
<td>(</td>
<td class="paramtype">std::ostream &amp;&#160;</td>
<td class="paramname"><em>os</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="structarmnn_1_1_backend_version.html">BackendVersion</a> &amp;&#160;</td>
<td class="paramname"><em>backendVersion</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="include_2armnn_2backends_2_i_backend_internal_8hpp_source.html#l00061">61</a> of file <a class="el" href="include_2armnn_2backends_2_i_backend_internal_8hpp_source.html">IBackendInternal.hpp</a>.</p>
<p class="reference">References <a class="el" href="include_2armnn_2backends_2_i_backend_internal_8hpp_source.html#l00034">BackendVersion::m_Major</a>, and <a class="el" href="include_2armnn_2backends_2_i_backend_internal_8hpp_source.html#l00035">BackendVersion::m_Minor</a>.</p>
<div class="fragment"><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160;{</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; os &lt;&lt; <span class="stringliteral">&quot;[&quot;</span> &lt;&lt; backendVersion.m_Major &lt;&lt; <span class="stringliteral">&quot;.&quot;</span> &lt;&lt; backendVersion.m_Minor &lt;&lt; <span class="stringliteral">&quot;]&quot;</span>;</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160;</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; <span class="keywordflow">return</span> os;</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160;}</div></div><!-- fragment -->
</div>
</div>
<a id="a345acf4e0dc087eee3f9688029ee6328"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a345acf4e0dc087eee3f9688029ee6328">&#9670;&nbsp;</a></span>operator<<() <span class="overload">[4/8]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">std::ostream&amp; armnn::operator&lt;&lt; </td>
<td>(</td>
<td class="paramtype">std::ostream &amp;&#160;</td>
<td class="paramname"><em>os</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="namespacearmnn.html#ae2f04a162585c0a5222a537efd5456ae">Compute</a> &amp;&#160;</td>
<td class="paramname"><em>compute</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Deprecated function that will be removed together with the Compute enum </p>
<p class="definition">Definition at line <a class="el" href="_backend_id_8hpp_source.html#l00069">69</a> of file <a class="el" href="_backend_id_8hpp_source.html">BackendId.hpp</a>.</p>
<p class="reference">References <a class="el" href="_backend_id_8hpp_source.html#l00034">GetComputeDeviceAsCString()</a>.</p>
<div class="fragment"><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160;{</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; os &lt;&lt; <a class="code" href="namespacearmnn.html#a6bab17bfd45c2fa4592c431bc25ad10e">GetComputeDeviceAsCString</a>(compute);</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; <span class="keywordflow">return</span> os;</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a6bab17bfd45c2fa4592c431bc25ad10e"><div class="ttname"><a href="namespacearmnn.html#a6bab17bfd45c2fa4592c431bc25ad10e">armnn::GetComputeDeviceAsCString</a></div><div class="ttdeci">constexpr char const * GetComputeDeviceAsCString(Compute compute)</div><div class="ttdef"><b>Definition:</b> <a href="_backend_id_8hpp_source.html#l00034">BackendId.hpp:34</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="afc46634e26857d037ee80bb5a74ef28a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#afc46634e26857d037ee80bb5a74ef28a">&#9670;&nbsp;</a></span>operator<<() <span class="overload">[5/8]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">std::ostream&amp; armnn::operator&lt;&lt; </td>
<td>(</td>
<td class="paramtype">std::ostream &amp;&#160;</td>
<td class="paramname"><em>os</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a> &amp;&#160;</td>
<td class="paramname"><em>id</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_backend_id_8hpp_source.html#l00174">174</a> of file <a class="el" href="_backend_id_8hpp_source.html">BackendId.hpp</a>.</p>
<div class="fragment"><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160;{</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; os &lt;&lt; <span class="keywordtype">id</span>.Get();</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160; <span class="keywordflow">return</span> os;</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160;}</div></div><!-- fragment -->
</div>
</div>
<a id="a62a9e8c87b9b9f504726746ba4a000a6"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a62a9e8c87b9b9f504726746ba4a000a6">&#9670;&nbsp;</a></span>operator<<() <span class="overload">[6/8]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">std::ostream&amp; armnn::operator&lt;&lt; </td>
<td>(</td>
<td class="paramtype">std::ostream &amp;&#160;</td>
<td class="paramname"><em>os</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="namespacearmnn.html#a9eb69ebdaf4ceb8014e7c8a540266100">TContainer</a>&lt; <a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a>, TContainerTemplateArgs... &gt; &amp;&#160;</td>
<td class="paramname"><em>ids</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_backend_id_8hpp_source.html#l00181">181</a> of file <a class="el" href="_backend_id_8hpp_source.html">BackendId.hpp</a>.</p>
<div class="fragment"><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160;{</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160; os &lt;&lt; <span class="charliteral">&#39;[&#39;</span>;</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span>&amp; <span class="keywordtype">id</span> : ids) { os &lt;&lt; <span class="keywordtype">id</span> &lt;&lt; <span class="stringliteral">&quot; &quot;</span>; }</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160; os &lt;&lt; <span class="charliteral">&#39;]&#39;</span>;</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160; <span class="keywordflow">return</span> os;</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160;}</div></div><!-- fragment -->
</div>
</div>
<a id="aaa5b68f3f5bb73b1d3c85d895547a372"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aaa5b68f3f5bb73b1d3c85d895547a372">&#9670;&nbsp;</a></span>operator<<() <span class="overload">[7/8]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">std::ostream&amp; armnn::operator&lt;&lt; </td>
<td>(</td>
<td class="paramtype">std::ostream &amp;&#160;</td>
<td class="paramname"><em>os</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacearmnn.html#a67a0db04d321a74b7e7fcfd3f1a3f70b">Status</a>&#160;</td>
<td class="paramname"><em>stat</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_types_utils_8hpp_source.html#l00252">252</a> of file <a class="el" href="_types_utils_8hpp_source.html">TypesUtils.hpp</a>.</p>
<p class="reference">References <a class="el" href="_types_utils_8hpp_source.html#l00017">GetStatusAsCString()</a>.</p>
<div class="fragment"><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160;{</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160; os &lt;&lt; <a class="code" href="namespacearmnn.html#a19a90c41ca2f46ab29918fef1a6ad72e">GetStatusAsCString</a>(stat);</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160; <span class="keywordflow">return</span> os;</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a19a90c41ca2f46ab29918fef1a6ad72e"><div class="ttname"><a href="namespacearmnn.html#a19a90c41ca2f46ab29918fef1a6ad72e">armnn::GetStatusAsCString</a></div><div class="ttdeci">constexpr char const * GetStatusAsCString(Status status)</div><div class="ttdef"><b>Definition:</b> <a href="_types_utils_8hpp_source.html#l00017">TypesUtils.hpp:17</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="aa6d7532e14af97577c054f96d0cf23b3"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa6d7532e14af97577c054f96d0cf23b3">&#9670;&nbsp;</a></span>operator<<() <span class="overload">[8/8]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">std::ostream&amp; armnn::operator&lt;&lt; </td>
<td>(</td>
<td class="paramtype">std::ostream &amp;&#160;</td>
<td class="paramname"><em>os</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_shape.html">armnn::TensorShape</a> &amp;&#160;</td>
<td class="paramname"><em>shape</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_types_utils_8hpp_source.html#l00259">259</a> of file <a class="el" href="_types_utils_8hpp_source.html">TypesUtils.hpp</a>.</p>
<p class="reference">References <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4a9bc35e069257a508e14ed82965a8661d">Dequantize</a>, <a class="el" href="_tensor_8hpp_source.html#l00043">TensorShape::GetNumDimensions()</a>, and <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4aca39930e22f40d10155a57dba32240bb">Quantize</a>.</p>
<div class="fragment"><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160;{</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160; os &lt;&lt; <span class="stringliteral">&quot;[&quot;</span>;</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160; <span class="keywordflow">for</span> (uint32_t i=0; i&lt;shape.<a class="code" href="classarmnn_1_1_tensor_shape.html#a157e27d41e9f6b21f0d3c025fa47dc24">GetNumDimensions</a>(); ++i)</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160; {</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160; <span class="keywordflow">if</span> (i!=0)</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160; {</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160; os &lt;&lt; <span class="stringliteral">&quot;,&quot;</span>;</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160; }</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160; os &lt;&lt; shape[i];</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160; }</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160; os &lt;&lt; <span class="stringliteral">&quot;]&quot;</span>;</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160; <span class="keywordflow">return</span> os;</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160;}</div><div class="ttc" id="classarmnn_1_1_tensor_shape_html_a157e27d41e9f6b21f0d3c025fa47dc24"><div class="ttname"><a href="classarmnn_1_1_tensor_shape.html#a157e27d41e9f6b21f0d3c025fa47dc24">armnn::TensorShape::GetNumDimensions</a></div><div class="ttdeci">unsigned int GetNumDimensions() const</div><div class="ttdef"><b>Definition:</b> <a href="_tensor_8hpp_source.html#l00043">Tensor.hpp:43</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a8022a6869bffa6233fec784a471c1680"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a8022a6869bffa6233fec784a471c1680">&#9670;&nbsp;</a></span>operator>>() <span class="overload">[1/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">std::istream&amp; armnn::operator&gt;&gt; </td>
<td>(</td>
<td class="paramtype">std::istream &amp;&#160;</td>
<td class="paramname"><em>in</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacearmnn.html#ae2f04a162585c0a5222a537efd5456ae">armnn::Compute</a> &amp;&#160;</td>
<td class="paramname"><em>compute</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_inference_test_8hpp_source.html#l00019">19</a> of file <a class="el" href="_inference_test_8hpp_source.html">InferenceTest.hpp</a>.</p>
<p class="reference">References <a class="el" href="_types_utils_8hpp_source.html#l00145">ParseComputeDevice()</a>, and <a class="el" href="namespacearmnn.html#ae2f04a162585c0a5222a537efd5456aeaec0fc0100c4fc1ce4eea230c3dc10360">Undefined</a>.</p>
<div class="fragment"><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;{</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160; std::string token;</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160; in &gt;&gt; token;</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160; compute = <a class="code" href="namespacearmnn.html#a65645fa03bf8cddfb9d8a9f83beeb6e8">armnn::ParseComputeDevice</a>(token.c_str());</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160; <span class="keywordflow">if</span> (compute == <a class="code" href="namespacearmnn.html#ae2f04a162585c0a5222a537efd5456aeaec0fc0100c4fc1ce4eea230c3dc10360">armnn::Compute::Undefined</a>)</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; {</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; in.setstate(std::ios_base::failbit);</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; <span class="keywordflow">throw</span> boost::program_options::validation_error(boost::program_options::validation_error::invalid_option_value);</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; }</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; <span class="keywordflow">return</span> in;</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_ae2f04a162585c0a5222a537efd5456aeaec0fc0100c4fc1ce4eea230c3dc10360"><div class="ttname"><a href="namespacearmnn.html#ae2f04a162585c0a5222a537efd5456aeaec0fc0100c4fc1ce4eea230c3dc10360">armnn::Compute::Undefined</a></div></div>
<div class="ttc" id="namespacearmnn_html_a65645fa03bf8cddfb9d8a9f83beeb6e8"><div class="ttname"><a href="namespacearmnn.html#a65645fa03bf8cddfb9d8a9f83beeb6e8">armnn::ParseComputeDevice</a></div><div class="ttdeci">constexpr armnn::Compute ParseComputeDevice(const char *str)</div><div class="ttdef"><b>Definition:</b> <a href="_types_utils_8hpp_source.html#l00145">TypesUtils.hpp:145</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a3c51506c471a4513dcc3364514d75f39"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a3c51506c471a4513dcc3364514d75f39">&#9670;&nbsp;</a></span>operator>>() <span class="overload">[2/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">std::istream&amp; armnn::operator&gt;&gt; </td>
<td>(</td>
<td class="paramtype">std::istream &amp;&#160;</td>
<td class="paramname"><em>in</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classarmnn_1_1_backend_id.html">armnn::BackendId</a> &amp;&#160;</td>
<td class="paramname"><em>backend</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_inference_test_8hpp_source.html#l00032">32</a> of file <a class="el" href="_inference_test_8hpp_source.html">InferenceTest.hpp</a>.</p>
<p class="reference">References <a class="el" href="_types_utils_8hpp_source.html#l00145">ParseComputeDevice()</a>, and <a class="el" href="namespacearmnn.html#ae2f04a162585c0a5222a537efd5456aeaec0fc0100c4fc1ce4eea230c3dc10360">Undefined</a>.</p>
<div class="fragment"><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;{</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; std::string token;</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; in &gt;&gt; token;</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; <a class="code" href="namespacearmnn.html#ae2f04a162585c0a5222a537efd5456ae">armnn::Compute</a> compute = <a class="code" href="namespacearmnn.html#a65645fa03bf8cddfb9d8a9f83beeb6e8">armnn::ParseComputeDevice</a>(token.c_str());</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; <span class="keywordflow">if</span> (compute == <a class="code" href="namespacearmnn.html#ae2f04a162585c0a5222a537efd5456aeaec0fc0100c4fc1ce4eea230c3dc10360">armnn::Compute::Undefined</a>)</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; {</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; in.setstate(std::ios_base::failbit);</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; <span class="keywordflow">throw</span> boost::program_options::validation_error(boost::program_options::validation_error::invalid_option_value);</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; }</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; backend = compute;</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; <span class="keywordflow">return</span> in;</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_ae2f04a162585c0a5222a537efd5456aeaec0fc0100c4fc1ce4eea230c3dc10360"><div class="ttname"><a href="namespacearmnn.html#ae2f04a162585c0a5222a537efd5456aeaec0fc0100c4fc1ce4eea230c3dc10360">armnn::Compute::Undefined</a></div></div>
<div class="ttc" id="namespacearmnn_html_ae2f04a162585c0a5222a537efd5456ae"><div class="ttname"><a href="namespacearmnn.html#ae2f04a162585c0a5222a537efd5456ae">armnn::Compute</a></div><div class="ttdeci">Compute</div><div class="ttdef"><b>Definition:</b> <a href="_backend_id_8hpp_source.html#l00021">BackendId.hpp:21</a></div></div>
<div class="ttc" id="namespacearmnn_html_a65645fa03bf8cddfb9d8a9f83beeb6e8"><div class="ttname"><a href="namespacearmnn.html#a65645fa03bf8cddfb9d8a9f83beeb6e8">armnn::ParseComputeDevice</a></div><div class="ttdeci">constexpr armnn::Compute ParseComputeDevice(const char *str)</div><div class="ttdef"><b>Definition:</b> <a href="_types_utils_8hpp_source.html#l00145">TypesUtils.hpp:145</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a82e98ef05fd67036d1195ba17174d685"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a82e98ef05fd67036d1195ba17174d685">&#9670;&nbsp;</a></span>Optimize()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="namespacearmnn.html#a674efcf6cbdb9e831d653ff0e821fb38">IOptimizedNetworkPtr</a> Optimize </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_i_network.html">INetwork</a> &amp;&#160;</td>
<td class="paramname"><em>network</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const std::vector&lt; <a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a> &gt; &amp;&#160;</td>
<td class="paramname"><em>backendPreferences</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_i_device_spec.html">IDeviceSpec</a> &amp;&#160;</td>
<td class="paramname"><em>deviceSpec</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="structarmnn_1_1_optimizer_options.html">OptimizerOptions</a> &amp;&#160;</td>
<td class="paramname"><em>options</em> = <code><a class="el" href="structarmnn_1_1_optimizer_options.html">OptimizerOptions</a>()</code>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classarmnn_1_1_optional.html">Optional</a>&lt; std::vector&lt; std::string &gt; &amp;&gt;&#160;</td>
<td class="paramname"><em>messages</em> = <code><a class="el" href="structarmnn_1_1_empty_optional.html">EmptyOptional</a>()</code>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Create an optimized version of the network </p><dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">network</td><td><a class="el" href="classarmnn_1_1_i_network.html">INetwork</a> description of the network to be optimized. </td></tr>
<tr><td class="paramname">backendPreferences</td><td>The choice of the backend ordered by user preferences. </td></tr>
<tr><td class="paramname">deviceSpec</td><td><a class="el" href="classarmnn_1_1_device_spec.html">DeviceSpec</a> object as queried from the runtime. See <a class="el" href="classarmnn_1_1_i_runtime.html#a6f2ccbdacfac6eb983c519976a5ece54">IRuntime::GetDeviceSpec()</a> </td></tr>
<tr><td class="paramname">messages</td><td>If there are failures or warnings a string describing same will be added to the vector </td></tr>
<tr><td class="paramname">options</td><td><a class="el" href="structarmnn_1_1_optimizer_options.html">OptimizerOptions</a> object with optimizer configuration options </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>An IOptimizedNetworkPtr interface to the optimized network, throws an exception derived from <a class="el" href="classarmnn_1_1_exception.html" title="Base class for all ArmNN exceptions so that users can filter to just those. ">armnn::Exception</a> if process fails. </dd></dl>
<p class="definition">Definition at line <a class="el" href="_network_8cpp_source.html#l00807">807</a> of file <a class="el" href="_network_8cpp_source.html">Network.cpp</a>.</p>
<p class="reference">References <a class="el" href="_network_8cpp_source.html#l00345">ApplyBackendOptimizations()</a>, <a class="el" href="_deprecated_8hpp_source.html#l00033">ARMNN_NO_DEPRECATE_WARN_BEGIN</a>, <a class="el" href="_deprecated_8hpp_source.html#l00034">ARMNN_NO_DEPRECATE_WARN_END</a>, <a class="el" href="_network_8cpp_source.html#l00133">AssignBackends()</a>, <a class="el" href="_backend_registry_8cpp_source.html#l00013">BackendRegistryInstance()</a>, <a class="el" href="_network_8cpp_source.html#l00326">CreateSupportedBackends()</a>, <a class="el" href="_network_8cpp_source.html#l00058">IOptimizedNetwork::Destroy()</a>, <a class="el" href="_backend_settings_8hpp_source.html#l00063">BackendSettings::GetAvailablePreferredBackends()</a>, <a class="el" href="_backend_registry_8cpp_source.html#l00048">BackendRegistry::GetFactory()</a>, <a class="el" href="_network_8hpp_source.html#l00033">Network::GetGraph()</a>, <a class="el" href="_network_8hpp_source.html#l00272">OptimizedNetwork::GetGraph()</a>, <a class="el" href="_i_network_8hpp_source.html#l00576">OptimizerOptions::m_Debug</a>, <a class="el" href="_network_8hpp_source.html#l00284">OptimizationResult::m_Error</a>, <a class="el" href="_i_network_8hpp_source.html#l00573">OptimizerOptions::m_ReduceFp32ToFp16</a>, <a class="el" href="_backend_settings_8hpp_source.html#l00018">BackendSettings::m_SelectedBackends</a>, <a class="el" href="_backend_settings_8hpp_source.html#l00017">BackendSettings::m_SupportedBackends</a>, <a class="el" href="_optimizer_8hpp_source.html#l00043">MakeOptimizations()</a>, <a class="el" href="_optimizer_8cpp_source.html#l00016">Optimizer::Pass()</a>, <a class="el" href="_network_8cpp_source.html#l00074">ReportError()</a>, and <a class="el" href="_network_8cpp_source.html#l00741">SelectTensorHandleStrategy()</a>.</p>
<p class="reference">Referenced by <a class="el" href="_end_to_end_test_8cpp_source.html#l00017">BOOST_AUTO_TEST_CASE()</a>, <a class="el" href="armnn_tf_lite_parser_2test_2_detection_post_process_8cpp_source.html#l00226">BOOST_FIXTURE_TEST_CASE()</a>, <a class="el" href="_json_printer_test_impl_8cpp_source.html#l00120">GetSoftmaxProfilerJson()</a>, <a class="el" href="_inference_model_8hpp_source.html#l00371">InferenceModel&lt; IParser, TDataType &gt;::InferenceModel()</a>, <a class="el" href="_model_accuracy_tool-_armnn_8cpp_source.html#l00049">main()</a>, <a class="el" href="_quantized_lstm_end_to_end_test_impl_8cpp_source.html#l00179">QuantizedLstmEndToEnd()</a>, <a class="el" href="_network_quantizer_8cpp_source.html#l00060">NetworkQuantizer::Refine()</a>, <a class="el" href="_parser_prototxt_fixture_8hpp_source.html#l00121">ParserPrototxtFixture&lt; armnnOnnxParser::IOnnxParser &gt;::Setup()</a>, <a class="el" href="_parser_flatbuffers_serialize_fixture_8hpp_source.html#l00048">ParserFlatbuffersSerializeFixture::Setup()</a>, <a class="el" href="_parser_flatbuffers_fixture_8hpp_source.html#l00061">ParserFlatbuffersFixture::Setup()</a>, <a class="el" href="_parser_prototxt_fixture_8hpp_source.html#l00158">ParserPrototxtFixture&lt; armnnOnnxParser::IOnnxParser &gt;::SetupOptimizedNetwork()</a>, and <a class="el" href="_profiling_test_utils_8cpp_source.html#l00355">VerifyPostOptimisationStructureTestImpl()</a>.</p>
<div class="fragment"><div class="line"><a name="l00812"></a><span class="lineno"> 812</span>&#160;{</div><div class="line"><a name="l00813"></a><span class="lineno"> 813</span>&#160; <span class="keywordflow">if</span> (backendPreferences.empty())</div><div class="line"><a name="l00814"></a><span class="lineno"> 814</span>&#160; {</div><div class="line"><a name="l00815"></a><span class="lineno"> 815</span>&#160; <span class="keywordflow">throw</span> <a class="code" href="classarmnn_1_1_invalid_argument_exception.html">armnn::InvalidArgumentException</a>(<span class="stringliteral">&quot;Invoked Optimize with no backends specified&quot;</span>);</div><div class="line"><a name="l00816"></a><span class="lineno"> 816</span>&#160; }</div><div class="line"><a name="l00817"></a><span class="lineno"> 817</span>&#160;</div><div class="line"><a name="l00818"></a><span class="lineno"> 818</span>&#160; <span class="keyword">const</span> Network&amp; network = *boost::polymorphic_downcast&lt;const Network*&gt;(&amp;inNetwork);</div><div class="line"><a name="l00819"></a><span class="lineno"> 819</span>&#160; std::unique_ptr&lt;Graph&gt; graph = std::make_unique&lt;Graph&gt;(network.GetGraph());</div><div class="line"><a name="l00820"></a><span class="lineno"> 820</span>&#160;</div><div class="line"><a name="l00821"></a><span class="lineno"> 821</span>&#160; <span class="keyword">auto</span> optNet = <a class="code" href="namespacearmnn.html#a674efcf6cbdb9e831d653ff0e821fb38">IOptimizedNetworkPtr</a>(<span class="keyword">new</span> OptimizedNetwork(std::move(graph)), &amp;IOptimizedNetwork::Destroy);</div><div class="line"><a name="l00822"></a><span class="lineno"> 822</span>&#160;</div><div class="line"><a name="l00823"></a><span class="lineno"> 823</span>&#160; OptimizedNetwork* optNetObjPtr = boost::polymorphic_downcast&lt;OptimizedNetwork*&gt;(optNet.get());</div><div class="line"><a name="l00824"></a><span class="lineno"> 824</span>&#160;</div><div class="line"><a name="l00825"></a><span class="lineno"> 825</span>&#160; <span class="comment">// Get the optimized graph</span></div><div class="line"><a name="l00826"></a><span class="lineno"> 826</span>&#160; Graph&amp; optGraph = optNetObjPtr-&gt;GetGraph();</div><div class="line"><a name="l00827"></a><span class="lineno"> 827</span>&#160;</div><div class="line"><a name="l00828"></a><span class="lineno"> 828</span>&#160; <span class="comment">// Perform optimisation passes</span></div><div class="line"><a name="l00829"></a><span class="lineno"> 829</span>&#160; <span class="keyword">using namespace </span>optimizations;</div><div class="line"><a name="l00830"></a><span class="lineno"> 830</span>&#160; Optimizer::Pass(optGraph, <a class="code" href="namespacearmnn.html#aa7427025a851113a492de0b68b23d22a">MakeOptimizations</a>(<a class="code" href="namespacearmnn_1_1optimizations.html#a64ddffb38fbe5b78ec92b753cd4bd0ba">SquashEqualPermuteSiblings</a>(),</div><div class="line"><a name="l00831"></a><span class="lineno"> 831</span>&#160; <a class="code" href="namespacearmnn_1_1optimizations.html#a29f8d97b2d74f99c88298881cd1d825b">SquashEqualReshapeSiblings</a>(),</div><div class="line"><a name="l00832"></a><span class="lineno"> 832</span>&#160; <a class="code" href="namespacearmnn_1_1optimizations.html#af47c417d1521c024d0a9885924da3797">OptimizeInversePermutes</a>(),</div><div class="line"><a name="l00833"></a><span class="lineno"> 833</span>&#160; <a class="code" href="namespacearmnn_1_1optimizations.html#aafc70d5af99400ff5ea7991825658b2f">MovePermuteUp</a>(),</div><div class="line"><a name="l00834"></a><span class="lineno"> 834</span>&#160; <a class="code" href="namespacearmnn_1_1optimizations.html#ae0b1382e3af141896a46531c50e8863f">PermuteAsReshape</a>(),</div><div class="line"><a name="l00835"></a><span class="lineno"> 835</span>&#160; <a class="code" href="namespacearmnn_1_1optimizations.html#a8341ca3512ebafb19d60eba44d40d9e4">OptimizeConsecutiveReshapes</a>(),</div><div class="line"><a name="l00836"></a><span class="lineno"> 836</span>&#160; <a class="code" href="namespacearmnn_1_1optimizations.html#add2180a15cdcf5a229de32bb956cb224">FoldPadIntoConvolution2d</a>(),</div><div class="line"><a name="l00837"></a><span class="lineno"> 837</span>&#160; <a class="code" href="namespacearmnn_1_1optimizations.html#a820df8da5229f50ca7d4d11cb74def2c">PermuteAndBatchToSpaceAsDepthToSpace</a>()));</div><div class="line"><a name="l00838"></a><span class="lineno"> 838</span>&#160;</div><div class="line"><a name="l00839"></a><span class="lineno"> 839</span>&#160; <span class="comment">// Infer the tensor infos for all output slots. Throws an exception on failure</span></div><div class="line"><a name="l00840"></a><span class="lineno"> 840</span>&#160; optGraph.InferTensorInfos();</div><div class="line"><a name="l00841"></a><span class="lineno"> 841</span>&#160;</div><div class="line"><a name="l00842"></a><span class="lineno"> 842</span>&#160; <span class="comment">// If Fp32 to Fp16 optimization is set convert Fp32 network to Fp16</span></div><div class="line"><a name="l00843"></a><span class="lineno"> 843</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="_file_only_profiling_decorator_tests_8cpp.html#a6560146509197f3e197d8d36f76c1347">options</a>.m_ReduceFp32ToFp16)</div><div class="line"><a name="l00844"></a><span class="lineno"> 844</span>&#160; {</div><div class="line"><a name="l00845"></a><span class="lineno"> 845</span>&#160; Optimizer::Pass(optGraph, <a class="code" href="namespacearmnn.html#aa7427025a851113a492de0b68b23d22a">MakeOptimizations</a>(<a class="code" href="namespacearmnn_1_1optimizations.html#a86d19da62b6cfed3928f6fe7026f22fa">Fp32NetworkToFp16Converter</a>()));</div><div class="line"><a name="l00846"></a><span class="lineno"> 846</span>&#160; Optimizer::Pass(optGraph, <a class="code" href="namespacearmnn.html#aa7427025a851113a492de0b68b23d22a">MakeOptimizations</a>(<a class="code" href="namespacearmnn_1_1optimizations.html#a226cef3d775179e25ee35d231f4e8fae">ConvertConstantsFloatToHalf</a>()));</div><div class="line"><a name="l00847"></a><span class="lineno"> 847</span>&#160; }</div><div class="line"><a name="l00848"></a><span class="lineno"> 848</span>&#160;</div><div class="line"><a name="l00849"></a><span class="lineno"> 849</span>&#160; <span class="comment">// Initialize backend settings</span></div><div class="line"><a name="l00850"></a><span class="lineno"> 850</span>&#160; BackendSettings backendSettings(backendPreferences, deviceSpec);</div><div class="line"><a name="l00851"></a><span class="lineno"> 851</span>&#160; <span class="keywordflow">if</span> (backendSettings.GetAvailablePreferredBackends().empty())</div><div class="line"><a name="l00852"></a><span class="lineno"> 852</span>&#160; {</div><div class="line"><a name="l00853"></a><span class="lineno"> 853</span>&#160; std::stringstream failureMsg;</div><div class="line"><a name="l00854"></a><span class="lineno"> 854</span>&#160; failureMsg &lt;&lt; <span class="stringliteral">&quot;None of the preferred backends &quot;</span> &lt;&lt; backendPreferences</div><div class="line"><a name="l00855"></a><span class="lineno"> 855</span>&#160; &lt;&lt; <span class="stringliteral">&quot; are supported. Current platform provides &quot;</span> &lt;&lt; backendSettings.m_SupportedBackends;</div><div class="line"><a name="l00856"></a><span class="lineno"> 856</span>&#160; <a class="code" href="namespacearmnn.html#a7658f93d899c8646515a29370e6aa994">ReportError</a>(failureMsg.str(), messages);</div><div class="line"><a name="l00857"></a><span class="lineno"> 857</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespacearmnn.html#a674efcf6cbdb9e831d653ff0e821fb38">IOptimizedNetworkPtr</a>(<span class="keyword">nullptr</span>, &amp;IOptimizedNetwork::Destroy);</div><div class="line"><a name="l00858"></a><span class="lineno"> 858</span>&#160; }</div><div class="line"><a name="l00859"></a><span class="lineno"> 859</span>&#160;</div><div class="line"><a name="l00860"></a><span class="lineno"> 860</span>&#160; <span class="comment">// Create a map to temporarily hold initialized backend objects</span></div><div class="line"><a name="l00861"></a><span class="lineno"> 861</span>&#160; TensorHandleFactoryRegistry tensorHandleFactoryRegistry;</div><div class="line"><a name="l00862"></a><span class="lineno"> 862</span>&#160; <a class="code" href="namespacearmnn.html#a9173495a61a0092b5f38b855f02c3585">BackendsMap</a> backends = <a class="code" href="namespacearmnn.html#a1ec6b4c20ed294a96cf94c33c24caaf5">CreateSupportedBackends</a>(tensorHandleFactoryRegistry, backendSettings);</div><div class="line"><a name="l00863"></a><span class="lineno"> 863</span>&#160;</div><div class="line"><a name="l00864"></a><span class="lineno"> 864</span>&#160; <span class="comment">// Assign an available backend to each layer</span></div><div class="line"><a name="l00865"></a><span class="lineno"> 865</span>&#160; Graph::Iterator firstLayer = optGraph.begin();</div><div class="line"><a name="l00866"></a><span class="lineno"> 866</span>&#160; Graph::Iterator lastLayer = optGraph.end();</div><div class="line"><a name="l00867"></a><span class="lineno"> 867</span>&#160; OptimizationResult assignBackendsResult = <a class="code" href="namespacearmnn.html#a76dca645d0d0665f74e171bbc1901469">AssignBackends</a>(optNetObjPtr,</div><div class="line"><a name="l00868"></a><span class="lineno"> 868</span>&#160; backendSettings,</div><div class="line"><a name="l00869"></a><span class="lineno"> 869</span>&#160; firstLayer,</div><div class="line"><a name="l00870"></a><span class="lineno"> 870</span>&#160; lastLayer,</div><div class="line"><a name="l00871"></a><span class="lineno"> 871</span>&#160; messages);</div><div class="line"><a name="l00872"></a><span class="lineno"> 872</span>&#160; <span class="keywordflow">if</span> (assignBackendsResult.m_Error)</div><div class="line"><a name="l00873"></a><span class="lineno"> 873</span>&#160; {</div><div class="line"><a name="l00874"></a><span class="lineno"> 874</span>&#160; <span class="comment">// Failed to assign a backend to each layer</span></div><div class="line"><a name="l00875"></a><span class="lineno"> 875</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespacearmnn.html#a674efcf6cbdb9e831d653ff0e821fb38">IOptimizedNetworkPtr</a>(<span class="keyword">nullptr</span>, &amp;IOptimizedNetwork::Destroy);</div><div class="line"><a name="l00876"></a><span class="lineno"> 876</span>&#160; }</div><div class="line"><a name="l00877"></a><span class="lineno"> 877</span>&#160;</div><div class="line"><a name="l00878"></a><span class="lineno"> 878</span>&#160; Optimizer::Pass(optGraph, <a class="code" href="namespacearmnn.html#aa7427025a851113a492de0b68b23d22a">MakeOptimizations</a>(<a class="code" href="namespacearmnn_1_1optimizations.html#a1a9d718b48612b5817a3c369f9fd71ee">OptimizeInverseConversionsFp16</a>(),</div><div class="line"><a name="l00879"></a><span class="lineno"> 879</span>&#160; <a class="code" href="namespacearmnn_1_1optimizations.html#ae1509d340bc981b11101c3316ee8afd6">OptimizeInverseConversionsFp32</a>()));</div><div class="line"><a name="l00880"></a><span class="lineno"> 880</span>&#160;</div><div class="line"><a name="l00881"></a><span class="lineno"> 881</span>&#160; <span class="comment">// Apply the backend-specific optimizations</span></div><div class="line"><a name="l00882"></a><span class="lineno"> 882</span>&#160; OptimizationResult backendOptimizationResult = <a class="code" href="namespacearmnn.html#ae97734279fd10b4c754cc15bc8ed9dad">ApplyBackendOptimizations</a>(optNetObjPtr,</div><div class="line"><a name="l00883"></a><span class="lineno"> 883</span>&#160; backendSettings,</div><div class="line"><a name="l00884"></a><span class="lineno"> 884</span>&#160; backends,</div><div class="line"><a name="l00885"></a><span class="lineno"> 885</span>&#160; messages);</div><div class="line"><a name="l00886"></a><span class="lineno"> 886</span>&#160; <span class="keywordflow">if</span> (backendOptimizationResult.m_Error)</div><div class="line"><a name="l00887"></a><span class="lineno"> 887</span>&#160; {</div><div class="line"><a name="l00888"></a><span class="lineno"> 888</span>&#160; <span class="comment">// Failed to apply the backend-specific optimizations</span></div><div class="line"><a name="l00889"></a><span class="lineno"> 889</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespacearmnn.html#a674efcf6cbdb9e831d653ff0e821fb38">IOptimizedNetworkPtr</a>(<span class="keyword">nullptr</span>, &amp;IOptimizedNetwork::Destroy);</div><div class="line"><a name="l00890"></a><span class="lineno"> 890</span>&#160; }</div><div class="line"><a name="l00891"></a><span class="lineno"> 891</span>&#160;</div><div class="line"><a name="l00892"></a><span class="lineno"> 892</span>&#160; <span class="comment">// If the debug flag is set, then insert a DebugLayer after each layer</span></div><div class="line"><a name="l00893"></a><span class="lineno"> 893</span>&#160; <span class="comment">// Doing this after applying the backend optimizations as they might have changed some layers</span></div><div class="line"><a name="l00894"></a><span class="lineno"> 894</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="_file_only_profiling_decorator_tests_8cpp.html#a6560146509197f3e197d8d36f76c1347">options</a>.m_Debug)</div><div class="line"><a name="l00895"></a><span class="lineno"> 895</span>&#160; {</div><div class="line"><a name="l00896"></a><span class="lineno"> 896</span>&#160; Optimizer::Pass(optGraph, <a class="code" href="namespacearmnn.html#aa7427025a851113a492de0b68b23d22a">MakeOptimizations</a>(<a class="code" href="namespacearmnn_1_1optimizations.html#aa76c76565125ad77092403176d74fd85">InsertDebugLayer</a>()));</div><div class="line"><a name="l00897"></a><span class="lineno"> 897</span>&#160; }</div><div class="line"><a name="l00898"></a><span class="lineno"> 898</span>&#160;</div><div class="line"><a name="l00899"></a><span class="lineno"> 899</span>&#160; <span class="comment">// Calculate the compatibility strategies for tensor handles</span></div><div class="line"><a name="l00900"></a><span class="lineno"> 900</span>&#160; OptimizationResult strategyResult = <a class="code" href="namespacearmnn.html#a5d3468fb5880eb444cd25b55a86220ff">SelectTensorHandleStrategy</a>(optGraph,</div><div class="line"><a name="l00901"></a><span class="lineno"> 901</span>&#160; backends,</div><div class="line"><a name="l00902"></a><span class="lineno"> 902</span>&#160; tensorHandleFactoryRegistry,</div><div class="line"><a name="l00903"></a><span class="lineno"> 903</span>&#160; messages);</div><div class="line"><a name="l00904"></a><span class="lineno"> 904</span>&#160; <span class="keywordflow">if</span> (strategyResult.m_Error)</div><div class="line"><a name="l00905"></a><span class="lineno"> 905</span>&#160; {</div><div class="line"><a name="l00906"></a><span class="lineno"> 906</span>&#160; <span class="comment">// Failed to apply the backend-specific optimizations</span></div><div class="line"><a name="l00907"></a><span class="lineno"> 907</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespacearmnn.html#a674efcf6cbdb9e831d653ff0e821fb38">IOptimizedNetworkPtr</a>(<span class="keyword">nullptr</span>, &amp;IOptimizedNetwork::Destroy);</div><div class="line"><a name="l00908"></a><span class="lineno"> 908</span>&#160; }</div><div class="line"><a name="l00909"></a><span class="lineno"> 909</span>&#160;</div><div class="line"><a name="l00910"></a><span class="lineno"> 910</span>&#160; <span class="comment">// Based on the tensor handle strategy determined above, insert copy layers where required.</span></div><div class="line"><a name="l00911"></a><span class="lineno"> 911</span>&#160; optGraph.AddCompatibilityLayers(backends, tensorHandleFactoryRegistry);</div><div class="line"><a name="l00912"></a><span class="lineno"> 912</span>&#160;</div><div class="line"><a name="l00913"></a><span class="lineno"> 913</span>&#160; <span class="comment">// Convert constants</span></div><div class="line"><a name="l00914"></a><span class="lineno"> 914</span>&#160; Optimizer::Pass(optGraph, <a class="code" href="namespacearmnn.html#aa7427025a851113a492de0b68b23d22a">MakeOptimizations</a>(<a class="code" href="namespacearmnn_1_1optimizations.html#a226cef3d775179e25ee35d231f4e8fae">ConvertConstantsFloatToHalf</a>()));</div><div class="line"><a name="l00915"></a><span class="lineno"> 915</span>&#160; Optimizer::Pass(optGraph, <a class="code" href="namespacearmnn.html#aa7427025a851113a492de0b68b23d22a">MakeOptimizations</a>(<a class="code" href="namespacearmnn_1_1optimizations.html#a06cac66872538895dd6b59cdf39173d2">ConvertConstantsHalfToFloat</a>()));</div><div class="line"><a name="l00916"></a><span class="lineno"> 916</span>&#160;</div><div class="line"><a name="l00917"></a><span class="lineno"> 917</span>&#160; <span class="comment">// Run backend specific optimizations (deprecated)</span></div><div class="line"><a name="l00918"></a><span class="lineno"> 918</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span>&amp;&amp; chosenBackend : backendSettings.m_SelectedBackends)</div><div class="line"><a name="l00919"></a><span class="lineno"> 919</span>&#160; {</div><div class="line"><a name="l00920"></a><span class="lineno"> 920</span>&#160; <span class="keyword">auto</span> factoryFun = <a class="code" href="namespacearmnn.html#ac2807505b850738bc8a1991ce669dd47">BackendRegistryInstance</a>().<a class="code" href="classarmnn_1_1_backend_registry.html#afc0c63ca8db8957b58826f6d7bd231b2">GetFactory</a>(chosenBackend);</div><div class="line"><a name="l00921"></a><span class="lineno"> 921</span>&#160; <span class="keyword">auto</span> backendPtr = factoryFun();</div><div class="line"><a name="l00922"></a><span class="lineno"> 922</span>&#160; BOOST_ASSERT(backendPtr.get() != <span class="keyword">nullptr</span>);</div><div class="line"><a name="l00923"></a><span class="lineno"> 923</span>&#160;</div><div class="line"><a name="l00924"></a><span class="lineno"> 924</span>&#160; <a class="code" href="_deprecated_8hpp.html#ab66a241a0ed3ee89c866e777b035d0ed">ARMNN_NO_DEPRECATE_WARN_BEGIN</a></div><div class="line"><a name="l00925"></a><span class="lineno"> 925</span>&#160; <span class="keyword">auto</span> backendSpecificOptimizations = backendPtr-&gt;GetOptimizations();</div><div class="line"><a name="l00926"></a><span class="lineno"> 926</span>&#160; <a class="code" href="_deprecated_8hpp.html#ad762b11b48e5c1d1c1743f529485728a">ARMNN_NO_DEPRECATE_WARN_END</a></div><div class="line"><a name="l00927"></a><span class="lineno"> 927</span>&#160;</div><div class="line"><a name="l00928"></a><span class="lineno"> 928</span>&#160; <span class="keywordflow">if</span> (!backendSpecificOptimizations.empty())</div><div class="line"><a name="l00929"></a><span class="lineno"> 929</span>&#160; {</div><div class="line"><a name="l00930"></a><span class="lineno"> 930</span>&#160; Optimizer::Pass(optNetObjPtr-&gt;GetGraph(), backendSpecificOptimizations);</div><div class="line"><a name="l00931"></a><span class="lineno"> 931</span>&#160; }</div><div class="line"><a name="l00932"></a><span class="lineno"> 932</span>&#160; }</div><div class="line"><a name="l00933"></a><span class="lineno"> 933</span>&#160;</div><div class="line"><a name="l00934"></a><span class="lineno"> 934</span>&#160; <span class="keywordflow">return</span> optNet;</div><div class="line"><a name="l00935"></a><span class="lineno"> 935</span>&#160;}</div><div class="ttc" id="namespacearmnn_1_1optimizations_html_a29f8d97b2d74f99c88298881cd1d825b"><div class="ttname"><a href="namespacearmnn_1_1optimizations.html#a29f8d97b2d74f99c88298881cd1d825b">armnn::optimizations::SquashEqualReshapeSiblings</a></div><div class="ttdeci">OptimizeForConnection&lt; Layer, ReshapeLayer, SquashEqualSiblingsImpl&lt; ReshapeLayer &gt; &gt; SquashEqualReshapeSiblings</div><div class="ttdef"><b>Definition:</b> <a href="_squash_equal_siblings_8hpp_source.html#l00067">SquashEqualSiblings.hpp:67</a></div></div>
<div class="ttc" id="classarmnn_1_1_backend_registry_html_afc0c63ca8db8957b58826f6d7bd231b2"><div class="ttname"><a href="classarmnn_1_1_backend_registry.html#afc0c63ca8db8957b58826f6d7bd231b2">armnn::BackendRegistry::GetFactory</a></div><div class="ttdeci">FactoryFunction GetFactory(const BackendId &amp;id) const</div><div class="ttdef"><b>Definition:</b> <a href="_backend_registry_8cpp_source.html#l00048">BackendRegistry.cpp:48</a></div></div>
<div class="ttc" id="namespacearmnn_html_a1ec6b4c20ed294a96cf94c33c24caaf5"><div class="ttname"><a href="namespacearmnn.html#a1ec6b4c20ed294a96cf94c33c24caaf5">armnn::CreateSupportedBackends</a></div><div class="ttdeci">BackendsMap CreateSupportedBackends(TensorHandleFactoryRegistry &amp;handleFactoryRegistry, BackendSettings &amp;backendSettings)</div><div class="ttdef"><b>Definition:</b> <a href="_network_8cpp_source.html#l00326">Network.cpp:326</a></div></div>
<div class="ttc" id="namespacearmnn_1_1optimizations_html_a226cef3d775179e25ee35d231f4e8fae"><div class="ttname"><a href="namespacearmnn_1_1optimizations.html#a226cef3d775179e25ee35d231f4e8fae">armnn::optimizations::ConvertConstantsFloatToHalf</a></div><div class="ttdeci">ConvertConstants&lt; Float32ToFloat16, IsFloat16Layer &gt; ConvertConstantsFloatToHalf</div><div class="ttdef"><b>Definition:</b> <a href="_convert_constants_8hpp_source.html#l00101">ConvertConstants.hpp:101</a></div></div>
<div class="ttc" id="namespacearmnn_1_1optimizations_html_a820df8da5229f50ca7d4d11cb74def2c"><div class="ttname"><a href="namespacearmnn_1_1optimizations.html#a820df8da5229f50ca7d4d11cb74def2c">armnn::optimizations::PermuteAndBatchToSpaceAsDepthToSpace</a></div><div class="ttdeci">OptimizeForConnection&lt; PermuteLayer, BatchToSpaceNdLayer, PermuteAndBatchToSpaceAsDepthToSpaceImpl &gt; PermuteAndBatchToSpaceAsDepthToSpace</div><div class="ttdef"><b>Definition:</b> <a href="_permute_and_batch_to_space_as_depth_to_space_8hpp_source.html#l00024">PermuteAndBatchToSpaceAsDepthToSpace.hpp:24</a></div></div>
<div class="ttc" id="namespacearmnn_1_1optimizations_html_ae1509d340bc981b11101c3316ee8afd6"><div class="ttname"><a href="namespacearmnn_1_1optimizations.html#ae1509d340bc981b11101c3316ee8afd6">armnn::optimizations::OptimizeInverseConversionsFp32</a></div><div class="ttdeci">OptimizeForConnection&lt; ConvertFp32ToFp16Layer, ConvertFp16ToFp32Layer, OptimizeInverseConversionsImpl &gt; OptimizeInverseConversionsFp32</div><div class="ttdef"><b>Definition:</b> <a href="_optimize_inverse_conversions_8hpp_source.html#l00044">OptimizeInverseConversions.hpp:44</a></div></div>
<div class="ttc" id="namespacearmnn_1_1optimizations_html_a8341ca3512ebafb19d60eba44d40d9e4"><div class="ttname"><a href="namespacearmnn_1_1optimizations.html#a8341ca3512ebafb19d60eba44d40d9e4">armnn::optimizations::OptimizeConsecutiveReshapes</a></div><div class="ttdeci">OptimizeForConnection&lt; ReshapeLayer, ReshapeLayer, OptimizeConsecutiveReshapesImpl &gt; OptimizeConsecutiveReshapes</div><div class="ttdef"><b>Definition:</b> <a href="_optimize_consecutive_reshapes_8hpp_source.html#l00063">OptimizeConsecutiveReshapes.hpp:63</a></div></div>
<div class="ttc" id="namespacearmnn_1_1optimizations_html_a86d19da62b6cfed3928f6fe7026f22fa"><div class="ttname"><a href="namespacearmnn_1_1optimizations.html#a86d19da62b6cfed3928f6fe7026f22fa">armnn::optimizations::Fp32NetworkToFp16Converter</a></div><div class="ttdeci">OptimizeForType&lt; Layer, ConvertFp32NetworkToFp16Impl &gt; Fp32NetworkToFp16Converter</div><div class="ttdef"><b>Definition:</b> <a href="_convert_fp32_network_to_fp16_8hpp_source.html#l00078">ConvertFp32NetworkToFp16.hpp:78</a></div></div>
<div class="ttc" id="namespacearmnn_1_1optimizations_html_add2180a15cdcf5a229de32bb956cb224"><div class="ttname"><a href="namespacearmnn_1_1optimizations.html#add2180a15cdcf5a229de32bb956cb224">armnn::optimizations::FoldPadIntoConvolution2d</a></div><div class="ttdeci">OptimizeForConnection&lt; PadLayer, Convolution2dLayer, FoldPadIntoConvolution2dImpl &gt; FoldPadIntoConvolution2d</div><div class="ttdef"><b>Definition:</b> <a href="_fold_pad_into_convolution2d_8hpp_source.html#l00088">FoldPadIntoConvolution2d.hpp:88</a></div></div>
<div class="ttc" id="classarmnn_1_1_invalid_argument_exception_html"><div class="ttname"><a href="classarmnn_1_1_invalid_argument_exception.html">armnn::InvalidArgumentException</a></div><div class="ttdef"><b>Definition:</b> <a href="_exceptions_8hpp_source.html#l00080">Exceptions.hpp:80</a></div></div>
<div class="ttc" id="namespacearmnn_html_a5d3468fb5880eb444cd25b55a86220ff"><div class="ttname"><a href="namespacearmnn.html#a5d3468fb5880eb444cd25b55a86220ff">armnn::SelectTensorHandleStrategy</a></div><div class="ttdeci">OptimizationResult SelectTensorHandleStrategy(Graph &amp;optGraph, BackendsMap &amp;backends, TensorHandleFactoryRegistry &amp;registry, Optional&lt; std::vector&lt; std::string &gt; &amp;&gt; errMessages)</div><div class="ttdef"><b>Definition:</b> <a href="_network_8cpp_source.html#l00741">Network.cpp:741</a></div></div>
<div class="ttc" id="namespacearmnn_1_1optimizations_html_aafc70d5af99400ff5ea7991825658b2f"><div class="ttname"><a href="namespacearmnn_1_1optimizations.html#aafc70d5af99400ff5ea7991825658b2f">armnn::optimizations::MovePermuteUp</a></div><div class="ttdeci">OptimizeForConnection&lt; Layer, PermuteLayer, MovePermuteUpImpl &gt; MovePermuteUp</div><div class="ttdef"><b>Definition:</b> <a href="_move_permute_up_8hpp_source.html#l00080">MovePermuteUp.hpp:80</a></div></div>
<div class="ttc" id="namespacearmnn_1_1optimizations_html_a06cac66872538895dd6b59cdf39173d2"><div class="ttname"><a href="namespacearmnn_1_1optimizations.html#a06cac66872538895dd6b59cdf39173d2">armnn::optimizations::ConvertConstantsHalfToFloat</a></div><div class="ttdeci">ConvertConstants&lt; Float16ToFloat32, IsFloat32Layer &gt; ConvertConstantsHalfToFloat</div><div class="ttdef"><b>Definition:</b> <a href="_convert_constants_8hpp_source.html#l00100">ConvertConstants.hpp:100</a></div></div>
<div class="ttc" id="_deprecated_8hpp_html_ab66a241a0ed3ee89c866e777b035d0ed"><div class="ttname"><a href="_deprecated_8hpp.html#ab66a241a0ed3ee89c866e777b035d0ed">ARMNN_NO_DEPRECATE_WARN_BEGIN</a></div><div class="ttdeci">#define ARMNN_NO_DEPRECATE_WARN_BEGIN</div><div class="ttdef"><b>Definition:</b> <a href="_deprecated_8hpp_source.html#l00033">Deprecated.hpp:33</a></div></div>
<div class="ttc" id="namespacearmnn_html_ac2807505b850738bc8a1991ce669dd47"><div class="ttname"><a href="namespacearmnn.html#ac2807505b850738bc8a1991ce669dd47">armnn::BackendRegistryInstance</a></div><div class="ttdeci">BackendRegistry &amp; BackendRegistryInstance()</div><div class="ttdef"><b>Definition:</b> <a href="_backend_registry_8cpp_source.html#l00013">BackendRegistry.cpp:13</a></div></div>
<div class="ttc" id="namespacearmnn_html_a9173495a61a0092b5f38b855f02c3585"><div class="ttname"><a href="namespacearmnn.html#a9173495a61a0092b5f38b855f02c3585">armnn::BackendsMap</a></div><div class="ttdeci">std::map&lt; BackendId, std::unique_ptr&lt; class IBackendInternal &gt; &gt; BackendsMap</div><div class="ttdef"><b>Definition:</b> <a href="_network_8hpp_source.html#l00292">Network.hpp:292</a></div></div>
<div class="ttc" id="namespacearmnn_1_1optimizations_html_a64ddffb38fbe5b78ec92b753cd4bd0ba"><div class="ttname"><a href="namespacearmnn_1_1optimizations.html#a64ddffb38fbe5b78ec92b753cd4bd0ba">armnn::optimizations::SquashEqualPermuteSiblings</a></div><div class="ttdeci">OptimizeForConnection&lt; Layer, PermuteLayer, SquashEqualSiblingsImpl&lt; PermuteLayer &gt; &gt; SquashEqualPermuteSiblings</div><div class="ttdef"><b>Definition:</b> <a href="_squash_equal_siblings_8hpp_source.html#l00066">SquashEqualSiblings.hpp:66</a></div></div>
<div class="ttc" id="namespacearmnn_1_1optimizations_html_a1a9d718b48612b5817a3c369f9fd71ee"><div class="ttname"><a href="namespacearmnn_1_1optimizations.html#a1a9d718b48612b5817a3c369f9fd71ee">armnn::optimizations::OptimizeInverseConversionsFp16</a></div><div class="ttdeci">OptimizeForConnection&lt; ConvertFp16ToFp32Layer, ConvertFp32ToFp16Layer, OptimizeInverseConversionsImpl &gt; OptimizeInverseConversionsFp16</div><div class="ttdef"><b>Definition:</b> <a href="_optimize_inverse_conversions_8hpp_source.html#l00042">OptimizeInverseConversions.hpp:42</a></div></div>
<div class="ttc" id="namespacearmnn_html_a7658f93d899c8646515a29370e6aa994"><div class="ttname"><a href="namespacearmnn.html#a7658f93d899c8646515a29370e6aa994">armnn::ReportError</a></div><div class="ttdeci">void ReportError(const std::string &amp;errorMessage, Optional&lt; std::vector&lt; std::string &gt; &amp;&gt; errorMessages)</div><div class="ttdef"><b>Definition:</b> <a href="_network_8cpp_source.html#l00074">Network.cpp:74</a></div></div>
<div class="ttc" id="namespacearmnn_html_aa7427025a851113a492de0b68b23d22a"><div class="ttname"><a href="namespacearmnn.html#aa7427025a851113a492de0b68b23d22a">armnn::MakeOptimizations</a></div><div class="ttdeci">Optimizer::Optimizations MakeOptimizations(Args &amp;&amp;... args)</div><div class="ttdef"><b>Definition:</b> <a href="_optimizer_8hpp_source.html#l00043">Optimizer.hpp:43</a></div></div>
<div class="ttc" id="namespacearmnn_html_ae97734279fd10b4c754cc15bc8ed9dad"><div class="ttname"><a href="namespacearmnn.html#ae97734279fd10b4c754cc15bc8ed9dad">armnn::ApplyBackendOptimizations</a></div><div class="ttdeci">OptimizationResult ApplyBackendOptimizations(OptimizedNetwork *optNetObjPtr, BackendSettings &amp;backendSettings, BackendsMap &amp;backends, Optional&lt; std::vector&lt; std::string &gt; &amp;&gt; errMessages)</div><div class="ttdef"><b>Definition:</b> <a href="_network_8cpp_source.html#l00345">Network.cpp:345</a></div></div>
<div class="ttc" id="namespacearmnn_html_a76dca645d0d0665f74e171bbc1901469"><div class="ttname"><a href="namespacearmnn.html#a76dca645d0d0665f74e171bbc1901469">armnn::AssignBackends</a></div><div class="ttdeci">OptimizationResult AssignBackends(OptimizedNetwork *optNetObjPtr, BackendSettings &amp;backendSettings, SubgraphView &amp;subgraph, Optional&lt; std::vector&lt; std::string &gt; &amp;&gt; errMessages)</div><div class="ttdef"><b>Definition:</b> <a href="_network_8cpp_source.html#l00312">Network.cpp:312</a></div></div>
<div class="ttc" id="namespacearmnn_html_a674efcf6cbdb9e831d653ff0e821fb38"><div class="ttname"><a href="namespacearmnn.html#a674efcf6cbdb9e831d653ff0e821fb38">armnn::IOptimizedNetworkPtr</a></div><div class="ttdeci">std::unique_ptr&lt; IOptimizedNetwork, void(*)(IOptimizedNetwork *network)&gt; IOptimizedNetworkPtr</div><div class="ttdef"><b>Definition:</b> <a href="_i_network_8hpp_source.html#l00544">INetwork.hpp:544</a></div></div>
<div class="ttc" id="_file_only_profiling_decorator_tests_8cpp_html_a6560146509197f3e197d8d36f76c1347"><div class="ttname"><a href="_file_only_profiling_decorator_tests_8cpp.html#a6560146509197f3e197d8d36f76c1347">options</a></div><div class="ttdeci">armnn::Runtime::CreationOptions::ExternalProfilingOptions options</div><div class="ttdef"><b>Definition:</b> <a href="_file_only_profiling_decorator_tests_8cpp_source.html#l00045">FileOnlyProfilingDecoratorTests.cpp:45</a></div></div>
<div class="ttc" id="namespacearmnn_1_1optimizations_html_aa76c76565125ad77092403176d74fd85"><div class="ttname"><a href="namespacearmnn_1_1optimizations.html#aa76c76565125ad77092403176d74fd85">armnn::optimizations::InsertDebugLayer</a></div><div class="ttdeci">OptimizeForType&lt; Layer, AddDebugImpl &gt; InsertDebugLayer</div><div class="ttdef"><b>Definition:</b> <a href="_add_debug_8hpp_source.html#l00034">AddDebug.hpp:34</a></div></div>
<div class="ttc" id="namespacearmnn_1_1optimizations_html_af47c417d1521c024d0a9885924da3797"><div class="ttname"><a href="namespacearmnn_1_1optimizations.html#af47c417d1521c024d0a9885924da3797">armnn::optimizations::OptimizeInversePermutes</a></div><div class="ttdeci">OptimizeForConnection&lt; PermuteLayer, PermuteLayer, OptimizeInversePermutesImpl &gt; OptimizeInversePermutes</div><div class="ttdef"><b>Definition:</b> <a href="_optimize_inverse_permutes_8hpp_source.html#l00040">OptimizeInversePermutes.hpp:40</a></div></div>
<div class="ttc" id="namespacearmnn_1_1optimizations_html_ae0b1382e3af141896a46531c50e8863f"><div class="ttname"><a href="namespacearmnn_1_1optimizations.html#ae0b1382e3af141896a46531c50e8863f">armnn::optimizations::PermuteAsReshape</a></div><div class="ttdeci">OptimizeForType&lt; PermuteLayer, PermuteAsReshapeImpl &gt; PermuteAsReshape</div><div class="ttdef"><b>Definition:</b> <a href="_permute_as_reshape_8hpp_source.html#l00067">PermuteAsReshape.hpp:67</a></div></div>
<div class="ttc" id="_deprecated_8hpp_html_ad762b11b48e5c1d1c1743f529485728a"><div class="ttname"><a href="_deprecated_8hpp.html#ad762b11b48e5c1d1c1743f529485728a">ARMNN_NO_DEPRECATE_WARN_END</a></div><div class="ttdeci">#define ARMNN_NO_DEPRECATE_WARN_END</div><div class="ttdef"><b>Definition:</b> <a href="_deprecated_8hpp_source.html#l00034">Deprecated.hpp:34</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a28e115f5d28500324b53fae9e6c00b77"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a28e115f5d28500324b53fae9e6c00b77">&#9670;&nbsp;</a></span>Pad()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void Pad </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>inputInfo</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>outputInfo</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">std::vector&lt; std::pair&lt; unsigned int, unsigned int &gt;&gt;&#160;</td>
<td class="paramname"><em>m_padList</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const T *&#160;</td>
<td class="paramname"><em>inputData</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">T *&#160;</td>
<td class="paramname"><em>outData</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const float&#160;</td>
<td class="paramname"><em>padValue</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="backends_2reference_2workloads_2_pad_8cpp_source.html#l00022">22</a> of file <a class="el" href="backends_2reference_2workloads_2_pad_8cpp_source.html">Pad.cpp</a>.</p>
<p class="reference">References <a class="el" href="_tensor_8hpp_source.html#l00043">TensorShape::GetNumDimensions()</a>, <a class="el" href="_tensor_8hpp_source.html#l00093">TensorInfo::GetNumElements()</a>, <a class="el" href="_tensor_8hpp_source.html#l00088">TensorInfo::GetShape()</a>, <a class="el" href="namespacearmnn.html#a09fc687543b371ddab280203dc989bd9">Pad&lt; float &gt;()</a>, <a class="el" href="namespacearmnn.html#a1b165f49b29968defb57e2d9b8628b9f">Pad&lt; Half &gt;()</a>, <a class="el" href="namespacearmnn.html#a68b05cecb5ebbbc3b8d1fd94a66df4af">Pad&lt; int16_t &gt;()</a>, and <a class="el" href="namespacearmnn.html#a7e27cbebab8cde65c84d7a00efa025cd">Pad&lt; uint8_t &gt;()</a>.</p>
<p class="reference">Referenced by <a class="el" href="_serializer_tests_8cpp_source.html#l01768">BOOST_AUTO_TEST_CASE()</a>, and <a class="el" href="_ref_pad_workload_8cpp_source.html#l00021">RefPadWorkload&lt; DataType &gt;::Execute()</a>.</p>
<div class="fragment"><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;{</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> numOutputElements = outputInfo.GetNumElements();</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; TensorShape outputShape = outputInfo.GetShape();</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; TensorShape inputShape = inputInfo.GetShape();</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> numInputDimensions = inputShape.GetNumDimensions();</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;<span class="preprocessor"> #ifndef NDEBUG</span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> numOutputDimensions = outputShape.GetNumDimensions();</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; assert(numInputDimensions == numOutputDimensions);</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;<span class="preprocessor"> #endif</span></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> inputBatches = 0;</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> inputChannels = 0;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> inputHeight = 0;</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> inputWidth = 0;</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> outputChannels = 0;</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> outputHeight = 0;</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> outputWidth = 0;</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160;</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; T convertedPadValue = <span class="keyword">static_cast&lt;</span>T<span class="keyword">&gt;</span>(padValue);</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160;</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i &lt; numOutputElements; ++i)</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; {</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; outData[i] = convertedPadValue;</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; }</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160;</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; <span class="keywordflow">switch</span>(numInputDimensions) {</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160;</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; <span class="keywordflow">case</span> 1:</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160;</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; inputWidth = inputShape[0];</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160;</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> w = 0; w &lt; inputWidth ; w++)</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; {</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; outData[w+std::get&lt;0&gt;(m_padList[0])] = inputData[w];</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; }</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160;</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160;</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; <span class="keywordflow">case</span> 2 :</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160;</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; inputHeight = inputShape[0];</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; inputWidth = inputShape[1];</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; outputHeight = outputShape[0];</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; outputWidth = outputShape[1];</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160;</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> h = 0; h &lt; inputHeight; h++)</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; {</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> w = 0; w &lt; inputWidth ; w++)</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; {</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; outData[(h+std::get&lt;0&gt;(m_padList[0]))*outputWidth</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; + (w+std::get&lt;0&gt;(m_padList[1]))] = inputData[h * inputWidth + w];</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; }</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; }</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160;</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160;</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; <span class="keywordflow">case</span> 3 :</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160;</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; inputChannels = inputShape[0];</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; inputHeight = inputShape[1];</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; inputWidth = inputShape[2];</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; outputChannels = outputShape[0];</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; outputHeight = outputShape[1];</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; outputWidth = outputShape[2];</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160;</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> c = 0; c &lt; inputChannels; c++)</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; {</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> h = 0; h &lt; inputHeight; h++)</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; {</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> w = 0; w &lt; inputWidth ; w++)</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; {</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; outData[(c+std::get&lt;0&gt;(m_padList[0]))*outputHeight*outputWidth</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; + (h+std::get&lt;0&gt;(m_padList[1]))*outputWidth</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; + (w+std::get&lt;0&gt;(m_padList[2]))] = inputData[c * inputHeight * inputWidth</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; + h * inputWidth</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; + w];</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; }</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; }</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; }</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160;</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160;</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; <span class="keywordflow">case</span> 4 :</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160;</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; inputBatches = inputShape[0];</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; inputChannels = inputShape[1];</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; inputHeight = inputShape[2];</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; inputWidth = inputShape[3];</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; outputChannels = outputShape[1];</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; outputHeight = outputShape[2];</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; outputWidth = outputShape[3];</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160;</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> b = 0; b &lt; inputBatches; b++)</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; {</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> c = 0; c &lt; inputChannels; c++)</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; {</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> h = 0; h &lt; inputHeight; h++)</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; {</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> w = 0; w &lt; inputWidth ; w++)</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; {</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; outData[(b+std::get&lt;0&gt;(m_padList[0])) * outputChannels * outputHeight * outputWidth</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; + (c+std::get&lt;0&gt;(m_padList[1])) * outputHeight * outputWidth</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; + (h+std::get&lt;0&gt;(m_padList[2])) * outputWidth</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; + (w+std::get&lt;0&gt;(m_padList[3]))] = inputData[b * inputChannels * inputHeight</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; * inputWidth</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; + c * inputHeight * inputWidth</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; + h * inputWidth</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; + w];</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; }</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; }</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; }</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; }</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160;</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160;</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; default :</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160;</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; }</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160;}</div></div><!-- fragment -->
</div>
</div>
<a id="a09fc687543b371ddab280203dc989bd9"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a09fc687543b371ddab280203dc989bd9">&#9670;&nbsp;</a></span>Pad< float >()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template void <a class="el" href="namespacearmnn.html#a28e115f5d28500324b53fae9e6c00b77">armnn::Pad</a>&lt; float &gt; </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>inputInfo</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>outputInfo</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">std::vector&lt; std::pair&lt; unsigned int, unsigned int &gt;&gt;&#160;</td>
<td class="paramname"><em>m_PadList</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const float *&#160;</td>
<td class="paramname"><em>inputData</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">float *&#160;</td>
<td class="paramname"><em>outData</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const float&#160;</td>
<td class="paramname"><em>padValue</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="reference">Referenced by <a class="el" href="backends_2reference_2workloads_2_pad_8cpp_source.html#l00022">Pad()</a>.</p>
</div>
</div>
<a id="a1b165f49b29968defb57e2d9b8628b9f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a1b165f49b29968defb57e2d9b8628b9f">&#9670;&nbsp;</a></span>Pad< Half >()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template void <a class="el" href="namespacearmnn.html#a28e115f5d28500324b53fae9e6c00b77">armnn::Pad</a>&lt; <a class="el" href="namespacearmnn.html#a0f38fa92b2468d5378258a2b074c1a31">Half</a> &gt; </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>inputInfo</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>outputInfo</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">std::vector&lt; std::pair&lt; unsigned int, unsigned int &gt;&gt;&#160;</td>
<td class="paramname"><em>m_PadList</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="namespacearmnn.html#a0f38fa92b2468d5378258a2b074c1a31">Half</a> *&#160;</td>
<td class="paramname"><em>inputData</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacearmnn.html#a0f38fa92b2468d5378258a2b074c1a31">Half</a> *&#160;</td>
<td class="paramname"><em>outData</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const float&#160;</td>
<td class="paramname"><em>padValue</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="reference">Referenced by <a class="el" href="backends_2reference_2workloads_2_pad_8cpp_source.html#l00022">Pad()</a>.</p>
</div>
</div>
<a id="a68b05cecb5ebbbc3b8d1fd94a66df4af"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a68b05cecb5ebbbc3b8d1fd94a66df4af">&#9670;&nbsp;</a></span>Pad< int16_t >()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template void <a class="el" href="namespacearmnn.html#a28e115f5d28500324b53fae9e6c00b77">armnn::Pad</a>&lt; int16_t &gt; </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>inputInfo</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>outputInfo</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">std::vector&lt; std::pair&lt; unsigned int, unsigned int &gt;&gt;&#160;</td>
<td class="paramname"><em>m_PadList</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const int16_t *&#160;</td>
<td class="paramname"><em>inputData</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int16_t *&#160;</td>
<td class="paramname"><em>outData</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const float&#160;</td>
<td class="paramname"><em>padValue</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="reference">Referenced by <a class="el" href="backends_2reference_2workloads_2_pad_8cpp_source.html#l00022">Pad()</a>.</p>
</div>
</div>
<a id="a7e27cbebab8cde65c84d7a00efa025cd"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a7e27cbebab8cde65c84d7a00efa025cd">&#9670;&nbsp;</a></span>Pad< uint8_t >()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template void <a class="el" href="namespacearmnn.html#a28e115f5d28500324b53fae9e6c00b77">armnn::Pad</a>&lt; uint8_t &gt; </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>inputInfo</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>outputInfo</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">std::vector&lt; std::pair&lt; unsigned int, unsigned int &gt;&gt;&#160;</td>
<td class="paramname"><em>m_PadList</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const uint8_t *&#160;</td>
<td class="paramname"><em>inputData</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint8_t *&#160;</td>
<td class="paramname"><em>outData</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const float&#160;</td>
<td class="paramname"><em>padValue</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="reference">Referenced by <a class="el" href="backends_2reference_2workloads_2_pad_8cpp_source.html#l00022">Pad()</a>.</p>
</div>
</div>
<a id="af464d406b22309a891ed0aa3008a7953"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af464d406b22309a891ed0aa3008a7953">&#9670;&nbsp;</a></span>ParseBoolean()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">bool armnn::ParseBoolean </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_backend_options_1_1_var.html">BackendOptions::Var</a> &amp;&#160;</td>
<td class="paramname"><em>value</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">bool&#160;</td>
<td class="paramname"><em>defaultValue</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_cl_backend_context_8cpp_source.html#l00096">96</a> of file <a class="el" href="_cl_backend_context_8cpp_source.html">ClBackendContext.cpp</a>.</p>
<p class="reference">References <a class="el" href="_backend_options_8hpp_source.html#l00110">BackendOptions::Var::AsBool()</a>, and <a class="el" href="_backend_options_8hpp_source.html#l00104">BackendOptions::Var::IsBool()</a>.</p>
<div class="fragment"><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160;{</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; <span class="keywordflow">if</span> (value.IsBool())</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; {</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; <span class="keywordflow">return</span> value.AsBool();</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; }</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160;</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; <span class="keywordflow">return</span> defaultValue;</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160;}</div></div><!-- fragment -->
</div>
</div>
<a id="a65645fa03bf8cddfb9d8a9f83beeb6e8"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a65645fa03bf8cddfb9d8a9f83beeb6e8">&#9670;&nbsp;</a></span>ParseComputeDevice()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">constexpr <a class="el" href="namespacearmnn.html#ae2f04a162585c0a5222a537efd5456ae">armnn::Compute</a> armnn::ParseComputeDevice </td>
<td>(</td>
<td class="paramtype">const char *&#160;</td>
<td class="paramname"><em>str</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Deprecated function that will be removed together with the Compute enum </p>
<p class="definition">Definition at line <a class="el" href="_types_utils_8hpp_source.html#l00145">145</a> of file <a class="el" href="_types_utils_8hpp_source.html">TypesUtils.hpp</a>.</p>
<p class="reference">References <a class="el" href="namespacearmnn.html#ae2f04a162585c0a5222a537efd5456aea39f8662ca778258e9c6a14f26fec5ec1">CpuAcc</a>, <a class="el" href="namespacearmnn.html#ae2f04a162585c0a5222a537efd5456aea83c2c4e9b658ccafbcbe6309c5d84c64">CpuRef</a>, <a class="el" href="namespacearmnn.html#ae2f04a162585c0a5222a537efd5456aeafaa4524e3df19ada32643ce9a222362b">GpuAcc</a>, <a class="el" href="_types_utils_8hpp_source.html#l00133">StrEqual()</a>, and <a class="el" href="namespacearmnn.html#ae2f04a162585c0a5222a537efd5456aeaec0fc0100c4fc1ce4eea230c3dc10360">Undefined</a>.</p>
<p class="reference">Referenced by <a class="el" href="_inference_test_8hpp_source.html#l00019">operator&gt;&gt;()</a>.</p>
<div class="fragment"><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160;{</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespacearmnn.html#a637fea04314a9870c1dc4355c1bed429">armnn::StrEqual</a>(str, <span class="stringliteral">&quot;CpuAcc&quot;</span>))</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; {</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespacearmnn.html#ae2f04a162585c0a5222a537efd5456aea39f8662ca778258e9c6a14f26fec5ec1">armnn::Compute::CpuAcc</a>;</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; }</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="namespacearmnn.html#a637fea04314a9870c1dc4355c1bed429">armnn::StrEqual</a>(str, <span class="stringliteral">&quot;CpuRef&quot;</span>))</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; {</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespacearmnn.html#ae2f04a162585c0a5222a537efd5456aea83c2c4e9b658ccafbcbe6309c5d84c64">armnn::Compute::CpuRef</a>;</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; }</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="namespacearmnn.html#a637fea04314a9870c1dc4355c1bed429">armnn::StrEqual</a>(str, <span class="stringliteral">&quot;GpuAcc&quot;</span>))</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; {</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespacearmnn.html#ae2f04a162585c0a5222a537efd5456aeafaa4524e3df19ada32643ce9a222362b">armnn::Compute::GpuAcc</a>;</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; }</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; {</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespacearmnn.html#ae2f04a162585c0a5222a537efd5456aeaec0fc0100c4fc1ce4eea230c3dc10360">armnn::Compute::Undefined</a>;</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; }</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a637fea04314a9870c1dc4355c1bed429"><div class="ttname"><a href="namespacearmnn.html#a637fea04314a9870c1dc4355c1bed429">armnn::StrEqual</a></div><div class="ttdeci">constexpr bool StrEqual(const char *strA, const char(&amp;strB)[N])</div><div class="ttdef"><b>Definition:</b> <a href="_types_utils_8hpp_source.html#l00133">TypesUtils.hpp:133</a></div></div>
<div class="ttc" id="namespacearmnn_html_ae2f04a162585c0a5222a537efd5456aeaec0fc0100c4fc1ce4eea230c3dc10360"><div class="ttname"><a href="namespacearmnn.html#ae2f04a162585c0a5222a537efd5456aeaec0fc0100c4fc1ce4eea230c3dc10360">armnn::Compute::Undefined</a></div></div>
<div class="ttc" id="namespacearmnn_html_ae2f04a162585c0a5222a537efd5456aeafaa4524e3df19ada32643ce9a222362b"><div class="ttname"><a href="namespacearmnn.html#ae2f04a162585c0a5222a537efd5456aeafaa4524e3df19ada32643ce9a222362b">armnn::Compute::GpuAcc</a></div><div class="ttdoc">GPU Execution: OpenCL: ArmCompute. </div></div>
<div class="ttc" id="namespacearmnn_html_ae2f04a162585c0a5222a537efd5456aea83c2c4e9b658ccafbcbe6309c5d84c64"><div class="ttname"><a href="namespacearmnn.html#ae2f04a162585c0a5222a537efd5456aea83c2c4e9b658ccafbcbe6309c5d84c64">armnn::Compute::CpuRef</a></div><div class="ttdoc">CPU Execution: Reference C++ kernels. </div></div>
<div class="ttc" id="namespacearmnn_html_ae2f04a162585c0a5222a537efd5456aea39f8662ca778258e9c6a14f26fec5ec1"><div class="ttname"><a href="namespacearmnn.html#ae2f04a162585c0a5222a537efd5456aea39f8662ca778258e9c6a14f26fec5ec1">armnn::Compute::CpuAcc</a></div><div class="ttdoc">CPU Execution: NEON: ArmCompute. </div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a4e9a59f936f3d2050a17597d22825f53"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a4e9a59f936f3d2050a17597d22825f53">&#9670;&nbsp;</a></span>ParseFile()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">std::string armnn::ParseFile </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_backend_options_1_1_var.html">BackendOptions::Var</a> &amp;&#160;</td>
<td class="paramname"><em>value</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">std::string&#160;</td>
<td class="paramname"><em>defaultValue</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_cl_backend_context_8cpp_source.html#l00106">106</a> of file <a class="el" href="_cl_backend_context_8cpp_source.html">ClBackendContext.cpp</a>.</p>
<p class="reference">References <a class="el" href="_backend_options_8hpp_source.html#l00113">BackendOptions::Var::AsString()</a>, and <a class="el" href="_backend_options_8hpp_source.html#l00107">BackendOptions::Var::IsString()</a>.</p>
<p class="reference">Referenced by <a class="el" href="_cl_backend_context_8cpp_source.html#l00153">ClBackendContext::ClBackendContext()</a>.</p>
<div class="fragment"><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160;{</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; <span class="keywordflow">if</span> (value.IsString())</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; {</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; <span class="keywordflow">return</span> value.AsString();</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; }</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; <span class="keywordflow">return</span> defaultValue;</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160;}</div></div><!-- fragment -->
</div>
</div>
<a id="af457790132251cde6545072d879c7684"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af457790132251cde6545072d879c7684">&#9670;&nbsp;</a></span>ParseOptions()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void armnn::ParseOptions </td>
<td>(</td>
<td class="paramtype">const std::vector&lt; <a class="el" href="structarmnn_1_1_backend_options.html">BackendOptions</a> &gt; &amp;&#160;</td>
<td class="paramname"><em>options</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a>&#160;</td>
<td class="paramname"><em>backend</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">F&#160;</td>
<td class="paramname"><em>f</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_cl_backend_context_8cpp_source.html#l00116">116</a> of file <a class="el" href="_cl_backend_context_8cpp_source.html">ClBackendContext.cpp</a>.</p>
<p class="reference">References <a class="el" href="_backend_options_8hpp_source.html#l00219">BackendOptions::BackendOption::GetName()</a>, and <a class="el" href="_backend_options_8hpp_source.html#l00220">BackendOptions::BackendOption::GetValue()</a>.</p>
<p class="reference">Referenced by <a class="el" href="_cl_backend_context_8cpp_source.html#l00153">ClBackendContext::ClBackendContext()</a>.</p>
<div class="fragment"><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160;{</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span> optionsGroup : <a class="code" href="_file_only_profiling_decorator_tests_8cpp.html#a6560146509197f3e197d8d36f76c1347">options</a>)</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; {</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; <span class="keywordflow">if</span> (optionsGroup.GetBackendId() == backend)</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; {</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i=0; i &lt; optionsGroup.GetOptionCount(); i++)</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; {</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; <span class="keyword">const</span> BackendOptions::BackendOption option = optionsGroup.GetOption(i);</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; f(option.GetName(), option.GetValue());</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; }</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; }</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; }</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160;}</div><div class="ttc" id="_file_only_profiling_decorator_tests_8cpp_html_a6560146509197f3e197d8d36f76c1347"><div class="ttname"><a href="_file_only_profiling_decorator_tests_8cpp.html#a6560146509197f3e197d8d36f76c1347">options</a></div><div class="ttdeci">armnn::Runtime::CreationOptions::ExternalProfilingOptions options</div><div class="ttdef"><b>Definition:</b> <a href="_file_only_profiling_decorator_tests_8cpp_source.html#l00045">FileOnlyProfilingDecoratorTests.cpp:45</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a3ca05ac77af0a0444ff34c1319094f6d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a3ca05ac77af0a0444ff34c1319094f6d">&#9670;&nbsp;</a></span>ParseTuningLevel()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="namespacearmnn.html#a707090747256af276c389e0cf1cb0a9a">TuningLevel</a> armnn::ParseTuningLevel </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_backend_options_1_1_var.html">BackendOptions::Var</a> &amp;&#160;</td>
<td class="paramname"><em>value</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacearmnn.html#a707090747256af276c389e0cf1cb0a9a">TuningLevel</a>&#160;</td>
<td class="paramname"><em>defaultValue</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_cl_backend_context_8cpp_source.html#l00078">78</a> of file <a class="el" href="_cl_backend_context_8cpp_source.html">ClBackendContext.cpp</a>.</p>
<p class="reference">References <a class="el" href="_logging_8hpp_source.html#l00163">ARMNN_LOG</a>, <a class="el" href="namespacearmnn.html#a707090747256af276c389e0cf1cb0a9aafaf34f09ea1e93bfbf591e19dc0dfb9f">Exhaustive</a>, <a class="el" href="_backend_options_8hpp_source.html#l00105">BackendOptions::Var::IsInt()</a>, <a class="el" href="namespacearmnn.html#a707090747256af276c389e0cf1cb0a9aa6adf97f83acf6453d4a6a4b1070f3754">None</a>, and <a class="el" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407a7b83d3f08fa392b79e3f553b585971cd">warning</a>.</p>
<p class="reference">Referenced by <a class="el" href="_cl_backend_context_8cpp_source.html#l00153">ClBackendContext::ClBackendContext()</a>.</p>
<div class="fragment"><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160;{</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; <span class="keywordflow">if</span> (value.IsInt())</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; {</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; <span class="keywordtype">int</span> v = value.IsInt();</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; <span class="keywordflow">if</span> (v &gt; static_cast&lt;int&gt;(TuningLevel::Exhaustive) ||</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; v &lt; static_cast&lt;int&gt;(TuningLevel::None))</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; {</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; <a class="code" href="_logging_8hpp.html#a7b6ad073975f437ec38ca7d20154727f">ARMNN_LOG</a>(warning) &lt;&lt; <span class="stringliteral">&quot;Invalid GpuAcc tuning level (&quot;</span>&lt;&lt; v &lt;&lt; <span class="stringliteral">&quot;) selected. &quot;</span></div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; <span class="stringliteral">&quot;Using default(&quot;</span> &lt;&lt; <span class="keyword">static_cast&lt;</span><span class="keywordtype">int</span><span class="keyword">&gt;</span>(defaultValue) &lt;&lt; <span class="stringliteral">&quot;)&quot;</span>;</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; } <span class="keywordflow">else</span></div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; {</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; <span class="keywordflow">return</span> <span class="keyword">static_cast&lt;</span><a class="code" href="namespacearmnn.html#a707090747256af276c389e0cf1cb0a9a">TuningLevel</a><span class="keyword">&gt;</span>(v);</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; }</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; }</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; <span class="keywordflow">return</span> defaultValue;</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160;}</div><div class="ttc" id="_logging_8hpp_html_a7b6ad073975f437ec38ca7d20154727f"><div class="ttname"><a href="_logging_8hpp.html#a7b6ad073975f437ec38ca7d20154727f">ARMNN_LOG</a></div><div class="ttdeci">#define ARMNN_LOG(severity)</div><div class="ttdef"><b>Definition:</b> <a href="_logging_8hpp_source.html#l00163">Logging.hpp:163</a></div></div>
<div class="ttc" id="namespacearmnn_html_a707090747256af276c389e0cf1cb0a9a"><div class="ttname"><a href="namespacearmnn.html#a707090747256af276c389e0cf1cb0a9a">armnn::TuningLevel</a></div><div class="ttdeci">TuningLevel</div><div class="ttdef"><b>Definition:</b> <a href="_cl_backend_context_8cpp_source.html#l00069">ClBackendContext.cpp:69</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a2a9ac8ebb69307ad4ec894ffa0523dbf"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a2a9ac8ebb69307ad4ec894ffa0523dbf">&#9670;&nbsp;</a></span>PermuteTensor()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classarmnn_1_1_const_tensor.html">armnn::ConstTensor</a> PermuteTensor </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_const_cpu_tensor_handle.html">ConstCpuTensorHandle</a> *&#160;</td>
<td class="paramname"><em>tensor</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_permutation_vector.html">PermutationVector</a> &amp;&#160;</td>
<td class="paramname"><em>permutationVector</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">void *&#160;</td>
<td class="paramname"><em>permuteBuffer</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_workload_utils_8cpp_source.html#l00013">13</a> of file <a class="el" href="_workload_utils_8cpp_source.html">WorkloadUtils.cpp</a>.</p>
<p class="reference">References <a class="el" href="_cpu_tensor_handle_8hpp_source.html#l00031">ConstCpuTensorHandle::GetConstTensor()</a>, <a class="el" href="_tensor_8hpp_source.html#l00095">TensorInfo::GetDataType()</a>, <a class="el" href="_types_utils_8hpp_source.html#l00113">GetDataTypeSize()</a>, <a class="el" href="_tensor_8cpp_source.html#l00213">TensorInfo::GetNumBytes()</a>, <a class="el" href="_tensor_8hpp_source.html#l00088">TensorInfo::GetShape()</a>, <a class="el" href="_types_8hpp_source.html#l00199">PermutationVector::GetSize()</a>, <a class="el" href="_cpu_tensor_handle_8hpp_source.html#l00037">ConstCpuTensorHandle::GetTensorInfo()</a>, <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4afa662c6eb71caef475b2b981ce8eccd7">Permute</a>, and <a class="el" href="_permute_8cpp_source.html#l00098">armnnUtils::Permuted()</a>.</p>
<p class="reference">Referenced by <a class="el" href="_workload_utils_8cpp_source.html#l00132">ConvertWeightTensorFromArmnnToAcl()</a>, and <a class="el" href="_workload_utils_8hpp_source.html#l00192">GatherTensorHandlePairs()</a>.</p>
<div class="fragment"><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;{</div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160; BOOST_ASSERT_MSG(tensor, <span class="stringliteral">&quot;Invalid input tensor&quot;</span>);</div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160; BOOST_ASSERT_MSG(permuteBuffer, <span class="stringliteral">&quot;Invalid permute buffer&quot;</span>);</div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;</div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160; TensorInfo tensorInfo = tensor-&gt;GetTensorInfo();</div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160; <span class="keywordflow">if</span> (permutationVector.GetSize() &gt; 0)</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160; {</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160; tensorInfo = <a class="code" href="namespacearmnn_utils.html#abeaf4f6785039866fd075f4569ba8e84">armnnUtils::Permuted</a>(tensorInfo, permutationVector);</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160; <a class="code" href="namespacearmnn_utils.html#af3c74017185773dd61d8ca6662d65d43">armnnUtils::Permute</a>(tensorInfo.GetShape(), permutationVector,</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; tensor-&gt;GetConstTensor&lt;<span class="keywordtype">void</span>&gt;(), permuteBuffer,</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; <a class="code" href="namespacearmnn.html#aa02b9e06fb20fa3c13da0427e6ee5ab2">GetDataTypeSize</a>(tensorInfo.GetDataType()));</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; }</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; {</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; ::memcpy(permuteBuffer, tensor-&gt;GetConstTensor&lt;<span class="keywordtype">void</span>&gt;(), tensorInfo.GetNumBytes());</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; }</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; <span class="keywordflow">return</span> ConstTensor(tensorInfo, permuteBuffer);</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;}</div><div class="ttc" id="namespacearmnn_utils_html_af3c74017185773dd61d8ca6662d65d43"><div class="ttname"><a href="namespacearmnn_utils.html#af3c74017185773dd61d8ca6662d65d43">armnnUtils::Permute</a></div><div class="ttdeci">void Permute(const armnn::TensorShape &amp;dstShape, const armnn::PermutationVector &amp;mappings, const void *src, void *dst, size_t dataTypeSize)</div><div class="ttdef"><b>Definition:</b> <a href="_permute_8cpp_source.html#l00121">Permute.cpp:121</a></div></div>
<div class="ttc" id="namespacearmnn_utils_html_abeaf4f6785039866fd075f4569ba8e84"><div class="ttname"><a href="namespacearmnn_utils.html#abeaf4f6785039866fd075f4569ba8e84">armnnUtils::Permuted</a></div><div class="ttdeci">armnn::TensorShape Permuted(const armnn::TensorShape &amp;srcShape, const armnn::PermutationVector &amp;mappings)</div><div class="ttdef"><b>Definition:</b> <a href="_permute_8cpp_source.html#l00098">Permute.cpp:98</a></div></div>
<div class="ttc" id="namespacearmnn_html_aa02b9e06fb20fa3c13da0427e6ee5ab2"><div class="ttname"><a href="namespacearmnn.html#aa02b9e06fb20fa3c13da0427e6ee5ab2">armnn::GetDataTypeSize</a></div><div class="ttdeci">constexpr unsigned int GetDataTypeSize(DataType dataType)</div><div class="ttdef"><b>Definition:</b> <a href="_types_utils_8hpp_source.html#l00113">TypesUtils.hpp:113</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="ae2e93e304cf516841c521e3eaee025cd"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae2e93e304cf516841c521e3eaee025cd">&#9670;&nbsp;</a></span>Pooling2d()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void Pooling2d </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classarmnn_1_1_decoder.html">Decoder</a>&lt; float &gt; &amp;&#160;</td>
<td class="paramname"><em>rInputDecoder</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classarmnn_1_1_encoder.html">Encoder</a>&lt; float &gt; &amp;&#160;</td>
<td class="paramname"><em>rOutputEncoder</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>inputInfo</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>outputInfo</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="structarmnn_1_1_pooling2d_descriptor.html">Pooling2dDescriptor</a> &amp;&#160;</td>
<td class="paramname"><em>params</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Computes the Pooling2d operation. </p>
<p class="definition">Definition at line <a class="el" href="_pooling2d_8cpp_source.html#l00143">143</a> of file <a class="el" href="_pooling2d_8cpp_source.html">Pooling2d.cpp</a>.</p>
<p class="reference">References <a class="el" href="classarmnn_1_1_decoder.html#ac729108381e2340bea12877971713ecb">Decoder&lt; IType &gt;::Get()</a>, <a class="el" href="_data_layout_indexed_8hpp_source.html#l00023">DataLayoutIndexed::GetChannelsIndex()</a>, <a class="el" href="_data_layout_indexed_8hpp_source.html#l00024">DataLayoutIndexed::GetHeightIndex()</a>, <a class="el" href="_data_layout_indexed_8hpp_source.html#l00027">DataLayoutIndexed::GetIndex()</a>, <a class="el" href="_tensor_8hpp_source.html#l00088">TensorInfo::GetShape()</a>, <a class="el" href="_data_layout_indexed_8hpp_source.html#l00025">DataLayoutIndexed::GetWidthIndex()</a>, <a class="el" href="_descriptors_8hpp_source.html#l00369">Pooling2dDescriptor::m_DataLayout</a>, <a class="el" href="_descriptors_8hpp_source.html#l00355">Pooling2dDescriptor::m_PadBottom</a>, <a class="el" href="_descriptors_8hpp_source.html#l00367">Pooling2dDescriptor::m_PaddingMethod</a>, <a class="el" href="_descriptors_8hpp_source.html#l00349">Pooling2dDescriptor::m_PadLeft</a>, <a class="el" href="_descriptors_8hpp_source.html#l00351">Pooling2dDescriptor::m_PadRight</a>, <a class="el" href="_descriptors_8hpp_source.html#l00353">Pooling2dDescriptor::m_PadTop</a>, <a class="el" href="_descriptors_8hpp_source.html#l00359">Pooling2dDescriptor::m_PoolHeight</a>, <a class="el" href="_descriptors_8hpp_source.html#l00347">Pooling2dDescriptor::m_PoolType</a>, <a class="el" href="_descriptors_8hpp_source.html#l00357">Pooling2dDescriptor::m_PoolWidth</a>, <a class="el" href="_descriptors_8hpp_source.html#l00361">Pooling2dDescriptor::m_StrideX</a>, <a class="el" href="_descriptors_8hpp_source.html#l00363">Pooling2dDescriptor::m_StrideY</a>, <a class="el" href="_pooling2d_8cpp_source.html#l00143">Pooling2d()</a>, and <a class="el" href="classarmnn_1_1_encoder.html#ae3b62b846a9c239f332830b9e36030eb">Encoder&lt; IType &gt;::Set()</a>.</p>
<p class="reference">Referenced by <a class="el" href="_serializer_tests_8cpp_source.html#l01910">BOOST_AUTO_TEST_CASE()</a>, <a class="el" href="_pooling2d_8cpp_source.html#l00143">Pooling2d()</a>, and <a class="el" href="_pooling2d_layer_8cpp_source.html#l00022">Pooling2dLayer::Pooling2dLayer()</a>.</p>
<div class="fragment"><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160;{</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; <span class="keyword">const</span> <a class="code" href="classarmnn_utils_1_1_data_layout_indexed.html">DataLayoutIndexed</a> dataLayout(params.<a class="code" href="structarmnn_1_1_pooling2d_descriptor.html#a6089e1ca91914015777ea780a513131a">m_DataLayout</a>);</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; <span class="keyword">auto</span> channelsIndex = dataLayout.GetChannelsIndex();</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; <span class="keyword">auto</span> heightIndex = dataLayout.GetHeightIndex();</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; <span class="keyword">auto</span> widthIndex = dataLayout.GetWidthIndex();</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160;</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> batchSize = boost::numeric_cast&lt;<span class="keywordtype">int</span>&gt;(outputInfo.<a class="code" href="classarmnn_1_1_tensor_info.html#a8b5d0f8a24e9d9238f412260a552acf8">GetShape</a>()[0]);</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> channels = boost::numeric_cast&lt;<span class="keywordtype">int</span>&gt;(outputInfo.<a class="code" href="classarmnn_1_1_tensor_info.html#a8b5d0f8a24e9d9238f412260a552acf8">GetShape</a>()[channelsIndex]);</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> heightOutput = boost::numeric_cast&lt;<span class="keywordtype">int</span>&gt;(outputInfo.<a class="code" href="classarmnn_1_1_tensor_info.html#a8b5d0f8a24e9d9238f412260a552acf8">GetShape</a>()[heightIndex]);</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> widthOutput = boost::numeric_cast&lt;<span class="keywordtype">int</span>&gt;(outputInfo.<a class="code" href="classarmnn_1_1_tensor_info.html#a8b5d0f8a24e9d9238f412260a552acf8">GetShape</a>()[widthIndex]);</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> heightInput = boost::numeric_cast&lt;<span class="keywordtype">int</span>&gt;(inputInfo.<a class="code" href="classarmnn_1_1_tensor_info.html#a8b5d0f8a24e9d9238f412260a552acf8">GetShape</a>()[heightIndex]);</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> widthInput = boost::numeric_cast&lt;<span class="keywordtype">int</span>&gt;(inputInfo.<a class="code" href="classarmnn_1_1_tensor_info.html#a8b5d0f8a24e9d9238f412260a552acf8">GetShape</a>()[widthIndex]);</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> padLeft = boost::numeric_cast&lt;<span class="keywordtype">int</span>&gt;(params.<a class="code" href="structarmnn_1_1_pooling2d_descriptor.html#ac18546ebbebbb32fe0a03baa9bf2c600">m_PadLeft</a>);</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> padRight = boost::numeric_cast&lt;<span class="keywordtype">int</span>&gt;(params.<a class="code" href="structarmnn_1_1_pooling2d_descriptor.html#a002bc30e590d78cbb4f4d12171055ca7">m_PadRight</a>);</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> padTop = boost::numeric_cast&lt;<span class="keywordtype">int</span>&gt;(params.<a class="code" href="structarmnn_1_1_pooling2d_descriptor.html#a56b51f56cef50cdfa554258eecdab046">m_PadTop</a>);</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> padBottom = boost::numeric_cast&lt;<span class="keywordtype">int</span>&gt;(params.<a class="code" href="structarmnn_1_1_pooling2d_descriptor.html#aa9e49717ebdb741e8c767741647fc618">m_PadBottom</a>);</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> strideX = boost::numeric_cast&lt;<span class="keywordtype">int</span>&gt;(params.<a class="code" href="structarmnn_1_1_pooling2d_descriptor.html#afe6a3377c4531315354def9023c8fdda">m_StrideX</a>);</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> strideY = boost::numeric_cast&lt;<span class="keywordtype">int</span>&gt;(params.<a class="code" href="structarmnn_1_1_pooling2d_descriptor.html#ac1fe174bbadfb39a2b636940c2e647c8">m_StrideY</a>);</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> poolHeight = boost::numeric_cast&lt;<span class="keywordtype">int</span>&gt;(params.<a class="code" href="structarmnn_1_1_pooling2d_descriptor.html#a5699e8606c37d18c03910b242cd1b010">m_PoolHeight</a>);</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> poolWidth = boost::numeric_cast&lt;<span class="keywordtype">int</span>&gt;(params.<a class="code" href="structarmnn_1_1_pooling2d_descriptor.html#a6d8fb685cc1ff224f25aa127fcf62c86">m_PoolWidth</a>);</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160;</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160; <span class="keywordtype">float</span> defaultInitializer = DefaultInitializer(params.<a class="code" href="structarmnn_1_1_pooling2d_descriptor.html#a0031997bf43bd2747656c31e4977793a">m_PoolType</a>);</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160;</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160; Accumulator accumulate = GetAccumulator(params.<a class="code" href="structarmnn_1_1_pooling2d_descriptor.html#a0031997bf43bd2747656c31e4977793a">m_PoolType</a>);</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; Executor execute = GetExecutor(params.<a class="code" href="structarmnn_1_1_pooling2d_descriptor.html#a0031997bf43bd2747656c31e4977793a">m_PoolType</a>);</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160;</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; <a class="code" href="classarmnn_1_1_tensor_shape.html">TensorShape</a> outputShape = outputInfo.<a class="code" href="classarmnn_1_1_tensor_info.html#a8b5d0f8a24e9d9238f412260a552acf8">GetShape</a>();</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; <a class="code" href="classarmnn_1_1_tensor_shape.html">TensorShape</a> inputShape = inputInfo.<a class="code" href="classarmnn_1_1_tensor_info.html#a8b5d0f8a24e9d9238f412260a552acf8">GetShape</a>();</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160;</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160; <span class="comment">// Check supported padding methods outside the loop to simplify</span></div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160; <span class="comment">// the inner loop.</span></div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160; <span class="keywordflow">if</span> (params.<a class="code" href="structarmnn_1_1_pooling2d_descriptor.html#a8c29d6ea9b4186d69aad5961c910939c">m_PaddingMethod</a> != PaddingMethod::Exclude &amp;&amp;</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160; params.<a class="code" href="structarmnn_1_1_pooling2d_descriptor.html#a8c29d6ea9b4186d69aad5961c910939c">m_PaddingMethod</a> != PaddingMethod::IgnoreValue)</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160; {</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160; <span class="keywordflow">throw</span> <a class="code" href="classarmnn_1_1_invalid_argument_exception.html">armnn::InvalidArgumentException</a>(<span class="stringliteral">&quot;Unsupported padding type&quot;</span>);</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; }</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160;</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">int</span> n = 0; n &lt; batchSize; n++)</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160; {</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">int</span> c = 0; c &lt; channels; c++)</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160; {</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">int</span> yOutput = 0; yOutput &lt; heightOutput; yOutput++)</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160; {</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160; <span class="comment">// Calculate values independent of the x axis</span></div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160; <span class="keywordtype">int</span> hstart = (yOutput * strideY) - padTop;</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160; <span class="keywordtype">int</span> hend = hstart + poolHeight;</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160; <span class="comment">// Clamp the pooling region inside the valid input area (which includes the padding).</span></div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160; <span class="comment">// This is necessary because the final pooling in a row may overlap beyond the padding.</span></div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; hend = std::min(hend, heightInput + padBottom);</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160;</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160; <span class="keywordtype">int</span> height = hend - hstart;</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160; <span class="keywordtype">bool</span> hclamped = ClampRange(hstart, hend, heightInput);</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160;</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">int</span> xOutput = 0; xOutput &lt; widthOutput; xOutput++)</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160; {</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160; <span class="keywordtype">int</span> wstart = (xOutput * strideX) - padLeft;</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160; <span class="keywordtype">int</span> wend = wstart + poolWidth;</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160;</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160; <span class="comment">// Clamp the pooling region inside the valid input area (which includes the padding).</span></div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160; <span class="comment">// This is necessary because the final pooling in a row may overlap beyond the padding.</span></div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160; wend = std::min(wend, widthInput + padRight);</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160;</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160; <span class="keywordtype">float</span> result = defaultInitializer;</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160; <span class="keywordtype">float</span> poolAreaSize = boost::numeric_cast&lt;<span class="keywordtype">float</span>&gt;(height * (wend - wstart));</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160;</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160; <span class="comment">// Special case: when the pooling kernel is over a padding region and the padding</span></div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160; <span class="comment">// size is larger or equal to the kernel and the kernel only covers</span></div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160; <span class="comment">// padding and no real values, then we initialize the result as zero</span></div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160; <span class="comment">// by convention. This is because we need to choose a value here and</span></div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160; <span class="comment">// all values we have are padding, which we ignore.</span></div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160; <span class="keywordflow">if</span> (OnPaddingOnly(hstart, hend, heightInput) ||</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160; OnPaddingOnly(wstart, wend, widthInput))</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160; {</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160; result = 0.0f;</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160;</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> outputIndex = dataLayout.GetIndex(outputShape,</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160; boost::numeric_cast&lt;unsigned int&gt;(n),</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160; boost::numeric_cast&lt;unsigned int&gt;(c),</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160; boost::numeric_cast&lt;unsigned int&gt;(yOutput),</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160; boost::numeric_cast&lt;unsigned int&gt;(xOutput));</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160; rOutputEncoder[outputIndex];</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160; rOutputEncoder.<a class="code" href="classarmnn_1_1_encoder.html#ae3b62b846a9c239f332830b9e36030eb">Set</a>(result);</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160; }</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160;</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160; <span class="keywordtype">bool</span> clamped = hclamped |= ClampRange(wstart, wend, widthInput);</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160;</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160; <span class="keywordflow">if</span> (clamped &amp;&amp; params.<a class="code" href="structarmnn_1_1_pooling2d_descriptor.html#a8c29d6ea9b4186d69aad5961c910939c">m_PaddingMethod</a> == PaddingMethod::Exclude)</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160; {</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160; <span class="comment">// When we exclude the padding, it means we calculate with a smaller</span></div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160; <span class="comment">// kernel size, so I changed the divisor here.</span></div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160; poolAreaSize = boost::numeric_cast&lt;<span class="keywordtype">float</span>&gt;((hend - hstart) * (wend - wstart));</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160; }</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160;</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span> yInput = hstart; yInput &lt; hend; yInput++)</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160; {</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span> xInput = wstart; xInput &lt; wend; xInput++)</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160; {</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> inputIndex = dataLayout.GetIndex(inputShape,</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160; boost::numeric_cast&lt;unsigned int&gt;(n),</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160; boost::numeric_cast&lt;unsigned int&gt;(c),</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160; boost::numeric_cast&lt;unsigned int&gt;(yInput),</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160; boost::numeric_cast&lt;unsigned int&gt;(xInput));</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160;</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160; rInputDecoder[inputIndex];</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160; <span class="keywordtype">float</span> inval = rInputDecoder.<a class="code" href="classarmnn_1_1_decoder.html#ac729108381e2340bea12877971713ecb">Get</a>();</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160;</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160; accumulate(result, inval);</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160; }</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160; }</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160;</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160; execute(result, poolAreaSize);</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160;</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> outputIndex = dataLayout.GetIndex(outputShape,</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160; boost::numeric_cast&lt;unsigned int&gt;(n),</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160; boost::numeric_cast&lt;unsigned int&gt;(c),</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160; boost::numeric_cast&lt;unsigned int&gt;(yOutput),</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160; boost::numeric_cast&lt;unsigned int&gt;(xOutput));</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160;</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160; rOutputEncoder[outputIndex];</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160; rOutputEncoder.<a class="code" href="classarmnn_1_1_encoder.html#ae3b62b846a9c239f332830b9e36030eb">Set</a>(result);</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160; }</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160; }</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160; }</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160; }</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160;}</div><div class="ttc" id="structarmnn_1_1_pooling2d_descriptor_html_a5699e8606c37d18c03910b242cd1b010"><div class="ttname"><a href="structarmnn_1_1_pooling2d_descriptor.html#a5699e8606c37d18c03910b242cd1b010">armnn::Pooling2dDescriptor::m_PoolHeight</a></div><div class="ttdeci">uint32_t m_PoolHeight</div><div class="ttdoc">Pooling height value. </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.html#l00359">Descriptors.hpp:359</a></div></div>
<div class="ttc" id="structarmnn_1_1_pooling2d_descriptor_html_a56b51f56cef50cdfa554258eecdab046"><div class="ttname"><a href="structarmnn_1_1_pooling2d_descriptor.html#a56b51f56cef50cdfa554258eecdab046">armnn::Pooling2dDescriptor::m_PadTop</a></div><div class="ttdeci">uint32_t m_PadTop</div><div class="ttdoc">Padding top value in the height dimension. </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.html#l00353">Descriptors.hpp:353</a></div></div>
<div class="ttc" id="structarmnn_1_1_pooling2d_descriptor_html_a002bc30e590d78cbb4f4d12171055ca7"><div class="ttname"><a href="structarmnn_1_1_pooling2d_descriptor.html#a002bc30e590d78cbb4f4d12171055ca7">armnn::Pooling2dDescriptor::m_PadRight</a></div><div class="ttdeci">uint32_t m_PadRight</div><div class="ttdoc">Padding right value in the width dimension. </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.html#l00351">Descriptors.hpp:351</a></div></div>
<div class="ttc" id="classarmnn_1_1_invalid_argument_exception_html"><div class="ttname"><a href="classarmnn_1_1_invalid_argument_exception.html">armnn::InvalidArgumentException</a></div><div class="ttdef"><b>Definition:</b> <a href="_exceptions_8hpp_source.html#l00080">Exceptions.hpp:80</a></div></div>
<div class="ttc" id="structarmnn_1_1_pooling2d_descriptor_html_a6d8fb685cc1ff224f25aa127fcf62c86"><div class="ttname"><a href="structarmnn_1_1_pooling2d_descriptor.html#a6d8fb685cc1ff224f25aa127fcf62c86">armnn::Pooling2dDescriptor::m_PoolWidth</a></div><div class="ttdeci">uint32_t m_PoolWidth</div><div class="ttdoc">Pooling width value. </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.html#l00357">Descriptors.hpp:357</a></div></div>
<div class="ttc" id="structarmnn_1_1_pooling2d_descriptor_html_ac18546ebbebbb32fe0a03baa9bf2c600"><div class="ttname"><a href="structarmnn_1_1_pooling2d_descriptor.html#ac18546ebbebbb32fe0a03baa9bf2c600">armnn::Pooling2dDescriptor::m_PadLeft</a></div><div class="ttdeci">uint32_t m_PadLeft</div><div class="ttdoc">Padding left value in the width dimension. </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.html#l00349">Descriptors.hpp:349</a></div></div>
<div class="ttc" id="structarmnn_1_1_pooling2d_descriptor_html_a8c29d6ea9b4186d69aad5961c910939c"><div class="ttname"><a href="structarmnn_1_1_pooling2d_descriptor.html#a8c29d6ea9b4186d69aad5961c910939c">armnn::Pooling2dDescriptor::m_PaddingMethod</a></div><div class="ttdeci">PaddingMethod m_PaddingMethod</div><div class="ttdoc">The padding method to be used. (Exclude, IgnoreValue). </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.html#l00367">Descriptors.hpp:367</a></div></div>
<div class="ttc" id="structarmnn_1_1_pooling2d_descriptor_html_ac1fe174bbadfb39a2b636940c2e647c8"><div class="ttname"><a href="structarmnn_1_1_pooling2d_descriptor.html#ac1fe174bbadfb39a2b636940c2e647c8">armnn::Pooling2dDescriptor::m_StrideY</a></div><div class="ttdeci">uint32_t m_StrideY</div><div class="ttdoc">Stride value when proceeding through input for the height dimension. </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.html#l00363">Descriptors.hpp:363</a></div></div>
<div class="ttc" id="structarmnn_1_1_pooling2d_descriptor_html_a0031997bf43bd2747656c31e4977793a"><div class="ttname"><a href="structarmnn_1_1_pooling2d_descriptor.html#a0031997bf43bd2747656c31e4977793a">armnn::Pooling2dDescriptor::m_PoolType</a></div><div class="ttdeci">PoolingAlgorithm m_PoolType</div><div class="ttdoc">The pooling algorithm to use (Max. Average, L2). </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.html#l00347">Descriptors.hpp:347</a></div></div>
<div class="ttc" id="classarmnn_1_1_tensor_shape_html"><div class="ttname"><a href="classarmnn_1_1_tensor_shape.html">armnn::TensorShape</a></div><div class="ttdef"><b>Definition:</b> <a href="_tensor_8hpp_source.html#l00020">Tensor.hpp:20</a></div></div>
<div class="ttc" id="classarmnn_1_1_decoder_html_ac729108381e2340bea12877971713ecb"><div class="ttname"><a href="classarmnn_1_1_decoder.html#ac729108381e2340bea12877971713ecb">armnn::Decoder::Get</a></div><div class="ttdeci">virtual IType Get() const =0</div></div>
<div class="ttc" id="structarmnn_1_1_pooling2d_descriptor_html_a6089e1ca91914015777ea780a513131a"><div class="ttname"><a href="structarmnn_1_1_pooling2d_descriptor.html#a6089e1ca91914015777ea780a513131a">armnn::Pooling2dDescriptor::m_DataLayout</a></div><div class="ttdeci">DataLayout m_DataLayout</div><div class="ttdoc">The data layout to be used (NCHW, NHWC). </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.html#l00369">Descriptors.hpp:369</a></div></div>
<div class="ttc" id="classarmnn_utils_1_1_data_layout_indexed_html"><div class="ttname"><a href="classarmnn_utils_1_1_data_layout_indexed.html">armnnUtils::DataLayoutIndexed</a></div><div class="ttdef"><b>Definition:</b> <a href="_data_layout_indexed_8hpp_source.html#l00017">DataLayoutIndexed.hpp:17</a></div></div>
<div class="ttc" id="structarmnn_1_1_pooling2d_descriptor_html_aa9e49717ebdb741e8c767741647fc618"><div class="ttname"><a href="structarmnn_1_1_pooling2d_descriptor.html#aa9e49717ebdb741e8c767741647fc618">armnn::Pooling2dDescriptor::m_PadBottom</a></div><div class="ttdeci">uint32_t m_PadBottom</div><div class="ttdoc">Padding bottom value in the height dimension. </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.html#l00355">Descriptors.hpp:355</a></div></div>
<div class="ttc" id="classarmnn_1_1_tensor_info_html_a8b5d0f8a24e9d9238f412260a552acf8"><div class="ttname"><a href="classarmnn_1_1_tensor_info.html#a8b5d0f8a24e9d9238f412260a552acf8">armnn::TensorInfo::GetShape</a></div><div class="ttdeci">const TensorShape &amp; GetShape() const</div><div class="ttdef"><b>Definition:</b> <a href="_tensor_8hpp_source.html#l00088">Tensor.hpp:88</a></div></div>
<div class="ttc" id="classarmnn_1_1_encoder_html_ae3b62b846a9c239f332830b9e36030eb"><div class="ttname"><a href="classarmnn_1_1_encoder.html#ae3b62b846a9c239f332830b9e36030eb">armnn::Encoder::Set</a></div><div class="ttdeci">virtual void Set(IType right)=0</div></div>
<div class="ttc" id="structarmnn_1_1_pooling2d_descriptor_html_afe6a3377c4531315354def9023c8fdda"><div class="ttname"><a href="structarmnn_1_1_pooling2d_descriptor.html#afe6a3377c4531315354def9023c8fdda">armnn::Pooling2dDescriptor::m_StrideX</a></div><div class="ttdeci">uint32_t m_StrideX</div><div class="ttdoc">Stride value when proceeding through input for the width dimension. </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.html#l00361">Descriptors.hpp:361</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="aa1ca65b3ba7f7c760eb3d5563c12864e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa1ca65b3ba7f7c760eb3d5563c12864e">&#9670;&nbsp;</a></span>PreluImpl()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void PreluImpl </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="structarmnn_1_1_prelu_queue_descriptor.html">PreluQueueDescriptor</a> &amp;&#160;</td>
<td class="paramname"><em>data</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classarmnn_1_1_decoder.html">Decoder</a>&lt; float &gt; &amp;&#160;</td>
<td class="paramname"><em>inputData</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classarmnn_1_1_decoder.html">Decoder</a>&lt; float &gt; &amp;&#160;</td>
<td class="paramname"><em>alphaData</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classarmnn_1_1_encoder.html">Encoder</a>&lt; float &gt; &amp;&#160;</td>
<td class="paramname"><em>outputData</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_prelu_impl_8cpp_source.html#l00013">13</a> of file <a class="el" href="_prelu_impl_8cpp_source.html">PreluImpl.cpp</a>.</p>
<p class="reference">References <a class="el" href="_tensor_8hpp_source.html#l00088">TensorInfo::GetShape()</a>, <a class="el" href="_ref_workload_utils_8hpp_source.html#l00025">GetTensorInfo()</a>, <a class="el" href="_workload_data_8hpp_source.html#l00030">QueueDescriptor::m_Inputs</a>, <a class="el" href="_workload_data_8hpp_source.html#l00031">QueueDescriptor::m_Outputs</a>, and <a class="el" href="_broadcast_8hpp_source.html#l00026">BroadcastLoop::Unroll()</a>.</p>
<p class="reference">Referenced by <a class="el" href="_ref_prelu_workload_8cpp_source.html#l00021">RefPreluWorkload::Execute()</a>.</p>
<div class="fragment"><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;{</div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160; <span class="keyword">const</span> TensorInfo&amp; inputInfo = <a class="code" href="namespacearmnn_utils.html#acee63cd08da47910fc166a1990988fa8">GetTensorInfo</a>(data.m_Inputs[0]);</div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160; <span class="keyword">const</span> TensorInfo&amp; alphaInfo = <a class="code" href="namespacearmnn_utils.html#acee63cd08da47910fc166a1990988fa8">GetTensorInfo</a>(data.m_Inputs[1]);</div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160; <span class="keyword">const</span> TensorInfo&amp; outputInfo = <a class="code" href="namespacearmnn_utils.html#acee63cd08da47910fc166a1990988fa8">GetTensorInfo</a>(data.m_Outputs[0]);</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160; <span class="keyword">const</span> TensorShape&amp; inputShape = inputInfo.GetShape();</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160; <span class="keyword">const</span> TensorShape&amp; alphaShape = alphaInfo.GetShape();</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160; <span class="keyword">const</span> TensorShape&amp; outputShape = outputInfo.GetShape();</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; <span class="comment">// PReLU activation: f(x) = alpha * x for x &lt; 0, f(x) = x for x &gt;= 0</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; <span class="keyword">auto</span> prelu = [](<span class="keywordtype">float</span> x, <span class="keywordtype">float</span> alpha)</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; {</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; <span class="keywordflow">return</span> x &lt; 0 ? alpha * x : x;</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; };</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; BroadcastLoop(inputShape, alphaShape, outputShape).Unroll(prelu, 0, inputData, alphaData, outputData);</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;}</div><div class="ttc" id="namespacearmnn_utils_html_acee63cd08da47910fc166a1990988fa8"><div class="ttname"><a href="namespacearmnn_utils.html#acee63cd08da47910fc166a1990988fa8">armnnUtils::GetTensorInfo</a></div><div class="ttdeci">armnn::TensorInfo GetTensorInfo(unsigned int numberOfBatches, unsigned int numberOfChannels, unsigned int height, unsigned int width, const armnn::DataLayout dataLayout, const armnn::DataType dataType)</div><div class="ttdef"><b>Definition:</b> <a href="_tensor_utils_8cpp_source.html#l00038">TensorUtils.cpp:38</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="abe34cf42d7c8515ecd15d11f4aeb399c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#abe34cf42d7c8515ecd15d11f4aeb399c">&#9670;&nbsp;</a></span>PreserveTypeTestImpl()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void armnn::PreserveTypeTestImpl </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a> &amp;&#160;</td>
<td class="paramname"><em>dataType</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_quantizer_test_8cpp_source.html#l02817">2817</a> of file <a class="el" href="_quantizer_test_8cpp_source.html">QuantizerTest.cpp</a>.</p>
<p class="reference">References <a class="el" href="classarmnn_1_1_i_output_slot.html#ac1835f8756a9f03c02fcf9664e3a0fce">IOutputSlot::Connect()</a>, <a class="el" href="_network_quantizer_8cpp_source.html#l00040">INetworkQuantizer::Create()</a>, <a class="el" href="_network_8cpp_source.html#l00048">INetwork::Create()</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a26e6ed77470c6f2f830ecf874e6c0d55">Float16</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">Float32</a>, <a class="el" href="classarmnn_1_1_i_connectable_layer.html#a6ec9e0eb66d7d6a01240492a0b18104c">IConnectableLayer::GetInputSlot()</a>, <a class="el" href="classarmnn_1_1_i_connectable_layer.html#a80ac4eda2e7f2757ec9dd96fc96dbd16">IConnectableLayer::GetOutputSlot()</a>, <a class="el" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>, <a class="el" href="_file_only_profiling_decorator_tests_8cpp_source.html#l00045">options</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a0a3f57c876f5a230244c38e1453a8a6e">QAsymmU8</a>, <a class="el" href="classarmnn_1_1_i_output_slot.html#a5ee4a6c9a2481245487b1b1a70d20fd0">IOutputSlot::SetTensorInfo()</a>, and <a class="el" href="_quantizer_test_8cpp_source.html#l00193">VisitLayersTopologically()</a>.</p>
<p class="reference">Referenced by <a class="el" href="_quantizer_test_8cpp_source.html#l02847">BOOST_AUTO_TEST_CASE()</a>.</p>
<div class="fragment"><div class="line"><a name="l02818"></a><span class="lineno"> 2818</span>&#160;{</div><div class="line"><a name="l02819"></a><span class="lineno"> 2819</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> network = INetwork::Create();</div><div class="line"><a name="l02820"></a><span class="lineno"> 2820</span>&#160;</div><div class="line"><a name="l02821"></a><span class="lineno"> 2821</span>&#160; <span class="comment">// Add the layers</span></div><div class="line"><a name="l02822"></a><span class="lineno"> 2822</span>&#160; IConnectableLayer* input0 = network-&gt;AddInputLayer(0);</div><div class="line"><a name="l02823"></a><span class="lineno"> 2823</span>&#160; IConnectableLayer* input1 = network-&gt;AddInputLayer(1);</div><div class="line"><a name="l02824"></a><span class="lineno"> 2824</span>&#160; IConnectableLayer* addition = network-&gt;AddAdditionLayer();</div><div class="line"><a name="l02825"></a><span class="lineno"> 2825</span>&#160; IConnectableLayer* output = network-&gt;AddOutputLayer(2);</div><div class="line"><a name="l02826"></a><span class="lineno"> 2826</span>&#160;</div><div class="line"><a name="l02827"></a><span class="lineno"> 2827</span>&#160; input0-&gt;GetOutputSlot(0).Connect(addition-&gt;GetInputSlot(0));</div><div class="line"><a name="l02828"></a><span class="lineno"> 2828</span>&#160; input1-&gt;GetOutputSlot(0).Connect(addition-&gt;GetInputSlot(1));</div><div class="line"><a name="l02829"></a><span class="lineno"> 2829</span>&#160; addition-&gt;GetOutputSlot(0).Connect(output-&gt;GetInputSlot(0));</div><div class="line"><a name="l02830"></a><span class="lineno"> 2830</span>&#160;</div><div class="line"><a name="l02831"></a><span class="lineno"> 2831</span>&#160; <span class="keyword">const</span> TensorShape shape{1U, 2U, 3U};</div><div class="line"><a name="l02832"></a><span class="lineno"> 2832</span>&#160; <span class="keyword">const</span> TensorInfo <a class="code" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>(shape, dataType);</div><div class="line"><a name="l02833"></a><span class="lineno"> 2833</span>&#160; input0-&gt;GetOutputSlot(0).SetTensorInfo(info);</div><div class="line"><a name="l02834"></a><span class="lineno"> 2834</span>&#160; input1-&gt;GetOutputSlot(0).SetTensorInfo(info);</div><div class="line"><a name="l02835"></a><span class="lineno"> 2835</span>&#160; addition-&gt;GetOutputSlot(0).SetTensorInfo(info);</div><div class="line"><a name="l02836"></a><span class="lineno"> 2836</span>&#160;</div><div class="line"><a name="l02837"></a><span class="lineno"> 2837</span>&#160; QuantizerOptions <a class="code" href="_file_only_profiling_decorator_tests_8cpp.html#a6560146509197f3e197d8d36f76c1347">options</a> = dataType == DataType::Float32 ?</div><div class="line"><a name="l02838"></a><span class="lineno"> 2838</span>&#160; QuantizerOptions(DataType::QAsymmU8, <span class="keyword">true</span>) : QuantizerOptions(dataType, <a class="code" href="_cl_layer_tests_8cpp.html#a37f1c3ccc9fc906be85185350dd83d48">true</a>);</div><div class="line"><a name="l02839"></a><span class="lineno"> 2839</span>&#160;</div><div class="line"><a name="l02840"></a><span class="lineno"> 2840</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQAsymmU8 = INetworkQuantizer::Create(network.get(), <a class="code" href="_file_only_profiling_decorator_tests_8cpp.html#a6560146509197f3e197d8d36f76c1347">options</a>)-&gt;ExportNetwork();</div><div class="line"><a name="l02841"></a><span class="lineno"> 2841</span>&#160; TestPreserveType validatorQAsymmU8(options, dataType, shape, shape);</div><div class="line"><a name="l02842"></a><span class="lineno"> 2842</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQAsymmU8.get(), validatorQAsymmU8);</div><div class="line"><a name="l02843"></a><span class="lineno"> 2843</span>&#160; validatorQAsymmU8.CheckQuantizeDequantizeLayerVisited(</div><div class="line"><a name="l02844"></a><span class="lineno"> 2844</span>&#160; dataType == DataType::Float32 || dataType == DataType::Float16);</div><div class="line"><a name="l02845"></a><span class="lineno"> 2845</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c"><div class="ttname"><a href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">armnn::BoostLogSeverityMapping::info</a></div></div>
<div class="ttc" id="_cl_layer_tests_8cpp_html_a37f1c3ccc9fc906be85185350dd83d48"><div class="ttname"><a href="_cl_layer_tests_8cpp.html#a37f1c3ccc9fc906be85185350dd83d48">true</a></div><div class="ttdeci">DataLayout::NCHW DataLayout::NCHW DataLayout::NHWC DataLayout::NHWC true</div><div class="ttdef"><b>Definition:</b> <a href="_cl_layer_tests_8cpp_source.html#l00176">ClLayerTests.cpp:176</a></div></div>
<div class="ttc" id="namespacearmnn_html_a6482907b4c57873e197324f5cb66fd4d"><div class="ttname"><a href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">armnn::VisitLayersTopologically</a></div><div class="ttdeci">void VisitLayersTopologically(const INetwork *inputNetwork, ILayerVisitor &amp;visitor)</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l00193">QuantizerTest.cpp:193</a></div></div>
<div class="ttc" id="namespacearmnn_html_ace74f6f9feb95a964a49d79458232703"><div class="ttname"><a href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">armnn::INetworkPtr</a></div><div class="ttdeci">std::unique_ptr&lt; INetwork, void(*)(INetwork *network)&gt; INetworkPtr</div><div class="ttdef"><b>Definition:</b> <a href="_i_network_8hpp_source.html#l00085">INetwork.hpp:85</a></div></div>
<div class="ttc" id="_file_only_profiling_decorator_tests_8cpp_html_a6560146509197f3e197d8d36f76c1347"><div class="ttname"><a href="_file_only_profiling_decorator_tests_8cpp.html#a6560146509197f3e197d8d36f76c1347">options</a></div><div class="ttdeci">armnn::Runtime::CreationOptions::ExternalProfilingOptions options</div><div class="ttdef"><b>Definition:</b> <a href="_file_only_profiling_decorator_tests_8cpp_source.html#l00045">FileOnlyProfilingDecoratorTests.cpp:45</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="abbbe4a59b72fba606f21e7c24dcbd8c0"></a>
<h2 class="memtitle"><span class="permalink"><a href="#abbbe4a59b72fba606f21e7c24dcbd8c0">&#9670;&nbsp;</a></span>Quantize() <span class="overload">[1/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void armnn::Quantize </td>
<td>(</td>
<td class="paramtype">uint8_t *&#160;</td>
<td class="paramname"><em>quant</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const float *&#160;</td>
<td class="paramname"><em>dequant</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>info</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_ref_workload_utils_8hpp_source.html#l00095">95</a> of file <a class="el" href="_ref_workload_utils_8hpp_source.html">RefWorkloadUtils.hpp</a>.</p>
<p class="reference">References <a class="el" href="_tensor_8hpp_source.html#l00093">TensorInfo::GetNumElements()</a>, <a class="el" href="_tensor_8cpp_source.html#l00264">TensorInfo::GetQuantizationOffset()</a>, and <a class="el" href="_tensor_8cpp_source.html#l00247">TensorInfo::GetQuantizationScale()</a>.</p>
<div class="fragment"><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160;{</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0; i &lt; <a class="code" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>.GetNumElements(); i++)</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; {</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; quant[i] = armnn::Quantize&lt;uint8_t&gt;(dequant[i], <a class="code" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>.GetQuantizationScale(), <a class="code" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>.GetQuantizationOffset());</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; }</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c"><div class="ttname"><a href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">armnn::BoostLogSeverityMapping::info</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="ad773a034fb9983e15f3094b4c5c7c30c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad773a034fb9983e15f3094b4c5c7c30c">&#9670;&nbsp;</a></span>Quantize() <span class="overload">[2/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template int32_t Quantize&lt; int32_t &gt; </td>
<td>(</td>
<td class="paramtype">float&#160;</td>
<td class="paramname"><em>value</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">float&#160;</td>
<td class="paramname"><em>scale</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int32_t&#160;</td>
<td class="paramname"><em>offset</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Explicit specialization of Quantize for int8_t. </p>
<p>Explicit specialization of Quantize for int32_t.</p>
<p>Explicit specialization of Quantize for int16_t.</p>
<p>Explicit specialization of Quantize for uint8_t.</p>
<p>Quantize a floating point data type into an 8-bit data type. </p><dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">value</td><td>- The value to quantize. </td></tr>
<tr><td class="paramname">scale</td><td>- The scale (must be non-zero). </td></tr>
<tr><td class="paramname">offset</td><td>- The offset. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>- The quantized value calculated as round(value/scale)+offset. </dd></dl>
<p class="definition">Definition at line <a class="el" href="_types_utils_8cpp_source.html#l00031">31</a> of file <a class="el" href="_types_utils_8cpp_source.html">TypesUtils.cpp</a>.</p>
<p class="reference">Referenced by <a class="el" href="_serializer_tests_8cpp_source.html#l01950">BOOST_AUTO_TEST_CASE()</a>.</p>
<div class="fragment"><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;{</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; static_assert(IsQuantizedType&lt;QuantizedType&gt;(), <span class="stringliteral">&quot;Not an integer type.&quot;</span>);</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; constexpr QuantizedType max = std::numeric_limits&lt;QuantizedType&gt;::max();</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; constexpr QuantizedType min = std::numeric_limits&lt;QuantizedType&gt;::lowest();</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; BOOST_ASSERT(scale != 0.f);</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; BOOST_ASSERT(!std::isnan(value));</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; <span class="keywordtype">float</span> clampedValue = std::min(std::max(static_cast&lt;float&gt;(round(value/scale) + offset), static_cast&lt;float&gt;(min)),</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; static_cast&lt;float&gt;(max));</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; <span class="keyword">auto</span> quantizedBits = <span class="keyword">static_cast&lt;</span>QuantizedType<span class="keyword">&gt;</span>(clampedValue);</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; <span class="keywordflow">return</span> quantizedBits;</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;}</div></div><!-- fragment -->
</div>
</div>
<a id="a0e2bce68a1f7eff47ead4d9a2804eb91"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a0e2bce68a1f7eff47ead4d9a2804eb91">&#9670;&nbsp;</a></span>QuantizeConstant()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void armnn::QuantizeConstant </td>
<td>(</td>
<td class="paramtype">const srcType *&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint8_t *&#160;</td>
<td class="paramname"><em>dst</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t&#160;</td>
<td class="paramname"><em>numElements</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">float &amp;&#160;</td>
<td class="paramname"><em>scale</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int &amp;&#160;</td>
<td class="paramname"><em>offset</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_network_quantizer_utils_8hpp_source.html#l00023">23</a> of file <a class="el" href="_network_quantizer_utils_8hpp_source.html">NetworkQuantizerUtils.hpp</a>.</p>
<p class="reference">References <a class="el" href="_network_quantization_scheme_8hpp_source.html#l00031">QAsymmU8QuantizationScheme::ComputeScheme()</a>, and <a class="el" href="_network_quantizer_utils_8cpp_source.html#l00015">CreateQuantizedConst()</a>.</p>
<p class="reference">Referenced by <a class="el" href="_network_quantizer_utils_8cpp_source.html#l00015">CreateQuantizedConst()</a>.</p>
<div class="fragment"><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;{</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; BOOST_ASSERT(src);</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; BOOST_ASSERT(dst);</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; <span class="keywordtype">float</span> min = std::numeric_limits&lt;srcType&gt;::max();</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; <span class="keywordtype">float</span> max = std::numeric_limits&lt;srcType&gt;::lowest();</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0; i &lt; numElements; ++i)</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; {</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; min = std::min(min, src[i]);</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; max = std::max(max, src[i]);</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; }</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; QAsymmU8QuantizationScheme quantizationScheme;</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; <a class="code" href="namespacearmnn.html#a9b8e5a95f8c061bbbcdb036915dcb61a">OffsetScalePair</a> qParams = quantizationScheme.ComputeScheme(min, max);</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; scale = qParams.first;</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; offset = qParams.second;</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0; i &lt; numElements; ++i)</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; {</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; dst[i] = armnn::Quantize&lt;uint8_t&gt;(src[i], scale, offset);</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; }</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a9b8e5a95f8c061bbbcdb036915dcb61a"><div class="ttname"><a href="namespacearmnn.html#a9b8e5a95f8c061bbbcdb036915dcb61a">armnn::OffsetScalePair</a></div><div class="ttdeci">std::pair&lt; float, int &gt; OffsetScalePair</div><div class="ttdef"><b>Definition:</b> <a href="_network_quantization_scheme_8hpp_source.html#l00016">NetworkQuantizationScheme.hpp:16</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="ae86f1ca23eaa764da9e589cc8e39a969"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae86f1ca23eaa764da9e589cc8e39a969">&#9670;&nbsp;</a></span>ReducedOutputOffset()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">unsigned int armnn::ReducedOutputOffset </td>
<td>(</td>
<td class="paramtype">const unsigned int&#160;</td>
<td class="paramname"><em>numDims</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_shape.html">armnn::TensorShape</a> &amp;&#160;</td>
<td class="paramname"><em>dims</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">std::vector&lt; unsigned int &gt; &amp;&#160;</td>
<td class="paramname"><em>index</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const unsigned int&#160;</td>
<td class="paramname"><em>numAxis</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const std::vector&lt; unsigned int &gt; &amp;&#160;</td>
<td class="paramname"><em>axis</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="backends_2reference_2workloads_2_mean_8cpp_source.html#l00039">39</a> of file <a class="el" href="backends_2reference_2workloads_2_mean_8cpp_source.html">Mean.cpp</a>.</p>
<p class="reference">Referenced by <a class="el" href="backends_2reference_2workloads_2_mean_8cpp_source.html#l00071">Mean()</a>.</p>
<div class="fragment"><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;{</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> offset = 0;</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> idx = 0; idx &lt; numDims; ++idx)</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; {</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; <span class="keywordtype">bool</span> isAxis = <span class="keyword">false</span>;</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; <span class="keywordflow">if</span> (!axis.empty())</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; {</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> axisIdx = 0; axisIdx &lt; numAxis; ++axisIdx)</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; {</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; <span class="keywordflow">if</span> (idx == axis[axisIdx])</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; {</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; isAxis = <span class="keyword">true</span>;</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; }</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; }</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; }</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; <span class="keywordflow">if</span> (!isAxis)</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; {</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; offset = offset * dims[idx] + index[idx];</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; }</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; }</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; <span class="keywordflow">return</span> offset;</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160;}</div></div><!-- fragment -->
</div>
</div>
<a id="ae7d50846b2769f81521af24d063bc093"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae7d50846b2769f81521af24d063bc093">&#9670;&nbsp;</a></span>RefBackendId()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">constexpr const char* armnn::RefBackendId </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_ref_backend_id_8hpp_source.html#l00010">10</a> of file <a class="el" href="_ref_backend_id_8hpp_source.html">RefBackendId.hpp</a>.</p>
<p class="reference">Referenced by <a class="el" href="_ref_backend_8cpp_source.html#l00024">RefBackend::GetIdStatic()</a>.</p>
<div class="fragment"><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;{ <span class="keywordflow">return</span> <span class="stringliteral">&quot;CpuRef&quot;</span>; }</div></div><!-- fragment -->
</div>
</div>
<a id="a5baedac4819656984488bc1fe5fe1505"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a5baedac4819656984488bc1fe5fe1505">&#9670;&nbsp;</a></span>RefTensorHandleFactoryId()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">constexpr const char* armnn::RefTensorHandleFactoryId </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_ref_tensor_handle_factory_8hpp_source.html#l00015">15</a> of file <a class="el" href="_ref_tensor_handle_factory_8hpp_source.html">RefTensorHandleFactory.hpp</a>.</p>
<p class="reference">Referenced by <a class="el" href="_ref_tensor_handle_factory_8cpp_source.html#l00016">RefTensorHandleFactory::GetIdStatic()</a>.</p>
<div class="fragment"><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;{ <span class="keywordflow">return</span> <span class="stringliteral">&quot;Arm/Ref/TensorHandleFactory&quot;</span>; }</div></div><!-- fragment -->
</div>
</div>
<a id="a52b301fd3adce20b51c4482cb52f1a38"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a52b301fd3adce20b51c4482cb52f1a38">&#9670;&nbsp;</a></span>ReorderWeightChannelsForAcl()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classarmnn_1_1_const_tensor.html">ConstTensor</a> armnn::ReorderWeightChannelsForAcl </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_const_tensor.html">ConstTensor</a> &amp;&#160;</td>
<td class="paramname"><em>weightHandle</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0">DataLayout</a>&#160;</td>
<td class="paramname"><em>dataLayout</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">void *&#160;</td>
<td class="paramname"><em>permuteBuffer</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_workload_utils_8cpp_source.html#l00062">62</a> of file <a class="el" href="_workload_utils_8cpp_source.html">WorkloadUtils.cpp</a>.</p>
<p class="reference">References <a class="el" href="_tensor_8hpp_source.html#l00167">BaseTensor&lt; MemoryType &gt;::GetInfo()</a>, <a class="el" href="_tensor_8cpp_source.html#l00213">TensorInfo::GetNumBytes()</a>, <a class="el" href="_tensor_8hpp_source.html#l00169">BaseTensor&lt; MemoryType &gt;::GetShape()</a>, <a class="el" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0a6b99f356fe3b30a2a850b5ea897c289f">NCHW</a>, and <a class="el" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0ad066db54b89b0912e7e7c6da51e2da51">NHWC</a>.</p>
<div class="fragment"><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160;{</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; <a class="code" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a>* weight = <span class="keyword">static_cast&lt;</span><a class="code" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a>*<span class="keyword">&gt;</span>(permuteBuffer);</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; <span class="keyword">const</span> TensorShape&amp; weightShape = weightHandle.GetShape();</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> multiplier;</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> height;</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> width;</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> inputChannels;</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; <span class="keywordflow">switch</span> (dataLayout)</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; {</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; <span class="keywordflow">case</span> DataLayout::NHWC: <span class="comment">//It actually is [ H, W, I, M ]</span></div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; height = weightShape[0];</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; width = weightShape[1];</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; inputChannels = weightShape[2];</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; multiplier = weightShape[3];</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; <span class="keywordflow">case</span> DataLayout::NCHW: <span class="comment">//It actually is [ M, I, H, W ]</span></div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; <span class="keywordflow">default</span>:</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; height = weightShape[2];</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; width = weightShape[3];</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; inputChannels = weightShape[1];</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; multiplier = weightShape[0];</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; }</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160;</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; std::vector&lt;DataType&gt; weightAclOrder(height*width*inputChannels*multiplier);</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> destinationWeightsChannel;</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> totalChannels = inputChannels * multiplier;</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> channelSize = height * width;</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> inputChannel = 0;</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160;</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> originWeightsChannel = 0; originWeightsChannel &lt; totalChannels; originWeightsChannel++)</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; {</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; inputChannel = originWeightsChannel % inputChannels;</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; destinationWeightsChannel = (originWeightsChannel - inputChannel) / inputChannels + multiplier * inputChannel;</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160;</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i &lt; channelSize; i++)</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; {</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; weightAclOrder[i + destinationWeightsChannel * channelSize] =</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; weight[i + originWeightsChannel * channelSize];</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; }</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; }</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160;</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; ::memcpy(permuteBuffer, weightAclOrder.data(), weightHandle.GetInfo().GetNumBytes());</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; <span class="keywordflow">return</span> ConstTensor(weightHandle.GetInfo(), permuteBuffer);</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_ad8ed01ff3ff33333d8e19db4d2818bb6"><div class="ttname"><a href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6">armnn::DataType</a></div><div class="ttdeci">DataType</div><div class="ttdef"><b>Definition:</b> <a href="_types_8hpp_source.html#l00032">Types.hpp:32</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a7658f93d899c8646515a29370e6aa994"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a7658f93d899c8646515a29370e6aa994">&#9670;&nbsp;</a></span>ReportError()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void armnn::ReportError </td>
<td>(</td>
<td class="paramtype">const std::string &amp;&#160;</td>
<td class="paramname"><em>errorMessage</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classarmnn_1_1_optional.html">Optional</a>&lt; std::vector&lt; std::string &gt; &amp;&gt;&#160;</td>
<td class="paramname"><em>errorMessages</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_network_8cpp_source.html#l00074">74</a> of file <a class="el" href="_network_8cpp_source.html">Network.cpp</a>.</p>
<p class="reference">References <a class="el" href="_logging_8hpp_source.html#l00163">ARMNN_LOG</a>, and <a class="el" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407a7b83d3f08fa392b79e3f553b585971cd">warning</a>.</p>
<p class="reference">Referenced by <a class="el" href="_network_8cpp_source.html#l00133">AssignBackends()</a>, <a class="el" href="_network_8cpp_source.html#l00098">CheckScaleSetOnQuantizedType()</a>, and <a class="el" href="_network_8cpp_source.html#l00807">Optimize()</a>.</p>
<div class="fragment"><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160;{</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; std::stringstream fullErrorMessage;</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; fullErrorMessage &lt;&lt; <span class="stringliteral">&quot;ERROR: &quot;</span> &lt;&lt; errorMessage;</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; <a class="code" href="_logging_8hpp.html#a7b6ad073975f437ec38ca7d20154727f">ARMNN_LOG</a>(warning) &lt;&lt; fullErrorMessage.str();</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; <span class="keywordflow">if</span> (errorMessages)</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; {</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; errorMessages.value().push_back(fullErrorMessage.str());</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; }</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160;}</div><div class="ttc" id="_logging_8hpp_html_a7b6ad073975f437ec38ca7d20154727f"><div class="ttname"><a href="_logging_8hpp.html#a7b6ad073975f437ec38ca7d20154727f">ARMNN_LOG</a></div><div class="ttdeci">#define ARMNN_LOG(severity)</div><div class="ttdef"><b>Definition:</b> <a href="_logging_8hpp_source.html#l00163">Logging.hpp:163</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a38e626422579decc13e3ee37da1a84c9"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a38e626422579decc13e3ee37da1a84c9">&#9670;&nbsp;</a></span>ReportWarning()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void armnn::ReportWarning </td>
<td>(</td>
<td class="paramtype">const std::string &amp;&#160;</td>
<td class="paramname"><em>warningMessage</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classarmnn_1_1_optional.html">Optional</a>&lt; std::vector&lt; std::string &gt; &amp;&gt;&#160;</td>
<td class="paramname"><em>warningMessages</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_network_8cpp_source.html#l00086">86</a> of file <a class="el" href="_network_8cpp_source.html">Network.cpp</a>.</p>
<p class="reference">References <a class="el" href="_logging_8hpp_source.html#l00163">ARMNN_LOG</a>, and <a class="el" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407a7b83d3f08fa392b79e3f553b585971cd">warning</a>.</p>
<p class="reference">Referenced by <a class="el" href="_network_8cpp_source.html#l00345">ApplyBackendOptimizations()</a>, and <a class="el" href="_network_8cpp_source.html#l00133">AssignBackends()</a>.</p>
<div class="fragment"><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160;{</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; std::stringstream fullWarningMessage;</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; fullWarningMessage &lt;&lt; <span class="stringliteral">&quot;WARNING: &quot;</span> &lt;&lt; warningMessage;</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; <a class="code" href="_logging_8hpp.html#a7b6ad073975f437ec38ca7d20154727f">ARMNN_LOG</a>(warning) &lt;&lt; fullWarningMessage.str();</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; <span class="keywordflow">if</span> (warningMessages)</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; {</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; warningMessages.value().push_back(fullWarningMessage.str());</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; }</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160;}</div><div class="ttc" id="_logging_8hpp_html_a7b6ad073975f437ec38ca7d20154727f"><div class="ttname"><a href="_logging_8hpp.html#a7b6ad073975f437ec38ca7d20154727f">ARMNN_LOG</a></div><div class="ttdeci">#define ARMNN_LOG(severity)</div><div class="ttdef"><b>Definition:</b> <a href="_logging_8hpp_source.html#l00163">Logging.hpp:163</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a5ee4a1cca55f69b31e625c786655ed1a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a5ee4a1cca55f69b31e625c786655ed1a">&#9670;&nbsp;</a></span>RequiresCopy()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">bool armnn::RequiresCopy </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classarmnn_1_1_i_tensor_handle_factory.html#a32f4aa6a7089d877af08928139c2c277">ITensorHandleFactory::FactoryId</a>&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classarmnn_1_1_i_tensor_handle_factory.html#a32f4aa6a7089d877af08928139c2c277">ITensorHandleFactory::FactoryId</a>&#160;</td>
<td class="paramname"><em>dst</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classarmnn_1_1_tensor_handle_factory_registry.html">TensorHandleFactoryRegistry</a> &amp;&#160;</td>
<td class="paramname"><em>registry</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_network_8cpp_source.html#l00443">443</a> of file <a class="el" href="_network_8cpp_source.html">Network.cpp</a>.</p>
<p class="reference">References <a class="el" href="include_2armnn_2backends_2_i_tensor_handle_factory_8hpp_source.html#l00060">ITensorHandleFactory::GetExportFlags()</a>, <a class="el" href="_tensor_handle_factory_registry_8cpp_source.html#l00039">TensorHandleFactoryRegistry::GetFactory()</a>, and <a class="el" href="include_2armnn_2backends_2_i_tensor_handle_factory_8hpp_source.html#l00061">ITensorHandleFactory::GetImportFlags()</a>.</p>
<p class="reference">Referenced by <a class="el" href="_network_8cpp_source.html#l00555">CalculateSlotOption()</a>.</p>
<div class="fragment"><div class="line"><a name="l00446"></a><span class="lineno"> 446</span>&#160;{</div><div class="line"><a name="l00447"></a><span class="lineno"> 447</span>&#160; <span class="keywordflow">if</span> (src != dst)</div><div class="line"><a name="l00448"></a><span class="lineno"> 448</span>&#160; {</div><div class="line"><a name="l00449"></a><span class="lineno"> 449</span>&#160; ITensorHandleFactory* srcFactory = registry.GetFactory(src);</div><div class="line"><a name="l00450"></a><span class="lineno"> 450</span>&#160; ITensorHandleFactory* dstFactory = registry.GetFactory(dst);</div><div class="line"><a name="l00451"></a><span class="lineno"> 451</span>&#160;</div><div class="line"><a name="l00452"></a><span class="lineno"> 452</span>&#160; <span class="keywordflow">if</span> (srcFactory &amp;&amp; dstFactory &amp;&amp;</div><div class="line"><a name="l00453"></a><span class="lineno"> 453</span>&#160; (srcFactory-&gt;GetExportFlags() &amp; dstFactory-&gt;GetImportFlags()) != 0)</div><div class="line"><a name="l00454"></a><span class="lineno"> 454</span>&#160; {</div><div class="line"><a name="l00455"></a><span class="lineno"> 455</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00456"></a><span class="lineno"> 456</span>&#160; }</div><div class="line"><a name="l00457"></a><span class="lineno"> 457</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00458"></a><span class="lineno"> 458</span>&#160; }</div><div class="line"><a name="l00459"></a><span class="lineno"> 459</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00460"></a><span class="lineno"> 460</span>&#160;}</div></div><!-- fragment -->
</div>
</div>
<a id="a3170fdd696155a247ecd81d445c0e2e1"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a3170fdd696155a247ecd81d445c0e2e1">&#9670;&nbsp;</a></span>ReshapeWeightsForAcl()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void ReshapeWeightsForAcl </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>weightInfo</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0">DataLayout</a>&#160;</td>
<td class="paramname"><em>dataLayout</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_workload_utils_8cpp_source.html#l00036">36</a> of file <a class="el" href="_workload_utils_8cpp_source.html">WorkloadUtils.cpp</a>.</p>
<p class="reference">References <a class="el" href="_tensor_8hpp_source.html#l00088">TensorInfo::GetShape()</a>, <a class="el" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0a6b99f356fe3b30a2a850b5ea897c289f">NCHW</a>, <a class="el" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0ad066db54b89b0912e7e7c6da51e2da51">NHWC</a>, and <a class="el" href="_tensor_8hpp_source.html#l00090">TensorInfo::SetShape()</a>.</p>
<p class="reference">Referenced by <a class="el" href="_workload_utils_8cpp_source.html#l00132">ConvertWeightTensorFromArmnnToAcl()</a>, <a class="el" href="_workload_utils_8cpp_source.html#l00109">ConvertWeightTensorInfoFromArmnnToAcl()</a>, and <a class="el" href="_workload_utils_8hpp_source.html#l00192">GatherTensorHandlePairs()</a>.</p>
<div class="fragment"><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;{</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; <span class="comment">// Reshape the weights in-place</span></div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; <span class="keyword">const</span> TensorShape&amp; weightShape = weightInfo.GetShape();</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; <span class="keywordflow">switch</span> (dataLayout)</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; {</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; <span class="keywordflow">case</span> DataLayout::NHWC:</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; <span class="comment">// The data layout is NHWC, reshape from [ H, W, I, M ] to [ 1, H, W, I * M ]</span></div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; weightInfo.SetShape({ 1,</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; weightShape[0],</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; weightShape[1],</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; weightShape[2] * weightShape[3] });</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; weightInfo.SetShape({ 1,</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; weightShape[0] * weightShape[1],</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; weightShape[2],</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; weightShape[3] });</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; <span class="keywordflow">case</span> DataLayout::NCHW:</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; <span class="keywordflow">default</span>:</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; <span class="comment">// The data layout is NCHW, reshape from [ M, I, H, W ] to [ 1, I * M, H, W, ]</span></div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; weightInfo.SetShape({ 1, weightShape[0] * weightShape[1], weightShape[2], weightShape[3] });</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; }</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160;}</div></div><!-- fragment -->
</div>
</div>
<a id="a25dc224be48103343302b5a6fd588fe7"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a25dc224be48103343302b5a6fd588fe7">&#9670;&nbsp;</a></span>Resize()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void Resize </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classarmnn_1_1_decoder.html">Decoder</a>&lt; float &gt; &amp;&#160;</td>
<td class="paramname"><em>in</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>inputInfo</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classarmnn_1_1_encoder.html">Encoder</a>&lt; float &gt; &amp;&#160;</td>
<td class="paramname"><em>out</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>outputInfo</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classarmnn_utils_1_1_data_layout_indexed.html">DataLayoutIndexed</a>&#160;</td>
<td class="paramname"><em>dataLayout</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacearmnn.html#a9a2af2f8c4af4f9efa8e79417d505ac4">armnn::ResizeMethod</a>&#160;</td>
<td class="paramname"><em>resizeMethod</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">bool&#160;</td>
<td class="paramname"><em>alignCorners</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_resize_8cpp_source.html#l00035">35</a> of file <a class="el" href="_resize_8cpp_source.html">Resize.cpp</a>.</p>
<p class="reference">References <a class="el" href="namespacearmnn.html#a9a2af2f8c4af4f9efa8e79417d505ac4aaf17c98bbd83c27d6426d2ff3fa81d7f">Bilinear</a>, <a class="el" href="classarmnn_1_1_decoder.html#ac729108381e2340bea12877971713ecb">Decoder&lt; IType &gt;::Get()</a>, <a class="el" href="_data_layout_indexed_8hpp_source.html#l00023">DataLayoutIndexed::GetChannelsIndex()</a>, <a class="el" href="_data_layout_indexed_8hpp_source.html#l00024">DataLayoutIndexed::GetHeightIndex()</a>, <a class="el" href="_data_layout_indexed_8hpp_source.html#l00027">DataLayoutIndexed::GetIndex()</a>, <a class="el" href="_tensor_8hpp_source.html#l00088">TensorInfo::GetShape()</a>, <a class="el" href="_data_layout_indexed_8hpp_source.html#l00025">DataLayoutIndexed::GetWidthIndex()</a>, <a class="el" href="namespacearmnn.html#a9a2af2f8c4af4f9efa8e79417d505ac4aaa020331bb30d2fa2ecf7c3a0777823f">NearestNeighbor</a>, <a class="el" href="_resize_8cpp_source.html#l00035">Resize()</a>, and <a class="el" href="classarmnn_1_1_encoder.html#ae3b62b846a9c239f332830b9e36030eb">Encoder&lt; IType &gt;::Set()</a>.</p>
<p class="reference">Referenced by <a class="el" href="_serializer_tests_8cpp_source.html#l02003">BOOST_AUTO_TEST_CASE()</a>, <a class="el" href="_inference_test_image_8hpp_source.html#l00079">InferenceTestImage::GetSizeInBytes()</a>, <a class="el" href="_resize_8cpp_source.html#l00035">Resize()</a>, and <a class="el" href="_resize_layer_8cpp_source.html#l00021">ResizeLayer::ResizeLayer()</a>.</p>
<div class="fragment"><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;{</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; <span class="comment">// We follow the definition of TensorFlow and AndroidNN: the top-left corner of a texel in the output</span></div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <span class="comment">// image is projected into the input image to figure out the interpolants and weights. Note that this</span></div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <span class="comment">// will yield different results than if projecting the centre of output texels.</span></div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> batchSize = inputInfo.<a class="code" href="classarmnn_1_1_tensor_info.html#a8b5d0f8a24e9d9238f412260a552acf8">GetShape</a>()[0];</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> channelCount = inputInfo.<a class="code" href="classarmnn_1_1_tensor_info.html#a8b5d0f8a24e9d9238f412260a552acf8">GetShape</a>()[dataLayout.<a class="code" href="classarmnn_utils_1_1_data_layout_indexed.html#a861b2621ee46e4b63379988b360b8cd9">GetChannelsIndex</a>()];</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> inputHeight = inputInfo.<a class="code" href="classarmnn_1_1_tensor_info.html#a8b5d0f8a24e9d9238f412260a552acf8">GetShape</a>()[dataLayout.<a class="code" href="classarmnn_utils_1_1_data_layout_indexed.html#a61c00316c443adc233c24e85c6c5b740">GetHeightIndex</a>()];</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> inputWidth = inputInfo.<a class="code" href="classarmnn_1_1_tensor_info.html#a8b5d0f8a24e9d9238f412260a552acf8">GetShape</a>()[dataLayout.<a class="code" href="classarmnn_utils_1_1_data_layout_indexed.html#a414e6f95548e6f7a01d5028b55ad3941">GetWidthIndex</a>()];</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> outputHeight = outputInfo.<a class="code" href="classarmnn_1_1_tensor_info.html#a8b5d0f8a24e9d9238f412260a552acf8">GetShape</a>()[dataLayout.<a class="code" href="classarmnn_utils_1_1_data_layout_indexed.html#a61c00316c443adc233c24e85c6c5b740">GetHeightIndex</a>()];</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> outputWidth = outputInfo.<a class="code" href="classarmnn_1_1_tensor_info.html#a8b5d0f8a24e9d9238f412260a552acf8">GetShape</a>()[dataLayout.<a class="code" href="classarmnn_utils_1_1_data_layout_indexed.html#a414e6f95548e6f7a01d5028b55ad3941">GetWidthIndex</a>()];</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> sizeOffset = resizeMethod == <a class="code" href="namespacearmnn.html#a9a2af2f8c4af4f9efa8e79417d505ac4aaf17c98bbd83c27d6426d2ff3fa81d7f">armnn::ResizeMethod::Bilinear</a> &amp;&amp; alignCorners ? 1 : 0;</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160;</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; <span class="comment">// How much to scale pixel coordinates in the output image, to get the corresponding pixel coordinates</span></div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; <span class="comment">// in the input image.</span></div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; <span class="keyword">const</span> <span class="keywordtype">float</span> scaleY = boost::numeric_cast&lt;<span class="keywordtype">float</span>&gt;(inputHeight - sizeOffset)</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; / boost::numeric_cast&lt;float&gt;(outputHeight - sizeOffset);</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; <span class="keyword">const</span> <span class="keywordtype">float</span> scaleX = boost::numeric_cast&lt;<span class="keywordtype">float</span>&gt;(inputWidth - sizeOffset)</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; / boost::numeric_cast&lt;float&gt;(outputWidth - sizeOffset);</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160;</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; <a class="code" href="classarmnn_1_1_tensor_shape.html">TensorShape</a> inputShape = inputInfo.<a class="code" href="classarmnn_1_1_tensor_info.html#a8b5d0f8a24e9d9238f412260a552acf8">GetShape</a>();</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; <a class="code" href="classarmnn_1_1_tensor_shape.html">TensorShape</a> outputShape = outputInfo.<a class="code" href="classarmnn_1_1_tensor_info.html#a8b5d0f8a24e9d9238f412260a552acf8">GetShape</a>();</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160;</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> n = 0; n &lt; batchSize; ++n)</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; {</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> c = 0; c &lt; channelCount; ++c)</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; {</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> y = 0; y &lt; outputHeight; ++y)</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; {</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; <span class="comment">// Corresponding real-valued height coordinate in input image.</span></div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; <span class="keyword">const</span> <span class="keywordtype">float</span> iy = boost::numeric_cast&lt;<span class="keywordtype">float</span>&gt;(y) * scaleY;</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160;</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; <span class="comment">// Discrete height coordinate of top-left texel (in the 2x2 texel area used for interpolation).</span></div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; <span class="keyword">const</span> <span class="keywordtype">float</span> fiy = floorf(iy);</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> y0 = boost::numeric_cast&lt;<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>&gt;(fiy);</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160;</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; <span class="comment">// Interpolation weight (range [0,1]).</span></div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; <span class="keyword">const</span> <span class="keywordtype">float</span> yw = iy - fiy;</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160;</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> x = 0; x &lt; outputWidth; ++x)</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; {</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; <span class="comment">// Real-valued and discrete width coordinates in input image.</span></div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; <span class="keyword">const</span> <span class="keywordtype">float</span> ix = boost::numeric_cast&lt;<span class="keywordtype">float</span>&gt;(x) * scaleX;</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; <span class="keyword">const</span> <span class="keywordtype">float</span> fix = floorf(ix);</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> x0 = boost::numeric_cast&lt;<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>&gt;(fix);</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160;</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; <span class="comment">// Interpolation weight (range [0,1]).</span></div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; <span class="keyword">const</span> <span class="keywordtype">float</span> xw = ix - fix;</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160;</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; <span class="comment">// Discrete width/height coordinates of texels below and to the right of (x0, y0).</span></div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> x1 = std::min(x0 + 1, inputWidth - 1u);</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> y1 = std::min(y0 + 1, inputHeight - 1u);</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160;</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; <span class="keywordtype">float</span> interpolatedValue;</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; <span class="keywordflow">switch</span> (resizeMethod)</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; {</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacearmnn.html#a9a2af2f8c4af4f9efa8e79417d505ac4aaf17c98bbd83c27d6426d2ff3fa81d7f">armnn::ResizeMethod::Bilinear</a>:</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; {</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; in[dataLayout.<a class="code" href="classarmnn_utils_1_1_data_layout_indexed.html#a1e25d8623da985a43597b5756c73b206">GetIndex</a>(inputShape, n, c, y0, x0)];</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; <span class="keywordtype">float</span> input1 = in.<a class="code" href="classarmnn_1_1_decoder.html#ac729108381e2340bea12877971713ecb">Get</a>();</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; in[dataLayout.<a class="code" href="classarmnn_utils_1_1_data_layout_indexed.html#a1e25d8623da985a43597b5756c73b206">GetIndex</a>(inputShape, n, c, y0, x1)];</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; <span class="keywordtype">float</span> input2 = in.<a class="code" href="classarmnn_1_1_decoder.html#ac729108381e2340bea12877971713ecb">Get</a>();</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; in[dataLayout.<a class="code" href="classarmnn_utils_1_1_data_layout_indexed.html#a1e25d8623da985a43597b5756c73b206">GetIndex</a>(inputShape, n, c, y1, x0)];</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; <span class="keywordtype">float</span> input3 = in.<a class="code" href="classarmnn_1_1_decoder.html#ac729108381e2340bea12877971713ecb">Get</a>();</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; in[dataLayout.<a class="code" href="classarmnn_utils_1_1_data_layout_indexed.html#a1e25d8623da985a43597b5756c73b206">GetIndex</a>(inputShape, n, c, y1, x1)];</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; <span class="keywordtype">float</span> input4 = in.<a class="code" href="classarmnn_1_1_decoder.html#ac729108381e2340bea12877971713ecb">Get</a>();</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160;</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; <span class="keyword">const</span> <span class="keywordtype">float</span> ly0 = Lerp(input1, input2, xw); <span class="comment">// lerp along row y0.</span></div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; <span class="keyword">const</span> <span class="keywordtype">float</span> ly1 = Lerp(input3, input4, xw); <span class="comment">// lerp along row y1.</span></div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; interpolatedValue = Lerp(ly0, ly1, yw);</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; }</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacearmnn.html#a9a2af2f8c4af4f9efa8e79417d505ac4aaa020331bb30d2fa2ecf7c3a0777823f">armnn::ResizeMethod::NearestNeighbor</a>:</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; {</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; <span class="comment">// calculate euclidean distance to the 4 neighbours</span></div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; <span class="keyword">auto</span> distance00 = EuclideanDistance(fix, fiy, x0, y0);</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; <span class="keyword">auto</span> distance01 = EuclideanDistance(fix, fiy, x0, y1);</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; <span class="keyword">auto</span> distance10 = EuclideanDistance(fix, fiy, x1, y0);</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; <span class="keyword">auto</span> distance11 = EuclideanDistance(fix, fiy, x1, y1);</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160;</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; <span class="keyword">auto</span> <a class="code" href="structarmnn_1_1minimum.html">minimum</a> = std::min( { distance00, distance01, distance10, distance11 } );</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160;</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> xNearest = 0;</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> yNearest = 0;</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160;</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="structarmnn_1_1minimum.html">minimum</a> == distance00)</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; {</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; xNearest = x0;</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; yNearest = y0;</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; }</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="structarmnn_1_1minimum.html">minimum</a> == distance01)</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; {</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; xNearest = x0;</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; yNearest = y1;</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; }</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="structarmnn_1_1minimum.html">minimum</a> == distance10)</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; {</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; xNearest = x1;</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; yNearest = y0;</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; }</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="structarmnn_1_1minimum.html">minimum</a> == distance11)</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; {</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; xNearest = x1;</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; yNearest = y1;</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; }</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; {</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; <span class="keywordflow">throw</span> <a class="code" href="classarmnn_1_1_invalid_argument_exception.html">armnn::InvalidArgumentException</a>(<span class="stringliteral">&quot;Resize Nearest Neighbor failure&quot;</span>);</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; }</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160;</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; in[dataLayout.<a class="code" href="classarmnn_utils_1_1_data_layout_indexed.html#a1e25d8623da985a43597b5756c73b206">GetIndex</a>(inputShape, n, c, yNearest, xNearest)];</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; interpolatedValue = in.<a class="code" href="classarmnn_1_1_decoder.html#ac729108381e2340bea12877971713ecb">Get</a>();</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; }</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; <span class="keywordflow">default</span>:</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; <span class="keywordflow">throw</span> <a class="code" href="classarmnn_1_1_invalid_argument_exception.html">armnn::InvalidArgumentException</a>(<span class="stringliteral">&quot;Unknown resize method: &quot;</span> +</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; std::to_string(static_cast&lt;int&gt;(resizeMethod)));</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; }</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; out[dataLayout.<a class="code" href="classarmnn_utils_1_1_data_layout_indexed.html#a1e25d8623da985a43597b5756c73b206">GetIndex</a>(outputShape, n, c, y, x)];</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; out.<a class="code" href="classarmnn_1_1_encoder.html#ae3b62b846a9c239f332830b9e36030eb">Set</a>(interpolatedValue);</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; }</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; }</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160; }</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160; }</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160;}</div><div class="ttc" id="classarmnn_utils_1_1_data_layout_indexed_html_a61c00316c443adc233c24e85c6c5b740"><div class="ttname"><a href="classarmnn_utils_1_1_data_layout_indexed.html#a61c00316c443adc233c24e85c6c5b740">armnnUtils::DataLayoutIndexed::GetHeightIndex</a></div><div class="ttdeci">unsigned int GetHeightIndex() const</div><div class="ttdef"><b>Definition:</b> <a href="_data_layout_indexed_8hpp_source.html#l00024">DataLayoutIndexed.hpp:24</a></div></div>
<div class="ttc" id="structarmnn_1_1minimum_html"><div class="ttname"><a href="structarmnn_1_1minimum.html">armnn::minimum</a></div><div class="ttdef"><b>Definition:</b> <a href="_minimum_8hpp_source.html#l00012">Minimum.hpp:12</a></div></div>
<div class="ttc" id="classarmnn_1_1_invalid_argument_exception_html"><div class="ttname"><a href="classarmnn_1_1_invalid_argument_exception.html">armnn::InvalidArgumentException</a></div><div class="ttdef"><b>Definition:</b> <a href="_exceptions_8hpp_source.html#l00080">Exceptions.hpp:80</a></div></div>
<div class="ttc" id="classarmnn_utils_1_1_data_layout_indexed_html_a414e6f95548e6f7a01d5028b55ad3941"><div class="ttname"><a href="classarmnn_utils_1_1_data_layout_indexed.html#a414e6f95548e6f7a01d5028b55ad3941">armnnUtils::DataLayoutIndexed::GetWidthIndex</a></div><div class="ttdeci">unsigned int GetWidthIndex() const</div><div class="ttdef"><b>Definition:</b> <a href="_data_layout_indexed_8hpp_source.html#l00025">DataLayoutIndexed.hpp:25</a></div></div>
<div class="ttc" id="classarmnn_utils_1_1_data_layout_indexed_html_a861b2621ee46e4b63379988b360b8cd9"><div class="ttname"><a href="classarmnn_utils_1_1_data_layout_indexed.html#a861b2621ee46e4b63379988b360b8cd9">armnnUtils::DataLayoutIndexed::GetChannelsIndex</a></div><div class="ttdeci">unsigned int GetChannelsIndex() const</div><div class="ttdef"><b>Definition:</b> <a href="_data_layout_indexed_8hpp_source.html#l00023">DataLayoutIndexed.hpp:23</a></div></div>
<div class="ttc" id="classarmnn_1_1_tensor_shape_html"><div class="ttname"><a href="classarmnn_1_1_tensor_shape.html">armnn::TensorShape</a></div><div class="ttdef"><b>Definition:</b> <a href="_tensor_8hpp_source.html#l00020">Tensor.hpp:20</a></div></div>
<div class="ttc" id="classarmnn_1_1_decoder_html_ac729108381e2340bea12877971713ecb"><div class="ttname"><a href="classarmnn_1_1_decoder.html#ac729108381e2340bea12877971713ecb">armnn::Decoder::Get</a></div><div class="ttdeci">virtual IType Get() const =0</div></div>
<div class="ttc" id="namespacearmnn_html_a9a2af2f8c4af4f9efa8e79417d505ac4aaf17c98bbd83c27d6426d2ff3fa81d7f"><div class="ttname"><a href="namespacearmnn.html#a9a2af2f8c4af4f9efa8e79417d505ac4aaf17c98bbd83c27d6426d2ff3fa81d7f">armnn::ResizeMethod::Bilinear</a></div></div>
<div class="ttc" id="namespacearmnn_html_a9a2af2f8c4af4f9efa8e79417d505ac4aaa020331bb30d2fa2ecf7c3a0777823f"><div class="ttname"><a href="namespacearmnn.html#a9a2af2f8c4af4f9efa8e79417d505ac4aaa020331bb30d2fa2ecf7c3a0777823f">armnn::ResizeMethod::NearestNeighbor</a></div></div>
<div class="ttc" id="classarmnn_1_1_tensor_info_html_a8b5d0f8a24e9d9238f412260a552acf8"><div class="ttname"><a href="classarmnn_1_1_tensor_info.html#a8b5d0f8a24e9d9238f412260a552acf8">armnn::TensorInfo::GetShape</a></div><div class="ttdeci">const TensorShape &amp; GetShape() const</div><div class="ttdef"><b>Definition:</b> <a href="_tensor_8hpp_source.html#l00088">Tensor.hpp:88</a></div></div>
<div class="ttc" id="classarmnn_1_1_encoder_html_ae3b62b846a9c239f332830b9e36030eb"><div class="ttname"><a href="classarmnn_1_1_encoder.html#ae3b62b846a9c239f332830b9e36030eb">armnn::Encoder::Set</a></div><div class="ttdeci">virtual void Set(IType right)=0</div></div>
<div class="ttc" id="classarmnn_utils_1_1_data_layout_indexed_html_a1e25d8623da985a43597b5756c73b206"><div class="ttname"><a href="classarmnn_utils_1_1_data_layout_indexed.html#a1e25d8623da985a43597b5756c73b206">armnnUtils::DataLayoutIndexed::GetIndex</a></div><div class="ttdeci">unsigned int GetIndex(const armnn::TensorShape &amp;shape, unsigned int batchIndex, unsigned int channelIndex, unsigned int heightIndex, unsigned int widthIndex) const</div><div class="ttdef"><b>Definition:</b> <a href="_data_layout_indexed_8hpp_source.html#l00027">DataLayoutIndexed.hpp:27</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="aff5bee79757341daf750c7dd7c123a15"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aff5bee79757341daf750c7dd7c123a15">&#9670;&nbsp;</a></span>RunClFunction()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void armnn::RunClFunction </td>
<td>(</td>
<td class="paramtype">arm_compute::IFunction &amp;&#160;</td>
<td class="paramname"><em>function</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="structarmnn_1_1_check_location.html">CheckLocation</a> &amp;&#160;</td>
<td class="paramname"><em>location</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_cl_workload_utils_8hpp_source.html#l00131">131</a> of file <a class="el" href="_cl_workload_utils_8hpp_source.html">ClWorkloadUtils.hpp</a>.</p>
<p class="reference">References <a class="el" href="namespacearmnn.html#a93a3ba385cad27c4774e5fe64c025d3da902b0d55fddef6f8d651fe1035b7d4bd">Error</a>, <a class="el" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acb5e100e5a9a3e7f6d1fd97512215282">error</a>, and <a class="el" href="_cl_workload_utils_8hpp_source.html#l00123">WrapClError()</a>.</p>
<p class="reference">Referenced by <a class="el" href="_cl_pad_workload_8cpp_source.html#l00039">ClPadWorkload::Execute()</a>, <a class="el" href="_cl_addition_workload_8cpp_source.html#l00032">ClAdditionWorkload::Execute()</a>, <a class="el" href="_cl_subtraction_workload_8cpp_source.html#l00032">ClSubtractionWorkload::Execute()</a>, <a class="el" href="_cl_convert_fp32_to_fp16_workload_8cpp_source.html#l00029">ClConvertFp32ToFp16Workload::Execute()</a>, <a class="el" href="_cl_convert_fp16_to_fp32_workload_8cpp_source.html#l00029">ClConvertFp16ToFp32Workload::Execute()</a>, <a class="el" href="_cl_activation_workload_8cpp_source.html#l00046">ClActivationWorkload::Execute()</a>, <a class="el" href="_cl_lstm_float_workload_8cpp_source.html#l00250">ClLstmFloatWorkload::Execute()</a>, <a class="el" href="_cl_prelu_workload_8cpp_source.html#l00042">ClPreluWorkload::Execute()</a>, <a class="el" href="_cl_abs_workload_8cpp_source.html#l00038">ClAbsWorkload::Execute()</a>, <a class="el" href="_cl_quantize_workload_8cpp_source.html#l00043">ClQuantizeWorkload::Execute()</a>, <a class="el" href="_cl_rsqrt_workload_8cpp_source.html#l00038">ClRsqrtWorkload::Execute()</a>, <a class="el" href="_cl_instance_normalization_workload_8cpp_source.html#l00053">ClInstanceNormalizationWorkload::Execute()</a>, <a class="el" href="_cl_softmax_float_workload_8cpp_source.html#l00030">ClSoftmaxFloatWorkload::Execute()</a>, <a class="el" href="_cl_space_to_depth_workload_8cpp_source.html#l00038">ClSpaceToDepthWorkload::Execute()</a>, <a class="el" href="_cl_maximum_workload_8cpp_source.html#l00052">ClMaximumWorkload::Execute()</a>, <a class="el" href="_cl_minimum_workload_8cpp_source.html#l00052">ClMinimumWorkload::Execute()</a>, <a class="el" href="_cl_normalization_float_workload_8cpp_source.html#l00049">ClNormalizationFloatWorkload::Execute()</a>, <a class="el" href="_cl_batch_to_space_nd_workload_8cpp_source.html#l00039">ClBatchToSpaceNdWorkload::Execute()</a>, <a class="el" href="_cl_floor_float_workload_8cpp_source.html#l00034">ClFloorFloatWorkload::Execute()</a>, <a class="el" href="_cl_reshape_workload_8cpp_source.html#l00035">ClReshapeWorkload::Execute()</a>, <a class="el" href="_cl_resize_workload_8cpp_source.html#l00071">ClResizeWorkload::Execute()</a>, <a class="el" href="_cl_softmax_uint8_workload_8cpp_source.html#l00040">ClSoftmaxUint8Workload::Execute()</a>, <a class="el" href="_cl_slice_workload_8cpp_source.html#l00050">ClSliceWorkload::Execute()</a>, <a class="el" href="_cl_l2_normalization_float_workload_8cpp_source.html#l00047">ClL2NormalizationFloatWorkload::Execute()</a>, <a class="el" href="_cl_greater_workload_8cpp_source.html#l00056">ClGreaterWorkload&lt; T &gt;::Execute()</a>, <a class="el" href="_cl_arg_min_max_workload_8cpp_source.html#l00075">ClArgMinMaxWorkload::Execute()</a>, <a class="el" href="_cl_depth_to_space_workload_8cpp_source.html#l00060">ClDepthToSpaceWorkload::Execute()</a>, <a class="el" href="_cl_multiplication_workload_8cpp_source.html#l00052">ClMultiplicationWorkload::Execute()</a>, <a class="el" href="_cl_space_to_batch_nd_workload_8cpp_source.html#l00079">ClSpaceToBatchNdWorkload::Execute()</a>, <a class="el" href="_cl_quantized_lstm_workload_8cpp_source.html#l00136">ClQuantizedLstmWorkload::Execute()</a>, <a class="el" href="_cl_strided_slice_workload_8cpp_source.html#l00090">ClStridedSliceWorkload::Execute()</a>, <a class="el" href="_cl_division_float_workload_8cpp_source.html#l00040">ClDivisionFloatWorkload::Execute()</a>, <a class="el" href="_cl_pooling2d_workload_8cpp_source.html#l00054">ClPooling2dWorkload::Execute()</a>, <a class="el" href="_cl_batch_normalization_float_workload_8cpp_source.html#l00092">ClBatchNormalizationFloatWorkload::Execute()</a>, <a class="el" href="_cl_depthwise_convolution_workload_8cpp_source.html#l00148">ClDepthwiseConvolutionWorkload::Execute()</a>, <a class="el" href="_cl_fully_connected_workload_8cpp_source.html#l00084">ClFullyConnectedWorkload::Execute()</a>, <a class="el" href="_cl_convolution2d_workload_8cpp_source.html#l00110">ClConvolution2dWorkload::Execute()</a>, <a class="el" href="_cl_permute_workload_8cpp_source.html#l00045">ClPermuteWorkload::Execute()</a>, and <a class="el" href="_cl_transpose_convolution2d_workload_8cpp_source.html#l00098">ClTransposeConvolution2dWorkload::Execute()</a>.</p>
<div class="fragment"><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160;{</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; <span class="keywordflow">try</span></div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; {</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; <span class="keyword">function</span>.run();</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; }</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; <span class="keywordflow">catch</span> (cl::Error&amp; error)</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; {</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; <span class="keywordflow">throw</span> <a class="code" href="namespacearmnn.html#a2192b5ff59aacdb27f8b0238323915dc">WrapClError</a>(error, location);</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; }</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a2192b5ff59aacdb27f8b0238323915dc"><div class="ttname"><a href="namespacearmnn.html#a2192b5ff59aacdb27f8b0238323915dc">armnn::WrapClError</a></div><div class="ttdeci">RuntimeException WrapClError(const cl::Error &amp;clError, const CheckLocation &amp;location)</div><div class="ttdef"><b>Definition:</b> <a href="_cl_workload_utils_8hpp_source.html#l00123">ClWorkloadUtils.hpp:123</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a01fa2d4db2c1b4ee5269a31e514f37ec"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a01fa2d4db2c1b4ee5269a31e514f37ec">&#9670;&nbsp;</a></span>RuntimeLoadedNetworksReserve()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void RuntimeLoadedNetworksReserve </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classarmnn_1_1_runtime.html">armnn::Runtime</a> *&#160;</td>
<td class="paramname"><em>runtime</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_runtime_tests_8cpp_source.html#l00028">28</a> of file <a class="el" href="_runtime_tests_8cpp_source.html">RuntimeTests.cpp</a>.</p>
<p class="reference">References <a class="el" href="_output_shape_of_squeeze_8cpp.html#ae3a6cb217a792718f2bd0e8f45e3ca9e">BOOST_AUTO_TEST_SUITE()</a>.</p>
<p class="reference">Referenced by <a class="el" href="_runtime_tests_8cpp_source.html#l00037">BOOST_AUTO_TEST_CASE()</a>.</p>
<div class="fragment"><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;{</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; runtime-&gt;m_LoadedNetworks.reserve(1);</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;}</div></div><!-- fragment -->
</div>
</div>
<a id="a40c8a268a9dc9dc910e348534d479f7a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a40c8a268a9dc9dc910e348534d479f7a">&#9670;&nbsp;</a></span>SampleDynamicBackendId()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">constexpr const char* armnn::SampleDynamicBackendId </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_sample_dynamic_backend_8cpp_source.html#l00017">17</a> of file <a class="el" href="_sample_dynamic_backend_8cpp_source.html">SampleDynamicBackend.cpp</a>.</p>
<p class="reference">References <a class="el" href="include_2armnn_2backends_2_optimization_views_8hpp_source.html#l00044">OptimizationViews::AddUntouchedSubgraph()</a>.</p>
<div class="fragment"><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;{ <span class="keywordflow">return</span> <span class="stringliteral">&quot;SampleDynamic&quot;</span>; }</div></div><!-- fragment -->
</div>
</div>
<a id="a5d3468fb5880eb444cd25b55a86220ff"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a5d3468fb5880eb444cd25b55a86220ff">&#9670;&nbsp;</a></span>SelectTensorHandleStrategy()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="structarmnn_1_1_optimization_result.html">OptimizationResult</a> SelectTensorHandleStrategy </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classarmnn_1_1_graph.html">Graph</a> &amp;&#160;</td>
<td class="paramname"><em>optGraph</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacearmnn.html#a9173495a61a0092b5f38b855f02c3585">BackendsMap</a> &amp;&#160;</td>
<td class="paramname"><em>backends</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classarmnn_1_1_tensor_handle_factory_registry.html">TensorHandleFactoryRegistry</a> &amp;&#160;</td>
<td class="paramname"><em>registry</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classarmnn_1_1_optional.html">Optional</a>&lt; std::vector&lt; std::string &gt; &amp;&gt;&#160;</td>
<td class="paramname"><em>errMessages</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_network_8cpp_source.html#l00741">741</a> of file <a class="el" href="_network_8cpp_source.html">Network.cpp</a>.</p>
<p class="reference">References <a class="el" href="_network_8cpp_source.html#l00664">CalculateEdgeStrategy()</a>, <a class="el" href="_network_8cpp_source.html#l00555">CalculateSlotOption()</a>, <a class="el" href="_network_8cpp_source.html#l00463">CalculateSlotOptionForInput()</a>, <a class="el" href="_network_8cpp_source.html#l00545">CalculateSlotOptionForOutput()</a>, <a class="el" href="_graph_8hpp_source.html#l00039">Graph::ForEachLayer()</a>, <a class="el" href="_layer_8hpp_source.html#l00263">Layer::GetBackendId()</a>, <a class="el" href="_layer_8hpp_source.html#l00125">OutputSlot::GetConnections()</a>, <a class="el" href="_layer_8hpp_source.html#l00308">Layer::GetNumOutputSlots()</a>, <a class="el" href="_layer_8hpp_source.html#l00312">Layer::GetOutputSlot()</a>, <a class="el" href="_layer_8hpp_source.html#l00259">Layer::GetType()</a>, <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4a324118a6721dd6b8a9b9f4e327df2bf5">Input</a>, <a class="el" href="include_2armnn_2backends_2_i_tensor_handle_factory_8hpp_source.html#l00022">ITensorHandleFactory::LegacyFactoryId</a>, <a class="el" href="_network_8hpp_source.html#l00284">OptimizationResult::m_Error</a>, <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4a29c2c02a361c9d7028472e5d92cd4a54">Output</a>, <a class="el" href="_layer_8cpp_source.html#l00177">OutputSlot::SetEdgeStrategy()</a>, <a class="el" href="_layer_8cpp_source.html#l00167">OutputSlot::SetTensorHandleFactory()</a>, and <a class="el" href="namespacearmnn.html#ae2f04a162585c0a5222a537efd5456aeaec0fc0100c4fc1ce4eea230c3dc10360">Undefined</a>.</p>
<p class="reference">Referenced by <a class="el" href="_tensor_handle_strategy_test_8cpp_source.html#l00292">BOOST_AUTO_TEST_CASE()</a>, and <a class="el" href="_network_8cpp_source.html#l00807">Optimize()</a>.</p>
<div class="fragment"><div class="line"><a name="l00745"></a><span class="lineno"> 745</span>&#160;{</div><div class="line"><a name="l00746"></a><span class="lineno"> 746</span>&#160; OptimizationResult result;</div><div class="line"><a name="l00747"></a><span class="lineno"> 747</span>&#160;</div><div class="line"><a name="l00748"></a><span class="lineno"> 748</span>&#160; optGraph.ForEachLayer([&amp;backends, &amp;registry, &amp;result, &amp;errMessages](Layer* layer)</div><div class="line"><a name="l00749"></a><span class="lineno"> 749</span>&#160; {</div><div class="line"><a name="l00750"></a><span class="lineno"> 750</span>&#160; BOOST_ASSERT(layer);</div><div class="line"><a name="l00751"></a><span class="lineno"> 751</span>&#160;</div><div class="line"><a name="l00752"></a><span class="lineno"> 752</span>&#160; <span class="comment">// Lets make sure the backend is in our list of supported backends. Something went wrong during backend</span></div><div class="line"><a name="l00753"></a><span class="lineno"> 753</span>&#160; <span class="comment">// assignment if this check fails</span></div><div class="line"><a name="l00754"></a><span class="lineno"> 754</span>&#160; BOOST_ASSERT(backends.find(layer-&gt;GetBackendId()) != backends.end());</div><div class="line"><a name="l00755"></a><span class="lineno"> 755</span>&#160;</div><div class="line"><a name="l00756"></a><span class="lineno"> 756</span>&#160; <span class="comment">// Check each output separately</span></div><div class="line"><a name="l00757"></a><span class="lineno"> 757</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> slotIdx = 0; slotIdx &lt; layer-&gt;GetNumOutputSlots(); slotIdx++)</div><div class="line"><a name="l00758"></a><span class="lineno"> 758</span>&#160; {</div><div class="line"><a name="l00759"></a><span class="lineno"> 759</span>&#160; OutputSlot&amp; outputSlot = layer-&gt;GetOutputSlot(slotIdx);</div><div class="line"><a name="l00760"></a><span class="lineno"> 760</span>&#160;</div><div class="line"><a name="l00761"></a><span class="lineno"> 761</span>&#160; <a class="code" href="namespacearmnn.html#a947e07902b1b5d98b57eeae34053146b">ITensorHandleFactory::FactoryId</a> slotOption = ITensorHandleFactory::LegacyFactoryId;</div><div class="line"><a name="l00762"></a><span class="lineno"> 762</span>&#160;</div><div class="line"><a name="l00763"></a><span class="lineno"> 763</span>&#160; <span class="comment">// Calculate the factory to use which results in the fewest copies being made.</span></div><div class="line"><a name="l00764"></a><span class="lineno"> 764</span>&#160; <span class="keywordflow">switch</span>(layer-&gt;GetType())</div><div class="line"><a name="l00765"></a><span class="lineno"> 765</span>&#160; {</div><div class="line"><a name="l00766"></a><span class="lineno"> 766</span>&#160; <span class="keywordflow">case</span> LayerType::Input:</div><div class="line"><a name="l00767"></a><span class="lineno"> 767</span>&#160; slotOption = <a class="code" href="namespacearmnn.html#accb1637c58e1523f740025e0d0e7c6dd">CalculateSlotOptionForInput</a>(backends, outputSlot, registry);</div><div class="line"><a name="l00768"></a><span class="lineno"> 768</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00769"></a><span class="lineno"> 769</span>&#160; <span class="keywordflow">case</span> LayerType::Output:</div><div class="line"><a name="l00770"></a><span class="lineno"> 770</span>&#160; slotOption = <a class="code" href="namespacearmnn.html#ab46c7f5f4736d550ab0e5e05a0fff4a9">CalculateSlotOptionForOutput</a>(backends, outputSlot, registry);</div><div class="line"><a name="l00771"></a><span class="lineno"> 771</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00772"></a><span class="lineno"> 772</span>&#160; <span class="keywordflow">default</span>:</div><div class="line"><a name="l00773"></a><span class="lineno"> 773</span>&#160; slotOption = <a class="code" href="namespacearmnn.html#a8d9f52bbb69750456acca06988beabda">CalculateSlotOption</a>(backends, outputSlot, registry);</div><div class="line"><a name="l00774"></a><span class="lineno"> 774</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00775"></a><span class="lineno"> 775</span>&#160; }</div><div class="line"><a name="l00776"></a><span class="lineno"> 776</span>&#160; outputSlot.SetTensorHandleFactory(slotOption);</div><div class="line"><a name="l00777"></a><span class="lineno"> 777</span>&#160;</div><div class="line"><a name="l00778"></a><span class="lineno"> 778</span>&#160; <span class="comment">// Now determine the &quot;best&quot; edge strategy for each connection given the slotOption.</span></div><div class="line"><a name="l00779"></a><span class="lineno"> 779</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> connectionIdx = 0;</div><div class="line"><a name="l00780"></a><span class="lineno"> 780</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span>&amp;&amp; connection : outputSlot.GetConnections())</div><div class="line"><a name="l00781"></a><span class="lineno"> 781</span>&#160; {</div><div class="line"><a name="l00782"></a><span class="lineno"> 782</span>&#160; <span class="keyword">const</span> Layer&amp; connectedLayer = connection-&gt;GetOwningLayer();</div><div class="line"><a name="l00783"></a><span class="lineno"> 783</span>&#160;</div><div class="line"><a name="l00784"></a><span class="lineno"> 784</span>&#160; <a class="code" href="namespacearmnn.html#aff209afc1dc598da399e3e78617ce016">EdgeStrategy</a> strategy = <a class="code" href="namespacearmnn.html#ab6ed577caec49def150e231c63af0d12">CalculateEdgeStrategy</a>(backends, slotOption, *layer, connectedLayer, registry);</div><div class="line"><a name="l00785"></a><span class="lineno"> 785</span>&#160;</div><div class="line"><a name="l00786"></a><span class="lineno"> 786</span>&#160; <span class="keywordflow">if</span> (strategy == EdgeStrategy::Undefined)</div><div class="line"><a name="l00787"></a><span class="lineno"> 787</span>&#160; {</div><div class="line"><a name="l00788"></a><span class="lineno"> 788</span>&#160; result.m_Error = <span class="keyword">true</span>;</div><div class="line"><a name="l00789"></a><span class="lineno"> 789</span>&#160; <span class="keywordflow">if</span> (errMessages)</div><div class="line"><a name="l00790"></a><span class="lineno"> 790</span>&#160; {</div><div class="line"><a name="l00791"></a><span class="lineno"> 791</span>&#160; errMessages.value().emplace_back(<span class="stringliteral">&quot;Could not find valid strategy required for compatibility&quot;</span></div><div class="line"><a name="l00792"></a><span class="lineno"> 792</span>&#160; <span class="stringliteral">&quot; between backends.&quot;</span>);</div><div class="line"><a name="l00793"></a><span class="lineno"> 793</span>&#160; }</div><div class="line"><a name="l00794"></a><span class="lineno"> 794</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l00795"></a><span class="lineno"> 795</span>&#160; }</div><div class="line"><a name="l00796"></a><span class="lineno"> 796</span>&#160;</div><div class="line"><a name="l00797"></a><span class="lineno"> 797</span>&#160; outputSlot.SetEdgeStrategy(connectionIdx, strategy);</div><div class="line"><a name="l00798"></a><span class="lineno"> 798</span>&#160;</div><div class="line"><a name="l00799"></a><span class="lineno"> 799</span>&#160; connectionIdx++;</div><div class="line"><a name="l00800"></a><span class="lineno"> 800</span>&#160; }</div><div class="line"><a name="l00801"></a><span class="lineno"> 801</span>&#160; }</div><div class="line"><a name="l00802"></a><span class="lineno"> 802</span>&#160; });</div><div class="line"><a name="l00803"></a><span class="lineno"> 803</span>&#160;</div><div class="line"><a name="l00804"></a><span class="lineno"> 804</span>&#160; <span class="keywordflow">return</span> result;</div><div class="line"><a name="l00805"></a><span class="lineno"> 805</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_ab6ed577caec49def150e231c63af0d12"><div class="ttname"><a href="namespacearmnn.html#ab6ed577caec49def150e231c63af0d12">armnn::CalculateEdgeStrategy</a></div><div class="ttdeci">EdgeStrategy CalculateEdgeStrategy(BackendsMap &amp;backends, ITensorHandleFactory::FactoryId srcFactoryId, const Layer &amp;layer, const Layer &amp;connectedLayer, TensorHandleFactoryRegistry &amp;registry)</div><div class="ttdef"><b>Definition:</b> <a href="_network_8cpp_source.html#l00664">Network.cpp:664</a></div></div>
<div class="ttc" id="namespacearmnn_html_a8d9f52bbb69750456acca06988beabda"><div class="ttname"><a href="namespacearmnn.html#a8d9f52bbb69750456acca06988beabda">armnn::CalculateSlotOption</a></div><div class="ttdeci">ITensorHandleFactory::FactoryId CalculateSlotOption(BackendsMap &amp;backends, OutputSlot &amp;outputSlot, TensorHandleFactoryRegistry &amp;registry)</div><div class="ttdef"><b>Definition:</b> <a href="_network_8cpp_source.html#l00555">Network.cpp:555</a></div></div>
<div class="ttc" id="namespacearmnn_html_a947e07902b1b5d98b57eeae34053146b"><div class="ttname"><a href="namespacearmnn.html#a947e07902b1b5d98b57eeae34053146b">armnn::FactoryId</a></div><div class="ttdeci">ITensorHandleFactory::FactoryId FactoryId</div><div class="ttdef"><b>Definition:</b> <a href="_cl_tensor_handle_factory_8cpp_source.html#l00020">ClTensorHandleFactory.cpp:20</a></div></div>
<div class="ttc" id="namespacearmnn_html_ab46c7f5f4736d550ab0e5e05a0fff4a9"><div class="ttname"><a href="namespacearmnn.html#ab46c7f5f4736d550ab0e5e05a0fff4a9">armnn::CalculateSlotOptionForOutput</a></div><div class="ttdeci">ITensorHandleFactory::FactoryId CalculateSlotOptionForOutput(BackendsMap &amp;backends, OutputSlot &amp;slot, TensorHandleFactoryRegistry &amp;registry)</div><div class="ttdef"><b>Definition:</b> <a href="_network_8cpp_source.html#l00545">Network.cpp:545</a></div></div>
<div class="ttc" id="namespacearmnn_html_accb1637c58e1523f740025e0d0e7c6dd"><div class="ttname"><a href="namespacearmnn.html#accb1637c58e1523f740025e0d0e7c6dd">armnn::CalculateSlotOptionForInput</a></div><div class="ttdeci">ITensorHandleFactory::FactoryId CalculateSlotOptionForInput(BackendsMap &amp;backends, OutputSlot &amp;slot, TensorHandleFactoryRegistry &amp;registry)</div><div class="ttdef"><b>Definition:</b> <a href="_network_8cpp_source.html#l00463">Network.cpp:463</a></div></div>
<div class="ttc" id="namespacearmnn_html_aff209afc1dc598da399e3e78617ce016"><div class="ttname"><a href="namespacearmnn.html#aff209afc1dc598da399e3e78617ce016">armnn::EdgeStrategy</a></div><div class="ttdeci">EdgeStrategy</div><div class="ttdef"><b>Definition:</b> <a href="include_2armnn_2backends_2_i_tensor_handle_factory_8hpp_source.html#l00064">ITensorHandleFactory.hpp:64</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a7f8325a4bc02f2f687ba1968b595ec0a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a7f8325a4bc02f2f687ba1968b595ec0a">&#9670;&nbsp;</a></span>SetAllLoggingSinks()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void SetAllLoggingSinks </td>
<td>(</td>
<td class="paramtype">bool&#160;</td>
<td class="paramname"><em>standardOut</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">bool&#160;</td>
<td class="paramname"><em>debugOut</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">bool&#160;</td>
<td class="paramname"><em>coloured</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_logging_8cpp_source.html#l00147">147</a> of file <a class="el" href="_logging_8cpp_source.html">Logging.cpp</a>.</p>
<p class="reference">Referenced by <a class="el" href="_logging_8hpp_source.html#l00134">SimpleLogger&lt; Level &gt;::AddSink()</a>, <a class="el" href="_unit_tests_8cpp_source.html#l00068">BOOST_AUTO_TEST_CASE()</a>, and <a class="el" href="_utils_8cpp_source.html#l00010">ConfigureLogging()</a>.</p>
<div class="fragment"><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160;{</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; SetLoggingSinks&lt;LogSeverity::Trace&gt;(standardOut, debugOut, coloured);</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; SetLoggingSinks&lt;LogSeverity::Debug&gt;(standardOut, debugOut, coloured);</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; SetLoggingSinks&lt;LogSeverity::Info&gt;(standardOut, debugOut, coloured);</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; SetLoggingSinks&lt;LogSeverity::Warning&gt;(standardOut, debugOut, coloured);</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; SetLoggingSinks&lt;LogSeverity::Error&gt;(standardOut, debugOut, coloured);</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; SetLoggingSinks&lt;LogSeverity::Fatal&gt;(standardOut, debugOut, coloured);</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160;}</div></div><!-- fragment -->
</div>
</div>
<a id="a460e01ad4cd0bfa6bde4eccaf0e77220"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a460e01ad4cd0bfa6bde4eccaf0e77220">&#9670;&nbsp;</a></span>SetClSliceData()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">auto armnn::SetClSliceData </td>
<td>(</td>
<td class="paramtype">const std::vector&lt; unsigned int &gt; &amp;&#160;</td>
<td class="paramname"><em>m_begin</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const std::vector&lt; unsigned int &gt; &amp;&#160;</td>
<td class="paramname"><em>m_size</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_cl_workload_utils_8hpp_source.html#l00066">66</a> of file <a class="el" href="_cl_workload_utils_8hpp_source.html">ClWorkloadUtils.hpp</a>.</p>
<p class="reference">Referenced by <a class="el" href="_cl_slice_workload_8cpp_source.html#l00034">ClSliceWorkload::ClSliceWorkload()</a>.</p>
<div class="fragment"><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160;{</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; <span class="comment">// This function must translate the size vector given to an end vector</span></div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; <span class="comment">// expected by the ACL NESlice workload</span></div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; <a class="code" href="namespacearmnn.html#ac6e86c1def7f674d3c4cb7f577874aa6">arm_compute::Coordinates</a> starts;</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; <a class="code" href="namespacearmnn.html#ac6e86c1def7f674d3c4cb7f577874aa6">arm_compute::Coordinates</a> ends;</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160;</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> num_dims = <span class="keyword">static_cast&lt;</span><span class="keywordtype">unsigned</span> <span class="keywordtype">int</span><span class="keyword">&gt;</span>(m_begin.size());</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160;</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; <span class="comment">// For strided slices, we have the relationship size = (end - begin) / stride</span></div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; <span class="comment">// For slice, we assume stride to be a vector of all ones, yielding the formula</span></div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; <span class="comment">// size = (end - begin) therefore we know end = size + begin</span></div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i &lt; num_dims; i++)</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; {</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> revertedIndex = num_dims - i - 1;</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160;</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; starts.set(i, static_cast&lt;int&gt;(m_begin[revertedIndex]));</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; ends.set(i, static_cast&lt;int&gt;(m_begin[revertedIndex] + m_size[revertedIndex]));</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; }</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160;</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; <span class="keywordflow">return</span> std::make_tuple(starts, ends);</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_ac6e86c1def7f674d3c4cb7f577874aa6"><div class="ttname"><a href="namespacearmnn.html#ac6e86c1def7f674d3c4cb7f577874aa6">armnn::Coordinates</a></div><div class="ttdeci">std::array&lt; unsigned int, MaxNumOfTensorDimensions &gt; Coordinates</div><div class="ttdef"><b>Definition:</b> <a href="_internal_types_8hpp_source.html#l00079">InternalTypes.hpp:79</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a6d4bdf4368a1422943f8f2b1740ec491"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a6d4bdf4368a1422943f8f2b1740ec491">&#9670;&nbsp;</a></span>SetClStridedSliceData()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">auto armnn::SetClStridedSliceData </td>
<td>(</td>
<td class="paramtype">const std::vector&lt; int &gt; &amp;&#160;</td>
<td class="paramname"><em>m_begin</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const std::vector&lt; int &gt; &amp;&#160;</td>
<td class="paramname"><em>m_end</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const std::vector&lt; int &gt; &amp;&#160;</td>
<td class="paramname"><em>m_stride</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_cl_workload_utils_8hpp_source.html#l00045">45</a> of file <a class="el" href="_cl_workload_utils_8hpp_source.html">ClWorkloadUtils.hpp</a>.</p>
<p class="reference">Referenced by <a class="el" href="_cl_strided_slice_workload_8cpp_source.html#l00054">ClStridedSliceWorkload::ClStridedSliceWorkload()</a>.</p>
<div class="fragment"><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;{</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; <a class="code" href="namespacearmnn.html#ac6e86c1def7f674d3c4cb7f577874aa6">arm_compute::Coordinates</a> starts;</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; <a class="code" href="namespacearmnn.html#ac6e86c1def7f674d3c4cb7f577874aa6">arm_compute::Coordinates</a> ends;</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <a class="code" href="namespacearmnn.html#ac6e86c1def7f674d3c4cb7f577874aa6">arm_compute::Coordinates</a> strides;</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160;</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> num_dims = <span class="keyword">static_cast&lt;</span><span class="keywordtype">unsigned</span> <span class="keywordtype">int</span><span class="keyword">&gt;</span>(m_begin.size());</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i &lt; num_dims; i++) {</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> revertedIndex = num_dims - i - 1;</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160;</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; starts.set(i, static_cast&lt;int&gt;(m_begin[revertedIndex]));</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; ends.set(i, static_cast&lt;int&gt;(m_end[revertedIndex]));</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; strides.set(i, static_cast&lt;int&gt;(m_stride[revertedIndex]));</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; }</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160;</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; <span class="keywordflow">return</span> std::make_tuple(starts, ends, strides);</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_ac6e86c1def7f674d3c4cb7f577874aa6"><div class="ttname"><a href="namespacearmnn.html#ac6e86c1def7f674d3c4cb7f577874aa6">armnn::Coordinates</a></div><div class="ttdeci">std::array&lt; unsigned int, MaxNumOfTensorDimensions &gt; Coordinates</div><div class="ttdef"><b>Definition:</b> <a href="_internal_types_8hpp_source.html#l00079">InternalTypes.hpp:79</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="ac9aad76a34137b6359a867b282ea7cfb"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ac9aad76a34137b6359a867b282ea7cfb">&#9670;&nbsp;</a></span>SetLogFilter()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void SetLogFilter </td>
<td>(</td>
<td class="paramtype"><a class="el" href="namespacearmnn.html#a93a3ba385cad27c4774e5fe64c025d3d">LogSeverity</a>&#160;</td>
<td class="paramname"><em>level</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_logging_8cpp_source.html#l00029">29</a> of file <a class="el" href="_logging_8cpp_source.html">Logging.cpp</a>.</p>
<p class="reference">References <a class="el" href="_utils_8hpp_source.html#l00035">ARMNN_FALLTHROUGH</a>, <a class="el" href="namespacearmnn.html#a93a3ba385cad27c4774e5fe64c025d3daa603905470e2a5b8c13e96b579ef0dba">Debug</a>, <a class="el" href="_logging_8hpp_source.html#l00118">SimpleLogger&lt; Level &gt;::Enable()</a>, <a class="el" href="namespacearmnn.html#a93a3ba385cad27c4774e5fe64c025d3da902b0d55fddef6f8d651fe1035b7d4bd">Error</a>, <a class="el" href="namespacearmnn.html#a93a3ba385cad27c4774e5fe64c025d3da882384ec38ce8d9582b57e70861730e4">Fatal</a>, <a class="el" href="_logging_8hpp_source.html#l00112">SimpleLogger&lt; Level &gt;::Get()</a>, <a class="el" href="namespacearmnn.html#a93a3ba385cad27c4774e5fe64c025d3da4059b0251f66a18cb56f544728796875">Info</a>, <a class="el" href="namespacearmnn.html#a93a3ba385cad27c4774e5fe64c025d3dadd4ec0ac4e58f7c32a01244ae91150b1">Trace</a>, and <a class="el" href="namespacearmnn.html#a93a3ba385cad27c4774e5fe64c025d3da0eaadb4fcb48a0a0ed7bc9868be9fbaa">Warning</a>.</p>
<p class="reference">Referenced by <a class="el" href="_logging_8hpp_source.html#l00134">SimpleLogger&lt; Level &gt;::AddSink()</a>, <a class="el" href="_unit_tests_8cpp_source.html#l00068">BOOST_AUTO_TEST_CASE()</a>, and <a class="el" href="_utils_8cpp_source.html#l00010">ConfigureLogging()</a>.</p>
<div class="fragment"><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;{</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; SimpleLogger&lt;LogSeverity::Trace&gt;::Get().Enable(<span class="keyword">false</span>);</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; SimpleLogger&lt;LogSeverity::Debug&gt;::Get().Enable(<span class="keyword">false</span>);</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; SimpleLogger&lt;LogSeverity::Info&gt;::Get().Enable(<span class="keyword">false</span>);</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; SimpleLogger&lt;LogSeverity::Warning&gt;::Get().Enable(<span class="keyword">false</span>);</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; SimpleLogger&lt;LogSeverity::Error&gt;::Get().Enable(<span class="keyword">false</span>);</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; SimpleLogger&lt;LogSeverity::Fatal&gt;::Get().Enable(<span class="keyword">false</span>);</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; <span class="keywordflow">switch</span> (level)</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; {</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; <span class="keywordflow">case</span> LogSeverity::Trace:</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; SimpleLogger&lt;LogSeverity::Trace&gt;::Get().Enable(<span class="keyword">true</span>);</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; <a class="code" href="_utils_8hpp.html#abbf421eb1186af0d505648ed2ea54a00">ARMNN_FALLTHROUGH</a>;</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacearmnn.html#a5aae369ef847a00062925cea8e9be9c4">LogSeverity::Debug</a>:</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; SimpleLogger&lt;LogSeverity::Debug&gt;::Get().Enable(<span class="keyword">true</span>);</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <a class="code" href="_utils_8hpp.html#abbf421eb1186af0d505648ed2ea54a00">ARMNN_FALLTHROUGH</a>;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <span class="keywordflow">case</span> LogSeverity::Info:</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; SimpleLogger&lt;LogSeverity::Info&gt;::Get().Enable(<span class="keyword">true</span>);</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; <a class="code" href="_utils_8hpp.html#abbf421eb1186af0d505648ed2ea54a00">ARMNN_FALLTHROUGH</a>;</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; <span class="keywordflow">case</span> LogSeverity::Warning:</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; SimpleLogger&lt;LogSeverity::Warning&gt;::Get().Enable(<span class="keyword">true</span>);</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; <a class="code" href="_utils_8hpp.html#abbf421eb1186af0d505648ed2ea54a00">ARMNN_FALLTHROUGH</a>;</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <span class="keywordflow">case</span> LogSeverity::Error:</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; SimpleLogger&lt;LogSeverity::Error&gt;::Get().Enable(<span class="keyword">true</span>);</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; <a class="code" href="_utils_8hpp.html#abbf421eb1186af0d505648ed2ea54a00">ARMNN_FALLTHROUGH</a>;</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; <span class="keywordflow">case</span> LogSeverity::Fatal:</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; SimpleLogger&lt;LogSeverity::Fatal&gt;::Get().Enable(<span class="keyword">true</span>);</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; <span class="keywordflow">default</span>:</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; BOOST_ASSERT(<span class="keyword">false</span>);</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; }</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a5aae369ef847a00062925cea8e9be9c4"><div class="ttname"><a href="namespacearmnn.html#a5aae369ef847a00062925cea8e9be9c4">armnn::Debug</a></div><div class="ttdeci">void Debug(const TensorInfo &amp;inputInfo, const T *inputData, LayerGuid guid, const std::string &amp;layerName, unsigned int slotIndex)</div><div class="ttdef"><b>Definition:</b> <a href="_debug_8cpp_source.html#l00019">Debug.cpp:19</a></div></div>
<div class="ttc" id="_utils_8hpp_html_abbf421eb1186af0d505648ed2ea54a00"><div class="ttname"><a href="_utils_8hpp.html#abbf421eb1186af0d505648ed2ea54a00">ARMNN_FALLTHROUGH</a></div><div class="ttdeci">#define ARMNN_FALLTHROUGH</div><div class="ttdef"><b>Definition:</b> <a href="_utils_8hpp_source.html#l00035">Utils.hpp:35</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a5f523aee1752323aeaf899085649320b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a5f523aee1752323aeaf899085649320b">&#9670;&nbsp;</a></span>SetLoggingSinks()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void armnn::SetLoggingSinks </td>
<td>(</td>
<td class="paramtype">bool&#160;</td>
<td class="paramname"><em>standardOut</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">bool&#160;</td>
<td class="paramname"><em>debugOut</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">bool&#160;</td>
<td class="paramname"><em>coloured</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_logging_8cpp_source.html#l00123">123</a> of file <a class="el" href="_logging_8cpp_source.html">Logging.cpp</a>.</p>
<p class="reference">References <a class="el" href="_logging_8hpp_source.html#l00134">SimpleLogger&lt; Level &gt;::AddSink()</a>, <a class="el" href="_logging_8hpp_source.html#l00112">SimpleLogger&lt; Level &gt;::Get()</a>, and <a class="el" href="_logging_8hpp_source.html#l00129">SimpleLogger&lt; Level &gt;::RemoveAllSinks()</a>.</p>
<div class="fragment"><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160;{</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; SimpleLogger&lt;Level&gt;::Get().RemoveAllSinks();</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160;</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; <span class="keywordflow">if</span> (standardOut)</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; {</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; <span class="keywordflow">if</span> (coloured)</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; {</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; SimpleLogger&lt;Level&gt;::Get().AddSink(</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; std::make_shared&lt;StandardOutputColourSink&gt;(Level));</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; } <span class="keywordflow">else</span></div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; {</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; SimpleLogger&lt;Level&gt;::Get().AddSink(</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; std::make_shared&lt;StandardOutputSink&gt;());</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; }</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; }</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160;</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; <span class="keywordflow">if</span> (debugOut)</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; {</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; SimpleLogger&lt;Level&gt;::Get().AddSink(</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; std::make_shared&lt;DebugOutputSink&gt;());</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; }</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160;}</div></div><!-- fragment -->
</div>
</div>
<a id="ab40e30cea5a328a3c35aa32f9b7db1c1"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab40e30cea5a328a3c35aa32f9b7db1c1">&#9670;&nbsp;</a></span>SetNeonSliceData()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">auto armnn::SetNeonSliceData </td>
<td>(</td>
<td class="paramtype">const std::vector&lt; unsigned int &gt; &amp;&#160;</td>
<td class="paramname"><em>m_begin</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const std::vector&lt; unsigned int &gt; &amp;&#160;</td>
<td class="paramname"><em>m_size</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_neon_workload_utils_8hpp_source.html#l00088">88</a> of file <a class="el" href="_neon_workload_utils_8hpp_source.html">NeonWorkloadUtils.hpp</a>.</p>
<p class="reference">Referenced by <a class="el" href="_neon_slice_workload_8cpp_source.html#l00034">NeonSliceWorkload::NeonSliceWorkload()</a>.</p>
<div class="fragment"><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160;{</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; <span class="comment">// This function must translate the size vector given to an end vector</span></div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; <span class="comment">// expected by the ACL NESlice workload</span></div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; <a class="code" href="namespacearmnn.html#ac6e86c1def7f674d3c4cb7f577874aa6">arm_compute::Coordinates</a> starts;</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; <a class="code" href="namespacearmnn.html#ac6e86c1def7f674d3c4cb7f577874aa6">arm_compute::Coordinates</a> ends;</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160;</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> num_dims = <span class="keyword">static_cast&lt;</span><span class="keywordtype">unsigned</span> <span class="keywordtype">int</span><span class="keyword">&gt;</span>(m_begin.size());</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160;</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; <span class="comment">// For strided slices, we have the relationship size = (end - begin) / stride</span></div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; <span class="comment">// For slice, we assume stride to be a vector of all ones, yielding the formula</span></div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; <span class="comment">// size = (end - begin) therefore we know end = size + begin</span></div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i &lt; num_dims; i++)</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; {</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> revertedIndex = num_dims - i - 1;</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160;</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; starts.set(i, static_cast&lt;int&gt;(m_begin[revertedIndex]));</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; ends.set(i, static_cast&lt;int&gt;(m_begin[revertedIndex] + m_size[revertedIndex]));</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; }</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160;</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; <span class="keywordflow">return</span> std::make_tuple(starts, ends);</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_ac6e86c1def7f674d3c4cb7f577874aa6"><div class="ttname"><a href="namespacearmnn.html#ac6e86c1def7f674d3c4cb7f577874aa6">armnn::Coordinates</a></div><div class="ttdeci">std::array&lt; unsigned int, MaxNumOfTensorDimensions &gt; Coordinates</div><div class="ttdef"><b>Definition:</b> <a href="_internal_types_8hpp_source.html#l00079">InternalTypes.hpp:79</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a01d1e745f360ccd0b655214645bcef32"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a01d1e745f360ccd0b655214645bcef32">&#9670;&nbsp;</a></span>SetNeonStridedSliceData()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">auto armnn::SetNeonStridedSliceData </td>
<td>(</td>
<td class="paramtype">const std::vector&lt; int &gt; &amp;&#160;</td>
<td class="paramname"><em>m_begin</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const std::vector&lt; int &gt; &amp;&#160;</td>
<td class="paramname"><em>m_end</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const std::vector&lt; int &gt; &amp;&#160;</td>
<td class="paramname"><em>m_stride</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_neon_workload_utils_8hpp_source.html#l00066">66</a> of file <a class="el" href="_neon_workload_utils_8hpp_source.html">NeonWorkloadUtils.hpp</a>.</p>
<p class="reference">Referenced by <a class="el" href="_neon_strided_slice_workload_8cpp_source.html#l00047">NeonStridedSliceWorkload::NeonStridedSliceWorkload()</a>.</p>
<div class="fragment"><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160;{</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; <a class="code" href="namespacearmnn.html#ac6e86c1def7f674d3c4cb7f577874aa6">arm_compute::Coordinates</a> starts;</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; <a class="code" href="namespacearmnn.html#ac6e86c1def7f674d3c4cb7f577874aa6">arm_compute::Coordinates</a> ends;</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; <a class="code" href="namespacearmnn.html#ac6e86c1def7f674d3c4cb7f577874aa6">arm_compute::Coordinates</a> strides;</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160;</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> num_dims = <span class="keyword">static_cast&lt;</span><span class="keywordtype">unsigned</span> <span class="keywordtype">int</span><span class="keyword">&gt;</span>(m_begin.size());</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160;</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i &lt; num_dims; i++)</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; {</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> revertedIndex = num_dims - i - 1;</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160;</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; starts.set(i, static_cast&lt;int&gt;(m_begin[revertedIndex]));</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; ends.set(i, static_cast&lt;int&gt;(m_end[revertedIndex]));</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; strides.set(i, static_cast&lt;int&gt;(m_stride[revertedIndex]));</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; }</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160;</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; <span class="keywordflow">return</span> std::make_tuple(starts, ends, strides);</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_ac6e86c1def7f674d3c4cb7f577874aa6"><div class="ttname"><a href="namespacearmnn.html#ac6e86c1def7f674d3c4cb7f577874aa6">armnn::Coordinates</a></div><div class="ttdeci">std::array&lt; unsigned int, MaxNumOfTensorDimensions &gt; Coordinates</div><div class="ttdef"><b>Definition:</b> <a href="_internal_types_8hpp_source.html#l00079">InternalTypes.hpp:79</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a52cbff9d344ba4a1fe01d4da2c1f7ba2"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a52cbff9d344ba4a1fe01d4da2c1f7ba2">&#9670;&nbsp;</a></span>SetupQuantize()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">std::vector&lt;uint8_t&gt; armnn::SetupQuantize </td>
<td>(</td>
<td class="paramtype">float&#160;</td>
<td class="paramname"><em>value</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_quantizer_test_8cpp_source.html#l02727">2727</a> of file <a class="el" href="_quantizer_test_8cpp_source.html">QuantizerTest.cpp</a>.</p>
<p class="reference">References <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">Float32</a>, and <a class="el" href="_tensor_8cpp_source.html#l00259">TensorInfo::SetQuantizationScale()</a>.</p>
<p class="reference">Referenced by <a class="el" href="_quantizer_test_8cpp_source.html#l02742">BOOST_AUTO_TEST_CASE()</a>.</p>
<div class="fragment"><div class="line"><a name="l02728"></a><span class="lineno"> 2728</span>&#160;{</div><div class="line"><a name="l02729"></a><span class="lineno"> 2729</span>&#160; <a class="code" href="classarmnn_1_1_tensor_info.html">armnn::TensorInfo</a> inputInfo({ 1, 2, 2 }, <a class="code" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">armnn::DataType::Float32</a>);</div><div class="line"><a name="l02730"></a><span class="lineno"> 2730</span>&#160; inputInfo.<a class="code" href="classarmnn_1_1_tensor_info.html#a685739c4eb65a580e075282cfe6787d6">SetQuantizationScale</a>(1.0f);</div><div class="line"><a name="l02731"></a><span class="lineno"> 2731</span>&#160; inputInfo.SetQuantizationOffset(1);</div><div class="line"><a name="l02732"></a><span class="lineno"> 2732</span>&#160; std::vector&lt;float&gt; input({ value, 0.0f, 0.0f, 1.0f });</div><div class="line"><a name="l02733"></a><span class="lineno"> 2733</span>&#160; <span class="keyword">const</span> std::vector&lt;float&gt; &amp;inputRef = input;</div><div class="line"><a name="l02734"></a><span class="lineno"> 2734</span>&#160;</div><div class="line"><a name="l02735"></a><span class="lineno"> 2735</span>&#160; <span class="keyword">auto</span> output = armnnUtils::QuantizedVector&lt;uint8_t&gt;(inputRef,</div><div class="line"><a name="l02736"></a><span class="lineno"> 2736</span>&#160; inputInfo.GetQuantizationScale(),</div><div class="line"><a name="l02737"></a><span class="lineno"> 2737</span>&#160; inputInfo.GetQuantizationOffset());</div><div class="line"><a name="l02738"></a><span class="lineno"> 2738</span>&#160;</div><div class="line"><a name="l02739"></a><span class="lineno"> 2739</span>&#160; <span class="keywordflow">return</span> output;</div><div class="line"><a name="l02740"></a><span class="lineno"> 2740</span>&#160;}</div><div class="ttc" id="classarmnn_1_1_tensor_info_html"><div class="ttname"><a href="classarmnn_1_1_tensor_info.html">armnn::TensorInfo</a></div><div class="ttdef"><b>Definition:</b> <a href="_tensor_8hpp_source.html#l00053">Tensor.hpp:53</a></div></div>
<div class="ttc" id="namespacearmnn_html_ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204"><div class="ttname"><a href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">armnn::DataType::Float32</a></div></div>
<div class="ttc" id="classarmnn_1_1_tensor_info_html_a685739c4eb65a580e075282cfe6787d6"><div class="ttname"><a href="classarmnn_1_1_tensor_info.html#a685739c4eb65a580e075282cfe6787d6">armnn::TensorInfo::SetQuantizationScale</a></div><div class="ttdeci">void SetQuantizationScale(float scale)</div><div class="ttdef"><b>Definition:</b> <a href="_tensor_8cpp_source.html#l00259">Tensor.cpp:259</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a13c7d751e4d37f65a6d40c3c6e50d2b8"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a13c7d751e4d37f65a6d40c3c6e50d2b8">&#9670;&nbsp;</a></span>SetValueChecked()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void armnn::SetValueChecked </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classarmnn_1_1_optional.html">Optional</a>&lt; T &amp;&gt;&#160;</td>
<td class="paramname"><em>optionalRef</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">V &amp;&amp;&#160;</td>
<td class="paramname"><em>val</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_layer_support_common_8hpp_source.html#l00018">18</a> of file <a class="el" href="_layer_support_common_8hpp_source.html">LayerSupportCommon.hpp</a>.</p>
<p class="reference">References <a class="el" href="_optional_8hpp_source.html#l00146">OptionalReferenceSwitch&lt; std::is_reference&lt; T &gt;::value, T &gt;::value()</a>.</p>
<p class="reference">Referenced by <a class="el" href="_layer_support_common_8hpp_source.html#l00071">FalseFuncF16()</a>, <a class="el" href="_layer_support_common_8hpp_source.html#l00079">FalseFuncF32()</a>, <a class="el" href="_layer_support_common_8hpp_source.html#l00095">FalseFuncI32()</a>, <a class="el" href="_layer_support_common_8hpp_source.html#l00087">FalseFuncU8()</a>, <a class="el" href="_layer_support_common_8hpp_source.html#l00111">FalseInputFuncF16()</a>, <a class="el" href="_layer_support_common_8hpp_source.html#l00103">FalseInputFuncF32()</a>, <a class="el" href="_layer_support_common_8hpp_source.html#l00127">FalseOutputFuncF16()</a>, <a class="el" href="_layer_support_common_8hpp_source.html#l00119">FalseOutputFuncF32()</a>, <a class="el" href="_neon_layer_support_8cpp_source.html#l00218">NeonLayerSupport::IsConcatSupported()</a>, <a class="el" href="_cl_layer_support_8cpp_source.html#l00247">ClLayerSupport::IsConcatSupported()</a>, <a class="el" href="_cl_layer_support_8cpp_source.html#l00737">ClLayerSupport::IsSplitterSupported()</a>, and <a class="el" href="_neon_layer_support_8cpp_source.html#l00721">NeonLayerSupport::IsSplitterSupported()</a>.</p>
<div class="fragment"><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;{</div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160; <span class="keywordflow">if</span> (optionalRef)</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160; {</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160; optionalRef.value() = val;</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160; }</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;}</div></div><!-- fragment -->
</div>
</div>
<a id="a044ea0cc993d4d1fbe4ec877b17b8d39"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a044ea0cc993d4d1fbe4ec877b17b8d39">&#9670;&nbsp;</a></span>Slice()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void Slice </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>inputInfo</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="structarmnn_1_1_slice_descriptor.html">SliceDescriptor</a> &amp;&#160;</td>
<td class="paramname"><em>descriptor</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const void *&#160;</td>
<td class="paramname"><em>inputData</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">void *&#160;</td>
<td class="paramname"><em>outputData</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">unsigned int&#160;</td>
<td class="paramname"><em>dataTypeSize</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="backends_2reference_2workloads_2_slice_8cpp_source.html#l00015">15</a> of file <a class="el" href="backends_2reference_2workloads_2_slice_8cpp_source.html">Slice.cpp</a>.</p>
<p class="reference">References <a class="el" href="_tensor_8hpp_source.html#l00043">TensorShape::GetNumDimensions()</a>, <a class="el" href="_tensor_8hpp_source.html#l00088">TensorInfo::GetShape()</a>, <a class="el" href="_descriptors_8hpp_source.html#l00943">SliceDescriptor::m_Begin</a>, and <a class="el" href="_descriptors_8hpp_source.html#l00946">SliceDescriptor::m_Size</a>.</p>
<p class="reference">Referenced by <a class="el" href="_serializer_tests_8cpp_source.html#l02153">BOOST_AUTO_TEST_CASE()</a>.</p>
<div class="fragment"><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;{</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160; <span class="keyword">const</span> TensorShape&amp; inputShape = inputInfo.GetShape();</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> numDims = inputShape.GetNumDimensions();</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160; BOOST_ASSERT(descriptor.m_Begin.size() == numDims);</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; BOOST_ASSERT(descriptor.m_Size.size() == numDims);</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; constexpr <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> maxNumDims = 4;</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; BOOST_ASSERT(numDims &lt;= maxNumDims);</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; std::vector&lt;unsigned int&gt; paddedInput(4);</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; std::vector&lt;unsigned int&gt; paddedBegin(4);</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; std::vector&lt;unsigned int&gt; paddedSize (4);</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> numPaddingDims = maxNumDims - numDims;</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0u; i &lt; maxNumDims; ++i)</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; {</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; <span class="keywordflow">if</span> (i &lt; numPaddingDims)</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; {</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; paddedInput[i] = 1u;</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; paddedBegin[i] = 0u;</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; paddedSize[i] = 1u;</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; }</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; {</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> j = i - numPaddingDims;</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; paddedInput[i] = inputShape[j];</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; paddedBegin[i] = descriptor.m_Begin[j];</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; paddedSize[i] = descriptor.m_Size[j];</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; }</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; }</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160;</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> dim0 = paddedInput[0];</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> dim1 = paddedInput[1];</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> dim2 = paddedInput[2];</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> dim3 = paddedInput[3];</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160;</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> begin0 = paddedBegin[0];</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> begin1 = paddedBegin[1];</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> begin2 = paddedBegin[2];</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> begin3 = paddedBegin[3];</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160;</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> size0 = paddedSize[0];</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> size1 = paddedSize[1];</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> size2 = paddedSize[2];</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> size3 = paddedSize[3];</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160;</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; BOOST_ASSERT(begin0 + size0 &lt;= dim0);</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; BOOST_ASSERT(begin1 + size1 &lt;= dim1);</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; BOOST_ASSERT(begin2 + size2 &lt;= dim2);</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; BOOST_ASSERT(begin3 + size3 &lt;= dim3);</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160;</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span>* input = <span class="keyword">reinterpret_cast&lt;</span><span class="keyword">const </span><span class="keywordtype">unsigned</span> <span class="keywordtype">char</span>*<span class="keyword">&gt;</span>(inputData);</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span>* output = <span class="keyword">reinterpret_cast&lt;</span><span class="keywordtype">unsigned</span> <span class="keywordtype">char</span>*<span class="keyword">&gt;</span>(outputData);</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160;</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; boost::ignore_unused(dim0);</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> idx0 = begin0; idx0 &lt; begin0 + size0; ++idx0)</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; {</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> idx1 = begin1; idx1 &lt; begin1 + size1; ++idx1)</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; {</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> idx2 = begin2; idx2 &lt; begin2 + size2; ++idx2)</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; {</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> idx3 = begin3; idx3 &lt; begin3 + size3; ++idx3)</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; {</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> inputOffset =</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; (((idx0 * dim1 + idx1) * dim2 + idx2) * dim3 + idx3) * dataTypeSize;</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160;</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; ::memcpy(output, input + inputOffset, dataTypeSize);</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; output += dataTypeSize;</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; }</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; }</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; }</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; }</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160;}</div></div><!-- fragment -->
</div>
</div>
<a id="aa999ff2585ad75b95954a9323f63c32b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa999ff2585ad75b95954a9323f63c32b">&#9670;&nbsp;</a></span>Softmax()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void Softmax </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classarmnn_1_1_decoder.html">Decoder</a>&lt; float &gt; &amp;&#160;</td>
<td class="paramname"><em>in</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classarmnn_1_1_encoder.html">Encoder</a>&lt; float &gt; &amp;&#160;</td>
<td class="paramname"><em>out</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>inputTensorInfo</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">float&#160;</td>
<td class="paramname"><em>beta</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>axis</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Computes the softmax function on some inputs, into outputs, with a shape given by tensorInfo. </p>
<p class="definition">Definition at line <a class="el" href="backends_2reference_2workloads_2_softmax_8cpp_source.html#l00017">17</a> of file <a class="el" href="backends_2reference_2workloads_2_softmax_8cpp_source.html">Softmax.cpp</a>.</p>
<p class="reference">References <a class="el" href="classarmnn_1_1_decoder.html#ac729108381e2340bea12877971713ecb">Decoder&lt; IType &gt;::Get()</a>, <a class="el" href="_tensor_8hpp_source.html#l00043">TensorShape::GetNumDimensions()</a>, <a class="el" href="_tensor_8hpp_source.html#l00092">TensorInfo::GetNumDimensions()</a>, <a class="el" href="_tensor_utils_8cpp_source.html#l00113">armnnUtils::GetNumElementsBetween()</a>, <a class="el" href="_tensor_8hpp_source.html#l00088">TensorInfo::GetShape()</a>, and <a class="el" href="classarmnn_1_1_encoder.html#ae3b62b846a9c239f332830b9e36030eb">Encoder&lt; IType &gt;::Set()</a>.</p>
<p class="reference">Referenced by <a class="el" href="_serializer_tests_8cpp_source.html#l02183">BOOST_AUTO_TEST_CASE()</a>.</p>
<div class="fragment"><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;{</div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160; BOOST_ASSERT_MSG(axis &lt; static_cast&lt;int&gt;(inputTensorInfo.GetNumDimensions()),</div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160; <span class="stringliteral">&quot;Required axis index greater than number of dimensions.&quot;</span>);</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160; BOOST_ASSERT_MSG(axis &gt;= -static_cast&lt;int&gt;(inputTensorInfo.GetNumDimensions()),</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160; <span class="stringliteral">&quot;Required axis index lower than negative of the number of dimensions&quot;</span>);</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> uAxis = axis &lt; 0 ?</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; inputTensorInfo.GetNumDimensions() - <span class="keyword">static_cast&lt;</span><span class="keywordtype">unsigned</span> <span class="keywordtype">int</span><span class="keyword">&gt;</span>(abs(axis))</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; : static_cast&lt;unsigned int&gt;(axis);</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; <span class="keyword">const</span> TensorShape&amp; inputShape = inputTensorInfo.GetShape();</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> outerSize = <a class="code" href="namespacearmnn_utils.html#af57864f5e03358d14c2988edae912b8b">armnnUtils::GetNumElementsBetween</a>(inputShape, 0, uAxis);</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> axisSize = inputShape[uAxis];</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> innerSize = <a class="code" href="namespacearmnn_utils.html#af57864f5e03358d14c2988edae912b8b">armnnUtils::GetNumElementsBetween</a>(inputShape,</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; uAxis + 1,</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; inputShape.GetNumDimensions());</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> outer = 0; outer &lt; outerSize; ++outer)</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; {</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> inputBeginIdx = outer * axisSize * innerSize;</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> inputEndIdx = inputBeginIdx + axisSize * innerSize;</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> outputBeginIdx = outer * axisSize * innerSize;</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> inner = 0; inner &lt; innerSize; ++inner, ++inputBeginIdx, ++inputEndIdx, ++outputBeginIdx)</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; {</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; <span class="comment">// Find max</span></div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <span class="keywordtype">float</span> maxValue = std::numeric_limits&lt;float&gt;::lowest();</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> iter = inputBeginIdx; iter &lt; inputEndIdx; iter += innerSize)</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; {</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; in[iter];</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; maxValue = std::max(maxValue, in.<a class="code" href="classarmnn_1_1_decoder.html#ac729108381e2340bea12877971713ecb">Get</a>());</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; }</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <span class="comment">// Compute sum</span></div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; <span class="keywordtype">float</span> sum = 0.0f;</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> iter = inputBeginIdx; iter &lt; inputEndIdx; iter += innerSize)</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; {</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; in[iter];</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; sum += std::exp((in.<a class="code" href="classarmnn_1_1_decoder.html#ac729108381e2340bea12877971713ecb">Get</a>() - maxValue) * beta);</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; }</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160;</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; <span class="comment">// Compute result</span></div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> outputIter = outputBeginIdx;</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; out[outputIter];</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> iter = inputBeginIdx; iter &lt; inputEndIdx; iter += innerSize, outputIter += innerSize)</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; {</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; out[outputIter];</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; in[iter];</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; out.<a class="code" href="classarmnn_1_1_encoder.html#ae3b62b846a9c239f332830b9e36030eb">Set</a>(std::exp((in.<a class="code" href="classarmnn_1_1_decoder.html#ac729108381e2340bea12877971713ecb">Get</a>() - maxValue) * beta) / sum);</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; }</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; }</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; }</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160;}</div><div class="ttc" id="classarmnn_1_1_decoder_html_ac729108381e2340bea12877971713ecb"><div class="ttname"><a href="classarmnn_1_1_decoder.html#ac729108381e2340bea12877971713ecb">armnn::Decoder::Get</a></div><div class="ttdeci">virtual IType Get() const =0</div></div>
<div class="ttc" id="namespacearmnn_utils_html_af57864f5e03358d14c2988edae912b8b"><div class="ttname"><a href="namespacearmnn_utils.html#af57864f5e03358d14c2988edae912b8b">armnnUtils::GetNumElementsBetween</a></div><div class="ttdeci">unsigned int GetNumElementsBetween(const armnn::TensorShape &amp;shape, unsigned int firstAxisInclusive, unsigned int lastAxisExclusive)</div><div class="ttdef"><b>Definition:</b> <a href="_tensor_utils_8cpp_source.html#l00113">TensorUtils.cpp:113</a></div></div>
<div class="ttc" id="classarmnn_1_1_encoder_html_ae3b62b846a9c239f332830b9e36030eb"><div class="ttname"><a href="classarmnn_1_1_encoder.html#ae3b62b846a9c239f332830b9e36030eb">armnn::Encoder::Set</a></div><div class="ttdeci">virtual void Set(IType right)=0</div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a4a180e425d4c19b2cdea4ce5760180e1"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a4a180e425d4c19b2cdea4ce5760180e1">&#9670;&nbsp;</a></span>SpaceToBatchNd()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void SpaceToBatchNd </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>inputInfo</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>outputInfo</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="structarmnn_1_1_space_to_batch_nd_descriptor.html">SpaceToBatchNdDescriptor</a> &amp;&#160;</td>
<td class="paramname"><em>params</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classarmnn_1_1_decoder.html">Decoder</a>&lt; float &gt; &amp;&#160;</td>
<td class="paramname"><em>inputData</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classarmnn_1_1_encoder.html">Encoder</a>&lt; float &gt; &amp;&#160;</td>
<td class="paramname"><em>outputData</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="backends_2reference_2workloads_2_space_to_batch_n_d_8cpp_source.html#l00034">34</a> of file <a class="el" href="backends_2reference_2workloads_2_space_to_batch_n_d_8cpp_source.html">SpaceToBatchNd.cpp</a>.</p>
<p class="reference">References <a class="el" href="classarmnn_1_1_decoder.html#ac729108381e2340bea12877971713ecb">Decoder&lt; IType &gt;::Get()</a>, <a class="el" href="_data_layout_indexed_8hpp_source.html#l00023">DataLayoutIndexed::GetChannelsIndex()</a>, <a class="el" href="_data_layout_indexed_8hpp_source.html#l00024">DataLayoutIndexed::GetHeightIndex()</a>, <a class="el" href="backends_2reference_2workloads_2_space_to_batch_n_d_8cpp_source.html#l00015">GetOffset()</a>, <a class="el" href="_tensor_8hpp_source.html#l00088">TensorInfo::GetShape()</a>, <a class="el" href="_data_layout_indexed_8hpp_source.html#l00025">DataLayoutIndexed::GetWidthIndex()</a>, <a class="el" href="_descriptors_8hpp_source.html#l00801">SpaceToBatchNdDescriptor::m_BlockShape</a>, <a class="el" href="_descriptors_8hpp_source.html#l00806">SpaceToBatchNdDescriptor::m_DataLayout</a>, <a class="el" href="_descriptors_8hpp_source.html#l00804">SpaceToBatchNdDescriptor::m_PadList</a>, <a class="el" href="classarmnn_1_1_encoder.html#ae3b62b846a9c239f332830b9e36030eb">Encoder&lt; IType &gt;::Set()</a>, and <a class="el" href="backends_2reference_2workloads_2_space_to_batch_n_d_8cpp_source.html#l00034">SpaceToBatchNd()</a>.</p>
<p class="reference">Referenced by <a class="el" href="_serializer_tests_8cpp_source.html#l02211">BOOST_AUTO_TEST_CASE()</a>, <a class="el" href="backends_2reference_2workloads_2_space_to_batch_n_d_8cpp_source.html#l00034">SpaceToBatchNd()</a>, and <a class="el" href="_space_to_batch_nd_layer_8cpp_source.html#l00023">SpaceToBatchNdLayer::SpaceToBatchNdLayer()</a>.</p>
<div class="fragment"><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;{</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; <a class="code" href="classarmnn_utils_1_1_data_layout_indexed.html">DataLayoutIndexed</a> dataLayout = params.<a class="code" href="structarmnn_1_1_space_to_batch_nd_descriptor.html#a6089e1ca91914015777ea780a513131a">m_DataLayout</a>;</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_tensor_shape.html">TensorShape</a>&amp; inputShape = inputInfo.<a class="code" href="classarmnn_1_1_tensor_info.html#a8b5d0f8a24e9d9238f412260a552acf8">GetShape</a>();</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_tensor_shape.html">TensorShape</a>&amp; outputShape = outputInfo.<a class="code" href="classarmnn_1_1_tensor_info.html#a8b5d0f8a24e9d9238f412260a552acf8">GetShape</a>();</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> channels = inputShape[dataLayout.<a class="code" href="classarmnn_utils_1_1_data_layout_indexed.html#a861b2621ee46e4b63379988b360b8cd9">GetChannelsIndex</a>()];</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> inputBatchSize = inputShape[0];</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> inputHeight = inputShape[dataLayout.<a class="code" href="classarmnn_utils_1_1_data_layout_indexed.html#a61c00316c443adc233c24e85c6c5b740">GetHeightIndex</a>()];</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> inputWidth = inputShape[dataLayout.<a class="code" href="classarmnn_utils_1_1_data_layout_indexed.html#a414e6f95548e6f7a01d5028b55ad3941">GetWidthIndex</a>()];</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> outputBatchSize = outputShape[0];</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> outputHeight = outputShape[dataLayout.<a class="code" href="classarmnn_utils_1_1_data_layout_indexed.html#a61c00316c443adc233c24e85c6c5b740">GetHeightIndex</a>()];</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> outputWidth = outputShape[dataLayout.<a class="code" href="classarmnn_utils_1_1_data_layout_indexed.html#a414e6f95548e6f7a01d5028b55ad3941">GetWidthIndex</a>()];</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> blockHeight = params.<a class="code" href="structarmnn_1_1_space_to_batch_nd_descriptor.html#a02e143524aefddd40b485fcf7dea6696">m_BlockShape</a>[0];</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> blockWidth = params.<a class="code" href="structarmnn_1_1_space_to_batch_nd_descriptor.html#a02e143524aefddd40b485fcf7dea6696">m_BlockShape</a>[1];</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160;</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> paddingTop = params.<a class="code" href="structarmnn_1_1_space_to_batch_nd_descriptor.html#a85f98c94e11f65a6b73f831735c040f3">m_PadList</a>[0].first;</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> paddingLeft = params.<a class="code" href="structarmnn_1_1_space_to_batch_nd_descriptor.html#a85f98c94e11f65a6b73f831735c040f3">m_PadList</a>[1].first;</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160;</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> outB = 0; outB &lt; outputBatchSize; outB++)</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; {</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> inB = outB % inputBatchSize;</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160;</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> shiftW = (outB / inputBatchSize) % blockWidth;</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> shiftH = (outB / inputBatchSize) / blockWidth;</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160;</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> outH = 0; outH &lt; outputHeight; outH++)</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; {</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> outW = 0; outW &lt; outputWidth; outW++)</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; {</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; <span class="keywordflow">if</span> (outH * blockHeight + shiftH &lt; paddingTop ||</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; outH * blockHeight + shiftH &gt;= paddingTop + inputHeight ||</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; outW * blockWidth + shiftW &lt; paddingLeft ||</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; outW * blockWidth + shiftW &gt;= paddingLeft + inputWidth)</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; {</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> c = 0; c &lt; channels; c++)</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; {</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> outOffset = <a class="code" href="namespacearmnn.html#adafb0fd0a3f6435c2bdf41f971761ecf">GetOffset</a>(outputShape,</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; outB,</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; outH,</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; outW,</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; c,</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; dataLayout);</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; outputData += outOffset;</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; outputData.<a class="code" href="classarmnn_1_1_encoder.html#ae3b62b846a9c239f332830b9e36030eb">Set</a>(0);</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; outputData -= outOffset;</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; }</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; }</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; {</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> c = 0; c &lt; channels; c++)</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; {</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> inOffset = <a class="code" href="namespacearmnn.html#adafb0fd0a3f6435c2bdf41f971761ecf">GetOffset</a>(inputShape,</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; inB,</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; (outH * blockHeight + shiftH) - paddingTop,</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; (outW * blockWidth + shiftW) - paddingLeft,</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; c,</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; dataLayout);</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160;</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> outOffset = <a class="code" href="namespacearmnn.html#adafb0fd0a3f6435c2bdf41f971761ecf">GetOffset</a>(outputShape,</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; outB,</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; outH,</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; outW,</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; c,</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; dataLayout);</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160;</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; outputData += outOffset;</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; inputData += inOffset;</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; outputData.<a class="code" href="classarmnn_1_1_encoder.html#ae3b62b846a9c239f332830b9e36030eb">Set</a>(inputData.<a class="code" href="classarmnn_1_1_decoder.html#ac729108381e2340bea12877971713ecb">Get</a>());</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; inputData -= inOffset;</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; outputData -= outOffset;</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; }</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; }</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; }</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; }</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; }</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160;}</div><div class="ttc" id="structarmnn_1_1_space_to_batch_nd_descriptor_html_a85f98c94e11f65a6b73f831735c040f3"><div class="ttname"><a href="structarmnn_1_1_space_to_batch_nd_descriptor.html#a85f98c94e11f65a6b73f831735c040f3">armnn::SpaceToBatchNdDescriptor::m_PadList</a></div><div class="ttdeci">std::vector&lt; std::pair&lt; unsigned int, unsigned int &gt; &gt; m_PadList</div><div class="ttdoc">Specifies the padding values for the input dimension: heightPad{top, bottom} widthPad{left, right}. </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.html#l00804">Descriptors.hpp:804</a></div></div>
<div class="ttc" id="classarmnn_utils_1_1_data_layout_indexed_html_a61c00316c443adc233c24e85c6c5b740"><div class="ttname"><a href="classarmnn_utils_1_1_data_layout_indexed.html#a61c00316c443adc233c24e85c6c5b740">armnnUtils::DataLayoutIndexed::GetHeightIndex</a></div><div class="ttdeci">unsigned int GetHeightIndex() const</div><div class="ttdef"><b>Definition:</b> <a href="_data_layout_indexed_8hpp_source.html#l00024">DataLayoutIndexed.hpp:24</a></div></div>
<div class="ttc" id="structarmnn_1_1_space_to_batch_nd_descriptor_html_a6089e1ca91914015777ea780a513131a"><div class="ttname"><a href="structarmnn_1_1_space_to_batch_nd_descriptor.html#a6089e1ca91914015777ea780a513131a">armnn::SpaceToBatchNdDescriptor::m_DataLayout</a></div><div class="ttdeci">DataLayout m_DataLayout</div><div class="ttdoc">The data layout to be used (NCHW, NHWC). </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.html#l00806">Descriptors.hpp:806</a></div></div>
<div class="ttc" id="structarmnn_1_1_space_to_batch_nd_descriptor_html_a02e143524aefddd40b485fcf7dea6696"><div class="ttname"><a href="structarmnn_1_1_space_to_batch_nd_descriptor.html#a02e143524aefddd40b485fcf7dea6696">armnn::SpaceToBatchNdDescriptor::m_BlockShape</a></div><div class="ttdeci">std::vector&lt; unsigned int &gt; m_BlockShape</div><div class="ttdoc">Block shape value. </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.html#l00801">Descriptors.hpp:801</a></div></div>
<div class="ttc" id="classarmnn_utils_1_1_data_layout_indexed_html_a414e6f95548e6f7a01d5028b55ad3941"><div class="ttname"><a href="classarmnn_utils_1_1_data_layout_indexed.html#a414e6f95548e6f7a01d5028b55ad3941">armnnUtils::DataLayoutIndexed::GetWidthIndex</a></div><div class="ttdeci">unsigned int GetWidthIndex() const</div><div class="ttdef"><b>Definition:</b> <a href="_data_layout_indexed_8hpp_source.html#l00025">DataLayoutIndexed.hpp:25</a></div></div>
<div class="ttc" id="namespacearmnn_html_adafb0fd0a3f6435c2bdf41f971761ecf"><div class="ttname"><a href="namespacearmnn.html#adafb0fd0a3f6435c2bdf41f971761ecf">armnn::GetOffset</a></div><div class="ttdeci">unsigned int GetOffset(const TensorShape &amp;shape, unsigned int b, unsigned int h, unsigned int w, unsigned int c, const DataLayoutIndexed &amp;dataLayout)</div><div class="ttdef"><b>Definition:</b> <a href="backends_2reference_2workloads_2_space_to_batch_n_d_8cpp_source.html#l00015">SpaceToBatchNd.cpp:15</a></div></div>
<div class="ttc" id="classarmnn_utils_1_1_data_layout_indexed_html_a861b2621ee46e4b63379988b360b8cd9"><div class="ttname"><a href="classarmnn_utils_1_1_data_layout_indexed.html#a861b2621ee46e4b63379988b360b8cd9">armnnUtils::DataLayoutIndexed::GetChannelsIndex</a></div><div class="ttdeci">unsigned int GetChannelsIndex() const</div><div class="ttdef"><b>Definition:</b> <a href="_data_layout_indexed_8hpp_source.html#l00023">DataLayoutIndexed.hpp:23</a></div></div>
<div class="ttc" id="classarmnn_1_1_tensor_shape_html"><div class="ttname"><a href="classarmnn_1_1_tensor_shape.html">armnn::TensorShape</a></div><div class="ttdef"><b>Definition:</b> <a href="_tensor_8hpp_source.html#l00020">Tensor.hpp:20</a></div></div>
<div class="ttc" id="classarmnn_1_1_decoder_html_ac729108381e2340bea12877971713ecb"><div class="ttname"><a href="classarmnn_1_1_decoder.html#ac729108381e2340bea12877971713ecb">armnn::Decoder::Get</a></div><div class="ttdeci">virtual IType Get() const =0</div></div>
<div class="ttc" id="classarmnn_utils_1_1_data_layout_indexed_html"><div class="ttname"><a href="classarmnn_utils_1_1_data_layout_indexed.html">armnnUtils::DataLayoutIndexed</a></div><div class="ttdef"><b>Definition:</b> <a href="_data_layout_indexed_8hpp_source.html#l00017">DataLayoutIndexed.hpp:17</a></div></div>
<div class="ttc" id="classarmnn_1_1_tensor_info_html_a8b5d0f8a24e9d9238f412260a552acf8"><div class="ttname"><a href="classarmnn_1_1_tensor_info.html#a8b5d0f8a24e9d9238f412260a552acf8">armnn::TensorInfo::GetShape</a></div><div class="ttdeci">const TensorShape &amp; GetShape() const</div><div class="ttdef"><b>Definition:</b> <a href="_tensor_8hpp_source.html#l00088">Tensor.hpp:88</a></div></div>
<div class="ttc" id="classarmnn_1_1_encoder_html_ae3b62b846a9c239f332830b9e36030eb"><div class="ttname"><a href="classarmnn_1_1_encoder.html#ae3b62b846a9c239f332830b9e36030eb">armnn::Encoder::Set</a></div><div class="ttdeci">virtual void Set(IType right)=0</div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a5e1dc69443b64ad16b669388a6023f7a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a5e1dc69443b64ad16b669388a6023f7a">&#9670;&nbsp;</a></span>SpaceToDepth()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void SpaceToDepth </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>inputInfo</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>outputInfo</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="structarmnn_1_1_space_to_depth_descriptor.html">SpaceToDepthDescriptor</a> &amp;&#160;</td>
<td class="paramname"><em>params</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classarmnn_1_1_decoder.html">Decoder</a>&lt; float &gt; &amp;&#160;</td>
<td class="paramname"><em>inputData</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classarmnn_1_1_encoder.html">Encoder</a>&lt; float &gt; &amp;&#160;</td>
<td class="paramname"><em>outputData</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_space_to_depth_8cpp_source.html#l00036">36</a> of file <a class="el" href="_space_to_depth_8cpp_source.html">SpaceToDepth.cpp</a>.</p>
<p class="reference">References <a class="el" href="classarmnn_1_1_decoder.html#ac729108381e2340bea12877971713ecb">Decoder&lt; IType &gt;::Get()</a>, <a class="el" href="_data_layout_indexed_8hpp_source.html#l00023">DataLayoutIndexed::GetChannelsIndex()</a>, <a class="el" href="_data_layout_indexed_8hpp_source.html#l00024">DataLayoutIndexed::GetHeightIndex()</a>, <a class="el" href="backends_2reference_2workloads_2_space_to_batch_n_d_8cpp_source.html#l00015">GetOffset()</a>, <a class="el" href="_tensor_8hpp_source.html#l00088">TensorInfo::GetShape()</a>, <a class="el" href="_data_layout_indexed_8hpp_source.html#l00025">DataLayoutIndexed::GetWidthIndex()</a>, <a class="el" href="_descriptors_8hpp_source.html#l00827">SpaceToDepthDescriptor::m_BlockSize</a>, <a class="el" href="_descriptors_8hpp_source.html#l00830">SpaceToDepthDescriptor::m_DataLayout</a>, <a class="el" href="classarmnn_1_1_encoder.html#ae3b62b846a9c239f332830b9e36030eb">Encoder&lt; IType &gt;::Set()</a>, and <a class="el" href="_space_to_depth_8cpp_source.html#l00036">SpaceToDepth()</a>.</p>
<p class="reference">Referenced by <a class="el" href="_serializer_tests_8cpp_source.html#l02242">BOOST_AUTO_TEST_CASE()</a>, <a class="el" href="_space_to_depth_8cpp_source.html#l00036">SpaceToDepth()</a>, and <a class="el" href="_space_to_depth_layer_8cpp_source.html#l00025">SpaceToDepthLayer::SpaceToDepthLayer()</a>.</p>
<div class="fragment"><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;{</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; <a class="code" href="classarmnn_utils_1_1_data_layout_indexed.html">DataLayoutIndexed</a> dataLayout = params.<a class="code" href="structarmnn_1_1_space_to_depth_descriptor.html#a6089e1ca91914015777ea780a513131a">m_DataLayout</a>;</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_tensor_shape.html">TensorShape</a>&amp; inputShape = inputInfo.<a class="code" href="classarmnn_1_1_tensor_info.html#a8b5d0f8a24e9d9238f412260a552acf8">GetShape</a>();</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_tensor_shape.html">TensorShape</a>&amp; outputShape = outputInfo.<a class="code" href="classarmnn_1_1_tensor_info.html#a8b5d0f8a24e9d9238f412260a552acf8">GetShape</a>();</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> inputBatchSize = inputShape[0];</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> inputChannels = inputShape[dataLayout.<a class="code" href="classarmnn_utils_1_1_data_layout_indexed.html#a861b2621ee46e4b63379988b360b8cd9">GetChannelsIndex</a>()];</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> outputHeight = outputShape[dataLayout.<a class="code" href="classarmnn_utils_1_1_data_layout_indexed.html#a61c00316c443adc233c24e85c6c5b740">GetHeightIndex</a>()];</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> outputWidth = outputShape[dataLayout.<a class="code" href="classarmnn_utils_1_1_data_layout_indexed.html#a414e6f95548e6f7a01d5028b55ad3941">GetWidthIndex</a>()];</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> outputChannels = outputShape[dataLayout.<a class="code" href="classarmnn_utils_1_1_data_layout_indexed.html#a861b2621ee46e4b63379988b360b8cd9">GetChannelsIndex</a>()];</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160;</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> blockSize = params.<a class="code" href="structarmnn_1_1_space_to_depth_descriptor.html#a6c6b8957f1e176867e5fb05b1a1a1486">m_BlockSize</a>;</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160;</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; <span class="keywordflow">if</span> (blockSize == 0)</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; {</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; <span class="keywordflow">throw</span> <a class="code" href="classarmnn_1_1_invalid_argument_exception.html">InvalidArgumentException</a>(</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; <span class="stringliteral">&quot;Input shape must be divisible by block size in all spatial dimensions: Block size is&quot;</span></div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; <span class="stringliteral">&quot; equal to zero&quot;</span>);</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; }</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160;</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> outChannelIndex = 0; outChannelIndex &lt; outputChannels; outChannelIndex++)</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; {</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> inChannelIndex = outChannelIndex % inputChannels;</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160;</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> shiftW = (outChannelIndex / inputChannels) % blockSize;</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> shiftH = (outChannelIndex / inputChannels) / blockSize;</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160;</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> outH = 0; outH &lt; outputHeight; outH++)</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; {</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> outW = 0; outW &lt; outputWidth; outW++)</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; {</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> inBatchIndex = 0; inBatchIndex &lt; inputBatchSize; inBatchIndex++)</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; {</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> inOffset = <a class="code" href="namespacearmnn.html#adafb0fd0a3f6435c2bdf41f971761ecf">GetOffset</a>(inputShape,</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; inChannelIndex,</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; (outH * blockSize + shiftH),</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; (outW * blockSize + shiftW),</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; inBatchIndex,</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; dataLayout);</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160;</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> outOffset = <a class="code" href="namespacearmnn.html#adafb0fd0a3f6435c2bdf41f971761ecf">GetOffset</a>(outputShape,</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; outChannelIndex,</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; outH,</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; outW,</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; inBatchIndex,</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; dataLayout);</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160;</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; outputData += outOffset;</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; inputData += inOffset;</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; outputData.<a class="code" href="classarmnn_1_1_encoder.html#ae3b62b846a9c239f332830b9e36030eb">Set</a>(inputData.<a class="code" href="classarmnn_1_1_decoder.html#ac729108381e2340bea12877971713ecb">Get</a>());</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; inputData -= inOffset;</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; outputData -= outOffset;</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; }</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; }</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; }</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; }</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160;}</div><div class="ttc" id="structarmnn_1_1_space_to_depth_descriptor_html_a6089e1ca91914015777ea780a513131a"><div class="ttname"><a href="structarmnn_1_1_space_to_depth_descriptor.html#a6089e1ca91914015777ea780a513131a">armnn::SpaceToDepthDescriptor::m_DataLayout</a></div><div class="ttdeci">DataLayout m_DataLayout</div><div class="ttdoc">The data layout to be used (NCHW, NHWC). </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.html#l00830">Descriptors.hpp:830</a></div></div>
<div class="ttc" id="classarmnn_utils_1_1_data_layout_indexed_html_a61c00316c443adc233c24e85c6c5b740"><div class="ttname"><a href="classarmnn_utils_1_1_data_layout_indexed.html#a61c00316c443adc233c24e85c6c5b740">armnnUtils::DataLayoutIndexed::GetHeightIndex</a></div><div class="ttdeci">unsigned int GetHeightIndex() const</div><div class="ttdef"><b>Definition:</b> <a href="_data_layout_indexed_8hpp_source.html#l00024">DataLayoutIndexed.hpp:24</a></div></div>
<div class="ttc" id="classarmnn_1_1_invalid_argument_exception_html"><div class="ttname"><a href="classarmnn_1_1_invalid_argument_exception.html">armnn::InvalidArgumentException</a></div><div class="ttdef"><b>Definition:</b> <a href="_exceptions_8hpp_source.html#l00080">Exceptions.hpp:80</a></div></div>
<div class="ttc" id="classarmnn_utils_1_1_data_layout_indexed_html_a414e6f95548e6f7a01d5028b55ad3941"><div class="ttname"><a href="classarmnn_utils_1_1_data_layout_indexed.html#a414e6f95548e6f7a01d5028b55ad3941">armnnUtils::DataLayoutIndexed::GetWidthIndex</a></div><div class="ttdeci">unsigned int GetWidthIndex() const</div><div class="ttdef"><b>Definition:</b> <a href="_data_layout_indexed_8hpp_source.html#l00025">DataLayoutIndexed.hpp:25</a></div></div>
<div class="ttc" id="namespacearmnn_html_adafb0fd0a3f6435c2bdf41f971761ecf"><div class="ttname"><a href="namespacearmnn.html#adafb0fd0a3f6435c2bdf41f971761ecf">armnn::GetOffset</a></div><div class="ttdeci">unsigned int GetOffset(const TensorShape &amp;shape, unsigned int b, unsigned int h, unsigned int w, unsigned int c, const DataLayoutIndexed &amp;dataLayout)</div><div class="ttdef"><b>Definition:</b> <a href="backends_2reference_2workloads_2_space_to_batch_n_d_8cpp_source.html#l00015">SpaceToBatchNd.cpp:15</a></div></div>
<div class="ttc" id="classarmnn_utils_1_1_data_layout_indexed_html_a861b2621ee46e4b63379988b360b8cd9"><div class="ttname"><a href="classarmnn_utils_1_1_data_layout_indexed.html#a861b2621ee46e4b63379988b360b8cd9">armnnUtils::DataLayoutIndexed::GetChannelsIndex</a></div><div class="ttdeci">unsigned int GetChannelsIndex() const</div><div class="ttdef"><b>Definition:</b> <a href="_data_layout_indexed_8hpp_source.html#l00023">DataLayoutIndexed.hpp:23</a></div></div>
<div class="ttc" id="classarmnn_1_1_tensor_shape_html"><div class="ttname"><a href="classarmnn_1_1_tensor_shape.html">armnn::TensorShape</a></div><div class="ttdef"><b>Definition:</b> <a href="_tensor_8hpp_source.html#l00020">Tensor.hpp:20</a></div></div>
<div class="ttc" id="structarmnn_1_1_space_to_depth_descriptor_html_a6c6b8957f1e176867e5fb05b1a1a1486"><div class="ttname"><a href="structarmnn_1_1_space_to_depth_descriptor.html#a6c6b8957f1e176867e5fb05b1a1a1486">armnn::SpaceToDepthDescriptor::m_BlockSize</a></div><div class="ttdeci">unsigned int m_BlockSize</div><div class="ttdoc">Scalar specifying the input block size. It must be &gt;= 1. </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.html#l00827">Descriptors.hpp:827</a></div></div>
<div class="ttc" id="classarmnn_1_1_decoder_html_ac729108381e2340bea12877971713ecb"><div class="ttname"><a href="classarmnn_1_1_decoder.html#ac729108381e2340bea12877971713ecb">armnn::Decoder::Get</a></div><div class="ttdeci">virtual IType Get() const =0</div></div>
<div class="ttc" id="classarmnn_utils_1_1_data_layout_indexed_html"><div class="ttname"><a href="classarmnn_utils_1_1_data_layout_indexed.html">armnnUtils::DataLayoutIndexed</a></div><div class="ttdef"><b>Definition:</b> <a href="_data_layout_indexed_8hpp_source.html#l00017">DataLayoutIndexed.hpp:17</a></div></div>
<div class="ttc" id="classarmnn_1_1_tensor_info_html_a8b5d0f8a24e9d9238f412260a552acf8"><div class="ttname"><a href="classarmnn_1_1_tensor_info.html#a8b5d0f8a24e9d9238f412260a552acf8">armnn::TensorInfo::GetShape</a></div><div class="ttdeci">const TensorShape &amp; GetShape() const</div><div class="ttdef"><b>Definition:</b> <a href="_tensor_8hpp_source.html#l00088">Tensor.hpp:88</a></div></div>
<div class="ttc" id="classarmnn_1_1_encoder_html_ae3b62b846a9c239f332830b9e36030eb"><div class="ttname"><a href="classarmnn_1_1_encoder.html#ae3b62b846a9c239f332830b9e36030eb">armnn::Encoder::Set</a></div><div class="ttdeci">virtual void Set(IType right)=0</div></div>
</div><!-- fragment -->
</div>
</div>
<a id="ac4d30f99e7fa46fe375e925a6ad537be"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ac4d30f99e7fa46fe375e925a6ad537be">&#9670;&nbsp;</a></span>Split()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void Split </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="structarmnn_1_1_splitter_queue_descriptor.html">SplitterQueueDescriptor</a> &amp;&#160;</td>
<td class="paramname"><em>data</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_splitter_8cpp_source.html#l00022">22</a> of file <a class="el" href="_splitter_8cpp_source.html">Splitter.cpp</a>.</p>
<p class="reference">References <a class="el" href="classarmnn_1_1_encoder.html#ac729108381e2340bea12877971713ecb">Encoder&lt; IType &gt;::Get()</a>, <a class="el" href="_tensor_8hpp_source.html#l00092">TensorInfo::GetNumDimensions()</a>, <a class="el" href="_tensor_8hpp_source.html#l00088">TensorInfo::GetShape()</a>, <a class="el" href="_ref_workload_utils_8hpp_source.html#l00025">GetTensorInfo()</a>, <a class="el" href="_workload_data_8hpp_source.html#l00030">QueueDescriptor::m_Inputs</a>, <a class="el" href="_workload_data_8hpp_source.html#l00091">SplitterQueueDescriptor::ViewOrigin::m_Origin</a>, <a class="el" href="_workload_data_8hpp_source.html#l00031">QueueDescriptor::m_Outputs</a>, <a class="el" href="_workload_data_8hpp_source.html#l00096">SplitterQueueDescriptor::m_ViewOrigins</a>, and <a class="el" href="_types_8hpp_source.html#l00018">MaxNumOfTensorDimensions</a>.</p>
<p class="reference">Referenced by <a class="el" href="_ref_splitter_workload_8cpp_source.html#l00014">RefSplitterWorkload::Execute()</a>, and <a class="el" href="_splitter_8hpp_source.html#l00017">Splitter()</a>.</p>
<div class="fragment"><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;{</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160; <span class="keyword">const</span> TensorInfo&amp; inputInfo = <a class="code" href="namespacearmnn_utils.html#acee63cd08da47910fc166a1990988fa8">GetTensorInfo</a>(data.m_Inputs[0]);</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; std::unique_ptr&lt;Decoder&lt;float&gt;&gt; decoderPtr =</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; MakeDecoder&lt;float&gt;(inputInfo, data.m_Inputs[0]-&gt;Map());</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; Decoder&lt;float&gt;&amp; decoder = *decoderPtr;</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> index = 0; index &lt; inputInfo.GetNumElements(); ++index)</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; {</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> indices[<a class="code" href="namespacearmnn.html#abdcd184ed3bd648bb31d385040cafd5d">MaxNumOfTensorDimensions</a>] = { 0 };</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> indexRemainder = index;</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> dimensionStride = inputInfo.GetNumElements();</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i&lt;inputInfo.GetNumDimensions(); i++)</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; {</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; dimensionStride /= inputInfo.GetShape()[i];</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; indices[i] = indexRemainder / dimensionStride; <span class="comment">// Use integer division to round down.</span></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; indexRemainder -= indices[i] * dimensionStride;</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; }</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> viewIdx = 0; viewIdx &lt; data.m_ViewOrigins.size(); ++viewIdx)</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; {</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; SplitterQueueDescriptor::ViewOrigin <span class="keyword">const</span>&amp; view = data.m_ViewOrigins[viewIdx];</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; <span class="comment">//Split view extents are defined by the size of (the corresponding) input tensor.</span></div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; <span class="keyword">const</span> TensorInfo&amp; outputInfo = <a class="code" href="namespacearmnn_utils.html#acee63cd08da47910fc166a1990988fa8">GetTensorInfo</a>(data.m_Outputs[viewIdx]);</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; BOOST_ASSERT(outputInfo.GetNumDimensions() == inputInfo.GetNumDimensions());</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160;</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; <span class="comment">// Check all dimensions to see if this element is inside the given input view.</span></div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; <span class="keywordtype">bool</span> insideView = <span class="keyword">true</span>;</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i&lt;outputInfo.GetNumDimensions(); i++)</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; {</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; <span class="keywordflow">if</span> (indices[i] &lt; view.m_Origin[i])</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; {</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; insideView = <span class="keyword">false</span>;</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; }</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; <span class="keywordflow">if</span> (indices[i] &gt;= view.m_Origin[i] + outputInfo.GetShape()[i])</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; {</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; insideView = <span class="keyword">false</span>;</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; }</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; }</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160;</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; <span class="keywordflow">if</span> (insideView)</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; {</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; std::unique_ptr&lt;Encoder&lt;float&gt;&gt; encoderPtr =</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; MakeEncoder&lt;float&gt;(outputInfo, data.m_Outputs[viewIdx]-&gt;Map());</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; Encoder&lt;float&gt;&amp; encoder = *encoderPtr;</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160;</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> outIndex = 0;</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> dimensionStride = 1;</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; <span class="keywordtype">float</span> inputValue = 0.f;</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160;</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = outputInfo.GetNumDimensions(); i-- &gt; 0;)</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; {</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; outIndex += dimensionStride * (indices[i] - view.m_Origin[i]);</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; dimensionStride *= outputInfo.GetShape()[i];</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; }</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160;</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; decoder += index;</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; inputValue = decoder.Get();</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; decoder -= index;</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160;</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; encoder += outIndex;</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; encoder.Set(inputValue);</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; }</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; }</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; }</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160;}</div><div class="ttc" id="namespacearmnn_utils_html_acee63cd08da47910fc166a1990988fa8"><div class="ttname"><a href="namespacearmnn_utils.html#acee63cd08da47910fc166a1990988fa8">armnnUtils::GetTensorInfo</a></div><div class="ttdeci">armnn::TensorInfo GetTensorInfo(unsigned int numberOfBatches, unsigned int numberOfChannels, unsigned int height, unsigned int width, const armnn::DataLayout dataLayout, const armnn::DataType dataType)</div><div class="ttdef"><b>Definition:</b> <a href="_tensor_utils_8cpp_source.html#l00038">TensorUtils.cpp:38</a></div></div>
<div class="ttc" id="namespacearmnn_html_abdcd184ed3bd648bb31d385040cafd5d"><div class="ttname"><a href="namespacearmnn.html#abdcd184ed3bd648bb31d385040cafd5d">armnn::MaxNumOfTensorDimensions</a></div><div class="ttdeci">constexpr unsigned int MaxNumOfTensorDimensions</div><div class="ttdef"><b>Definition:</b> <a href="_types_8hpp_source.html#l00018">Types.hpp:18</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a427c3d26d05b518b1ace407035f5920e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a427c3d26d05b518b1ace407035f5920e">&#9670;&nbsp;</a></span>Splitter()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void armnn::Splitter </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="structarmnn_1_1_splitter_queue_descriptor.html">SplitterQueueDescriptor</a> &amp;&#160;</td>
<td class="paramname"><em>data</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_splitter_8hpp_source.html#l00017">17</a> of file <a class="el" href="_splitter_8hpp_source.html">Splitter.hpp</a>.</p>
<p class="reference">References <a class="el" href="_tensor_8hpp_source.html#l00092">TensorInfo::GetNumDimensions()</a>, <a class="el" href="_tensor_8hpp_source.html#l00093">TensorInfo::GetNumElements()</a>, <a class="el" href="_tensor_8hpp_source.html#l00088">TensorInfo::GetShape()</a>, <a class="el" href="_ref_workload_utils_8hpp_source.html#l00025">GetTensorInfo()</a>, <a class="el" href="_workload_data_8hpp_source.html#l00030">QueueDescriptor::m_Inputs</a>, <a class="el" href="_workload_data_8hpp_source.html#l00091">SplitterQueueDescriptor::ViewOrigin::m_Origin</a>, <a class="el" href="_workload_data_8hpp_source.html#l00031">QueueDescriptor::m_Outputs</a>, <a class="el" href="_workload_data_8hpp_source.html#l00096">SplitterQueueDescriptor::m_ViewOrigins</a>, <a class="el" href="_types_8hpp_source.html#l00018">MaxNumOfTensorDimensions</a>, and <a class="el" href="_splitter_8cpp_source.html#l00022">Split()</a>.</p>
<p class="reference">Referenced by <a class="el" href="_serializer_tests_8cpp_source.html#l02273">BOOST_AUTO_TEST_CASE()</a>.</p>
<div class="fragment"><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;{</div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160; <span class="keyword">const</span> TensorInfo&amp; inputInfo0 = <a class="code" href="namespacearmnn_utils.html#acee63cd08da47910fc166a1990988fa8">GetTensorInfo</a>(data.m_Inputs[0]);</div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> index = 0; index &lt; inputInfo0.GetNumElements(); ++index)</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160; {</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> indices[<a class="code" href="namespacearmnn.html#abdcd184ed3bd648bb31d385040cafd5d">MaxNumOfTensorDimensions</a>] = { 0 };</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> indexRemainder = index;</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> dimensionStride = inputInfo0.GetNumElements();</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i&lt;inputInfo0.GetNumDimensions(); i++)</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; {</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; dimensionStride /= inputInfo0.GetShape()[i];</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; indices[i] = indexRemainder / dimensionStride; <span class="comment">// Use integer division to round down.</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; indexRemainder -= indices[i] * dimensionStride;</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; }</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> viewIdx = 0; viewIdx &lt; data.m_ViewOrigins.size(); ++viewIdx)</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; {</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; SplitterQueueDescriptor::ViewOrigin <span class="keyword">const</span>&amp; view = data.m_ViewOrigins[viewIdx];</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; <span class="comment">//Split view extents are defined by the size of (the corresponding) input tensor.</span></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; <span class="keyword">const</span> TensorInfo&amp; outputInfo = <a class="code" href="namespacearmnn_utils.html#acee63cd08da47910fc166a1990988fa8">GetTensorInfo</a>(data.m_Outputs[viewIdx]);</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; BOOST_ASSERT(outputInfo.GetNumDimensions() == inputInfo0.GetNumDimensions());</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; <span class="comment">// Check all dimensions to see if this element is inside the given input view.</span></div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <span class="keywordtype">bool</span> insideView = <span class="keyword">true</span>;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i&lt;outputInfo.GetNumDimensions(); i++)</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; {</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; <span class="keywordflow">if</span> (indices[i] &lt; view.m_Origin[i])</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; {</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; insideView = <span class="keyword">false</span>;</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; }</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <span class="keywordflow">if</span> (indices[i] &gt;= view.m_Origin[i] + outputInfo.GetShape()[i])</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; {</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; insideView = <span class="keyword">false</span>;</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; }</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; }</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160;</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; <span class="keywordflow">if</span> (insideView)</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; {</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> outIndex = 0;</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> dimensionStride = 1;</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160;</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = outputInfo.GetNumDimensions(); i-- &gt; 0;)</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; {</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; outIndex += dimensionStride * (indices[i] - view.m_Origin[i]);</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; dimensionStride *= outputInfo.GetShape()[i];</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; }</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160;</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; <span class="comment">//We are within the view, to copy input data to the output corresponding to this view.</span></div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; <a class="code" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a>* outputData = GetOutputTensorData&lt;DataType&gt;(viewIdx, data);</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; BOOST_ASSERT(outputData);</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160;</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; <span class="keyword">const</span> <a class="code" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a>* inputData = GetInputTensorData&lt;DataType&gt;(0, data);</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; BOOST_ASSERT(inputData);</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160;</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; outputData[outIndex] = inputData[index];</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; }</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; }</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; }</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160;}</div><div class="ttc" id="namespacearmnn_utils_html_acee63cd08da47910fc166a1990988fa8"><div class="ttname"><a href="namespacearmnn_utils.html#acee63cd08da47910fc166a1990988fa8">armnnUtils::GetTensorInfo</a></div><div class="ttdeci">armnn::TensorInfo GetTensorInfo(unsigned int numberOfBatches, unsigned int numberOfChannels, unsigned int height, unsigned int width, const armnn::DataLayout dataLayout, const armnn::DataType dataType)</div><div class="ttdef"><b>Definition:</b> <a href="_tensor_utils_8cpp_source.html#l00038">TensorUtils.cpp:38</a></div></div>
<div class="ttc" id="namespacearmnn_html_abdcd184ed3bd648bb31d385040cafd5d"><div class="ttname"><a href="namespacearmnn.html#abdcd184ed3bd648bb31d385040cafd5d">armnn::MaxNumOfTensorDimensions</a></div><div class="ttdeci">constexpr unsigned int MaxNumOfTensorDimensions</div><div class="ttdef"><b>Definition:</b> <a href="_types_8hpp_source.html#l00018">Types.hpp:18</a></div></div>
<div class="ttc" id="namespacearmnn_html_ad8ed01ff3ff33333d8e19db4d2818bb6"><div class="ttname"><a href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6">armnn::DataType</a></div><div class="ttdeci">DataType</div><div class="ttdef"><b>Definition:</b> <a href="_types_8hpp_source.html#l00032">Types.hpp:32</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a6ef2dcac2ec0683d52df1b051404e7d6"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a6ef2dcac2ec0683d52df1b051404e7d6">&#9670;&nbsp;</a></span>Stack()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void Stack </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="structarmnn_1_1_stack_queue_descriptor.html">StackQueueDescriptor</a> &amp;&#160;</td>
<td class="paramname"><em>data</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">std::vector&lt; std::unique_ptr&lt; <a class="el" href="classarmnn_1_1_decoder.html">Decoder</a>&lt; float &gt;&gt;&gt; &amp;&#160;</td>
<td class="paramname"><em>inputs</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classarmnn_1_1_encoder.html">Encoder</a>&lt; float &gt; &amp;&#160;</td>
<td class="paramname"><em>output</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="backends_2reference_2workloads_2_stack_8cpp_source.html#l00012">12</a> of file <a class="el" href="backends_2reference_2workloads_2_stack_8cpp_source.html">Stack.cpp</a>.</p>
<p class="reference">References <a class="el" href="_tensor_8hpp_source.html#l00092">TensorInfo::GetNumDimensions()</a>, <a class="el" href="_tensor_8hpp_source.html#l00088">TensorInfo::GetShape()</a>, <a class="el" href="_ref_workload_utils_8hpp_source.html#l00025">GetTensorInfo()</a>, <a class="el" href="_descriptors_8hpp_source.html#l00972">StackDescriptor::m_Axis</a>, <a class="el" href="_workload_data_8hpp_source.html#l00030">QueueDescriptor::m_Inputs</a>, <a class="el" href="_workload_data_8hpp_source.html#l00031">QueueDescriptor::m_Outputs</a>, <a class="el" href="_workload_data_8hpp_source.html#l00049">QueueDescriptorWithParameters&lt; LayerDescriptor &gt;::m_Parameters</a>, and <a class="el" href="classarmnn_1_1_encoder.html#ae3b62b846a9c239f332830b9e36030eb">Encoder&lt; IType &gt;::Set()</a>.</p>
<p class="reference">Referenced by <a class="el" href="_serializer_tests_8cpp_source.html#l02328">BOOST_AUTO_TEST_CASE()</a>.</p>
<div class="fragment"><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;{</div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160; <span class="keyword">const</span> TensorInfo&amp; outputInfo = <a class="code" href="namespacearmnn_utils.html#acee63cd08da47910fc166a1990988fa8">GetTensorInfo</a>(data.m_Outputs[0]);</div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160; <span class="keyword">const</span> TensorInfo&amp; inputInfo = <a class="code" href="namespacearmnn_utils.html#acee63cd08da47910fc166a1990988fa8">GetTensorInfo</a>(data.m_Inputs[0]);</div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;</div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> outputNumDims = outputInfo.GetNumDimensions();</div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> inputNumDims = inputInfo.GetNumDimensions();</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160; <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_tensor_shape.html">armnn::TensorShape</a>&amp; outputDims = outputInfo.GetShape();</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160; <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_tensor_shape.html">armnn::TensorShape</a>&amp; inputDims = inputInfo.GetShape();</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> axis = data.m_Parameters.m_Axis;</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; <span class="comment">// Initialise output data</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> numOutputElements = 1;</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i=0; i&lt;outputNumDims; ++i)</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; {</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; numOutputElements *= outputDims[i];</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; }</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> iNumTensors = <span class="keyword">static_cast&lt;</span><span class="keywordtype">unsigned</span> <span class="keywordtype">int</span><span class="keyword">&gt;</span>(data.m_Inputs.size());</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> iBatchSize = inputDims[0];</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> iChannels = (inputNumDims &gt; 1) ? inputDims[1] : 1;</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> iHeight = (inputNumDims &gt; 2) ? inputDims[2] : 1;</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> iWidth = (inputNumDims &gt; 3) ? inputDims[3] : 1;</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> oBatchSize = outputDims[1];</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> oChannels = (outputNumDims &gt; 2) ? outputDims[2] : 1;</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> oHeight = (outputNumDims &gt; 3) ? outputDims[3] : 1;</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> oWidth = (outputNumDims &gt; 4) ? outputDims[4] : 1;</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <span class="comment">// Array to store the input coordinates</span></div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; <span class="comment">// iCoordinates[0] = i, iCoordinates[1] = bi, iCoordinates[2] = ci</span></div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; <span class="comment">// iCoordinates[3] = hi, iCoordinates[4] = wi, iCoordinates[5] = 0</span></div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; <span class="comment">// iCoordinates[5] will be always zero and used for not incrementing</span></div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; <span class="comment">// the output when the input has less than 4 dimensions</span></div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; std::array&lt;unsigned int, 6&gt; iCoordinates{ 0 };</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160;</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; <span class="comment">// Array of pointers used to map the output coordinates to the input ones, in accordance with the axis</span></div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; <span class="comment">// This array is initialized with &amp;iCoordinates[5] since this will be always zero</span></div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; std::array&lt;unsigned int *, 5&gt; oCoordinates = { &amp;iCoordinates[5],</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; &amp;iCoordinates[5],</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; &amp;iCoordinates[5],</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; &amp;iCoordinates[5],</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; &amp;iCoordinates[5] };</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160;</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; <span class="comment">// Set the axis coordinate</span></div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; oCoordinates[axis] = &amp;iCoordinates[0];</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160;</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; <span class="comment">// Map the output coordinates, accounting for the axis</span></div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> dim_shift = 0;</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> dim = 0; dim &lt; inputNumDims; ++dim)</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; {</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; <span class="keywordflow">if</span>(dim == axis)</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; {</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; dim_shift++;</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; }</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; oCoordinates[dim + dim_shift] = &amp;iCoordinates[dim + 1];</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; }</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160;</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; <span class="comment">// Alias for the input coordinates</span></div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> &amp;i = iCoordinates[0];</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> &amp;bi = iCoordinates[1];</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> &amp;ci = iCoordinates[2];</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> &amp;hi = iCoordinates[3];</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> &amp;wi = iCoordinates[4];</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160;</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; <span class="comment">// Alias for the output coordinates</span></div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> &amp;o = *(oCoordinates[0]);</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> &amp;bo = *(oCoordinates[1]);</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> &amp;co = *(oCoordinates[2]);</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> &amp;ho = *(oCoordinates[3]);</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> &amp;wo = *(oCoordinates[4]);</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160;</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; <span class="comment">// Stack tensors</span></div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; <span class="keywordflow">for</span>(; i &lt; iNumTensors; ++(i))</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; {</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; <span class="keywordflow">for</span>(bi = 0; bi &lt; iBatchSize; ++(bi))</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; {</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; <span class="keywordflow">for</span>(ci = 0; ci &lt; iChannels; ++(ci))</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; {</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; <span class="keywordflow">for</span>(hi = 0; hi &lt; iHeight; ++(hi))</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; {</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; <span class="keywordflow">for</span>(wi = 0; wi &lt; iWidth; ++(wi))</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; {</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; output[o * oWidth * oHeight * oChannels * oBatchSize +</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; bo * oWidth * oHeight * oChannels +</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; co * oWidth * oHeight +</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; ho * oWidth +</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; wo];</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160;</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; output.<a class="code" href="classarmnn_1_1_encoder.html#ae3b62b846a9c239f332830b9e36030eb">Set</a>(inputs[i]-&gt;Get());</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160;</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; ++(*(inputs[i]));</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; }</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; }</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; }</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; }</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; }</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160;}</div><div class="ttc" id="namespacearmnn_utils_html_acee63cd08da47910fc166a1990988fa8"><div class="ttname"><a href="namespacearmnn_utils.html#acee63cd08da47910fc166a1990988fa8">armnnUtils::GetTensorInfo</a></div><div class="ttdeci">armnn::TensorInfo GetTensorInfo(unsigned int numberOfBatches, unsigned int numberOfChannels, unsigned int height, unsigned int width, const armnn::DataLayout dataLayout, const armnn::DataType dataType)</div><div class="ttdef"><b>Definition:</b> <a href="_tensor_utils_8cpp_source.html#l00038">TensorUtils.cpp:38</a></div></div>
<div class="ttc" id="classarmnn_1_1_tensor_shape_html"><div class="ttname"><a href="classarmnn_1_1_tensor_shape.html">armnn::TensorShape</a></div><div class="ttdef"><b>Definition:</b> <a href="_tensor_8hpp_source.html#l00020">Tensor.hpp:20</a></div></div>
<div class="ttc" id="classarmnn_1_1_encoder_html_ae3b62b846a9c239f332830b9e36030eb"><div class="ttname"><a href="classarmnn_1_1_encoder.html#ae3b62b846a9c239f332830b9e36030eb">armnn::Encoder::Set</a></div><div class="ttdeci">virtual void Set(IType right)=0</div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a637fea04314a9870c1dc4355c1bed429"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a637fea04314a9870c1dc4355c1bed429">&#9670;&nbsp;</a></span>StrEqual()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">constexpr bool armnn::StrEqual </td>
<td>(</td>
<td class="paramtype">const char *&#160;</td>
<td class="paramname"><em>strA</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const char(&amp;)&#160;</td>
<td class="paramname"><em>strB</em>[N]&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_types_utils_8hpp_source.html#l00133">133</a> of file <a class="el" href="_types_utils_8hpp_source.html">TypesUtils.hpp</a>.</p>
<p class="reference">Referenced by <a class="el" href="_types_utils_8hpp_source.html#l00145">ParseComputeDevice()</a>.</p>
<div class="fragment"><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160;{</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; <span class="keywordtype">bool</span> isEqual = <span class="keyword">true</span>;</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = 0; isEqual &amp;&amp; (i &lt; N); ++i)</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; {</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; isEqual = (strA[i] == strB[i]);</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; }</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; <span class="keywordflow">return</span> isEqual;</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160;}</div></div><!-- fragment -->
</div>
</div>
<a id="a86d7a7168ac00b75b4971f9aad623698"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a86d7a7168ac00b75b4971f9aad623698">&#9670;&nbsp;</a></span>StridedSlice()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void StridedSlice </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>inputInfo</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="structarmnn_1_1_strided_slice_descriptor.html">StridedSliceDescriptor</a> &amp;&#160;</td>
<td class="paramname"><em>params</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const void *&#160;</td>
<td class="paramname"><em>inputData</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">void *&#160;</td>
<td class="paramname"><em>outputData</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">unsigned int&#160;</td>
<td class="paramname"><em>dataTypeSize</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="backends_2reference_2workloads_2_strided_slice_8cpp_source.html#l00090">90</a> of file <a class="el" href="backends_2reference_2workloads_2_strided_slice_8cpp_source.html">StridedSlice.cpp</a>.</p>
<p class="reference">References <a class="el" href="_tensor_8hpp_source.html#l00088">TensorInfo::GetShape()</a>.</p>
<p class="reference">Referenced by <a class="el" href="_serializer_tests_8cpp_source.html#l02395">BOOST_AUTO_TEST_CASE()</a>.</p>
<div class="fragment"><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160;{</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span>* input = <span class="keyword">reinterpret_cast&lt;</span><span class="keyword">const </span><span class="keywordtype">unsigned</span> <span class="keywordtype">char</span>*<span class="keyword">&gt;</span>(inputData);</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span>* output = <span class="keyword">reinterpret_cast&lt;</span><span class="keywordtype">unsigned</span> <span class="keywordtype">char</span>*<span class="keyword">&gt;</span>(outputData);</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160;</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; <span class="keyword">const</span> TensorShape inputShape = ExtendShape(inputInfo.GetShape(), 4);</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160;</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; StridedSliceDescriptor paddedParams = params;</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160;</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; <span class="comment">// Pad parameters to 4 dimensions</span></div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; PadParams(paddedParams, 4);</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160;</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> start0 = paddedParams.GetStartForAxis(inputShape, 0);</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> stop0 = paddedParams.GetStopForAxis (inputShape, 0, start0);</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160;</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> start1 = paddedParams.GetStartForAxis(inputShape, 1);</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> stop1 = paddedParams.GetStopForAxis (inputShape, 1, start1);</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160;</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> start2 = paddedParams.GetStartForAxis(inputShape, 2);</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> stop2 = paddedParams.GetStopForAxis (inputShape, 2, start2);</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160;</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> start3 = paddedParams.GetStartForAxis(inputShape, 3);</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> stop3 = paddedParams.GetStopForAxis (inputShape, 3, start3);</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160;</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> step = boost::numeric_cast&lt;<span class="keywordtype">int</span>&gt;(dataTypeSize);</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160;</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">int</span> in0 = start0;</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; !LoopCondition(in0, stop0, paddedParams.m_Stride[0]);</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; in0 += paddedParams.m_Stride[0])</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; {</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">int</span> in1 = start1;</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; !LoopCondition(in1, stop1, paddedParams.m_Stride[1]);</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; in1 += paddedParams.m_Stride[1])</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; {</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">int</span> in2 = start2;</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; !LoopCondition(in2, stop2, paddedParams.m_Stride[2]);</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; in2 += paddedParams.m_Stride[2])</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; {</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">int</span> in3 = start3;</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; !LoopCondition(in3, stop3, paddedParams.m_Stride[3]);</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; in3 += paddedParams.m_Stride[3])</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; {</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; <span class="keywordtype">int</span> dim1 = boost::numeric_cast&lt;<span class="keywordtype">int</span>&gt;(inputShape[1]);</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; <span class="keywordtype">int</span> dim2 = boost::numeric_cast&lt;<span class="keywordtype">int</span>&gt;(inputShape[2]);</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; <span class="keywordtype">int</span> dim3 = boost::numeric_cast&lt;<span class="keywordtype">int</span>&gt;(inputShape[3]);</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160;</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; <span class="keywordtype">int</span> inputOffset = (((in0 * dim1 + in1) * dim2 + in2) * dim3 + in3) * step;</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; ::memcpy(output, input + inputOffset, dataTypeSize);</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; output += step;</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; }</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; }</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; }</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; }</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160;}</div></div><!-- fragment -->
</div>
</div>
<a id="a14d7f180bf51e86850305965c3707e07"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a14d7f180bf51e86850305965c3707e07">&#9670;&nbsp;</a></span>swap() <span class="overload">[1/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void armnn::swap </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structarmnn_1_1_origins_descriptor.html">OriginsDescriptor</a> &amp;&#160;</td>
<td class="paramname"><em>first</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="structarmnn_1_1_origins_descriptor.html">OriginsDescriptor</a> &amp;&#160;</td>
<td class="paramname"><em>second</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_descriptors_8cpp_source.html#l00342">342</a> of file <a class="el" href="_descriptors_8cpp_source.html">Descriptors.cpp</a>.</p>
<p class="reference">References <a class="el" href="_descriptors_8cpp_source.html#l00351">ViewsDescriptor::swap</a>, and <a class="el" href="_descriptors_8cpp_source.html#l00351">swap()</a>.</p>
<p class="reference">Referenced by <a class="el" href="_fully_connected_test_impl_8cpp_source.html#l00247">FullyConnectedFloat32Test()</a>, <a class="el" href="_fully_connected_test_impl_8cpp_source.html#l00148">FullyConnectedLargeTestCommon()</a>, <a class="el" href="_backend_id_8hpp_source.html#l00102">BackendId::operator=()</a>, <a class="el" href="_squash_equal_siblings_8hpp_source.html#l00024">SquashEqualSiblingsImpl&lt; Comparable &gt;::Run()</a>, and <a class="el" href="_backend_registry_8cpp_source.html#l00093">BackendRegistry::Swap()</a>.</p>
<div class="fragment"><div class="line"><a name="l00343"></a><span class="lineno"> 343</span>&#160;{</div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span>&#160; <span class="keyword">using</span> <a class="code" href="namespacearmnn.html#a686b8288a04b3ffff67d560eea53f6be">std::swap</a>;</div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span>&#160; <a class="code" href="namespacearmnn.html#a686b8288a04b3ffff67d560eea53f6be">swap</a>(first.m_NumViews, second.m_NumViews);</div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span>&#160; <a class="code" href="namespacearmnn.html#a686b8288a04b3ffff67d560eea53f6be">swap</a>(first.m_NumDimensions, second.m_NumDimensions);</div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span>&#160; <a class="code" href="namespacearmnn.html#a686b8288a04b3ffff67d560eea53f6be">swap</a>(first.m_ViewOrigins, second.m_ViewOrigins);</div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span>&#160; <a class="code" href="namespacearmnn.html#a686b8288a04b3ffff67d560eea53f6be">swap</a>(first.m_ConcatAxis, second.m_ConcatAxis);</div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a686b8288a04b3ffff67d560eea53f6be"><div class="ttname"><a href="namespacearmnn.html#a686b8288a04b3ffff67d560eea53f6be">armnn::swap</a></div><div class="ttdeci">void swap(ViewsDescriptor &amp;first, ViewsDescriptor &amp;second)</div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8cpp_source.html#l00351">Descriptors.cpp:351</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a686b8288a04b3ffff67d560eea53f6be"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a686b8288a04b3ffff67d560eea53f6be">&#9670;&nbsp;</a></span>swap() <span class="overload">[2/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void armnn::swap </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structarmnn_1_1_views_descriptor.html">ViewsDescriptor</a> &amp;&#160;</td>
<td class="paramname"><em>first</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="structarmnn_1_1_views_descriptor.html">ViewsDescriptor</a> &amp;&#160;</td>
<td class="paramname"><em>second</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_descriptors_8cpp_source.html#l00351">351</a> of file <a class="el" href="_descriptors_8cpp_source.html">Descriptors.cpp</a>.</p>
<p class="reference">References <a class="el" href="_descriptors_8cpp_source.html#l00351">ViewsDescriptor::swap</a>.</p>
<p class="reference">Referenced by <a class="el" href="_descriptors_8cpp_source.html#l00342">swap()</a>.</p>
<div class="fragment"><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>&#160;{</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160; <span class="keyword">using</span> <a class="code" href="namespacearmnn.html#a686b8288a04b3ffff67d560eea53f6be">std::swap</a>;</div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span>&#160; <a class="code" href="namespacearmnn.html#a686b8288a04b3ffff67d560eea53f6be">swap</a>(first.m_Origins, second.m_Origins);</div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span>&#160; <a class="code" href="namespacearmnn.html#a686b8288a04b3ffff67d560eea53f6be">swap</a>(first.m_ViewSizes, second.m_ViewSizes);</div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a686b8288a04b3ffff67d560eea53f6be"><div class="ttname"><a href="namespacearmnn.html#a686b8288a04b3ffff67d560eea53f6be">armnn::swap</a></div><div class="ttdeci">void swap(ViewsDescriptor &amp;first, ViewsDescriptor &amp;second)</div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8cpp_source.html#l00351">Descriptors.cpp:351</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a14cfd39cfc30682fa821ade3dd298426"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a14cfd39cfc30682fa821ade3dd298426">&#9670;&nbsp;</a></span>TestQuantizeConvolution2d()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void armnn::TestQuantizeConvolution2d </td>
<td>(</td>
<td class="paramtype">bool&#160;</td>
<td class="paramname"><em>useBiases</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_quantizer_test_8cpp_source.html#l01046">1046</a> of file <a class="el" href="_quantizer_test_8cpp_source.html">QuantizerTest.cpp</a>.</p>
<p class="reference">References <a class="el" href="classarmnn_1_1_i_output_slot.html#ac1835f8756a9f03c02fcf9664e3a0fce">IOutputSlot::Connect()</a>, <a class="el" href="_network_quantizer_8cpp_source.html#l00040">INetworkQuantizer::Create()</a>, <a class="el" href="_network_8cpp_source.html#l00048">INetwork::Create()</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">Float32</a>, <a class="el" href="classarmnn_1_1_i_connectable_layer.html#a6ec9e0eb66d7d6a01240492a0b18104c">IConnectableLayer::GetInputSlot()</a>, <a class="el" href="classarmnn_1_1_i_connectable_layer.html#a80ac4eda2e7f2757ec9dd96fc96dbd16">IConnectableLayer::GetOutputSlot()</a>, <a class="el" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>, <a class="el" href="_descriptors_8hpp_source.html#l00438">Convolution2dDescriptor::m_BiasEnabled</a>, <a class="el" href="_file_only_profiling_decorator_tests_8cpp_source.html#l00045">options</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a9d02ea768c081d4bdb2b7cab0b3f510d">QAsymmS8</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7">QSymmS16</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a9945327825b115e93a3b89f4302e76db">QSymmS8</a>, <a class="el" href="classarmnn_1_1_i_output_slot.html#a5ee4a6c9a2481245487b1b1a70d20fd0">IOutputSlot::SetTensorInfo()</a>, and <a class="el" href="_quantizer_test_8cpp_source.html#l00193">VisitLayersTopologically()</a>.</p>
<p class="reference">Referenced by <a class="el" href="_quantizer_test_8cpp_source.html#l01122">BOOST_AUTO_TEST_CASE()</a>.</p>
<div class="fragment"><div class="line"><a name="l01047"></a><span class="lineno"> 1047</span>&#160;{</div><div class="line"><a name="l01048"></a><span class="lineno"> 1048</span>&#160; <span class="keyword">class </span>TestConv2dQuantization : <span class="keyword">public</span> TestQuantization</div><div class="line"><a name="l01049"></a><span class="lineno"> 1049</span>&#160; {</div><div class="line"><a name="l01050"></a><span class="lineno"> 1050</span>&#160; <span class="keyword">public</span>:</div><div class="line"><a name="l01051"></a><span class="lineno"> 1051</span>&#160; TestConv2dQuantization(<span class="keyword">const</span> TensorShape&amp; inputShape, <span class="keyword">const</span> TensorShape&amp; outputShape)</div><div class="line"><a name="l01052"></a><span class="lineno"> 1052</span>&#160; : TestQuantization(inputShape, outputShape) {}</div><div class="line"><a name="l01053"></a><span class="lineno"> 1053</span>&#160;</div><div class="line"><a name="l01054"></a><span class="lineno"> 1054</span>&#160; TestConv2dQuantization(<span class="keyword">const</span> QuantizerOptions&amp; <a class="code" href="_file_only_profiling_decorator_tests_8cpp.html#a6560146509197f3e197d8d36f76c1347">options</a>,</div><div class="line"><a name="l01055"></a><span class="lineno"> 1055</span>&#160; <span class="keyword">const</span> TensorShape&amp; inputShape,</div><div class="line"><a name="l01056"></a><span class="lineno"> 1056</span>&#160; <span class="keyword">const</span> TensorShape&amp; outputShape)</div><div class="line"><a name="l01057"></a><span class="lineno"> 1057</span>&#160; : TestQuantization(options, inputShape, outputShape) {}</div><div class="line"><a name="l01058"></a><span class="lineno"> 1058</span>&#160;</div><div class="line"><a name="l01059"></a><span class="lineno"> 1059</span>&#160; <span class="keywordtype">void</span> VisitConvolution2dLayer(<span class="keyword">const</span> IConnectableLayer *layer,</div><div class="line"><a name="l01060"></a><span class="lineno"> 1060</span>&#160; <span class="keyword">const</span> Convolution2dDescriptor&amp; convolution2dDescriptor,</div><div class="line"><a name="l01061"></a><span class="lineno"> 1061</span>&#160; <span class="keyword">const</span> ConstTensor&amp; weights,</div><div class="line"><a name="l01062"></a><span class="lineno"> 1062</span>&#160; <span class="keyword">const</span> Optional&lt;ConstTensor&gt;&amp; biases,</div><div class="line"><a name="l01063"></a><span class="lineno"> 1063</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span> *name = <span class="keyword">nullptr</span>)<span class="keyword"> override</span></div><div class="line"><a name="l01064"></a><span class="lineno"> 1064</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l01065"></a><span class="lineno"> 1065</span>&#160; boost::ignore_unused(convolution2dDescriptor, name);</div><div class="line"><a name="l01066"></a><span class="lineno"> 1066</span>&#160; TestQuantizationOnLayersWithBiases(layer, weights, biases);</div><div class="line"><a name="l01067"></a><span class="lineno"> 1067</span>&#160; }</div><div class="line"><a name="l01068"></a><span class="lineno"> 1068</span>&#160; };</div><div class="line"><a name="l01069"></a><span class="lineno"> 1069</span>&#160;</div><div class="line"><a name="l01070"></a><span class="lineno"> 1070</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> network = INetwork::Create();</div><div class="line"><a name="l01071"></a><span class="lineno"> 1071</span>&#160;</div><div class="line"><a name="l01072"></a><span class="lineno"> 1072</span>&#160; TensorShape shape{3U};</div><div class="line"><a name="l01073"></a><span class="lineno"> 1073</span>&#160; TensorInfo <a class="code" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>(shape, DataType::Float32);</div><div class="line"><a name="l01074"></a><span class="lineno"> 1074</span>&#160;</div><div class="line"><a name="l01075"></a><span class="lineno"> 1075</span>&#160; std::vector&lt;float&gt; weightsData{-1.0f, 1.5f, 2.0f};</div><div class="line"><a name="l01076"></a><span class="lineno"> 1076</span>&#160; ConstTensor weights(info, weightsData);</div><div class="line"><a name="l01077"></a><span class="lineno"> 1077</span>&#160;</div><div class="line"><a name="l01078"></a><span class="lineno"> 1078</span>&#160; Convolution2dDescriptor descriptor;</div><div class="line"><a name="l01079"></a><span class="lineno"> 1079</span>&#160; descriptor.m_BiasEnabled = useBiases;</div><div class="line"><a name="l01080"></a><span class="lineno"> 1080</span>&#160;</div><div class="line"><a name="l01081"></a><span class="lineno"> 1081</span>&#160; <span class="comment">// Add the layers</span></div><div class="line"><a name="l01082"></a><span class="lineno"> 1082</span>&#160; IConnectableLayer* input0 = network-&gt;AddInputLayer(0);</div><div class="line"><a name="l01083"></a><span class="lineno"> 1083</span>&#160; IConnectableLayer* conv2d;</div><div class="line"><a name="l01084"></a><span class="lineno"> 1084</span>&#160; Optional&lt;ConstTensor&gt; optionalBiases;</div><div class="line"><a name="l01085"></a><span class="lineno"> 1085</span>&#160; std::vector&lt;float&gt; biasesData{-1.0f, 1.5f, 2.0f};</div><div class="line"><a name="l01086"></a><span class="lineno"> 1086</span>&#160; <span class="keywordflow">if</span> (useBiases)</div><div class="line"><a name="l01087"></a><span class="lineno"> 1087</span>&#160; {</div><div class="line"><a name="l01088"></a><span class="lineno"> 1088</span>&#160; ConstTensor biases(info, biasesData);</div><div class="line"><a name="l01089"></a><span class="lineno"> 1089</span>&#160; optionalBiases = Optional&lt;ConstTensor&gt;(biases);</div><div class="line"><a name="l01090"></a><span class="lineno"> 1090</span>&#160; }</div><div class="line"><a name="l01091"></a><span class="lineno"> 1091</span>&#160; conv2d = network-&gt;AddConvolution2dLayer(descriptor, weights, optionalBiases);</div><div class="line"><a name="l01092"></a><span class="lineno"> 1092</span>&#160; IConnectableLayer* output = network-&gt;AddOutputLayer(1);</div><div class="line"><a name="l01093"></a><span class="lineno"> 1093</span>&#160;</div><div class="line"><a name="l01094"></a><span class="lineno"> 1094</span>&#160; <span class="comment">// Establish connections</span></div><div class="line"><a name="l01095"></a><span class="lineno"> 1095</span>&#160; input0-&gt;GetOutputSlot(0).Connect(conv2d-&gt;GetInputSlot(0));</div><div class="line"><a name="l01096"></a><span class="lineno"> 1096</span>&#160; conv2d-&gt;GetOutputSlot(0).Connect(output-&gt;GetInputSlot(0));</div><div class="line"><a name="l01097"></a><span class="lineno"> 1097</span>&#160;</div><div class="line"><a name="l01098"></a><span class="lineno"> 1098</span>&#160; <span class="comment">// Set TensorInfo</span></div><div class="line"><a name="l01099"></a><span class="lineno"> 1099</span>&#160; input0-&gt;GetOutputSlot(0).SetTensorInfo(info);</div><div class="line"><a name="l01100"></a><span class="lineno"> 1100</span>&#160; conv2d-&gt;GetOutputSlot(0).SetTensorInfo(info);</div><div class="line"><a name="l01101"></a><span class="lineno"> 1101</span>&#160;</div><div class="line"><a name="l01102"></a><span class="lineno"> 1102</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQAsymmU8 = INetworkQuantizer::Create(network.get())-&gt;ExportNetwork();</div><div class="line"><a name="l01103"></a><span class="lineno"> 1103</span>&#160; TestConv2dQuantization validatorQAsymmU8(shape, shape);</div><div class="line"><a name="l01104"></a><span class="lineno"> 1104</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQAsymmU8.get(), validatorQAsymmU8);</div><div class="line"><a name="l01105"></a><span class="lineno"> 1105</span>&#160;</div><div class="line"><a name="l01106"></a><span class="lineno"> 1106</span>&#160; <span class="keyword">const</span> QuantizerOptions qAsymmS8Options(DataType::QAsymmS8);</div><div class="line"><a name="l01107"></a><span class="lineno"> 1107</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQAsymmS8 = INetworkQuantizer::Create(network.get(), qAsymmS8Options)-&gt;ExportNetwork();</div><div class="line"><a name="l01108"></a><span class="lineno"> 1108</span>&#160; TestConv2dQuantization validatorQAsymmS8(qAsymmS8Options, shape, shape);</div><div class="line"><a name="l01109"></a><span class="lineno"> 1109</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQAsymmS8.get(), validatorQAsymmS8);</div><div class="line"><a name="l01110"></a><span class="lineno"> 1110</span>&#160;</div><div class="line"><a name="l01111"></a><span class="lineno"> 1111</span>&#160; <span class="keyword">const</span> QuantizerOptions qSymmS8Options(DataType::QSymmS8);</div><div class="line"><a name="l01112"></a><span class="lineno"> 1112</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQSymmS8 = INetworkQuantizer::Create(network.get(), qSymmS8Options)-&gt;ExportNetwork();</div><div class="line"><a name="l01113"></a><span class="lineno"> 1113</span>&#160; TestConv2dQuantization validatorQSymmS8(qSymmS8Options, shape, shape);</div><div class="line"><a name="l01114"></a><span class="lineno"> 1114</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQSymmS8.get(), validatorQSymmS8);</div><div class="line"><a name="l01115"></a><span class="lineno"> 1115</span>&#160;</div><div class="line"><a name="l01116"></a><span class="lineno"> 1116</span>&#160; <span class="keyword">const</span> QuantizerOptions Qsymm16Options(DataType::QSymmS16);</div><div class="line"><a name="l01117"></a><span class="lineno"> 1117</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQSymmS16 = INetworkQuantizer::Create(network.get(), Qsymm16Options)-&gt;ExportNetwork();</div><div class="line"><a name="l01118"></a><span class="lineno"> 1118</span>&#160; TestConv2dQuantization validatorQSymmS16(Qsymm16Options, shape, shape);</div><div class="line"><a name="l01119"></a><span class="lineno"> 1119</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQSymmS16.get(), validatorQSymmS16);</div><div class="line"><a name="l01120"></a><span class="lineno"> 1120</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c"><div class="ttname"><a href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">armnn::BoostLogSeverityMapping::info</a></div></div>
<div class="ttc" id="namespacearmnn_html_a6482907b4c57873e197324f5cb66fd4d"><div class="ttname"><a href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">armnn::VisitLayersTopologically</a></div><div class="ttdeci">void VisitLayersTopologically(const INetwork *inputNetwork, ILayerVisitor &amp;visitor)</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l00193">QuantizerTest.cpp:193</a></div></div>
<div class="ttc" id="namespacearmnn_html_ace74f6f9feb95a964a49d79458232703"><div class="ttname"><a href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">armnn::INetworkPtr</a></div><div class="ttdeci">std::unique_ptr&lt; INetwork, void(*)(INetwork *network)&gt; INetworkPtr</div><div class="ttdef"><b>Definition:</b> <a href="_i_network_8hpp_source.html#l00085">INetwork.hpp:85</a></div></div>
<div class="ttc" id="_file_only_profiling_decorator_tests_8cpp_html_a6560146509197f3e197d8d36f76c1347"><div class="ttname"><a href="_file_only_profiling_decorator_tests_8cpp.html#a6560146509197f3e197d8d36f76c1347">options</a></div><div class="ttdeci">armnn::Runtime::CreationOptions::ExternalProfilingOptions options</div><div class="ttdef"><b>Definition:</b> <a href="_file_only_profiling_decorator_tests_8cpp_source.html#l00045">FileOnlyProfilingDecoratorTests.cpp:45</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a5abbe8a9ee003c1379a921dbe2745b81"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a5abbe8a9ee003c1379a921dbe2745b81">&#9670;&nbsp;</a></span>TestQuantizeDepthwiseConvolution2d()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void armnn::TestQuantizeDepthwiseConvolution2d </td>
<td>(</td>
<td class="paramtype">bool&#160;</td>
<td class="paramname"><em>useBiases</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_quantizer_test_8cpp_source.html#l01132">1132</a> of file <a class="el" href="_quantizer_test_8cpp_source.html">QuantizerTest.cpp</a>.</p>
<p class="reference">References <a class="el" href="classarmnn_1_1_i_output_slot.html#ac1835f8756a9f03c02fcf9664e3a0fce">IOutputSlot::Connect()</a>, <a class="el" href="_network_quantizer_8cpp_source.html#l00040">INetworkQuantizer::Create()</a>, <a class="el" href="_network_8cpp_source.html#l00048">INetwork::Create()</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">Float32</a>, <a class="el" href="classarmnn_1_1_i_connectable_layer.html#a6ec9e0eb66d7d6a01240492a0b18104c">IConnectableLayer::GetInputSlot()</a>, <a class="el" href="classarmnn_1_1_i_connectable_layer.html#a80ac4eda2e7f2757ec9dd96fc96dbd16">IConnectableLayer::GetOutputSlot()</a>, <a class="el" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>, <a class="el" href="_descriptors_8hpp_source.html#l00490">DepthwiseConvolution2dDescriptor::m_BiasEnabled</a>, <a class="el" href="_file_only_profiling_decorator_tests_8cpp_source.html#l00045">options</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a9d02ea768c081d4bdb2b7cab0b3f510d">QAsymmS8</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7">QSymmS16</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a9945327825b115e93a3b89f4302e76db">QSymmS8</a>, <a class="el" href="classarmnn_1_1_i_output_slot.html#a5ee4a6c9a2481245487b1b1a70d20fd0">IOutputSlot::SetTensorInfo()</a>, and <a class="el" href="_quantizer_test_8cpp_source.html#l00193">VisitLayersTopologically()</a>.</p>
<p class="reference">Referenced by <a class="el" href="_quantizer_test_8cpp_source.html#l01208">BOOST_AUTO_TEST_CASE()</a>.</p>
<div class="fragment"><div class="line"><a name="l01133"></a><span class="lineno"> 1133</span>&#160;{</div><div class="line"><a name="l01134"></a><span class="lineno"> 1134</span>&#160; <span class="keyword">class </span>TestDepthwiseConv2dQuantization : <span class="keyword">public</span> TestQuantization</div><div class="line"><a name="l01135"></a><span class="lineno"> 1135</span>&#160; {</div><div class="line"><a name="l01136"></a><span class="lineno"> 1136</span>&#160; <span class="keyword">public</span>:</div><div class="line"><a name="l01137"></a><span class="lineno"> 1137</span>&#160; TestDepthwiseConv2dQuantization(<span class="keyword">const</span> TensorShape&amp; inputShape, <span class="keyword">const</span> TensorShape&amp; outputShape)</div><div class="line"><a name="l01138"></a><span class="lineno"> 1138</span>&#160; : TestQuantization(inputShape, outputShape) {}</div><div class="line"><a name="l01139"></a><span class="lineno"> 1139</span>&#160;</div><div class="line"><a name="l01140"></a><span class="lineno"> 1140</span>&#160; TestDepthwiseConv2dQuantization(<span class="keyword">const</span> QuantizerOptions&amp; <a class="code" href="_file_only_profiling_decorator_tests_8cpp.html#a6560146509197f3e197d8d36f76c1347">options</a>,</div><div class="line"><a name="l01141"></a><span class="lineno"> 1141</span>&#160; <span class="keyword">const</span> TensorShape&amp; inputShape,</div><div class="line"><a name="l01142"></a><span class="lineno"> 1142</span>&#160; <span class="keyword">const</span> TensorShape&amp; outputShape)</div><div class="line"><a name="l01143"></a><span class="lineno"> 1143</span>&#160; : TestQuantization(options, inputShape, outputShape) {}</div><div class="line"><a name="l01144"></a><span class="lineno"> 1144</span>&#160;</div><div class="line"><a name="l01145"></a><span class="lineno"> 1145</span>&#160; <span class="keywordtype">void</span> VisitDepthwiseConvolution2dLayer(<span class="keyword">const</span> IConnectableLayer *layer,</div><div class="line"><a name="l01146"></a><span class="lineno"> 1146</span>&#160; <span class="keyword">const</span> DepthwiseConvolution2dDescriptor&amp; convolution2dDescriptor,</div><div class="line"><a name="l01147"></a><span class="lineno"> 1147</span>&#160; <span class="keyword">const</span> ConstTensor&amp; weights,</div><div class="line"><a name="l01148"></a><span class="lineno"> 1148</span>&#160; <span class="keyword">const</span> Optional&lt;ConstTensor&gt;&amp; biases,</div><div class="line"><a name="l01149"></a><span class="lineno"> 1149</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span> *name = <span class="keyword">nullptr</span>)<span class="keyword"> override</span></div><div class="line"><a name="l01150"></a><span class="lineno"> 1150</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l01151"></a><span class="lineno"> 1151</span>&#160; boost::ignore_unused(convolution2dDescriptor, name);</div><div class="line"><a name="l01152"></a><span class="lineno"> 1152</span>&#160; TestQuantizationOnLayersWithBiases(layer, weights, biases);</div><div class="line"><a name="l01153"></a><span class="lineno"> 1153</span>&#160; }</div><div class="line"><a name="l01154"></a><span class="lineno"> 1154</span>&#160; };</div><div class="line"><a name="l01155"></a><span class="lineno"> 1155</span>&#160;</div><div class="line"><a name="l01156"></a><span class="lineno"> 1156</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> network = INetwork::Create();</div><div class="line"><a name="l01157"></a><span class="lineno"> 1157</span>&#160;</div><div class="line"><a name="l01158"></a><span class="lineno"> 1158</span>&#160; TensorShape shape{3U};</div><div class="line"><a name="l01159"></a><span class="lineno"> 1159</span>&#160; TensorInfo <a class="code" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>(shape, DataType::Float32);</div><div class="line"><a name="l01160"></a><span class="lineno"> 1160</span>&#160;</div><div class="line"><a name="l01161"></a><span class="lineno"> 1161</span>&#160; std::vector&lt;float&gt; weightsData{-1.0f, 1.5f, 2.0f};</div><div class="line"><a name="l01162"></a><span class="lineno"> 1162</span>&#160; ConstTensor weights(info, weightsData);</div><div class="line"><a name="l01163"></a><span class="lineno"> 1163</span>&#160;</div><div class="line"><a name="l01164"></a><span class="lineno"> 1164</span>&#160; DepthwiseConvolution2dDescriptor descriptor;</div><div class="line"><a name="l01165"></a><span class="lineno"> 1165</span>&#160; descriptor.m_BiasEnabled = useBiases;</div><div class="line"><a name="l01166"></a><span class="lineno"> 1166</span>&#160;</div><div class="line"><a name="l01167"></a><span class="lineno"> 1167</span>&#160; <span class="comment">// Add the layers</span></div><div class="line"><a name="l01168"></a><span class="lineno"> 1168</span>&#160; IConnectableLayer* input0 = network-&gt;AddInputLayer(0);</div><div class="line"><a name="l01169"></a><span class="lineno"> 1169</span>&#160; IConnectableLayer* depthwiseConv2d;</div><div class="line"><a name="l01170"></a><span class="lineno"> 1170</span>&#160; Optional&lt;ConstTensor&gt; optionalBiases;</div><div class="line"><a name="l01171"></a><span class="lineno"> 1171</span>&#160; std::vector&lt;float&gt; biasesData{-1.0f, 1.5f, 2.0f};</div><div class="line"><a name="l01172"></a><span class="lineno"> 1172</span>&#160; <span class="keywordflow">if</span> (useBiases)</div><div class="line"><a name="l01173"></a><span class="lineno"> 1173</span>&#160; {</div><div class="line"><a name="l01174"></a><span class="lineno"> 1174</span>&#160; ConstTensor biases(info, biasesData);</div><div class="line"><a name="l01175"></a><span class="lineno"> 1175</span>&#160; optionalBiases = Optional&lt;ConstTensor&gt;(biases);</div><div class="line"><a name="l01176"></a><span class="lineno"> 1176</span>&#160; }</div><div class="line"><a name="l01177"></a><span class="lineno"> 1177</span>&#160; depthwiseConv2d = network-&gt;AddDepthwiseConvolution2dLayer(descriptor, weights, optionalBiases);</div><div class="line"><a name="l01178"></a><span class="lineno"> 1178</span>&#160; IConnectableLayer* output = network-&gt;AddOutputLayer(1);</div><div class="line"><a name="l01179"></a><span class="lineno"> 1179</span>&#160;</div><div class="line"><a name="l01180"></a><span class="lineno"> 1180</span>&#160; <span class="comment">// Establish connections</span></div><div class="line"><a name="l01181"></a><span class="lineno"> 1181</span>&#160; input0-&gt;GetOutputSlot(0).Connect(depthwiseConv2d-&gt;GetInputSlot(0));</div><div class="line"><a name="l01182"></a><span class="lineno"> 1182</span>&#160; depthwiseConv2d-&gt;GetOutputSlot(0).Connect(output-&gt;GetInputSlot(0));</div><div class="line"><a name="l01183"></a><span class="lineno"> 1183</span>&#160;</div><div class="line"><a name="l01184"></a><span class="lineno"> 1184</span>&#160; <span class="comment">//Set TensorInfo</span></div><div class="line"><a name="l01185"></a><span class="lineno"> 1185</span>&#160; input0-&gt;GetOutputSlot(0).SetTensorInfo(info);</div><div class="line"><a name="l01186"></a><span class="lineno"> 1186</span>&#160; depthwiseConv2d-&gt;GetOutputSlot(0).SetTensorInfo(info);</div><div class="line"><a name="l01187"></a><span class="lineno"> 1187</span>&#160;</div><div class="line"><a name="l01188"></a><span class="lineno"> 1188</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQAsymmU8 = INetworkQuantizer::Create(network.get())-&gt;ExportNetwork();</div><div class="line"><a name="l01189"></a><span class="lineno"> 1189</span>&#160; TestDepthwiseConv2dQuantization validatorQAsymmU8(shape, shape);</div><div class="line"><a name="l01190"></a><span class="lineno"> 1190</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQAsymmU8.get(), validatorQAsymmU8);</div><div class="line"><a name="l01191"></a><span class="lineno"> 1191</span>&#160;</div><div class="line"><a name="l01192"></a><span class="lineno"> 1192</span>&#160; <span class="keyword">const</span> QuantizerOptions qAsymmS8Options(DataType::QAsymmS8);</div><div class="line"><a name="l01193"></a><span class="lineno"> 1193</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQAsymmS8 = INetworkQuantizer::Create(network.get(), qAsymmS8Options)-&gt;ExportNetwork();</div><div class="line"><a name="l01194"></a><span class="lineno"> 1194</span>&#160; TestDepthwiseConv2dQuantization validatorQAsymmS8(qAsymmS8Options, shape, shape);</div><div class="line"><a name="l01195"></a><span class="lineno"> 1195</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQAsymmS8.get(), validatorQAsymmS8);</div><div class="line"><a name="l01196"></a><span class="lineno"> 1196</span>&#160;</div><div class="line"><a name="l01197"></a><span class="lineno"> 1197</span>&#160; <span class="keyword">const</span> QuantizerOptions qSymmS8Options(DataType::QSymmS8);</div><div class="line"><a name="l01198"></a><span class="lineno"> 1198</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQSymmS8 = INetworkQuantizer::Create(network.get(), qSymmS8Options)-&gt;ExportNetwork();</div><div class="line"><a name="l01199"></a><span class="lineno"> 1199</span>&#160; TestDepthwiseConv2dQuantization validatorQSymmS8(qSymmS8Options, shape, shape);</div><div class="line"><a name="l01200"></a><span class="lineno"> 1200</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQSymmS8.get(), validatorQSymmS8);</div><div class="line"><a name="l01201"></a><span class="lineno"> 1201</span>&#160;</div><div class="line"><a name="l01202"></a><span class="lineno"> 1202</span>&#160; <span class="keyword">const</span> QuantizerOptions Qsymm16Options(DataType::QSymmS16);</div><div class="line"><a name="l01203"></a><span class="lineno"> 1203</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQSymmS16 = INetworkQuantizer::Create(network.get(), Qsymm16Options)-&gt;ExportNetwork();</div><div class="line"><a name="l01204"></a><span class="lineno"> 1204</span>&#160; TestDepthwiseConv2dQuantization validatorQSymmS16(Qsymm16Options, shape, shape);</div><div class="line"><a name="l01205"></a><span class="lineno"> 1205</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQSymmS16.get(), validatorQSymmS16);</div><div class="line"><a name="l01206"></a><span class="lineno"> 1206</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c"><div class="ttname"><a href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">armnn::BoostLogSeverityMapping::info</a></div></div>
<div class="ttc" id="namespacearmnn_html_a6482907b4c57873e197324f5cb66fd4d"><div class="ttname"><a href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">armnn::VisitLayersTopologically</a></div><div class="ttdeci">void VisitLayersTopologically(const INetwork *inputNetwork, ILayerVisitor &amp;visitor)</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l00193">QuantizerTest.cpp:193</a></div></div>
<div class="ttc" id="namespacearmnn_html_ace74f6f9feb95a964a49d79458232703"><div class="ttname"><a href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">armnn::INetworkPtr</a></div><div class="ttdeci">std::unique_ptr&lt; INetwork, void(*)(INetwork *network)&gt; INetworkPtr</div><div class="ttdef"><b>Definition:</b> <a href="_i_network_8hpp_source.html#l00085">INetwork.hpp:85</a></div></div>
<div class="ttc" id="_file_only_profiling_decorator_tests_8cpp_html_a6560146509197f3e197d8d36f76c1347"><div class="ttname"><a href="_file_only_profiling_decorator_tests_8cpp.html#a6560146509197f3e197d8d36f76c1347">options</a></div><div class="ttdeci">armnn::Runtime::CreationOptions::ExternalProfilingOptions options</div><div class="ttdef"><b>Definition:</b> <a href="_file_only_profiling_decorator_tests_8cpp_source.html#l00045">FileOnlyProfilingDecoratorTests.cpp:45</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="afa7a0a639e2772ff2ced67d77be810c0"></a>
<h2 class="memtitle"><span class="permalink"><a href="#afa7a0a639e2772ff2ced67d77be810c0">&#9670;&nbsp;</a></span>TestQuantizeTransposeConvolution2d()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void armnn::TestQuantizeTransposeConvolution2d </td>
<td>(</td>
<td class="paramtype">bool&#160;</td>
<td class="paramname"><em>useBiases</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_quantizer_test_8cpp_source.html#l02488">2488</a> of file <a class="el" href="_quantizer_test_8cpp_source.html">QuantizerTest.cpp</a>.</p>
<p class="reference">References <a class="el" href="classarmnn_1_1_i_output_slot.html#ac1835f8756a9f03c02fcf9664e3a0fce">IOutputSlot::Connect()</a>, <a class="el" href="_network_quantizer_8cpp_source.html#l00040">INetworkQuantizer::Create()</a>, <a class="el" href="_network_8cpp_source.html#l00048">INetwork::Create()</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">Float32</a>, <a class="el" href="classarmnn_1_1_i_connectable_layer.html#a6ec9e0eb66d7d6a01240492a0b18104c">IConnectableLayer::GetInputSlot()</a>, <a class="el" href="classarmnn_1_1_i_connectable_layer.html#a80ac4eda2e7f2757ec9dd96fc96dbd16">IConnectableLayer::GetOutputSlot()</a>, <a class="el" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>, <a class="el" href="_descriptors_8hpp_source.html#l01117">TransposeConvolution2dDescriptor::m_BiasEnabled</a>, <a class="el" href="_file_only_profiling_decorator_tests_8cpp_source.html#l00045">options</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a9d02ea768c081d4bdb2b7cab0b3f510d">QAsymmS8</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7">QSymmS16</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a9945327825b115e93a3b89f4302e76db">QSymmS8</a>, <a class="el" href="classarmnn_1_1_i_output_slot.html#a5ee4a6c9a2481245487b1b1a70d20fd0">IOutputSlot::SetTensorInfo()</a>, and <a class="el" href="_quantizer_test_8cpp_source.html#l00193">VisitLayersTopologically()</a>.</p>
<p class="reference">Referenced by <a class="el" href="_quantizer_test_8cpp_source.html#l02568">BOOST_AUTO_TEST_CASE()</a>.</p>
<div class="fragment"><div class="line"><a name="l02489"></a><span class="lineno"> 2489</span>&#160;{</div><div class="line"><a name="l02490"></a><span class="lineno"> 2490</span>&#160; <span class="keyword">class </span>TestTransposeConvolution2dQuantization : <span class="keyword">public</span> TestQuantization</div><div class="line"><a name="l02491"></a><span class="lineno"> 2491</span>&#160; {</div><div class="line"><a name="l02492"></a><span class="lineno"> 2492</span>&#160; <span class="keyword">public</span>:</div><div class="line"><a name="l02493"></a><span class="lineno"> 2493</span>&#160; TestTransposeConvolution2dQuantization(<span class="keyword">const</span> TensorShape&amp; inputShape, <span class="keyword">const</span> TensorShape&amp; outputShape) :</div><div class="line"><a name="l02494"></a><span class="lineno"> 2494</span>&#160; TestQuantization(inputShape, outputShape)</div><div class="line"><a name="l02495"></a><span class="lineno"> 2495</span>&#160; {}</div><div class="line"><a name="l02496"></a><span class="lineno"> 2496</span>&#160;</div><div class="line"><a name="l02497"></a><span class="lineno"> 2497</span>&#160; TestTransposeConvolution2dQuantization(<span class="keyword">const</span> QuantizerOptions&amp; <a class="code" href="_file_only_profiling_decorator_tests_8cpp.html#a6560146509197f3e197d8d36f76c1347">options</a>,</div><div class="line"><a name="l02498"></a><span class="lineno"> 2498</span>&#160; <span class="keyword">const</span> TensorShape&amp; inputShape,</div><div class="line"><a name="l02499"></a><span class="lineno"> 2499</span>&#160; <span class="keyword">const</span> TensorShape&amp; outputShape) :</div><div class="line"><a name="l02500"></a><span class="lineno"> 2500</span>&#160; TestQuantization(options, inputShape, outputShape)</div><div class="line"><a name="l02501"></a><span class="lineno"> 2501</span>&#160; {}</div><div class="line"><a name="l02502"></a><span class="lineno"> 2502</span>&#160;</div><div class="line"><a name="l02503"></a><span class="lineno"> 2503</span>&#160; <span class="keywordtype">void</span> VisitTransposeConvolution2dLayer(<span class="keyword">const</span> IConnectableLayer *layer,</div><div class="line"><a name="l02504"></a><span class="lineno"> 2504</span>&#160; <span class="keyword">const</span> TransposeConvolution2dDescriptor&amp; descriptor,</div><div class="line"><a name="l02505"></a><span class="lineno"> 2505</span>&#160; <span class="keyword">const</span> ConstTensor&amp; weights,</div><div class="line"><a name="l02506"></a><span class="lineno"> 2506</span>&#160; <span class="keyword">const</span> Optional&lt;ConstTensor&gt;&amp; biases,</div><div class="line"><a name="l02507"></a><span class="lineno"> 2507</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span> *name = <span class="keyword">nullptr</span>)<span class="keyword"> override</span></div><div class="line"><a name="l02508"></a><span class="lineno"> 2508</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l02509"></a><span class="lineno"> 2509</span>&#160; boost::ignore_unused(descriptor, name);</div><div class="line"><a name="l02510"></a><span class="lineno"> 2510</span>&#160; TestQuantizationOnLayersWithBiases(layer, weights, biases);</div><div class="line"><a name="l02511"></a><span class="lineno"> 2511</span>&#160; }</div><div class="line"><a name="l02512"></a><span class="lineno"> 2512</span>&#160; };</div><div class="line"><a name="l02513"></a><span class="lineno"> 2513</span>&#160;</div><div class="line"><a name="l02514"></a><span class="lineno"> 2514</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> network = INetwork::Create();</div><div class="line"><a name="l02515"></a><span class="lineno"> 2515</span>&#160;</div><div class="line"><a name="l02516"></a><span class="lineno"> 2516</span>&#160; TensorShape shape{ 3 };</div><div class="line"><a name="l02517"></a><span class="lineno"> 2517</span>&#160; TensorInfo <a class="code" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>(shape, DataType::Float32);</div><div class="line"><a name="l02518"></a><span class="lineno"> 2518</span>&#160;</div><div class="line"><a name="l02519"></a><span class="lineno"> 2519</span>&#160; std::initializer_list&lt;float&gt; floatData{ -1.0f, 1.5f, 2.0f };</div><div class="line"><a name="l02520"></a><span class="lineno"> 2520</span>&#160; std::vector&lt;float&gt; weightsData(floatData);</div><div class="line"><a name="l02521"></a><span class="lineno"> 2521</span>&#160; ConstTensor weights(info, weightsData);</div><div class="line"><a name="l02522"></a><span class="lineno"> 2522</span>&#160;</div><div class="line"><a name="l02523"></a><span class="lineno"> 2523</span>&#160; TransposeConvolution2dDescriptor descriptor;</div><div class="line"><a name="l02524"></a><span class="lineno"> 2524</span>&#160; descriptor.m_BiasEnabled = useBiases;</div><div class="line"><a name="l02525"></a><span class="lineno"> 2525</span>&#160;</div><div class="line"><a name="l02526"></a><span class="lineno"> 2526</span>&#160; <span class="comment">// construct network</span></div><div class="line"><a name="l02527"></a><span class="lineno"> 2527</span>&#160; IConnectableLayer* input = network-&gt;AddInputLayer(0);</div><div class="line"><a name="l02528"></a><span class="lineno"> 2528</span>&#160; Optional&lt;ConstTensor&gt; optionalBiases;</div><div class="line"><a name="l02529"></a><span class="lineno"> 2529</span>&#160; std::vector&lt;float&gt; biasesData(floatData);</div><div class="line"><a name="l02530"></a><span class="lineno"> 2530</span>&#160; <span class="keywordflow">if</span> (useBiases)</div><div class="line"><a name="l02531"></a><span class="lineno"> 2531</span>&#160; {</div><div class="line"><a name="l02532"></a><span class="lineno"> 2532</span>&#160; ConstTensor biases(info, biasesData);</div><div class="line"><a name="l02533"></a><span class="lineno"> 2533</span>&#160; optionalBiases = Optional&lt;ConstTensor&gt;(biases);</div><div class="line"><a name="l02534"></a><span class="lineno"> 2534</span>&#160; }</div><div class="line"><a name="l02535"></a><span class="lineno"> 2535</span>&#160; IConnectableLayer* transposeConv2d = network-&gt;AddTransposeConvolution2dLayer(descriptor, weights, optionalBiases);</div><div class="line"><a name="l02536"></a><span class="lineno"> 2536</span>&#160; IConnectableLayer* output = network-&gt;AddOutputLayer(1);</div><div class="line"><a name="l02537"></a><span class="lineno"> 2537</span>&#160;</div><div class="line"><a name="l02538"></a><span class="lineno"> 2538</span>&#160; input-&gt;GetOutputSlot(0).Connect(transposeConv2d-&gt;GetInputSlot(0));</div><div class="line"><a name="l02539"></a><span class="lineno"> 2539</span>&#160; transposeConv2d-&gt;GetOutputSlot(0).Connect(output-&gt;GetInputSlot(0));</div><div class="line"><a name="l02540"></a><span class="lineno"> 2540</span>&#160;</div><div class="line"><a name="l02541"></a><span class="lineno"> 2541</span>&#160; input-&gt;GetOutputSlot(0).SetTensorInfo(info);</div><div class="line"><a name="l02542"></a><span class="lineno"> 2542</span>&#160; transposeConv2d-&gt;GetOutputSlot(0).SetTensorInfo(info);</div><div class="line"><a name="l02543"></a><span class="lineno"> 2543</span>&#160;</div><div class="line"><a name="l02544"></a><span class="lineno"> 2544</span>&#160; <span class="comment">// test QAsymmU8 quantization</span></div><div class="line"><a name="l02545"></a><span class="lineno"> 2545</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQAsymmU8 = INetworkQuantizer::Create(network.get())-&gt;ExportNetwork();</div><div class="line"><a name="l02546"></a><span class="lineno"> 2546</span>&#160; TestTransposeConvolution2dQuantization validatorQAsymmU8(shape, shape);</div><div class="line"><a name="l02547"></a><span class="lineno"> 2547</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQAsymmU8.get(), validatorQAsymmU8);</div><div class="line"><a name="l02548"></a><span class="lineno"> 2548</span>&#160;</div><div class="line"><a name="l02549"></a><span class="lineno"> 2549</span>&#160; <span class="comment">//test QAsymmS8 quantization</span></div><div class="line"><a name="l02550"></a><span class="lineno"> 2550</span>&#160; <span class="keyword">const</span> QuantizerOptions qAsymmS8Options(DataType::QAsymmS8);</div><div class="line"><a name="l02551"></a><span class="lineno"> 2551</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQAsymmS8 = INetworkQuantizer::Create(network.get(), qAsymmS8Options)-&gt;ExportNetwork();</div><div class="line"><a name="l02552"></a><span class="lineno"> 2552</span>&#160; TestTransposeConvolution2dQuantization validatorQAsymmS8(qAsymmS8Options, shape, shape);</div><div class="line"><a name="l02553"></a><span class="lineno"> 2553</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQAsymmS8.get(), validatorQAsymmS8);</div><div class="line"><a name="l02554"></a><span class="lineno"> 2554</span>&#160;</div><div class="line"><a name="l02555"></a><span class="lineno"> 2555</span>&#160; <span class="comment">// test QSymmS8 quantization</span></div><div class="line"><a name="l02556"></a><span class="lineno"> 2556</span>&#160; <span class="keyword">const</span> QuantizerOptions qSymmS8Options(DataType::QSymmS8);</div><div class="line"><a name="l02557"></a><span class="lineno"> 2557</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQSymmS8 = INetworkQuantizer::Create(network.get(), qSymmS8Options)-&gt;ExportNetwork();</div><div class="line"><a name="l02558"></a><span class="lineno"> 2558</span>&#160; TestTransposeConvolution2dQuantization validatorQSymmS8(qSymmS8Options, shape, shape);</div><div class="line"><a name="l02559"></a><span class="lineno"> 2559</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQSymmS8.get(), validatorQSymmS8);</div><div class="line"><a name="l02560"></a><span class="lineno"> 2560</span>&#160;</div><div class="line"><a name="l02561"></a><span class="lineno"> 2561</span>&#160; <span class="comment">// test QSymmS16 quantization</span></div><div class="line"><a name="l02562"></a><span class="lineno"> 2562</span>&#160; <span class="keyword">const</span> QuantizerOptions qSymmS16options(DataType::QSymmS16);</div><div class="line"><a name="l02563"></a><span class="lineno"> 2563</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQSymmS16 = INetworkQuantizer::Create(network.get(), qSymmS16options)-&gt;ExportNetwork();</div><div class="line"><a name="l02564"></a><span class="lineno"> 2564</span>&#160; TestTransposeConvolution2dQuantization validatorQSymmS16(qSymmS16options, shape, shape);</div><div class="line"><a name="l02565"></a><span class="lineno"> 2565</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQSymmS16.get(), validatorQSymmS16);</div><div class="line"><a name="l02566"></a><span class="lineno"> 2566</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c"><div class="ttname"><a href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">armnn::BoostLogSeverityMapping::info</a></div></div>
<div class="ttc" id="namespacearmnn_html_a6482907b4c57873e197324f5cb66fd4d"><div class="ttname"><a href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">armnn::VisitLayersTopologically</a></div><div class="ttdeci">void VisitLayersTopologically(const INetwork *inputNetwork, ILayerVisitor &amp;visitor)</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l00193">QuantizerTest.cpp:193</a></div></div>
<div class="ttc" id="namespacearmnn_html_ace74f6f9feb95a964a49d79458232703"><div class="ttname"><a href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">armnn::INetworkPtr</a></div><div class="ttdeci">std::unique_ptr&lt; INetwork, void(*)(INetwork *network)&gt; INetworkPtr</div><div class="ttdef"><b>Definition:</b> <a href="_i_network_8hpp_source.html#l00085">INetwork.hpp:85</a></div></div>
<div class="ttc" id="_file_only_profiling_decorator_tests_8cpp_html_a6560146509197f3e197d8d36f76c1347"><div class="ttname"><a href="_file_only_profiling_decorator_tests_8cpp.html#a6560146509197f3e197d8d36f76c1347">options</a></div><div class="ttdeci">armnn::Runtime::CreationOptions::ExternalProfilingOptions options</div><div class="ttdef"><b>Definition:</b> <a href="_file_only_profiling_decorator_tests_8cpp_source.html#l00045">FileOnlyProfilingDecoratorTests.cpp:45</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a2748f45e58b1c612d473043f711d1434"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a2748f45e58b1c612d473043f711d1434">&#9670;&nbsp;</a></span>TopKSort()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void TopKSort </td>
<td>(</td>
<td class="paramtype">unsigned int&#160;</td>
<td class="paramname"><em>k</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">unsigned int *&#160;</td>
<td class="paramname"><em>indices</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const float *&#160;</td>
<td class="paramname"><em>values</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">unsigned int&#160;</td>
<td class="paramname"><em>numElement</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="backends_2reference_2workloads_2_detection_post_process_8cpp_source.html#l00025">25</a> of file <a class="el" href="backends_2reference_2workloads_2_detection_post_process_8cpp_source.html">DetectionPostProcess.cpp</a>.</p>
<p class="reference">Referenced by <a class="el" href="_ref_detection_post_process_tests_8cpp_source.html#l00015">BOOST_AUTO_TEST_CASE()</a>, <a class="el" href="backends_2reference_2workloads_2_detection_post_process_8cpp_source.html#l00141">DetectionPostProcess()</a>, and <a class="el" href="backends_2reference_2workloads_2_detection_post_process_8cpp_source.html#l00050">NonMaxSuppression()</a>.</p>
<div class="fragment"><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;{</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; std::partial_sort(indices, indices + k, indices + numElement,</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; [&amp;values](<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> j) { <span class="keywordflow">return</span> values[i] &gt; values[j]; });</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;}</div></div><!-- fragment -->
</div>
</div>
<a id="affec174d91f234497dfbceba5e251dee"></a>
<h2 class="memtitle"><span class="permalink"><a href="#affec174d91f234497dfbceba5e251dee">&#9670;&nbsp;</a></span>TransposeConvolution2dImpl()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void TransposeConvolution2dImpl </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="structarmnn_1_1_transpose_convolution2d_descriptor.html">TransposeConvolution2dDescriptor</a> &amp;&#160;</td>
<td class="paramname"><em>descriptor</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_shape.html">TensorShape</a> &amp;&#160;</td>
<td class="paramname"><em>inputShape</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classarmnn_1_1_decoder.html">Decoder</a>&lt; float &gt; &amp;&#160;</td>
<td class="paramname"><em>inputDecoder</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_shape.html">TensorShape</a> &amp;&#160;</td>
<td class="paramname"><em>outputShape</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classarmnn_1_1_encoder.html">Encoder</a>&lt; float &gt; &amp;&#160;</td>
<td class="paramname"><em>outputEncoder</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_shape.html">TensorShape</a> &amp;&#160;</td>
<td class="paramname"><em>weightsShape</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classarmnn_1_1_decoder.html">Decoder</a>&lt; float &gt; &amp;&#160;</td>
<td class="paramname"><em>weightsDecoder</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classarmnn_1_1_decoder.html">Decoder</a>&lt; float &gt; *&#160;</td>
<td class="paramname"><em>biasesDecoder</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_transpose_convolution2d_8cpp_source.html#l00015">15</a> of file <a class="el" href="_transpose_convolution2d_8cpp_source.html">TransposeConvolution2d.cpp</a>.</p>
<p class="reference">References <a class="el" href="classarmnn_1_1_decoder.html#ac729108381e2340bea12877971713ecb">Decoder&lt; IType &gt;::Get()</a>, <a class="el" href="_data_layout_indexed_8hpp_source.html#l00023">DataLayoutIndexed::GetChannelsIndex()</a>, <a class="el" href="_data_layout_indexed_8hpp_source.html#l00024">DataLayoutIndexed::GetHeightIndex()</a>, <a class="el" href="_data_layout_indexed_8hpp_source.html#l00027">DataLayoutIndexed::GetIndex()</a>, <a class="el" href="_tensor_8cpp_source.html#l00106">TensorShape::GetNumElements()</a>, <a class="el" href="_data_layout_indexed_8hpp_source.html#l00025">DataLayoutIndexed::GetWidthIndex()</a>, <a class="el" href="_descriptors_8hpp_source.html#l01117">TransposeConvolution2dDescriptor::m_BiasEnabled</a>, <a class="el" href="_descriptors_8hpp_source.html#l01119">TransposeConvolution2dDescriptor::m_DataLayout</a>, <a class="el" href="_descriptors_8hpp_source.html#l01105">TransposeConvolution2dDescriptor::m_PadLeft</a>, <a class="el" href="_descriptors_8hpp_source.html#l01109">TransposeConvolution2dDescriptor::m_PadTop</a>, <a class="el" href="_descriptors_8hpp_source.html#l01113">TransposeConvolution2dDescriptor::m_StrideX</a>, <a class="el" href="_descriptors_8hpp_source.html#l01115">TransposeConvolution2dDescriptor::m_StrideY</a>, <a class="el" href="classarmnn_1_1_encoder.html#ae3b62b846a9c239f332830b9e36030eb">Encoder&lt; IType &gt;::Set()</a>, and <a class="el" href="classarmnn_1_1_base_iterator.html#a1ec75b077d774dbfebf3662e8e4363c9">BaseIterator::SetIndex()</a>.</p>
<p class="reference">Referenced by <a class="el" href="_ref_transpose_convolution2d_workload_8cpp_source.html#l00053">RefTransposeConvolution2dWorkload::Execute()</a>.</p>
<div class="fragment"><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;{</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160; <span class="keywordflow">if</span> (descriptor.m_BiasEnabled &amp;&amp; !biasesDecoder)</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; {</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; <span class="keywordflow">throw</span> InvalidArgumentException(<span class="stringliteral">&quot;Biases enabled but no bias data provided&quot;</span>);</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; }</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; <span class="keyword">const</span> <a class="code" href="classarmnn_utils_1_1_data_layout_indexed.html">DataLayoutIndexed</a> dataLayoutIndexed(descriptor.m_DataLayout);</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> channelsIndex = dataLayoutIndexed.GetChannelsIndex();</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> heightIndex = dataLayoutIndexed.GetHeightIndex();</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> widthIndex = dataLayoutIndexed.GetWidthIndex();</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> numBatches = inputShape[0];</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> inputWidth = inputShape[widthIndex];</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> inputHeight = inputShape[heightIndex];</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> inputDepth = inputShape[channelsIndex];</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> weightsHeight = weightsShape[heightIndex];</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> weightsWidth = weightsShape[widthIndex];</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> outputHeight = outputShape[heightIndex];</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> outputWidth = outputShape[widthIndex];</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> outputDepth = outputShape[channelsIndex];</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> paddingLeft = descriptor.m_PadLeft;</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> paddingTop = descriptor.m_PadTop;</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> strideX = descriptor.m_StrideX;</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> strideY = descriptor.m_StrideY;</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160;</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; std::vector&lt;float&gt; outputBuffer(outputShape.GetNumElements(), 0);</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160;</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> batch = 0u; batch &lt; numBatches; ++batch)</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; {</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> yInput = 0u; yInput &lt; inputHeight; ++yInput)</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; {</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> xInput = 0u; xInput &lt; inputWidth; ++xInput)</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; {</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> xOutputOrigin = xInput * strideX - paddingLeft;</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> yOutputOrigin = yInput * strideY - paddingTop;</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160;</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> dOutput = 0u; dOutput &lt; outputDepth; ++dOutput)</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; {</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> yWeights = 0u; yWeights &lt; weightsHeight; ++yWeights)</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; {</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> xWeights = 0u; xWeights &lt; weightsWidth; ++xWeights)</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; {</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> yOutput = yOutputOrigin + yWeights;</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> xOutput = xOutputOrigin + xWeights;</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160;</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; <span class="keywordflow">if</span> (yOutput &lt; outputHeight &amp;&amp; xOutput&lt; outputWidth)</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; {</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> dInput = 0u; dInput &lt; inputDepth; dInput++)</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; {</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> inputIndex =</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; dataLayoutIndexed.GetIndex(inputShape, batch, dInput, yInput, xInput);</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; inputDecoder[inputIndex];</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160;</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> weightsIndex =</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; dataLayoutIndexed.GetIndex(weightsShape, dOutput, dInput, yWeights, xWeights);</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; weightsDecoder.<a class="code" href="classarmnn_1_1_base_iterator.html#a1ec75b077d774dbfebf3662e8e4363c9">SetIndex</a>(weightsIndex, dOutput);</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160;</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> outputIndex =</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; dataLayoutIndexed.GetIndex(outputShape, batch, dOutput, yOutput, xOutput);</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; outputEncoder[outputIndex];</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160;</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; <span class="keywordtype">float</span> output = outputBuffer[outputIndex];</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; output += inputDecoder.<a class="code" href="classarmnn_1_1_decoder.html#ac729108381e2340bea12877971713ecb">Get</a>() * weightsDecoder.<a class="code" href="classarmnn_1_1_decoder.html#ac729108381e2340bea12877971713ecb">Get</a>();</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; outputBuffer[outputIndex] = output;</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; }</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; }</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; }</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; }</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; }</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; }</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; }</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; }</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160;</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; <span class="comment">// Apply bias (if enabled)</span></div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; <span class="keywordflow">if</span> (descriptor.m_BiasEnabled)</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; {</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; outputEncoder[0];</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; Decoder&lt;float&gt;&amp; rBiasesDecoder = *biasesDecoder;</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160;</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> batch = 0u; batch &lt; numBatches; ++batch)</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; {</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> dOutput = 0u; dOutput &lt; outputDepth; ++dOutput)</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; {</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; rBiasesDecoder.<a class="code" href="classarmnn_1_1_base_iterator.html#a1ec75b077d774dbfebf3662e8e4363c9">SetIndex</a>(dOutput, dOutput);</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> yOutput = 0u; yOutput &lt; outputHeight; ++yOutput)</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; {</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> xOutput = 0u; xOutput &lt; outputWidth; ++xOutput)</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; {</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> outputIndex =</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; dataLayoutIndexed.GetIndex(outputShape, batch, dOutput, yOutput, xOutput);</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; outputBuffer[outputIndex] += rBiasesDecoder.Get();</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; }</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; }</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; }</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; }</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; }</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; outputEncoder[0];</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">float</span> output : outputBuffer)</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; {</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; outputEncoder.<a class="code" href="classarmnn_1_1_encoder.html#ae3b62b846a9c239f332830b9e36030eb">Set</a>(output);</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; ++outputEncoder;</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; }</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160;}</div><div class="ttc" id="classarmnn_1_1_base_iterator_html_a1ec75b077d774dbfebf3662e8e4363c9"><div class="ttname"><a href="classarmnn_1_1_base_iterator.html#a1ec75b077d774dbfebf3662e8e4363c9">armnn::BaseIterator::SetIndex</a></div><div class="ttdeci">virtual BaseIterator &amp; SetIndex(unsigned int index, unsigned int axisIndex=0)=0</div></div>
<div class="ttc" id="classarmnn_1_1_decoder_html_ac729108381e2340bea12877971713ecb"><div class="ttname"><a href="classarmnn_1_1_decoder.html#ac729108381e2340bea12877971713ecb">armnn::Decoder::Get</a></div><div class="ttdeci">virtual IType Get() const =0</div></div>
<div class="ttc" id="classarmnn_utils_1_1_data_layout_indexed_html"><div class="ttname"><a href="classarmnn_utils_1_1_data_layout_indexed.html">armnnUtils::DataLayoutIndexed</a></div><div class="ttdef"><b>Definition:</b> <a href="_data_layout_indexed_8hpp_source.html#l00017">DataLayoutIndexed.hpp:17</a></div></div>
<div class="ttc" id="classarmnn_1_1_encoder_html_ae3b62b846a9c239f332830b9e36030eb"><div class="ttname"><a href="classarmnn_1_1_encoder.html#ae3b62b846a9c239f332830b9e36030eb">armnn::Encoder::Set</a></div><div class="ttdeci">virtual void Set(IType right)=0</div></div>
</div><!-- fragment -->
</div>
</div>
<a id="aeaee60c3c6c67a7cf37bbef45b89fc0a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aeaee60c3c6c67a7cf37bbef45b89fc0a">&#9670;&nbsp;</a></span>TrueFunc()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">bool armnn::TrueFunc </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classarmnn_1_1_optional.html">Optional</a>&lt; std::string &amp;&gt;&#160;</td>
<td class="paramname"><em>reasonIfUnsupported</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">Params &amp;&amp;...&#160;</td>
<td class="paramname"><em>params</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_layer_support_common_8hpp_source.html#l00055">55</a> of file <a class="el" href="_layer_support_common_8hpp_source.html">LayerSupportCommon.hpp</a>.</p>
<div class="fragment"><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160;{</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; boost::ignore_unused(reasonIfUnsupported);</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; boost::ignore_unused(params...);</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160;}</div></div><!-- fragment -->
</div>
</div>
<a id="a245661fc96c9c4a9b898e1d98c8c6962"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a245661fc96c9c4a9b898e1d98c8c6962">&#9670;&nbsp;</a></span>ValidateFullyConnectedLayer()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void armnn::ValidateFullyConnectedLayer </td>
<td>(</td>
<td class="paramtype">const bool&#160;</td>
<td class="paramname"><em>biasEnabled</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_quantizer_test_8cpp_source.html#l00989">989</a> of file <a class="el" href="_quantizer_test_8cpp_source.html">QuantizerTest.cpp</a>.</p>
<p class="reference">References <a class="el" href="_network_quantizer_8cpp_source.html#l00040">INetworkQuantizer::Create()</a>, <a class="el" href="_quantizer_test_8cpp_source.html#l00951">CreateNetworkWithFullyConnectedLayer()</a>, <a class="el" href="_file_only_profiling_decorator_tests_8cpp_source.html#l00045">options</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a9d02ea768c081d4bdb2b7cab0b3f510d">QAsymmS8</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7">QSymmS16</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a9945327825b115e93a3b89f4302e76db">QSymmS8</a>, and <a class="el" href="_quantizer_test_8cpp_source.html#l00193">VisitLayersTopologically()</a>.</p>
<p class="reference">Referenced by <a class="el" href="_quantizer_test_8cpp_source.html#l01036">BOOST_AUTO_TEST_CASE()</a>.</p>
<div class="fragment"><div class="line"><a name="l00990"></a><span class="lineno"> 990</span>&#160;{</div><div class="line"><a name="l00991"></a><span class="lineno"> 991</span>&#160; <span class="keyword">class </span>TestFullyConnectedQuantization : <span class="keyword">public</span> TestQuantization</div><div class="line"><a name="l00992"></a><span class="lineno"> 992</span>&#160; {</div><div class="line"><a name="l00993"></a><span class="lineno"> 993</span>&#160; <span class="keyword">public</span>:</div><div class="line"><a name="l00994"></a><span class="lineno"> 994</span>&#160; TestFullyConnectedQuantization(<span class="keyword">const</span> TensorShape&amp; inputShape, <span class="keyword">const</span> TensorShape&amp; outputShape)</div><div class="line"><a name="l00995"></a><span class="lineno"> 995</span>&#160; : TestQuantization(inputShape, outputShape) {}</div><div class="line"><a name="l00996"></a><span class="lineno"> 996</span>&#160;</div><div class="line"><a name="l00997"></a><span class="lineno"> 997</span>&#160; TestFullyConnectedQuantization(<span class="keyword">const</span> QuantizerOptions&amp; <a class="code" href="_file_only_profiling_decorator_tests_8cpp.html#a6560146509197f3e197d8d36f76c1347">options</a>,</div><div class="line"><a name="l00998"></a><span class="lineno"> 998</span>&#160; <span class="keyword">const</span> TensorShape&amp; inputShape,</div><div class="line"><a name="l00999"></a><span class="lineno"> 999</span>&#160; <span class="keyword">const</span> TensorShape&amp; outputShape)</div><div class="line"><a name="l01000"></a><span class="lineno"> 1000</span>&#160; : TestQuantization(options, inputShape, outputShape) {}</div><div class="line"><a name="l01001"></a><span class="lineno"> 1001</span>&#160;</div><div class="line"><a name="l01002"></a><span class="lineno"> 1002</span>&#160; <span class="keywordtype">void</span> VisitFullyConnectedLayer(<span class="keyword">const</span> IConnectableLayer* layer,</div><div class="line"><a name="l01003"></a><span class="lineno"> 1003</span>&#160; <span class="keyword">const</span> FullyConnectedDescriptor&amp; desc,</div><div class="line"><a name="l01004"></a><span class="lineno"> 1004</span>&#160; <span class="keyword">const</span> ConstTensor&amp; weights,</div><div class="line"><a name="l01005"></a><span class="lineno"> 1005</span>&#160; <span class="keyword">const</span> Optional&lt;ConstTensor&gt;&amp; biases,</div><div class="line"><a name="l01006"></a><span class="lineno"> 1006</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span>* name = <span class="keyword">nullptr</span>)<span class="keyword"> override</span></div><div class="line"><a name="l01007"></a><span class="lineno"> 1007</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l01008"></a><span class="lineno"> 1008</span>&#160; boost::ignore_unused(desc, name);</div><div class="line"><a name="l01009"></a><span class="lineno"> 1009</span>&#160; TestQuantizationOnLayersWithBiases(layer, weights, biases);</div><div class="line"><a name="l01010"></a><span class="lineno"> 1010</span>&#160; }</div><div class="line"><a name="l01011"></a><span class="lineno"> 1011</span>&#160; };</div><div class="line"><a name="l01012"></a><span class="lineno"> 1012</span>&#160;</div><div class="line"><a name="l01013"></a><span class="lineno"> 1013</span>&#160; <span class="keyword">const</span> TensorShape shape{3U};</div><div class="line"><a name="l01014"></a><span class="lineno"> 1014</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> network = <a class="code" href="namespacearmnn.html#aad4b8cb9a4d882a48bc21510f0d1a938">CreateNetworkWithFullyConnectedLayer</a>(biasEnabled, shape, shape);</div><div class="line"><a name="l01015"></a><span class="lineno"> 1015</span>&#160;</div><div class="line"><a name="l01016"></a><span class="lineno"> 1016</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQAsymmU8 = INetworkQuantizer::Create(network.get())-&gt;ExportNetwork();</div><div class="line"><a name="l01017"></a><span class="lineno"> 1017</span>&#160; TestFullyConnectedQuantization validatorQAsymmU8(shape, shape);</div><div class="line"><a name="l01018"></a><span class="lineno"> 1018</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQAsymmU8.get(), validatorQAsymmU8);</div><div class="line"><a name="l01019"></a><span class="lineno"> 1019</span>&#160;</div><div class="line"><a name="l01020"></a><span class="lineno"> 1020</span>&#160; <span class="keyword">const</span> QuantizerOptions qAsymmS8Options(DataType::QAsymmS8);</div><div class="line"><a name="l01021"></a><span class="lineno"> 1021</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQAsymmS8 = INetworkQuantizer::Create(network.get(), qAsymmS8Options)-&gt;ExportNetwork();</div><div class="line"><a name="l01022"></a><span class="lineno"> 1022</span>&#160; TestFullyConnectedQuantization validatorQAsymmS8(qAsymmS8Options, shape, shape);</div><div class="line"><a name="l01023"></a><span class="lineno"> 1023</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQAsymmS8.get(), validatorQAsymmS8);</div><div class="line"><a name="l01024"></a><span class="lineno"> 1024</span>&#160;</div><div class="line"><a name="l01025"></a><span class="lineno"> 1025</span>&#160; <span class="keyword">const</span> QuantizerOptions qSymmS8Options(DataType::QSymmS8);</div><div class="line"><a name="l01026"></a><span class="lineno"> 1026</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQSymmS8 = INetworkQuantizer::Create(network.get(), qSymmS8Options)-&gt;ExportNetwork();</div><div class="line"><a name="l01027"></a><span class="lineno"> 1027</span>&#160; TestFullyConnectedQuantization validatorQSymmS8(qSymmS8Options, shape, shape);</div><div class="line"><a name="l01028"></a><span class="lineno"> 1028</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQSymmS8.get(), validatorQSymmS8);</div><div class="line"><a name="l01029"></a><span class="lineno"> 1029</span>&#160;</div><div class="line"><a name="l01030"></a><span class="lineno"> 1030</span>&#160; <span class="keyword">const</span> QuantizerOptions Qsymm16Options(DataType::QSymmS16);</div><div class="line"><a name="l01031"></a><span class="lineno"> 1031</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQSymmS16 = INetworkQuantizer::Create(network.get(), Qsymm16Options)-&gt;ExportNetwork();</div><div class="line"><a name="l01032"></a><span class="lineno"> 1032</span>&#160; TestFullyConnectedQuantization validatorQSymmS16(Qsymm16Options, shape, shape);</div><div class="line"><a name="l01033"></a><span class="lineno"> 1033</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQSymmS16.get(), validatorQSymmS16);</div><div class="line"><a name="l01034"></a><span class="lineno"> 1034</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_aad4b8cb9a4d882a48bc21510f0d1a938"><div class="ttname"><a href="namespacearmnn.html#aad4b8cb9a4d882a48bc21510f0d1a938">armnn::CreateNetworkWithFullyConnectedLayer</a></div><div class="ttdeci">INetworkPtr CreateNetworkWithFullyConnectedLayer(const bool biasEnabled, const TensorShape &amp;inputShape, const TensorShape &amp;outputShape)</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l00951">QuantizerTest.cpp:951</a></div></div>
<div class="ttc" id="namespacearmnn_html_a6482907b4c57873e197324f5cb66fd4d"><div class="ttname"><a href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">armnn::VisitLayersTopologically</a></div><div class="ttdeci">void VisitLayersTopologically(const INetwork *inputNetwork, ILayerVisitor &amp;visitor)</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l00193">QuantizerTest.cpp:193</a></div></div>
<div class="ttc" id="namespacearmnn_html_ace74f6f9feb95a964a49d79458232703"><div class="ttname"><a href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">armnn::INetworkPtr</a></div><div class="ttdeci">std::unique_ptr&lt; INetwork, void(*)(INetwork *network)&gt; INetworkPtr</div><div class="ttdef"><b>Definition:</b> <a href="_i_network_8hpp_source.html#l00085">INetwork.hpp:85</a></div></div>
<div class="ttc" id="_file_only_profiling_decorator_tests_8cpp_html_a6560146509197f3e197d8d36f76c1347"><div class="ttname"><a href="_file_only_profiling_decorator_tests_8cpp.html#a6560146509197f3e197d8d36f76c1347">options</a></div><div class="ttdeci">armnn::Runtime::CreationOptions::ExternalProfilingOptions options</div><div class="ttdef"><b>Definition:</b> <a href="_file_only_profiling_decorator_tests_8cpp_source.html#l00045">FileOnlyProfilingDecoratorTests.cpp:45</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a9667bea652e3a5ef81fea59b71513ced"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a9667bea652e3a5ef81fea59b71513ced">&#9670;&nbsp;</a></span>VerifyTensorInfoDataType()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void armnn::VerifyTensorInfoDataType </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">armnn::TensorInfo</a> &amp;&#160;</td>
<td class="paramname"><em>info</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6">armnn::DataType</a>&#160;</td>
<td class="paramname"><em>dataType</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_types_utils_8hpp_source.html#l00292">292</a> of file <a class="el" href="_types_utils_8hpp_source.html">TypesUtils.hpp</a>.</p>
<p class="reference">References <a class="el" href="_tensor_8hpp_source.html#l00095">TensorInfo::GetDataType()</a>, <a class="el" href="_types_utils_8hpp_source.html#l00165">GetDataTypeName()</a>, and <a class="el" href="_tensor_8hpp_source.html#l00088">TensorInfo::GetShape()</a>.</p>
<p class="reference">Referenced by <a class="el" href="_parser_flatbuffers_serialize_fixture_8hpp_source.html#l00203">ParserFlatbuffersSerializeFixture::RunTest()</a>, and <a class="el" href="_parser_flatbuffers_fixture_8hpp_source.html#l00250">ParserFlatbuffersFixture::RunTest()</a>.</p>
<div class="fragment"><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160;{</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160; <span class="keywordflow">if</span> (info.<a class="code" href="classarmnn_1_1_tensor_info.html#aea909c7327109228ef618d459015def3">GetDataType</a>() != dataType)</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160; {</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160; std::stringstream ss;</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160; ss &lt;&lt; <span class="stringliteral">&quot;Unexpected datatype:&quot;</span> &lt;&lt; <a class="code" href="namespacearmnn.html#a81b5ff8545adad19a1c9d4ca076d552c">armnn::GetDataTypeName</a>(info.<a class="code" href="classarmnn_1_1_tensor_info.html#aea909c7327109228ef618d459015def3">GetDataType</a>())</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160; &lt;&lt; <span class="stringliteral">&quot; for tensor:&quot;</span> &lt;&lt; info.<a class="code" href="classarmnn_1_1_tensor_info.html#a8b5d0f8a24e9d9238f412260a552acf8">GetShape</a>()</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160; &lt;&lt; <span class="stringliteral">&quot;. The type expected to be: &quot;</span> &lt;&lt; <a class="code" href="namespacearmnn.html#a81b5ff8545adad19a1c9d4ca076d552c">armnn::GetDataTypeName</a>(dataType);</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160; <span class="keywordflow">throw</span> <a class="code" href="classarmnn_1_1_exception.html">armnn::Exception</a>(ss.str());</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160; }</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160;}</div><div class="ttc" id="classarmnn_1_1_exception_html"><div class="ttname"><a href="classarmnn_1_1_exception.html">armnn::Exception</a></div><div class="ttdoc">Base class for all ArmNN exceptions so that users can filter to just those. </div><div class="ttdef"><b>Definition:</b> <a href="_exceptions_8hpp_source.html#l00046">Exceptions.hpp:46</a></div></div>
<div class="ttc" id="classarmnn_1_1_tensor_info_html_aea909c7327109228ef618d459015def3"><div class="ttname"><a href="classarmnn_1_1_tensor_info.html#aea909c7327109228ef618d459015def3">armnn::TensorInfo::GetDataType</a></div><div class="ttdeci">DataType GetDataType() const</div><div class="ttdef"><b>Definition:</b> <a href="_tensor_8hpp_source.html#l00095">Tensor.hpp:95</a></div></div>
<div class="ttc" id="classarmnn_1_1_tensor_info_html_a8b5d0f8a24e9d9238f412260a552acf8"><div class="ttname"><a href="classarmnn_1_1_tensor_info.html#a8b5d0f8a24e9d9238f412260a552acf8">armnn::TensorInfo::GetShape</a></div><div class="ttdeci">const TensorShape &amp; GetShape() const</div><div class="ttdef"><b>Definition:</b> <a href="_tensor_8hpp_source.html#l00088">Tensor.hpp:88</a></div></div>
<div class="ttc" id="namespacearmnn_html_a81b5ff8545adad19a1c9d4ca076d552c"><div class="ttname"><a href="namespacearmnn.html#a81b5ff8545adad19a1c9d4ca076d552c">armnn::GetDataTypeName</a></div><div class="ttdeci">constexpr const char * GetDataTypeName(DataType dataType)</div><div class="ttdef"><b>Definition:</b> <a href="_types_utils_8hpp_source.html#l00165">TypesUtils.hpp:165</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a9835ef753dda5b5a2fe827680e41fda7"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a9835ef753dda5b5a2fe827680e41fda7">&#9670;&nbsp;</a></span>VisitLayers()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void armnn::VisitLayers </td>
<td>(</td>
<td class="paramtype">const LayerContainer &amp;&#160;</td>
<td class="paramname"><em>layerContainer</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classarmnn_1_1_i_layer_visitor.html">ILayerVisitor</a> &amp;&#160;</td>
<td class="paramname"><em>visitor</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_network_quantizer_utils_8hpp_source.html#l00050">50</a> of file <a class="el" href="_network_quantizer_utils_8hpp_source.html">NetworkQuantizerUtils.hpp</a>.</p>
<p class="reference">References <a class="el" href="_i_layer_visitor_8hpp_source.html#l00498">ILayerVisitor::FinishVisit()</a>, and <a class="el" href="_i_layer_visitor_8hpp_source.html#l00497">ILayerVisitor::StartVisit()</a>.</p>
<p class="reference">Referenced by <a class="el" href="_quantizer_test_8cpp_source.html#l00871">BOOST_AUTO_TEST_CASE()</a>, <a class="el" href="_network_quantizer_8cpp_source.html#l00136">NetworkQuantizer::ExportNetwork()</a>, <a class="el" href="_network_quantizer_8cpp_source.html#l00050">NetworkQuantizer::OverrideInputRange()</a>, <a class="el" href="_network_quantizer_8cpp_source.html#l00060">NetworkQuantizer::Refine()</a>, and <a class="el" href="_quantizer_test_8cpp_source.html#l00193">VisitLayersTopologically()</a>.</p>
<div class="fragment"><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160;{</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; visitor.StartVisit();</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span> layer : layerContainer)</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; {</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; layer-&gt;Accept(visitor);</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; }</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; visitor.FinishVisit();</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160;}</div></div><!-- fragment -->
</div>
</div>
<a id="a6482907b4c57873e197324f5cb66fd4d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a6482907b4c57873e197324f5cb66fd4d">&#9670;&nbsp;</a></span>VisitLayersTopologically()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void armnn::VisitLayersTopologically </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarmnn_1_1_i_network.html">INetwork</a> *&#160;</td>
<td class="paramname"><em>inputNetwork</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classarmnn_1_1_i_layer_visitor.html">ILayerVisitor</a> &amp;&#160;</td>
<td class="paramname"><em>visitor</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_quantizer_test_8cpp_source.html#l00193">193</a> of file <a class="el" href="_quantizer_test_8cpp_source.html">QuantizerTest.cpp</a>.</p>
<p class="reference">References <a class="el" href="_quantizer_test_8cpp_source.html#l00035">g_AsymmS8QuantizationBase</a>, <a class="el" href="_quantizer_test_8cpp_source.html#l00033">g_AsymmU8QuantizationBase</a>, <a class="el" href="_quantizer_test_8cpp_source.html#l00037">g_SymmS16QuantizationBase</a>, <a class="el" href="_quantizer_test_8cpp_source.html#l00036">g_SymmS8QuantizationBase</a>, <a class="el" href="classarmnn_1_1_i_connectable_layer.html#a80ac4eda2e7f2757ec9dd96fc96dbd16">IConnectableLayer::GetOutputSlot()</a>, <a class="el" href="classarmnn_1_1_i_output_slot.html#a9943775a364fc4ab53b85ac88f311886">IOutputSlot::GetTensorInfo()</a>, <a class="el" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>, <a class="el" href="_file_only_profiling_decorator_tests_8cpp_source.html#l00045">options</a>, and <a class="el" href="_network_quantizer_utils_8hpp_source.html#l00050">VisitLayers()</a>.</p>
<p class="reference">Referenced by <a class="el" href="_quantizer_test_8cpp_source.html#l00227">BOOST_AUTO_TEST_CASE()</a>, <a class="el" href="_quantizer_test_8cpp_source.html#l02817">PreserveTypeTestImpl()</a>, <a class="el" href="_quantizer_test_8cpp_source.html#l01046">TestQuantizeConvolution2d()</a>, <a class="el" href="_quantizer_test_8cpp_source.html#l01132">TestQuantizeDepthwiseConvolution2d()</a>, <a class="el" href="_quantizer_test_8cpp_source.html#l02488">TestQuantizeTransposeConvolution2d()</a>, and <a class="el" href="_quantizer_test_8cpp_source.html#l00989">ValidateFullyConnectedLayer()</a>.</p>
<div class="fragment"><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160;{</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160; <span class="keyword">auto</span> network = boost::polymorphic_downcast&lt;const Network*&gt;(inputNetwork);</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; <span class="keyword">auto</span> graph = network-&gt;GetGraph().TopologicalSort();</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160;</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160; <a class="code" href="namespacearmnn.html#a9835ef753dda5b5a2fe827680e41fda7">VisitLayers</a>(graph, visitor);</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a9835ef753dda5b5a2fe827680e41fda7"><div class="ttname"><a href="namespacearmnn.html#a9835ef753dda5b5a2fe827680e41fda7">armnn::VisitLayers</a></div><div class="ttdeci">void VisitLayers(const LayerContainer &amp;layerContainer, ILayerVisitor &amp;visitor)</div><div class="ttdef"><b>Definition:</b> <a href="_network_quantizer_utils_8hpp_source.html#l00050">NetworkQuantizerUtils.hpp:50</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a2192b5ff59aacdb27f8b0238323915dc"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a2192b5ff59aacdb27f8b0238323915dc">&#9670;&nbsp;</a></span>WrapClError()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classarmnn_1_1_runtime_exception.html">RuntimeException</a> armnn::WrapClError </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="namespacearmnn.html#a93a3ba385cad27c4774e5fe64c025d3da902b0d55fddef6f8d651fe1035b7d4bd">cl::Error</a> &amp;&#160;</td>
<td class="paramname"><em>clError</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="structarmnn_1_1_check_location.html">CheckLocation</a> &amp;&#160;</td>
<td class="paramname"><em>location</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_cl_workload_utils_8hpp_source.html#l00123">123</a> of file <a class="el" href="_cl_workload_utils_8hpp_source.html">ClWorkloadUtils.hpp</a>.</p>
<p class="reference">References <a class="el" href="_exceptions_8cpp_source.html#l00032">Exception::what()</a>.</p>
<p class="reference">Referenced by <a class="el" href="_cl_workload_factory_8cpp_source.html#l00045">ClWorkloadFactory::GetBackendId()</a>, and <a class="el" href="_cl_workload_utils_8hpp_source.html#l00131">RunClFunction()</a>.</p>
<div class="fragment"><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160;{</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; std::stringstream message;</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; message &lt;&lt; <span class="stringliteral">&quot;CL error: &quot;</span> &lt;&lt; clError.what() &lt;&lt; <span class="stringliteral">&quot;. Error code: &quot;</span> &lt;&lt; clError.err();</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160;</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; <span class="keywordflow">return</span> RuntimeException(message.str(), location);</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160;}</div></div><!-- fragment -->
</div>
</div>
<h2 class="groupheader">Variable Documentation</h2>
<a id="aacc0d11e271ebbfcff9d613dd17604aa"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aacc0d11e271ebbfcff9d613dd17604aa">&#9670;&nbsp;</a></span>g_AggregateProfilingEventsByInference</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">constexpr bool g_AggregateProfilingEventsByInference = <a class="el" href="_ref_layer_tests_8cpp.html#a37f1c3ccc9fc906be85185350dd83d48">true</a></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_profiling_8cpp_source.html#l00038">38</a> of file <a class="el" href="_profiling_8cpp_source.html">Profiling.cpp</a>.</p>
</div>
</div>
<a id="a09bdfaa922d72ce0d9ec014dfa8f8c95"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a09bdfaa922d72ce0d9ec014dfa8f8c95">&#9670;&nbsp;</a></span>g_AsymmS8QuantizationBase</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">const float g_AsymmS8QuantizationBase = 255.0f</td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_quantizer_test_8cpp_source.html#l00035">35</a> of file <a class="el" href="_quantizer_test_8cpp_source.html">QuantizerTest.cpp</a>.</p>
<p class="reference">Referenced by <a class="el" href="_quantizer_test_8cpp_source.html#l00227">BOOST_AUTO_TEST_CASE()</a>, and <a class="el" href="_quantizer_test_8cpp_source.html#l00193">VisitLayersTopologically()</a>.</p>
</div>
</div>
<a id="a19994153bdbd7710f0af3973403bc4cc"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a19994153bdbd7710f0af3973403bc4cc">&#9670;&nbsp;</a></span>g_AsymmU8QuantizationBase</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">const float g_AsymmU8QuantizationBase = 255.0f</td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_quantizer_test_8cpp_source.html#l00033">33</a> of file <a class="el" href="_quantizer_test_8cpp_source.html">QuantizerTest.cpp</a>.</p>
<p class="reference">Referenced by <a class="el" href="_quantizer_test_8cpp_source.html#l00227">BOOST_AUTO_TEST_CASE()</a>, and <a class="el" href="_quantizer_test_8cpp_source.html#l00193">VisitLayersTopologically()</a>.</p>
</div>
</div>
<a id="a43ecd194778b7653578044060ba8695e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a43ecd194778b7653578044060ba8695e">&#9670;&nbsp;</a></span>g_ProfilingEventCountHint</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">constexpr std::size_t g_ProfilingEventCountHint = 1024</td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_profiling_8cpp_source.html#l00030">30</a> of file <a class="el" href="_profiling_8cpp_source.html">Profiling.cpp</a>.</p>
</div>
</div>
<a id="a1465480794787d2278d3f0d2e6d887b4"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a1465480794787d2278d3f0d2e6d887b4">&#9670;&nbsp;</a></span>g_SymmS16QuantizationBase</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">const float g_SymmS16QuantizationBase = 32767.0f</td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_quantizer_test_8cpp_source.html#l00037">37</a> of file <a class="el" href="_quantizer_test_8cpp_source.html">QuantizerTest.cpp</a>.</p>
<p class="reference">Referenced by <a class="el" href="_quantizer_test_8cpp_source.html#l00227">BOOST_AUTO_TEST_CASE()</a>, and <a class="el" href="_quantizer_test_8cpp_source.html#l00193">VisitLayersTopologically()</a>.</p>
</div>
</div>
<a id="acd7f8820d124166a38c95bc8ad38811b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#acd7f8820d124166a38c95bc8ad38811b">&#9670;&nbsp;</a></span>g_SymmS8QuantizationBase</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">const float g_SymmS8QuantizationBase = 127.0f</td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_quantizer_test_8cpp_source.html#l00036">36</a> of file <a class="el" href="_quantizer_test_8cpp_source.html">QuantizerTest.cpp</a>.</p>
<p class="reference">Referenced by <a class="el" href="_quantizer_test_8cpp_source.html#l00227">BOOST_AUTO_TEST_CASE()</a>, and <a class="el" href="_quantizer_test_8cpp_source.html#l00193">VisitLayersTopologically()</a>.</p>
</div>
</div>
<a id="a1a9a6dea47de10df8e3c76dd45df56fb"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a1a9a6dea47de10df8e3c76dd45df56fb">&#9670;&nbsp;</a></span>g_TestTolerance</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">const float g_TestTolerance = 0.000001f</td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_quantizer_test_8cpp_source.html#l00038">38</a> of file <a class="el" href="_quantizer_test_8cpp_source.html">QuantizerTest.cpp</a>.</p>
</div>
</div>
<a id="a41794552ff67b0dad16de60f9b8e7d7c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a41794552ff67b0dad16de60f9b8e7d7c">&#9670;&nbsp;</a></span>g_WriteProfilingEventSequence</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">constexpr bool g_WriteProfilingEventSequence = <a class="el" href="_ref_layer_tests_8cpp.html#a37f1c3ccc9fc906be85185350dd83d48">true</a></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_profiling_8cpp_source.html#l00033">33</a> of file <a class="el" href="_profiling_8cpp_source.html">Profiling.cpp</a>.</p>
</div>
</div>
<a id="a6ce7e56eb10e440463f09eee8f213adc"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a6ce7e56eb10e440463f09eee8f213adc">&#9670;&nbsp;</a></span>g_WriteReportToStdOutOnProfilerDestruction</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">constexpr bool g_WriteReportToStdOutOnProfilerDestruction = <a class="el" href="_ref_layer_tests_8cpp.html#a67e2647a90dec71bb79c8b38872ba570">false</a></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_profiling_8cpp_source.html#l00042">42</a> of file <a class="el" href="_profiling_8cpp_source.html">Profiling.cpp</a>.</p>
</div>
</div>
<a id="a602ddc6408c3347ba4c1eba623003984"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a602ddc6408c3347ba4c1eba623003984">&#9670;&nbsp;</a></span>LOWEST_CAPTURE_PERIOD</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">constexpr unsigned int LOWEST_CAPTURE_PERIOD = 10000u</td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_types_8hpp_source.html#l00021">21</a> of file <a class="el" href="_types_8hpp_source.html">Types.hpp</a>.</p>
<p class="reference">Referenced by <a class="el" href="_profiling_tests_8cpp_source.html#l01732">BOOST_AUTO_TEST_CASE()</a>, and <a class="el" href="_periodic_counter_selection_command_handler_8cpp_source.html#l00059">PeriodicCounterSelectionCommandHandler::operator()()</a>.</p>
</div>
</div>
<a id="abdcd184ed3bd648bb31d385040cafd5d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#abdcd184ed3bd648bb31d385040cafd5d">&#9670;&nbsp;</a></span>MaxNumOfTensorDimensions</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">constexpr unsigned int MaxNumOfTensorDimensions = 5U</td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_types_8hpp_source.html#l00018">18</a> of file <a class="el" href="_types_8hpp_source.html">Types.hpp</a>.</p>
<p class="reference">Referenced by <a class="el" href="_input_output_tensor_names_8cpp_source.html#l00081">BOOST_FIXTURE_TEST_CASE()</a>, <a class="el" href="_concatenate_8cpp_source.html#l00014">Concatenate()</a>, <a class="el" href="_workload_utils_8hpp_source.html#l00049">CopyTensorContentsGeneric()</a>, <a class="el" href="_tf_lite_parser_8cpp_source.html#l01901">TfLiteParser::OutputShapeOfReshape()</a>, <a class="el" href="_descriptors_8cpp_source.html#l00018">PermutationVector::PermutationVector()</a>, <a class="el" href="_permute_8cpp_source.html#l00098">armnnUtils::Permuted()</a>, <a class="el" href="_splitter_8cpp_source.html#l00022">Split()</a>, <a class="el" href="_splitter_8hpp_source.html#l00017">Splitter()</a>, and <a class="el" href="_tensor_8cpp_source.html#l00028">TensorShape::TensorShape()</a>.</p>
</div>
</div>
<a id="a680b729be51e88d93f2cbbdfeb5eaf4d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a680b729be51e88d93f2cbbdfeb5eaf4d">&#9670;&nbsp;</a></span>tl_Profiler</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">thread_local <a class="el" href="classarmnn_1_1_profiler.html">Profiler</a>* tl_Profiler = nullptr</td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_profiling_8cpp_source.html#l00484">484</a> of file <a class="el" href="_profiling_8cpp_source.html">Profiling.cpp</a>.</p>
<p class="reference">Referenced by <a class="el" href="_profiling_8cpp_source.html#l00498">ProfilerManager::GetProfiler()</a>.</p>
</div>
</div>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="namespacearmnn.html">armnn</a></li>
<li class="footer">Generated on Fri Mar 13 2020 16:07:02 for ArmNN by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.13 </li>
</ul>
</div>
</body>
</html>