From da0dcb21501b765932e392ae710ebbecefeb309c Mon Sep 17 00:00:00 2001 From: "A. Unique TensorFlower" Date: Thu, 3 May 2018 23:36:02 -0700 Subject: [PATCH] Internal change. PiperOrigin-RevId: 195374319 --- .../lite/kernels/bidirectional_sequence_lstm.cc | 6 ++--- tensorflow/contrib/lite/kernels/kernel_util.h | 4 ++++ tensorflow/contrib/lite/kernels/lstm.cc | 4 ++-- tensorflow/contrib/lite/kernels/mean.cc | 16 ++++++------- tensorflow/contrib/lite/kernels/svdf.cc | 26 ++++++++++------------ .../lite/kernels/unidirectional_sequence_lstm.cc | 4 ++-- 6 files changed, 30 insertions(+), 30 deletions(-) diff --git a/tensorflow/contrib/lite/kernels/bidirectional_sequence_lstm.cc b/tensorflow/contrib/lite/kernels/bidirectional_sequence_lstm.cc index 3ac0210..a35ba23 100644 --- a/tensorflow/contrib/lite/kernels/bidirectional_sequence_lstm.cc +++ b/tensorflow/contrib/lite/kernels/bidirectional_sequence_lstm.cc @@ -365,8 +365,7 @@ TfLiteStatus Prepare(TfLiteContext* context, TfLiteNode* node) { TfLiteIntArrayFree(node->temporaries); node->temporaries = TfLiteIntArrayCreate(2); node->temporaries->data[0] = *scratch_tensor_index; - TfLiteTensor* fw_scratch_buffer = - &context->tensors[node->temporaries->data[0]]; + TfLiteTensor* fw_scratch_buffer = GetTemporary(context, node, /*index=*/0); fw_scratch_buffer->type = input->type; fw_scratch_buffer->allocation_type = kTfLiteArenaRw; @@ -434,8 +433,7 @@ TfLiteStatus Prepare(TfLiteContext* context, TfLiteNode* node) { // Create a scratch buffer tensor. node->temporaries->data[1] = *(scratch_tensor_index) + 1; - TfLiteTensor* bw_scratch_buffer = - &context->tensors[node->temporaries->data[1]]; + TfLiteTensor* bw_scratch_buffer = GetTemporary(context, node, /*index=*/1); bw_scratch_buffer->type = input->type; bw_scratch_buffer->allocation_type = kTfLiteArenaRw; diff --git a/tensorflow/contrib/lite/kernels/kernel_util.h b/tensorflow/contrib/lite/kernels/kernel_util.h index 2f407b5..e225443 100644 --- a/tensorflow/contrib/lite/kernels/kernel_util.h +++ b/tensorflow/contrib/lite/kernels/kernel_util.h @@ -32,6 +32,10 @@ inline TfLiteTensor* GetOutput(TfLiteContext* context, TfLiteNode* node, int index) { return &context->tensors[node->outputs->data[index]]; } +inline TfLiteTensor* GetTemporary(TfLiteContext* context, TfLiteNode* node, + int index) { + return &context->tensors[node->temporaries->data[index]]; +} inline int NumInputs(const TfLiteNode* node) { return node->inputs->size; } inline int NumOutputs(const TfLiteNode* node) { return node->outputs->size; } diff --git a/tensorflow/contrib/lite/kernels/lstm.cc b/tensorflow/contrib/lite/kernels/lstm.cc index 668226e..a1521ef 100644 --- a/tensorflow/contrib/lite/kernels/lstm.cc +++ b/tensorflow/contrib/lite/kernels/lstm.cc @@ -290,7 +290,7 @@ TfLiteStatus Prepare(TfLiteContext* context, TfLiteNode* node) { TfLiteIntArrayFree(node->temporaries); node->temporaries = TfLiteIntArrayCreate(1); node->temporaries->data[0] = *scratch_tensor_index; - TfLiteTensor* scratch_buffer = &context->tensors[node->temporaries->data[0]]; + TfLiteTensor* scratch_buffer = GetTemporary(context, node, /*index=*/0); scratch_buffer->type = input->type; scratch_buffer->allocation_type = kTfLiteArenaRw; @@ -378,7 +378,7 @@ TfLiteStatus Eval(TfLiteContext* context, TfLiteNode* node) { const bool use_peephole = (cell_to_output_weights != nullptr); // Index the scratch buffers pointers to the global scratch buffer. - TfLiteTensor* scratch_buffer = &context->tensors[node->temporaries->data[0]]; + TfLiteTensor* scratch_buffer = GetTemporary(context, node, /*index=*/0); float* input_gate_scratch = nullptr; float* cell_scratch = nullptr; diff --git a/tensorflow/contrib/lite/kernels/mean.cc b/tensorflow/contrib/lite/kernels/mean.cc index 047bdd1..98f80e3 100644 --- a/tensorflow/contrib/lite/kernels/mean.cc +++ b/tensorflow/contrib/lite/kernels/mean.cc @@ -146,7 +146,7 @@ TfLiteStatus InitializeTemporaries(TfLiteContext* context, TfLiteNode* node, TfLiteIntArrayFree(node->temporaries); node->temporaries = TfLiteIntArrayCreate(3); node->temporaries->data[0] = *scratch_tensor_index; - TfLiteTensor* scratch_tensor = &context->tensors[node->temporaries->data[0]]; + TfLiteTensor* scratch_tensor = GetTemporary(context, node, /*index=*/0); scratch_tensor->type = kTfLiteInt32; scratch_tensor->allocation_type = kTfLiteArenaRw; TfLiteIntArray* index_size = TfLiteIntArrayCreate(1); @@ -156,11 +156,11 @@ TfLiteStatus InitializeTemporaries(TfLiteContext* context, TfLiteNode* node, // Creates a temp tensor to store resolved axis given input data. node->temporaries->data[1] = *scratch_tensor_index + 1; - TfLiteTensor* resolved_axis = &context->tensors[node->temporaries->data[1]]; + TfLiteTensor* resolved_axis = GetTemporary(context, node, /*index=*/1); resolved_axis->type = kTfLiteInt32; // Creates a temp tensor to store temp sums when calculating mean. node->temporaries->data[2] = *scratch_tensor_index + 2; - TfLiteTensor* temp_sum = &context->tensors[node->temporaries->data[2]]; + TfLiteTensor* temp_sum = GetTemporary(context, node, /*index=*/2); switch (op_context->input->type) { case kTfLiteFloat32: temp_sum->type = kTfLiteFloat32; @@ -187,8 +187,8 @@ TfLiteStatus Prepare(TfLiteContext* context, TfLiteNode* node) { MeanContext op_context(context, node); TF_LITE_ENSURE_OK(context, InitializeTemporaries(context, node, &op_context)); - TfLiteTensor* resolved_axis = &context->tensors[node->temporaries->data[1]]; - TfLiteTensor* temp_sum = &context->tensors[node->temporaries->data[2]]; + TfLiteTensor* resolved_axis = GetTemporary(context, node, /*index=*/1); + TfLiteTensor* temp_sum = GetTemporary(context, node, /*index=*/2); // Leaves work to Eval if axis is not constant; else resizes output. if (!IsConstantTensor(op_context.axis)) { SetTensorToDynamic(op_context.output); @@ -208,9 +208,9 @@ template TfLiteStatus Eval(TfLiteContext* context, TfLiteNode* node) { MeanContext op_context(context, node); int num_axis = static_cast(NumElements(op_context.axis)); - TfLiteTensor* temp_index = &context->tensors[node->temporaries->data[0]]; - TfLiteTensor* resolved_axis = &context->tensors[node->temporaries->data[1]]; - TfLiteTensor* temp_sum = &context->tensors[node->temporaries->data[2]]; + TfLiteTensor* temp_index = GetTemporary(context, node, /*index=*/0); + TfLiteTensor* resolved_axis = GetTemporary(context, node, /*index=*/1); + TfLiteTensor* temp_sum = GetTemporary(context, node, /*index=*/2); // Resize the output tensor if the output tensor is dynamic. if (IsDynamicTensor(op_context.output)) { TF_LITE_ENSURE_OK(context, diff --git a/tensorflow/contrib/lite/kernels/svdf.cc b/tensorflow/contrib/lite/kernels/svdf.cc index c697554..13da51c 100644 --- a/tensorflow/contrib/lite/kernels/svdf.cc +++ b/tensorflow/contrib/lite/kernels/svdf.cc @@ -37,7 +37,7 @@ constexpr int kWeightsFeatureTensor = 1; constexpr int kWeightsTimeTensor = 2; constexpr int kBiasTensor = 3; constexpr int kStateTensor = 0; -constexpr int KOutputTensor = 1; +constexpr int kOutputTensor = 1; void* Init(TfLiteContext* context, const char* buffer, size_t length) { auto* scratch_tensor_index = new int; @@ -59,9 +59,8 @@ TfLiteStatus Prepare(TfLiteContext* context, TfLiteNode* node) { TfLiteTensor* input = &context->tensors[node->inputs->data[kInputTensor]]; TfLiteTensor* weights_feature = - &context->tensors[node->inputs->data[kWeightsFeatureTensor]]; - TfLiteTensor* weights_time = - &context->tensors[node->inputs->data[kWeightsTimeTensor]]; + GetInput(context, node, kWeightsFeatureTensor); + TfLiteTensor* weights_time = GetInput(context, node, kWeightsTimeTensor); // Check all the parameters of tensor match within themselves and match the // input configuration. @@ -79,8 +78,8 @@ TfLiteStatus Prepare(TfLiteContext* context, TfLiteNode* node) { TF_LITE_ASSERT_EQ(bias->dims->data[0], num_units); } - TfLiteTensor* state = &context->tensors[node->outputs->data[kStateTensor]]; - TfLiteTensor* output = &context->tensors[node->outputs->data[KOutputTensor]]; + TfLiteTensor* state = GetOutput(context, node, kStateTensor); + TfLiteTensor* output = GetOutput(context, node, kOutputTensor); // Resize state. // For each batch, the state is a 2-D tensor: memory_size * num_filters @@ -112,7 +111,7 @@ TfLiteStatus Prepare(TfLiteContext* context, TfLiteNode* node) { scratch_size_array->data[0] = batch_size; scratch_size_array->data[1] = num_filters; - TfLiteTensor* scratch_tensor = &context->tensors[node->temporaries->data[0]]; + TfLiteTensor* scratch_tensor = GetTemporary(context, node, /*index=*/0); scratch_tensor->type = input->type; scratch_tensor->allocation_type = kTfLiteArenaRw; TF_LITE_ENSURE_OK(context, context->ResizeTensor(context, scratch_tensor, @@ -124,15 +123,14 @@ TfLiteStatus Prepare(TfLiteContext* context, TfLiteNode* node) { TfLiteStatus Eval(TfLiteContext* context, TfLiteNode* node) { auto* params = reinterpret_cast(node->builtin_data); - TfLiteTensor* input = &context->tensors[node->inputs->data[kInputTensor]]; + TfLiteTensor* input = GetInput(context, node, kInputTensor); TfLiteTensor* weights_feature = - &context->tensors[node->inputs->data[kWeightsFeatureTensor]]; - TfLiteTensor* weights_time = - &context->tensors[node->inputs->data[kWeightsTimeTensor]]; + GetInput(context, node, kWeightsFeatureTensor); + TfLiteTensor* weights_time = GetInput(context, node, kWeightsTimeTensor); - TfLiteTensor* state = &context->tensors[node->outputs->data[kStateTensor]]; - TfLiteTensor* output = &context->tensors[node->outputs->data[KOutputTensor]]; - TfLiteTensor* scratch = &context->tensors[node->temporaries->data[0]]; + TfLiteTensor* state = GetOutput(context, node, kStateTensor); + TfLiteTensor* output = GetOutput(context, node, kOutputTensor); + TfLiteTensor* scratch = GetTemporary(context, node, /*index=*/0); TfLiteTensor* bias = GetOptionalInputTensor(context, node, kBiasTensor); diff --git a/tensorflow/contrib/lite/kernels/unidirectional_sequence_lstm.cc b/tensorflow/contrib/lite/kernels/unidirectional_sequence_lstm.cc index 3c1256d..5987bf6 100644 --- a/tensorflow/contrib/lite/kernels/unidirectional_sequence_lstm.cc +++ b/tensorflow/contrib/lite/kernels/unidirectional_sequence_lstm.cc @@ -292,7 +292,7 @@ TfLiteStatus Prepare(TfLiteContext* context, TfLiteNode* node) { TfLiteIntArrayFree(node->temporaries); node->temporaries = TfLiteIntArrayCreate(1); node->temporaries->data[0] = *scratch_tensor_index; - TfLiteTensor* scratch_buffer = &context->tensors[node->temporaries->data[0]]; + TfLiteTensor* scratch_buffer = GetTemporary(context, node, /*index=*/0); scratch_buffer->type = input->type; scratch_buffer->allocation_type = kTfLiteArenaRw; @@ -381,7 +381,7 @@ TfLiteStatus Eval(TfLiteContext* context, TfLiteNode* node) { const bool use_peephole = (cell_to_output_weights != nullptr); // Index the scratch buffers pointers to the global scratch buffer. - TfLiteTensor* scratch_buffer = &context->tensors[node->temporaries->data[0]]; + TfLiteTensor* scratch_buffer = GetTemporary(context, node, /*index=*/0); float* input_gate_scratch = nullptr; float* cell_scratch = nullptr; float* forget_gate_scratch = nullptr; -- 2.7.4