提交 aa2335c2 编写于 作者: S sneaxiy

add py_reader doc

上级 3334c279
...@@ -563,22 +563,26 @@ def _py_reader(capacity, ...@@ -563,22 +563,26 @@ def _py_reader(capacity,
def start_provide_thread(func): def start_provide_thread(func):
def __provider_thread__(): def __provider_thread__():
for tensors in func(): try:
array = core.LoDTensorArray() for tensors in func():
for item in tensors: array = core.LoDTensorArray()
if not isinstance(item, core.LoDTensor): for item in tensors:
tmp = core.LoDTensor() if not isinstance(item, core.LoDTensor):
tmp.set(item, core.CPUPlace()) tmp = core.LoDTensor()
item = tmp tmp.set(item, core.CPUPlace())
item = tmp
array.append(item)
array.append(item)
if reader.exited:
break if reader.exited:
feed_queue.push(array) break
if reader.exited: feed_queue.push(array)
break if reader.exited:
feed_queue.close() break
feed_queue.close()
except Exception as ex:
feed_queue.close()
raise ex
reader.thread = threading.Thread(target=__provider_thread__) reader.thread = threading.Thread(target=__provider_thread__)
reader.thread.daemon = True reader.thread.daemon = True
...@@ -692,6 +696,11 @@ def py_reader(capacity, ...@@ -692,6 +696,11 @@ def py_reader(capacity,
>>> exe.run(fetch_list=[loss.name]) >>> exe.run(fetch_list=[loss.name])
>>> except fluid.core.EOFException: >>> except fluid.core.EOFException:
>>> reader.reset() >>> reader.reset()
>>>
>>> ...
>>>
>>> fluid.io.save_inference_model(dirname='./model', feeded_var_names=[img, label],
>>> target_vars=[loss], executor=fluid.Executor(fluid.CUDAPlace(0)))
2. When training and testing are both performed, two different 2. When training and testing are both performed, two different
:code:`py_reader` should be created with different names, e.g.: :code:`py_reader` should be created with different names, e.g.:
......
...@@ -250,20 +250,24 @@ class PyReader(object): ...@@ -250,20 +250,24 @@ class PyReader(object):
def _start(self): def _start(self):
def __thread_main__(): def __thread_main__():
for tensors in self._tensor_reader(): try:
array = core.LoDTensorArray() for tensors in self._tensor_reader():
for item in tensors: array = core.LoDTensorArray()
if not isinstance(item, core.LoDTensor): for item in tensors:
tmp = core.LoDTensor() if not isinstance(item, core.LoDTensor):
tmp.set(item, core.CPUPlace()) tmp = core.LoDTensor()
item = tmp tmp.set(item, core.CPUPlace())
item = tmp
array.append(item)
array.append(item)
if not self._queue.push(array):
break if not self._queue.push(array):
break
self._queue.close()
self._queue.close()
except Exception as ex:
self._queue.close()
raise ex
self._thread = threading.Thread(target=__thread_main__) self._thread = threading.Thread(target=__thread_main__)
self._thread.daemon = True self._thread.daemon = True
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册