aboutsummaryrefslogtreecommitdiffhomepage
path: root/tensorflow/contrib/lite/kernels/squeeze_test.cc
diff options
context:
space:
mode:
authorGravatar A. Unique TensorFlower <gardener@tensorflow.org>2018-01-18 13:31:04 -0800
committerGravatar TensorFlower Gardener <gardener@tensorflow.org>2018-01-18 13:34:51 -0800
commit45c47cabe7150386420b182a8026699ff704b8f4 (patch)
tree675246e399521be14e0f369c3507ad3d3bd5f673 /tensorflow/contrib/lite/kernels/squeeze_test.cc
parent053470bc1a06b5f1cc65605bf21d48b3e92d6857 (diff)
Supports Squeeze in Tf Lite.
PiperOrigin-RevId: 182429180
Diffstat (limited to 'tensorflow/contrib/lite/kernels/squeeze_test.cc')
-rw-r--r--tensorflow/contrib/lite/kernels/squeeze_test.cc113
1 files changed, 113 insertions, 0 deletions
diff --git a/tensorflow/contrib/lite/kernels/squeeze_test.cc b/tensorflow/contrib/lite/kernels/squeeze_test.cc
new file mode 100644
index 0000000000..409227b626
--- /dev/null
+++ b/tensorflow/contrib/lite/kernels/squeeze_test.cc
@@ -0,0 +1,113 @@
+/* Copyright 2018 The TensorFlow Authors. All Rights Reserved.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+==============================================================================*/
+#include <gtest/gtest.h>
+#include "tensorflow/contrib/lite/interpreter.h"
+#include "tensorflow/contrib/lite/kernels/register.h"
+#include "tensorflow/contrib/lite/kernels/test_util.h"
+#include "tensorflow/contrib/lite/model.h"
+
+namespace tflite {
+namespace {
+
+using ::testing::ElementsAreArray;
+
+class BaseSqueezeOpModel : public SingleOpModel {
+ public:
+ BaseSqueezeOpModel(const TensorData& input, const TensorData& output,
+ std::initializer_list<int> axis) {
+ input_ = AddInput(input);
+ output_ = AddOutput(output);
+ SetBuiltinOp(
+ BuiltinOperator_SQUEEZE, BuiltinOptions_SqueezeOptions,
+ CreateSqueezeOptions(builder_, builder_.CreateVector<int>(axis))
+ .Union());
+ BuildInterpreter({GetShape(input_)});
+ }
+
+ int input() { return input_; }
+
+ protected:
+ int input_;
+ int output_;
+};
+
+class FloatSqueezeOpModel : public BaseSqueezeOpModel {
+ public:
+ using BaseSqueezeOpModel::BaseSqueezeOpModel;
+
+ void SetInput(std::initializer_list<float> data) {
+ PopulateTensor(input_, data);
+ }
+
+ std::vector<float> GetOutput() { return ExtractVector<float>(output_); }
+ std::vector<int> GetOutputShape() { return GetTensorShape(output_); }
+};
+
+TEST(FloatSqueezeOpTest, SqueezeAll) {
+ std::initializer_list<float> data = {
+ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0,
+ 13.0, 14.0, 15.0, 16.0, 17.0, 18.0, 19.0, 20.0, 21.0, 22.0, 23.0, 24.0};
+ FloatSqueezeOpModel m({TensorType_FLOAT32, {1, 24, 1}},
+ {TensorType_FLOAT32, {24}}, {});
+ m.SetInput(data);
+ m.Invoke();
+ EXPECT_THAT(m.GetOutputShape(), ElementsAreArray({24}));
+ EXPECT_THAT(
+ m.GetOutput(),
+ ElementsAreArray({1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0,
+ 9.0, 10.0, 11.0, 12.0, 13.0, 14.0, 15.0, 16.0,
+ 17.0, 18.0, 19.0, 20.0, 21.0, 22.0, 23.0, 24.0}));
+}
+
+TEST(FloatSqueezeOpTest, SqueezeSelectedAxis) {
+ std::initializer_list<float> data = {
+ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0,
+ 13.0, 14.0, 15.0, 16.0, 17.0, 18.0, 19.0, 20.0, 21.0, 22.0, 23.0, 24.0};
+ FloatSqueezeOpModel m({TensorType_FLOAT32, {1, 24, 1}},
+ {TensorType_FLOAT32, {24}}, {2});
+ m.SetInput(data);
+ m.Invoke();
+ EXPECT_THAT(m.GetOutputShape(), ElementsAreArray({1, 24}));
+ EXPECT_THAT(
+ m.GetOutput(),
+ ElementsAreArray({1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0,
+ 9.0, 10.0, 11.0, 12.0, 13.0, 14.0, 15.0, 16.0,
+ 17.0, 18.0, 19.0, 20.0, 21.0, 22.0, 23.0, 24.0}));
+}
+
+TEST(FloatSqueezeOpTest, SqueezeNegativeAxis) {
+ std::initializer_list<float> data = {
+ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0,
+ 13.0, 14.0, 15.0, 16.0, 17.0, 18.0, 19.0, 20.0, 21.0, 22.0, 23.0, 24.0};
+ FloatSqueezeOpModel m({TensorType_FLOAT32, {1, 24, 1}},
+ {TensorType_FLOAT32, {24}}, {-1, 0});
+ m.SetInput(data);
+ m.Invoke();
+ EXPECT_THAT(m.GetOutputShape(), ElementsAreArray({24}));
+ EXPECT_THAT(
+ m.GetOutput(),
+ ElementsAreArray({1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0,
+ 9.0, 10.0, 11.0, 12.0, 13.0, 14.0, 15.0, 16.0,
+ 17.0, 18.0, 19.0, 20.0, 21.0, 22.0, 23.0, 24.0}));
+}
+
+} // namespace
+} // namespace tflite
+
+int main(int argc, char** argv) {
+ ::tflite::LogToStderr();
+ ::testing::InitGoogleTest(&argc, argv);
+ return RUN_ALL_TESTS();
+}