From 54a26c673ec382dbaa9d8d28e0993e232f7df21b Mon Sep 17 00:00:00 2001 From: Jian Li Date: Tue, 3 Sep 2019 07:50:11 -0700 Subject: [PATCH] Bound quantized clipping properly. PiperOrigin-RevId: 266927331 --- tensorflow/lite/kernels/lstm.cc | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/tensorflow/lite/kernels/lstm.cc b/tensorflow/lite/kernels/lstm.cc index 55fcf4124d2..7ace5333991 100644 --- a/tensorflow/lite/kernels/lstm.cc +++ b/tensorflow/lite/kernels/lstm.cc @@ -137,14 +137,15 @@ TfLiteStatus PopulateQuantizedLstmParams( auto* proj_params = reinterpret_cast( output_tensor->quantization.params); if (cell_clip > 0.0) { - quantized_lstm_param->quantized_cell_clip = - static_cast(cell_clip / cell_params->scale->data[0]); + quantized_lstm_param->quantized_cell_clip = static_cast( + std::min(std::max(cell_clip / cell_params->scale->data[0], -32768.0f), + 32767.0f)); } else { quantized_lstm_param->quantized_cell_clip = 0; } if (proj_clip > 0.0) { - quantized_lstm_param->quantized_proj_clip = - static_cast(proj_clip / proj_params->scale->data[0]); + quantized_lstm_param->quantized_proj_clip = static_cast(std::min( + std::max(proj_clip / proj_params->scale->data[0], -128.0f), 127.0f)); } else { quantized_lstm_param->quantized_proj_clip = 0; }