aboutsummaryrefslogtreecommitdiffhomepage
path: root/tensorflow/core/framework/tensor_test.cc
diff options
context:
space:
mode:
Diffstat (limited to 'tensorflow/core/framework/tensor_test.cc')
-rw-r--r--tensorflow/core/framework/tensor_test.cc217
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));
}
}