提交 ce1e0d35 编写于 作者: Q Qiao Longfei

test_py_reader_using_executor support test use_decorate_paddle_reader

上级 ea97e83e
...@@ -58,19 +58,19 @@ def simple_fc_net(in_size, ...@@ -58,19 +58,19 @@ def simple_fc_net(in_size,
if use_feed_list: if use_feed_list:
data = fluid.layers.data(name="data", dtype='float32', shape=[in_size]) data = fluid.layers.data(name="data", dtype='float32', shape=[in_size])
label = fluid.layers.data(name='label', dtype='int64', shape=[1]) label = fluid.layers.data(name='label', dtype='int64', shape=[1])
reader = fluid.layers.create_py_reader_by_data( py_reader = fluid.layers.create_py_reader_by_data(
capacity=queue_capacity, capacity=queue_capacity,
use_double_buffer=False, use_double_buffer=False,
feed_list=[data, label]) feed_list=[data, label])
else: else:
reader = fluid.layers.py_reader( py_reader = fluid.layers.py_reader(
capacity=queue_capacity, capacity=queue_capacity,
shapes=[[-1, in_size], [-1, 1]], shapes=[[-1, in_size], [-1, 1]],
lod_levels=[0, 0], lod_levels=[0, 0],
dtypes=['float32', 'int64'], dtypes=['float32', 'int64'],
use_double_buffer=False) use_double_buffer=False)
feed_queue = reader.queue feed_queue = py_reader.queue
reader = fluid.layers.batch(reader, batch_size=batch_size) reader = fluid.layers.batch(py_reader, batch_size=batch_size)
if use_double_buffer: if use_double_buffer:
reader = fluid.layers.double_buffer(reader) reader = fluid.layers.double_buffer(reader)
...@@ -92,7 +92,7 @@ def simple_fc_net(in_size, ...@@ -92,7 +92,7 @@ def simple_fc_net(in_size,
optimizer = fluid.optimizer.Adam() optimizer = fluid.optimizer.Adam()
optimizer.minimize(loss) optimizer.minimize(loss)
return in_data, label, loss, optimizer, feed_queue return in_data, label, loss, optimizer, feed_queue, py_reader
class TestPyReaderUsingExecutor(unittest.TestCase): class TestPyReaderUsingExecutor(unittest.TestCase):
...@@ -110,17 +110,21 @@ class TestPyReaderUsingExecutor(unittest.TestCase): ...@@ -110,17 +110,21 @@ class TestPyReaderUsingExecutor(unittest.TestCase):
for use_parallel_executor in [False, True]: for use_parallel_executor in [False, True]:
for use_double_buffer in [False, True]: for use_double_buffer in [False, True]:
for use_feed_list in [False, True]: for use_feed_list in [False, True]:
print('Test Parameters:'), for use_decorate_paddle_reader in [False, True]:
print({ print('Test Parameters:'),
'use_cuda': use_cuda, print({
'use_parallel_executor': use_parallel_executor, 'use_cuda': use_cuda,
'use_double_buffer': use_double_buffer, 'use_parallel_executor': use_parallel_executor,
'use_feed_list': use_feed_list 'use_double_buffer': use_double_buffer,
}) 'use_feed_list': use_feed_list,
self.main(use_cuda, use_parallel_executor, 'use_decorate_paddle_reader':
use_double_buffer, use_feed_list) use_decorate_paddle_reader
})
def random_reader(self): self.main(use_cuda, use_parallel_executor,
use_double_buffer, use_feed_list,
use_decorate_paddle_reader)
def tensor_reader(self, use_decorate_paddle_reader):
def reader(): def reader():
self.inputs = [] self.inputs = []
cnt = 0 cnt = 0
...@@ -144,10 +148,14 @@ class TestPyReaderUsingExecutor(unittest.TestCase): ...@@ -144,10 +148,14 @@ class TestPyReaderUsingExecutor(unittest.TestCase):
elif not self.use_double_buffer: elif not self.use_double_buffer:
break break
yield tensors if use_decorate_paddle_reader:
yield [(in_data, label)]
else:
yield tensors
cnt += 1 cnt += 1
yield None if not use_decorate_paddle_reader:
yield None
return reader return reader
...@@ -155,19 +163,21 @@ class TestPyReaderUsingExecutor(unittest.TestCase): ...@@ -155,19 +163,21 @@ class TestPyReaderUsingExecutor(unittest.TestCase):
use_cuda=True, use_cuda=True,
use_parallel_executor=False, use_parallel_executor=False,
use_double_buffer=False, use_double_buffer=False,
use_feed_list=False): use_feed_list=False,
use_decorate_paddle_reader=False):
assert not use_cuda or use_cuda and core.is_compiled_with_cuda() assert not use_cuda or use_cuda and core.is_compiled_with_cuda()
self.use_cuda = use_cuda self.use_cuda = use_cuda
self.use_parallel_executor = use_parallel_executor self.use_parallel_executor = use_parallel_executor
self.use_double_buffer = use_double_buffer self.use_double_buffer = use_double_buffer
self.use_feed_list = use_feed_list self.use_feed_list = use_feed_list
self.use_decorate_paddle_reader = use_decorate_paddle_reader
startup_program = fluid.Program() startup_program = fluid.Program()
main_program = fluid.Program() main_program = fluid.Program()
with fluid.program_guard(main_program, startup_program): with fluid.program_guard(main_program, startup_program):
in_data, label, loss, optimizer, feed_queue = simple_fc_net( in_data, label, loss, optimizer, feed_queue, py_reader = simple_fc_net(
in_size=self.in_size, in_size=self.in_size,
class_num=self.class_num, class_num=self.class_num,
hidden_sizes=self.hidden_sizes, hidden_sizes=self.hidden_sizes,
...@@ -192,10 +202,14 @@ class TestPyReaderUsingExecutor(unittest.TestCase): ...@@ -192,10 +202,14 @@ class TestPyReaderUsingExecutor(unittest.TestCase):
main_exe = startup_exe main_exe = startup_exe
self.batch_size_times = 1 self.batch_size_times = 1
reader = self.random_reader() reader = self.tensor_reader(use_decorate_paddle_reader)
thread = threading.Thread( if use_decorate_paddle_reader:
target=feed_data, args=(feed_queue, reader)) py_reader.decorate_paddle_reader(reader)
thread.start() py_reader.start()
else:
thread = threading.Thread(
target=feed_data, args=(feed_queue, reader))
thread.start()
self.outputs = [] self.outputs = []
for _ in range(self.iterations): for _ in range(self.iterations):
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册