Fix edge case bug in handling FP16 weights in XNNPACK delegate
Quasi-static tensors may become subgraph outputs after partitioning; we need to explicitly exclude them from outputs and treat as static tensors. PiperOrigin-RevId: 313522428 Change-Id: I621cb575b52caa59910a281078c3c505e796880f
This commit is contained in:
parent
f150cad3cb
commit
dedac5053f
@ -101,9 +101,15 @@ class Subgraph {
|
||||
const std::unordered_set<int> inputs(
|
||||
¶ms->input_tensors->data[0],
|
||||
¶ms->input_tensors->data[params->input_tensors->size]);
|
||||
const std::unordered_set<int> outputs(
|
||||
¶ms->output_tensors->data[0],
|
||||
¶ms->output_tensors->data[params->output_tensors->size]);
|
||||
std::unordered_set<int> outputs;
|
||||
for (int o = 0; o < params->output_tensors->size; o++) {
|
||||
const int output_tensor_idx = params->output_tensors->data[o];
|
||||
// Exclude quasi-static tensors which may have become subgraph outputs
|
||||
// after partitioning.
|
||||
if (delegate->static_unpacked_data_map_.count(output_tensor_idx) == 0) {
|
||||
outputs.insert(output_tensor_idx);
|
||||
}
|
||||
}
|
||||
std::unordered_set<int> externals(outputs);
|
||||
|
||||
TfLiteIntArray* execution_plan;
|
||||
|
Loading…
Reference in New Issue
Block a user