aboutsummaryrefslogtreecommitdiffhomepage
path: root/tensorflow/contrib/lite/toco/graph_transformations/propagate_array_data_types.cc
diff options
context:
space:
mode:
authorGravatar A. Unique TensorFlower <gardener@tensorflow.org>2018-02-27 10:49:41 -0800
committerGravatar TensorFlower Gardener <gardener@tensorflow.org>2018-02-27 10:53:55 -0800
commit8ccc858d11f913e63cf3e35523bc3121684c2a82 (patch)
treeb443a196b97cd46c62240b6ba5e08247c65da412 /tensorflow/contrib/lite/toco/graph_transformations/propagate_array_data_types.cc
parent38bda430f4d302c762bc2a0b74721d82b9c5cca4 (diff)
Add 8bit Tanh support to tflite
Allow output datatypes for custom ops to be more than the output types used in the graph. When an op has multiple outputs, some of them not used will be optimized away. This results in a failure. The change in propagate_array_data_types.cc fix this. PiperOrigin-RevId: 187198815
Diffstat (limited to 'tensorflow/contrib/lite/toco/graph_transformations/propagate_array_data_types.cc')
-rw-r--r--tensorflow/contrib/lite/toco/graph_transformations/propagate_array_data_types.cc7
1 files changed, 5 insertions, 2 deletions
diff --git a/tensorflow/contrib/lite/toco/graph_transformations/propagate_array_data_types.cc b/tensorflow/contrib/lite/toco/graph_transformations/propagate_array_data_types.cc
index f0d107232b..bde947f78d 100644
--- a/tensorflow/contrib/lite/toco/graph_transformations/propagate_array_data_types.cc
+++ b/tensorflow/contrib/lite/toco/graph_transformations/propagate_array_data_types.cc
@@ -97,10 +97,13 @@ bool PropagateArrayDataTypes::Run(Model* model, std::size_t op_index) {
SetDataTypeForAllOutputs(model, op, data_type);
} else if (op->type == OperatorType::kTensorFlowUnsupported) {
auto* unsupported_op = static_cast<TensorFlowUnsupportedOperator*>(op);
- if (unsupported_op->output_data_types.size() != op->outputs.size()) {
+ // Some output tensors from the op could be eliminated by optimization.
+ // This can make unsupported_op->output_data_types have more elements than
+ // op->outputs.
+ if (unsupported_op->output_data_types.size() < op->outputs.size()) {
return false;
}
- for (int i = 0; i < unsupported_op->output_data_types.size(); ++i) {
+ for (int i = 0; i < op->outputs.size(); ++i) {
auto output = op->outputs[i];
auto data_type = unsupported_op->output_data_types[i];
model->GetArray(output).data_type = data_type;