未验证 提交 1f9a5d8f 编写于 作者: A Aganlengzi 提交者: GitHub

fix LoDTensorArray crash in Debug mode build (#37954)

上级 033ebe7e
...@@ -37,6 +37,9 @@ PADDLE_DEFINE_EXPORTED_bool( ...@@ -37,6 +37,9 @@ PADDLE_DEFINE_EXPORTED_bool(
"If set true, the queue.pop will only get data from queue but not " "If set true, the queue.pop will only get data from queue but not "
"remove the data from queue for speed testing"); "remove the data from queue for speed testing");
// disable auto conversion to list in Python
PYBIND11_MAKE_OPAQUE(paddle::framework::LoDTensorArray);
namespace paddle { namespace paddle {
namespace pybind { namespace pybind {
......
...@@ -273,6 +273,8 @@ class _DataLoaderIterSingleProcess(_DataLoaderIterBase): ...@@ -273,6 +273,8 @@ class _DataLoaderIterSingleProcess(_DataLoaderIterBase):
else: else:
if self._return_list: if self._return_list:
data = self._reader.read_next_list() data = self._reader.read_next_list()
for i in range(len(data)):
data[i] = data[i]._move_to_list()
data = [ data = [
_restore_batch(d, s) _restore_batch(d, s)
for d, s in zip(data, self._structure_infos[:len( for d, s in zip(data, self._structure_infos[:len(
...@@ -718,6 +720,8 @@ class _DataLoaderIterMultiProcess(_DataLoaderIterBase): ...@@ -718,6 +720,8 @@ class _DataLoaderIterMultiProcess(_DataLoaderIterBase):
else: else:
if self._return_list: if self._return_list:
data = self._reader.read_next_list() data = self._reader.read_next_list()
for i in range(len(data)):
data[i] = data[i]._move_to_list()
data = [ data = [
_restore_batch(d, s) _restore_batch(d, s)
for d, s in zip(data, self._structure_infos[:len( for d, s in zip(data, self._structure_infos[:len(
......
...@@ -1254,7 +1254,10 @@ class GeneratorLoader(DataLoaderBase): ...@@ -1254,7 +1254,10 @@ class GeneratorLoader(DataLoaderBase):
def __next__(self): def __next__(self):
try: try:
if self._return_list: if self._return_list:
return self._reader.read_next_list() data = self._reader.read_next_list()
for i in range(len(data)):
data[i] = data[i]._move_to_list()
return data
else: else:
return self._reader.read_next() return self._reader.read_next()
except StopIteration: except StopIteration:
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册