@@ -30,8 +30,8 @@ class LoDTensorTester : public ::testing::Test {
30
30
// 0 5 10 15 20
31
31
// 0 2 5 7 10 12 15 20
32
32
LoD lod;
33
- lod.push_back (std::vector<size_t >{0 , 10 , 20 });
34
- lod.push_back (std::vector<size_t >{0 , 5 , 10 , 15 , 20 });
33
+ lod.push_back (std::vector<size_t >{0 , 2 , 3 });
34
+ lod.push_back (std::vector<size_t >{0 , 2 , 5 , 8 });
35
35
lod.push_back (std::vector<size_t >{0 , 2 , 5 , 7 , 10 , 12 , 15 , 17 , 20 });
36
36
37
37
ASSERT_EQ (lod.size (), 3UL );
@@ -52,14 +52,14 @@ TEST_F(LoDTensorTester, NumLevels) { ASSERT_EQ(lod_tensor_.NumLevels(), 3UL); }
52
52
53
53
TEST_F (LoDTensorTester, NumElements) {
54
54
ASSERT_EQ (lod_tensor_.NumElements (0 ), 2UL );
55
- ASSERT_EQ (lod_tensor_.NumElements (1 ), 4UL );
55
+ ASSERT_EQ (lod_tensor_.NumElements (1 ), 3UL );
56
56
ASSERT_EQ (lod_tensor_.NumElements (2 ), 8UL );
57
57
}
58
58
59
59
TEST_F (LoDTensorTester, NumElements2) {
60
60
ASSERT_EQ (lod_tensor_.NumElements (0 , 0 ), 2UL );
61
- ASSERT_EQ (lod_tensor_.NumElements (0 , 1 ), 2UL );
62
- ASSERT_EQ (lod_tensor_.NumElements (1 , 1 ), 2UL );
61
+ ASSERT_EQ (lod_tensor_.NumElements (0 , 1 ), 1UL );
62
+ ASSERT_EQ (lod_tensor_.NumElements (1 , 1 ), 3UL );
63
63
}
64
64
65
65
TEST_F (LoDTensorTester, ShrinkLevels) {
@@ -68,37 +68,36 @@ TEST_F(LoDTensorTester, ShrinkLevels) {
68
68
LoDTensor new_lod_tensor = lod_tensor_;
69
69
new_lod_tensor.ShrinkLevels (level, level + 1 );
70
70
ASSERT_EQ (new_lod_tensor.NumLevels (), 1UL );
71
- ASSERT_EQ (new_lod_tensor.NumElements (0 ), lod_tensor_.NumElements (level));
72
71
ASSERT_EQ (new_lod_tensor.data <float >(), lod_tensor_.data <float >());
73
72
}
74
73
// shrink 2 level
75
74
for (size_t level = 0 ; level < 2UL ; ++level) {
76
75
LoDTensor new_lod_tensor = lod_tensor_;
77
76
new_lod_tensor.ShrinkLevels (level, level + 2 );
77
+ // the lowest level's last element should be the tensor's batch_size.
78
+ ASSERT_EQ (new_lod_tensor.lod ().back ().back (),
79
+ lod_tensor_.lod ().back ().back ());
78
80
ASSERT_EQ (new_lod_tensor.NumLevels (), 2UL );
79
- ASSERT_EQ (new_lod_tensor.NumElements (0 ), lod_tensor_.NumElements (level));
80
- ASSERT_EQ (new_lod_tensor.NumElements (1 ),
81
- lod_tensor_.NumElements (level + 1 ));
82
81
ASSERT_EQ (new_lod_tensor.data <float >(), lod_tensor_.data <float >());
83
82
}
84
83
}
85
84
86
85
TEST_F (LoDTensorTester, ShrinkInLevel) {
87
86
size_t level = 0 ;
88
87
LoDTensor new_lod_tensor = lod_tensor_;
89
- new_lod_tensor.ShrinkInLevel (level, 0 , 2 );
88
+ new_lod_tensor.ShrinkInLevel (level, 0 , 1 );
90
89
EXPECT_EQ (new_lod_tensor.NumLevels (), 3UL );
91
- EXPECT_EQ (new_lod_tensor.NumElements (0 ), 2UL );
92
- EXPECT_EQ (new_lod_tensor.NumElements (1 ), 4UL );
93
- EXPECT_EQ (new_lod_tensor.NumElements (2 ), 8UL );
90
+ EXPECT_EQ (new_lod_tensor.NumElements (0 ), 1UL );
91
+ EXPECT_EQ (new_lod_tensor.NumElements (1 ), 2UL );
92
+ EXPECT_EQ (new_lod_tensor.NumElements (2 ), 5UL );
94
93
ASSERT_EQ (new_lod_tensor.data <float >(), lod_tensor_.data <float >());
95
94
96
95
level = 1 ;
97
96
new_lod_tensor = lod_tensor_;
98
- new_lod_tensor.ShrinkInLevel (level, 0 , 2 );
97
+ new_lod_tensor.ShrinkInLevel (level, 1 , 2 );
99
98
ASSERT_EQ (new_lod_tensor.NumLevels (), 2UL );
100
- ASSERT_EQ (new_lod_tensor.NumElements (0 ), 2UL );
101
- ASSERT_EQ (new_lod_tensor.NumElements (1 ), 4UL );
99
+ ASSERT_EQ (new_lod_tensor.NumElements (0 ), 1UL );
100
+ ASSERT_EQ (new_lod_tensor.NumElements (1 ), 3UL );
102
101
ASSERT_EQ (new_lod_tensor.data <float >(), lod_tensor_.data <float >());
103
102
}
104
103
0 commit comments