diff options
Diffstat (limited to 'tensorflow/core/framework/tensor_test.cc')
-rw-r--r-- | tensorflow/core/framework/tensor_test.cc | 217 |
1 files changed, 183 insertions, 34 deletions
diff --git a/tensorflow/core/framework/tensor_test.cc b/tensorflow/core/framework/tensor_test.cc index 424b4579d3..2d756ef2c3 100644 --- a/tensorflow/core/framework/tensor_test.cc +++ b/tensorflow/core/framework/tensor_test.cc @@ -202,11 +202,18 @@ TEST(Tensor_QInt32, Simple) { TestCopies<qint32>(t); } -TEST(Tensor_Float, Reshape) { - Tensor t(DT_FLOAT, TensorShape({2, 3, 4, 5})); - EXPECT_TRUE(t.shape().IsSameSize(TensorShape({2, 3, 4, 5}))); +class TensorReshapeTest : public ::testing::Test { +protected: + Tensor t; + Tensor zero_t; + + TensorReshapeTest() : t(DT_FLOAT, TensorShape({2, 3, 4, 5})), + zero_t(DT_FLOAT, TensorShape({3, 0, 2, 0, 5})) {} + + virtual void SetUp() { + EXPECT_TRUE(t.shape().IsSameSize(TensorShape({2, 3, 4, 5}))); + EXPECT_TRUE(zero_t.shape().IsSameSize(TensorShape({3, 0, 2, 0, 5}))); - { auto tensor = t.tensor<float, 4>(); EXPECT_EQ(2, tensor.dimension(0)); EXPECT_EQ(3, tensor.dimension(1)); @@ -217,6 +224,11 @@ TEST(Tensor_Float, Reshape) { tensor(0, 0, 0, 0) = 0.01f; tensor(1, 2, 3, 4) = 0.02f; } + +}; + +TEST_F(TensorReshapeTest, Reshape) { + LOG(INFO) << "shaped"; { auto shaped = t.shaped<float, 1>({120}); EXPECT_EQ(120, shaped.dimension(0)); @@ -248,6 +260,10 @@ TEST(Tensor_Float, Reshape) { EXPECT_EQ(shaped(0, 0, 0, 0), 0.01f); EXPECT_EQ(shaped(1, 2, 3, 4), 0.02f); } +} + +TEST_F(TensorReshapeTest, Flat) { + LOG(INFO) << "flat"; { auto flat = t.flat<float>(); EXPECT_EQ(flat(0), 0.01f); @@ -255,6 +271,10 @@ TEST(Tensor_Float, Reshape) { EXPECT_EQ(flat(0), 0.01f); EXPECT_EQ(flat(119), 0.02f); } +} + +TEST_F(TensorReshapeTest, FlatInnerDims) { + LOG(INFO) << "flat_inner_dims"; { auto flat_inner_dims = t.flat_inner_dims<float>(); EXPECT_EQ(24, flat_inner_dims.dimension(0)); @@ -263,13 +283,6 @@ TEST(Tensor_Float, Reshape) { EXPECT_EQ(flat_inner_dims(23, 4), 0.02f); } { - auto flat_outer_dims = t.flat_outer_dims<float>(); - EXPECT_EQ(2, flat_outer_dims.dimension(0)); - EXPECT_EQ(60, flat_outer_dims.dimension(1)); - EXPECT_EQ(flat_outer_dims(0, 0), 0.01f); - EXPECT_EQ(flat_outer_dims(1, 59), 0.02f); - } - { auto flat_inner_dims = t.flat_inner_dims<float, 3>(); EXPECT_EQ(6, flat_inner_dims.dimension(0)); EXPECT_EQ(4, flat_inner_dims.dimension(1)); @@ -278,14 +291,6 @@ TEST(Tensor_Float, Reshape) { EXPECT_EQ(flat_inner_dims(5, 3, 4), 0.02f); } { - auto flat_outer_dims = t.flat_outer_dims<float, 3>(); - EXPECT_EQ(2, flat_outer_dims.dimension(0)); - EXPECT_EQ(3, flat_outer_dims.dimension(1)); - EXPECT_EQ(20, flat_outer_dims.dimension(2)); - EXPECT_EQ(flat_outer_dims(0, 0, 0), 0.01f); - EXPECT_EQ(flat_outer_dims(1, 2, 19), 0.02f); - } - { auto flat_inner_dims = t.flat_inner_dims<float, 5>(); EXPECT_EQ(1, flat_inner_dims.dimension(0)); EXPECT_EQ(2, flat_inner_dims.dimension(1)); @@ -296,6 +301,44 @@ TEST(Tensor_Float, Reshape) { EXPECT_EQ(flat_inner_dims(0, 1, 2, 3, 4), 0.02f); } { + auto flat_inner_dims = zero_t.flat_inner_dims<float>(); + EXPECT_EQ(0, flat_inner_dims.dimension(0)); + EXPECT_EQ(5, flat_inner_dims.dimension(1)); + } + { + auto flat_inner_dims = zero_t.flat_inner_dims<float, 3>(); + EXPECT_EQ(0, flat_inner_dims.dimension(0)); + EXPECT_EQ(0, flat_inner_dims.dimension(1)); + EXPECT_EQ(5, flat_inner_dims.dimension(2)); + } + { + auto flat_inner_dims = zero_t.flat_inner_dims<float, 5>(); + EXPECT_EQ(3, flat_inner_dims.dimension(0)); + EXPECT_EQ(0, flat_inner_dims.dimension(1)); + EXPECT_EQ(2, flat_inner_dims.dimension(2)); + EXPECT_EQ(0, flat_inner_dims.dimension(3)); + EXPECT_EQ(5, flat_inner_dims.dimension(4)); + } +} + +TEST_F(TensorReshapeTest, FlatOuterDims) { + LOG(INFO) << "flat_outer_dims"; + { + auto flat_outer_dims = t.flat_outer_dims<float>(); + EXPECT_EQ(2, flat_outer_dims.dimension(0)); + EXPECT_EQ(60, flat_outer_dims.dimension(1)); + EXPECT_EQ(flat_outer_dims(0, 0), 0.01f); + EXPECT_EQ(flat_outer_dims(1, 59), 0.02f); + } + { + auto flat_outer_dims = t.flat_outer_dims<float, 3>(); + EXPECT_EQ(2, flat_outer_dims.dimension(0)); + EXPECT_EQ(3, flat_outer_dims.dimension(1)); + EXPECT_EQ(20, flat_outer_dims.dimension(2)); + EXPECT_EQ(flat_outer_dims(0, 0, 0), 0.01f); + EXPECT_EQ(flat_outer_dims(1, 2, 19), 0.02f); + } + { auto flat_outer_dims = t.flat_outer_dims<float, 5>(); EXPECT_EQ(2, flat_outer_dims.dimension(0)); EXPECT_EQ(3, flat_outer_dims.dimension(1)); @@ -305,8 +348,6 @@ TEST(Tensor_Float, Reshape) { EXPECT_EQ(flat_outer_dims(0, 0, 0, 0, 0), 0.01f); EXPECT_EQ(flat_outer_dims(1, 2, 3, 4, 0), 0.02f); } - - Tensor zero_t(DT_FLOAT, TensorShape({3, 0, 2, 0, 5})); { auto flat_outer_dims = zero_t.flat_outer_dims<float>(); EXPECT_EQ(3, flat_outer_dims.dimension(0)); @@ -326,24 +367,132 @@ TEST(Tensor_Float, Reshape) { EXPECT_EQ(0, flat_outer_dims.dimension(3)); EXPECT_EQ(5, flat_outer_dims.dimension(4)); } +} + +TEST_F(TensorReshapeTest, FlatInnerOuterDims) { + LOG(INFO) << "flat_inner_outer_dims"; { - auto flat_inner_dims = zero_t.flat_inner_dims<float>(); - EXPECT_EQ(0, flat_inner_dims.dimension(0)); - EXPECT_EQ(5, flat_inner_dims.dimension(1)); + auto flat_inner_outer_dims = t.flat_inner_outer_dims<float, 4>(0); + EXPECT_EQ(2, flat_inner_outer_dims.dimension(0)); + EXPECT_EQ(3, flat_inner_outer_dims.dimension(1)); + EXPECT_EQ(4, flat_inner_outer_dims.dimension(2)); + EXPECT_EQ(5, flat_inner_outer_dims.dimension(3)); + EXPECT_EQ(flat_inner_outer_dims(0, 0, 0, 0), 0.01f); + EXPECT_EQ(flat_inner_outer_dims(1, 2, 3, 4), 0.02f); } { - auto flat_inner_dims = zero_t.flat_inner_dims<float, 3>(); - EXPECT_EQ(0, flat_inner_dims.dimension(0)); - EXPECT_EQ(0, flat_inner_dims.dimension(1)); - EXPECT_EQ(5, flat_inner_dims.dimension(2)); + auto flat_inner_outer_dims = t.flat_inner_outer_dims<float, 6>(-2); + EXPECT_EQ(1, flat_inner_outer_dims.dimension(0)); + EXPECT_EQ(1, flat_inner_outer_dims.dimension(1)); + EXPECT_EQ(2, flat_inner_outer_dims.dimension(2)); + EXPECT_EQ(3, flat_inner_outer_dims.dimension(3)); + EXPECT_EQ(4, flat_inner_outer_dims.dimension(4)); + EXPECT_EQ(5, flat_inner_outer_dims.dimension(5)); + EXPECT_EQ(flat_inner_outer_dims(0, 0, 0, 0, 0, 0), 0.01f); + EXPECT_EQ(flat_inner_outer_dims(0, 0, 1, 2, 3, 4), 0.02f); } { - auto flat_inner_dims = zero_t.flat_inner_dims<float, 5>(); - EXPECT_EQ(3, flat_inner_dims.dimension(0)); - EXPECT_EQ(0, flat_inner_dims.dimension(1)); - EXPECT_EQ(2, flat_inner_dims.dimension(2)); - EXPECT_EQ(0, flat_inner_dims.dimension(3)); - EXPECT_EQ(5, flat_inner_dims.dimension(4)); + auto flat_inner_outer_dims = t.flat_inner_outer_dims<float, 6>(0); + EXPECT_EQ(2, flat_inner_outer_dims.dimension(0)); + EXPECT_EQ(3, flat_inner_outer_dims.dimension(1)); + EXPECT_EQ(4, flat_inner_outer_dims.dimension(2)); + EXPECT_EQ(5, flat_inner_outer_dims.dimension(3)); + EXPECT_EQ(1, flat_inner_outer_dims.dimension(4)); + EXPECT_EQ(1, flat_inner_outer_dims.dimension(5)); + EXPECT_EQ(flat_inner_outer_dims(0, 0, 0, 0, 0, 0), 0.01f); + EXPECT_EQ(flat_inner_outer_dims(1, 2, 3, 4, 0, 0), 0.02f); + } + { + auto flat_inner_outer_dims = t.flat_inner_outer_dims<float, 8>(-2); + EXPECT_EQ(1, flat_inner_outer_dims.dimension(0)); + EXPECT_EQ(1, flat_inner_outer_dims.dimension(1)); + EXPECT_EQ(2, flat_inner_outer_dims.dimension(2)); + EXPECT_EQ(3, flat_inner_outer_dims.dimension(3)); + EXPECT_EQ(4, flat_inner_outer_dims.dimension(4)); + EXPECT_EQ(5, flat_inner_outer_dims.dimension(5)); + EXPECT_EQ(1, flat_inner_outer_dims.dimension(6)); + EXPECT_EQ(1, flat_inner_outer_dims.dimension(7)); + EXPECT_EQ(flat_inner_outer_dims(0, 0, 0, 0, 0, 0, 0, 0), 0.01f); + EXPECT_EQ(flat_inner_outer_dims(0, 0, 1, 2, 3, 4, 0, 0), 0.02f); + } + { + auto flat_inner_outer_dims = t.flat_inner_outer_dims<float, 3>(1); + EXPECT_EQ(6, flat_inner_outer_dims.dimension(0)); + EXPECT_EQ(4, flat_inner_outer_dims.dimension(1)); + EXPECT_EQ(5, flat_inner_outer_dims.dimension(2)); + EXPECT_EQ(flat_inner_outer_dims(0, 0, 0), 0.01f); + EXPECT_EQ(flat_inner_outer_dims(5, 3, 4), 0.02f); + } + { + auto flat_inner_outer_dims = t.flat_inner_outer_dims<float, 5>(1); + EXPECT_EQ(6, flat_inner_outer_dims.dimension(0)); + EXPECT_EQ(4, flat_inner_outer_dims.dimension(1)); + EXPECT_EQ(5, flat_inner_outer_dims.dimension(2)); + EXPECT_EQ(1, flat_inner_outer_dims.dimension(3)); + EXPECT_EQ(1, flat_inner_outer_dims.dimension(4)); + EXPECT_EQ(flat_inner_outer_dims(0, 0, 0, 0, 0), 0.01f); + EXPECT_EQ(flat_inner_outer_dims(5, 3, 4, 0, 0), 0.02f); + } + { + auto flat_inner_outer_dims = t.flat_inner_outer_dims<float, 3>(0); + EXPECT_EQ(2, flat_inner_outer_dims.dimension(0)); + EXPECT_EQ(3, flat_inner_outer_dims.dimension(1)); + EXPECT_EQ(20, flat_inner_outer_dims.dimension(2)); + EXPECT_EQ(flat_inner_outer_dims(0, 0, 0), 0.01f); + EXPECT_EQ(flat_inner_outer_dims(1, 2, 19), 0.02f); + } + { + auto flat_inner_outer_dims = t.flat_inner_outer_dims<float, 5>(-2); + EXPECT_EQ(1, flat_inner_outer_dims.dimension(0)); + EXPECT_EQ(1, flat_inner_outer_dims.dimension(1)); + EXPECT_EQ(2, flat_inner_outer_dims.dimension(2)); + EXPECT_EQ(3, flat_inner_outer_dims.dimension(3)); + EXPECT_EQ(20, flat_inner_outer_dims.dimension(4)); + EXPECT_EQ(flat_inner_outer_dims(0, 0, 0, 0, 0), 0.01f); + EXPECT_EQ(flat_inner_outer_dims(0, 0, 1, 2, 19), 0.02f); + } + { + auto flat_inner_outer_dims = t.flat_inner_outer_dims<float, 2>(1); + EXPECT_EQ(6, flat_inner_outer_dims.dimension(0)); + EXPECT_EQ(20, flat_inner_outer_dims.dimension(1)); + EXPECT_EQ(flat_inner_outer_dims(0, 0), 0.01f); + EXPECT_EQ(flat_inner_outer_dims(5, 19), 0.02f); + } + { + auto flat_inner_outer_dims = zero_t.flat_inner_outer_dims<float, 2>(0); + EXPECT_EQ(3, flat_inner_outer_dims.dimension(0)); + EXPECT_EQ(0, flat_inner_outer_dims.dimension(1)); + } + { + auto flat_inner_outer_dims = zero_t.flat_inner_outer_dims<float, 3>(0); + EXPECT_EQ(3, flat_inner_outer_dims.dimension(0)); + EXPECT_EQ(0, flat_inner_outer_dims.dimension(1)); + EXPECT_EQ(0, flat_inner_outer_dims.dimension(2)); + } + { + auto flat_inner_outer_dims = zero_t.flat_inner_outer_dims<float, 5>(0); + EXPECT_EQ(3, flat_inner_outer_dims.dimension(0)); + EXPECT_EQ(0, flat_inner_outer_dims.dimension(1)); + EXPECT_EQ(2, flat_inner_outer_dims.dimension(2)); + EXPECT_EQ(0, flat_inner_outer_dims.dimension(3)); + EXPECT_EQ(5, flat_inner_outer_dims.dimension(4)); + } + { + auto flat_inner_outer_dims = zero_t.flat_inner_outer_dims<float, 2>(3); + EXPECT_EQ(0, flat_inner_outer_dims.dimension(0)); + EXPECT_EQ(5, flat_inner_outer_dims.dimension(1)); + } + { + auto flat_inner_outer_dims = zero_t.flat_inner_outer_dims<float, 3>(2); + EXPECT_EQ(0, flat_inner_outer_dims.dimension(0)); + EXPECT_EQ(0, flat_inner_outer_dims.dimension(1)); + EXPECT_EQ(5, flat_inner_outer_dims.dimension(2)); + } + { + auto flat_inner_outer_dims = zero_t.flat_inner_outer_dims<float, 3>(1); + EXPECT_EQ(0, flat_inner_outer_dims.dimension(0)); + EXPECT_EQ(2, flat_inner_outer_dims.dimension(1)); + EXPECT_EQ(0, flat_inner_outer_dims.dimension(2)); } } |