From 8cc249ef105ab01ef4135970fd38d4a6279ef089 Mon Sep 17 00:00:00 2001 From: fengjiayi Date: Tue, 19 Jun 2018 17:44:19 +0800 Subject: [PATCH] make data_feeder support dynamic shape --- python/paddle/fluid/data_feeder.py | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/python/paddle/fluid/data_feeder.py b/python/paddle/fluid/data_feeder.py index ac396002018..64e27b58912 100644 --- a/python/paddle/fluid/data_feeder.py +++ b/python/paddle/fluid/data_feeder.py @@ -29,6 +29,14 @@ class DataToLoDTensorConverter(object): self.place = place self.lod_level = lod_level self.shape = shape + self.dynamic_shape = False + negtive_count = 0 + for s in self.shape: + if s < 0: + negtive_count += 1 + if negtive_count > 1: + self.shape = None + break if dtype == core.VarDesc.VarType.FP32: self.dtype = 'float32' elif dtype == core.VarDesc.VarType.INT64: @@ -61,7 +69,9 @@ class DataToLoDTensorConverter(object): self._feed_impl_(each_data, lod[1:], lod_level - 1) def done(self): - arr = numpy.array(self.data, dtype=self.dtype).reshape(self.shape) + arr = numpy.array(self.data, dtype=self.dtype) + if self.shape: + arr = arr.reshape(self.shape) t = core.LoDTensor() t.set(arr, self.place) if self.lod_level > 0: -- GitLab