aboutsummaryrefslogtreecommitdiffhomepage
path: root/tensorflow/contrib/reduce_slice_ops/python/kernel_tests/reduce_slice_ops_test.py
diff options
context:
space:
mode:
Diffstat (limited to 'tensorflow/contrib/reduce_slice_ops/python/kernel_tests/reduce_slice_ops_test.py')
-rw-r--r--tensorflow/contrib/reduce_slice_ops/python/kernel_tests/reduce_slice_ops_test.py158
1 files changed, 158 insertions, 0 deletions
diff --git a/tensorflow/contrib/reduce_slice_ops/python/kernel_tests/reduce_slice_ops_test.py b/tensorflow/contrib/reduce_slice_ops/python/kernel_tests/reduce_slice_ops_test.py
new file mode 100644
index 0000000000..8c8db295ff
--- /dev/null
+++ b/tensorflow/contrib/reduce_slice_ops/python/kernel_tests/reduce_slice_ops_test.py
@@ -0,0 +1,158 @@
+# Copyright 2017 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.
+# ==============================================================================
+"""Tests for tensorflow.contrib.reduce_slice_ops."""
+
+from __future__ import absolute_import
+from __future__ import division
+from __future__ import print_function
+
+import numpy as np
+import unittest
+
+from tensorflow.contrib.reduce_slice_ops.python.ops import reduce_slice_ops
+from tensorflow.python.framework.test_util import TensorFlowTestCase
+from tensorflow.python.platform import googletest
+
+
+class ReduceSliceTest(TensorFlowTestCase):
+
+ def testReduceSliceSum1D(self):
+ x = np.array([1, 40, 700], dtype=np.int32)
+ indices = np.array([[0, 1], [0, 3], [1, 2], [1, 3], [0, 2]], dtype=np.int32)
+ result = np.array([1, 741, 40, 740, 41], dtype=np.int32)
+ with self.test_session(use_gpu=True):
+ y_tf = reduce_slice_ops.reduce_slice_sum(x, indices, 0).eval()
+ self.assertAllEqual(y_tf, result)
+
+ def testReduceSliceSum2D(self):
+ x = np.array([[1, 2, 3], [40, 50, 60], [700, 800, 900]], dtype=np.int32)
+ indices = np.array([[0, 1], [0, 3], [1, 2], [1, 3], [0, 2]], dtype=np.int32)
+ result = np.array(
+ [[1, 2, 3], [741, 852, 963], [40, 50, 60], [740, 850, 960],
+ [41, 52, 63]],
+ dtype=np.int32)
+ with self.test_session(use_gpu=True):
+ y_tf = reduce_slice_ops.reduce_slice_sum(x, indices, 0).eval()
+ self.assertAllEqual(y_tf, result)
+
+ def testReduceSliceSum3D(self):
+ x = np.array(
+ [[[1, 2], [3, 4]], [[50, 60], [70, 80]], [[600, 700], [800, 900]]],
+ dtype=np.int32)
+ indices = np.array([[0, 1], [0, 3], [1, 2], [1, 3], [0, 2]], dtype=np.int32)
+ result = np.array(
+ [[[1, 2], [3, 4]], [[651, 762], [873, 984]], [[50, 60], [70, 80]],
+ [[650, 760], [870, 980]], [[51, 62], [73, 84]]],
+ dtype=np.int32)
+ with self.test_session(use_gpu=True):
+ y_tf = reduce_slice_ops.reduce_slice_sum(x, indices, 0).eval()
+ self.assertAllEqual(y_tf, result)
+
+ def testReduceSliceSumAxis1(self):
+ x = np.transpose(
+ np.array([[1, 2, 3], [40, 50, 60], [700, 800, 900]], dtype=np.int32))
+ indices = np.array([[0, 1], [0, 3], [1, 2], [1, 3], [0, 2]], dtype=np.int32)
+ result = np.transpose(
+ np.array(
+ [[1, 2, 3], [741, 852, 963], [40, 50, 60], [740, 850, 960],
+ [41, 52, 63]],
+ dtype=np.int32))
+ with self.test_session(use_gpu=True):
+ y_tf = reduce_slice_ops.reduce_slice_sum(x, indices, 1).eval()
+ self.assertAllEqual(y_tf, result)
+
+ def testReduceSliceSum1DIndices(self):
+ x = np.array(
+ [[1, 2, 3], [40, 50, 60], [700, 800, 900], [1000, 2000, 3000],
+ [40000, 50000, 60000]],
+ dtype=np.int32)
+ indices = np.array([0, 0, 2, 5], dtype=np.int32)
+ result = np.array(
+ [[0, 0, 0], [41, 52, 63], [41700, 52800, 63900]], dtype=np.int32)
+ with self.test_session(use_gpu=True):
+ y_tf = reduce_slice_ops.reduce_slice_sum(x, indices, 0).eval()
+ self.assertAllEqual(y_tf, result)
+
+ def testReduceSliceProd(self):
+ x = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]], dtype=np.int32)
+ indices = np.array([[0, 1], [0, 3], [1, 2], [1, 3], [0, 2]], dtype=np.int32)
+ result = np.array(
+ [[1, 2, 3], [28, 80, 162], [4, 5, 6], [28, 40, 54], [4, 10, 18]],
+ dtype=np.int32)
+ with self.test_session(use_gpu=True):
+ y_tf = reduce_slice_ops.reduce_slice_prod(x, indices, 0).eval()
+ self.assertAllEqual(y_tf, result)
+
+ def testReduceSliceMax(self):
+ x = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]], dtype=np.int32)
+ indices = np.array([[0, 1], [0, 3], [1, 2], [1, 3], [0, 2]], dtype=np.int32)
+ result = np.array(
+ [[1, 2, 3], [7, 8, 9], [4, 5, 6], [7, 8, 9], [4, 5, 6]], dtype=np.int32)
+ with self.test_session(use_gpu=True):
+ y_tf = reduce_slice_ops.reduce_slice_max(x, indices, 0).eval()
+ self.assertAllEqual(y_tf, result)
+
+ def testReduceSliceMin(self):
+ x = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]], dtype=np.int32)
+ indices = np.array([[0, 1], [0, 3], [1, 2], [1, 3], [0, 2]], dtype=np.int32)
+ result = np.array(
+ [[1, 2, 3], [1, 2, 3], [4, 5, 6], [4, 5, 6], [1, 2, 3]], dtype=np.int32)
+ with self.test_session(use_gpu=True):
+ y_tf = reduce_slice_ops.reduce_slice_min(x, indices, 0).eval()
+ self.assertAllEqual(y_tf, result)
+
+ def testReduceSliceEmptyDataRows(self):
+ x = np.empty((0, 1, 2, 3, 4, 5, 6), dtype=np.int32)
+ indices = np.array([[0, 1], [0, 3], [1, 2], [1, 3], [0, 2]], dtype=np.int32)
+ result = np.zeros((5, 1, 2, 3, 4, 5, 6), dtype=np.int32)
+ with self.test_session(use_gpu=True):
+ y_tf = reduce_slice_ops.reduce_slice_sum(x, indices, 0).eval()
+ self.assertAllEqual(y_tf, result)
+
+ def testReduceSliceEmptyDataCols(self):
+ x = np.empty((100, 0, 2, 3, 4, 5, 6), dtype=np.int32)
+ indices = np.array([[0, 1], [0, 3], [1, 2], [1, 3], [0, 2]], dtype=np.int32)
+ result = np.empty((5, 0, 2, 3, 4, 5, 6), dtype=np.int32)
+ with self.test_session(use_gpu=True):
+ y_tf = reduce_slice_ops.reduce_slice_sum(x, indices, 0).eval()
+ self.assertAllEqual(y_tf, result)
+
+ def testReduceSliceEmptyIndicesRows(self):
+ x = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]], dtype=np.int32)
+ indices = np.empty((0, 2), dtype=np.int32)
+ result = np.empty((0, 3), dtype=np.int32)
+ with self.test_session(use_gpu=True):
+ y_tf = reduce_slice_ops.reduce_slice_sum(x, indices, 0).eval()
+ self.assertAllEqual(y_tf, result)
+
+ def testReduceSliceEmpty0Indices1D(self):
+ x = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]], dtype=np.int32)
+ indices = np.empty((0,), dtype=np.int32)
+ result = np.empty((0, 3), dtype=np.int32)
+ with self.test_session(use_gpu=True):
+ y_tf = reduce_slice_ops.reduce_slice_sum(x, indices, 0).eval()
+ self.assertAllEqual(y_tf, result)
+
+ def testReduceSliceEmpty1Indices1D(self):
+ x = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]], dtype=np.int32)
+ indices = np.array([0], dtype=np.int32)
+ result = np.empty((0, 3), dtype=np.int32)
+ with self.test_session(use_gpu=True):
+ y_tf = reduce_slice_ops.reduce_slice_sum(x, indices, 0).eval()
+ self.assertAllEqual(y_tf, result)
+
+
+if __name__ == "__main__":
+ googletest.main()