|
13 | 13 | # limitations under the License.
|
14 | 14 |
|
15 | 15 | import paddle.fluid as fluid
|
| 16 | +import unittest |
16 | 17 |
|
17 | 18 |
|
18 |
| -def test_converter(): |
19 |
| - img = fluid.layers.data(name='image', shape=[1, 28, 28]) |
20 |
| - label = fluid.layers.data(name='label', shape=[1], dtype='int64') |
21 |
| - feeder = fluid.DataFeeder([img, label], fluid.CPUPlace()) |
22 |
| - result = feeder.feed([[[0] * 784, [9]], [[1] * 784, [1]]]) |
23 |
| - print(result) |
| 19 | +class TestDataFeeder(unittest.TestCase): |
| 20 | + def test_lod_level_0_converter(self): |
| 21 | + img = fluid.layers.data(name='image', shape=[1, 28, 28]) |
| 22 | + label = fluid.layers.data(name='label', shape=[1], dtype='int64') |
| 23 | + feeder = fluid.DataFeeder([img, label], fluid.CPUPlace()) |
| 24 | + result = feeder.feed([([0] * 784, [9]), ([1] * 784, [1])]) |
| 25 | + print(result) |
| 26 | + |
| 27 | + self.assertEqual(result['image'].shape(), [2, 1, 28, 28]) |
| 28 | + self.assertEqual(result['label'].shape(), [2, 1]) |
| 29 | + self.assertEqual(result['image'].lod(), []) |
| 30 | + self.assertEqual(result['label'].lod(), []) |
| 31 | + |
| 32 | + def test_lod_level_1_converter(self): |
| 33 | + # lod_level = 1 |
| 34 | + # each sentence has a different number of words |
| 35 | + sentences = fluid.layers.data( |
| 36 | + name='sentences', shape=[1], dtype='int64', lod_level=1) |
| 37 | + label = fluid.layers.data(name='label', shape=[1], dtype='int64') |
| 38 | + feeder = fluid.DataFeeder([sentences, label], fluid.CPUPlace()) |
| 39 | + |
| 40 | + # lod = [[0, 3, 5, 9]] |
| 41 | + # data = [[1, 2, 3], [4, 5], [6, 7, 8, 9]] |
| 42 | + # label = [1] * len(data) |
| 43 | + result = feeder.feed( |
| 44 | + [([1, 2, 3], [1]), ([4, 5], [1]), ([6, 7, 8, 9], [1])]) |
| 45 | + print(result) |
| 46 | + |
| 47 | + self.assertEqual(result['sentences'].shape(), [9, 1]) |
| 48 | + self.assertEqual(result['label'].shape(), [3, 1]) |
| 49 | + self.assertEqual(result['sentences'].lod(), [[0, 3, 5, 9]]) |
| 50 | + self.assertEqual(result['label'].lod(), []) |
| 51 | + |
| 52 | + def test_lod_level_2_converter(self): |
| 53 | + # lod_level = 2 |
| 54 | + # paragraphs -> sentences -> words |
| 55 | + paragraphs = fluid.layers.data( |
| 56 | + name='paragraphs', shape=[1], dtype='int64', lod_level=2) |
| 57 | + label = fluid.layers.data(name='label', shape=[1], dtype='int64') |
| 58 | + feeder = fluid.DataFeeder([paragraphs, label], fluid.CPUPlace()) |
| 59 | + |
| 60 | + # lod = [[0, 2, 3], [0, 3, 5, 9]] |
| 61 | + # data = [[[1, 2, 3], [4, 5]], [[6, 7, 8, 9]]] |
| 62 | + # label = [1] * len(data) |
| 63 | + result = feeder.feed( |
| 64 | + [([[1, 2, 3], [4, 5]], [1]), ([[6, 7, 8, 9]], [1])]) |
| 65 | + print(result) |
| 66 | + |
| 67 | + self.assertEqual(result['paragraphs'].shape(), [9, 1]) |
| 68 | + self.assertEqual(result['label'].shape(), [2, 1]) |
| 69 | + self.assertEqual(result['paragraphs'].lod(), [[0, 2, 3], [0, 3, 5, 9]]) |
| 70 | + self.assertEqual(result['label'].lod(), []) |
24 | 71 |
|
25 | 72 |
|
26 | 73 | if __name__ == '__main__':
|
27 |
| - test_converter() |
| 74 | + unittest.main() |
0 commit comments