diff --git a/python/paddle/fluid/framework.py b/python/paddle/fluid/framework.py index 194a3bc973e245e9b028c508481aad4062785a95..cb5c70d8479e06cdc7d767bc40e41b242a36a781 100644 --- a/python/paddle/fluid/framework.py +++ b/python/paddle/fluid/framework.py @@ -5578,18 +5578,6 @@ class ParamBase(core.VarBase): core.varbase_copy(self, new_param, device, blocking) return new_param - def __reduce__(self): - value = self.numpy() - state = (self.name, self.persistable, self.stop_gradient) - return ParamBase, (self.shape, self.dtype), (self.__dict__, value, - state) - - def __setstate__(self, state): - self.__dict__.update(state[0]) - t = self.value().get_tensor() - t.set(state[1], _current_expected_place()) - self.name, self.persistable, self.stop_gradient = state[2] - __repr__ = __str__ diff --git a/python/paddle/fluid/tests/unittests/test_paddle_save_load.py b/python/paddle/fluid/tests/unittests/test_paddle_save_load.py index 727ac368989fb760f2b69f1ce5340c28262425ea..9e0cf6ddef2d619e4d3b32260f7ddf5f31186ae5 100644 --- a/python/paddle/fluid/tests/unittests/test_paddle_save_load.py +++ b/python/paddle/fluid/tests/unittests/test_paddle_save_load.py @@ -928,14 +928,8 @@ class TestSaveLoadLayer(unittest.TestCase): origin_layer = (layer1, layer2) origin = (layer1(inps), layer2(inps)) path = "test_save_load_layer_/layer.pdmodel" - paddle.save(origin_layer, path) - - loaded_layer = paddle.load(path) - loaded_result = [l(inps) for l in loaded_layer] - for i in range(len(origin)): - self.assertTrue((origin[i] - loaded_result[i]).abs().max() < 1e-10) - for k, v in origin_layer[i]._linear.weight.__dict__.items(): - self.assertTrue(v == loaded_layer[i]._linear.weight.__dict__[k]) + with self.assertRaises(ValueError): + paddle.save(origin_layer, path) if __name__ == '__main__': diff --git a/python/paddle/framework/io.py b/python/paddle/framework/io.py index 61c448e19f22d0802fe3a19641b3942df3a2b7c3..7fdce2af646765c0bddd6c0e3a516d4d6b47d521 100644 --- a/python/paddle/framework/io.py +++ b/python/paddle/framework/io.py @@ -229,13 +229,9 @@ def _pickle_save(obj, f, protocol): raise ValueError("Expected 1<'protocol'<5, but received protocol={}". format(protocol)) - list_params = set() - def reduce_varbase(self): data = self.numpy() name = self.name - if name in list_params: - return self.__reduce__() return (tuple, ((name, data), )) @@ -245,19 +241,8 @@ def _pickle_save(obj, f, protocol): return (eval, ('data', {'data': data})) def reduce_Layer(self): - is_param_or_layer = lambda v: isinstance(v, ParamBase) or isinstance(v, core.Layer) - - def collect_params(param_or_layer): - if isinstance(param_or_layer, ParamBase): - list_params.add(param_or_layer.name) - else: - # param_or_layer is layer - _parse_every_object(param_or_layer.__dict__, is_param_or_layer, - collect_params) - return param_or_layer - - _parse_every_object(self.__dict__, is_param_or_layer, collect_params) - return self.__reduce_ex__(protocol) + raise ValueError( + "paddle do not support saving `paddle.nn.Layer` object.") dispatch_table_layer = dict() @@ -567,7 +552,7 @@ def save(obj, path, protocol=4, **configs): Save an object to the specified path. .. note:: - Now supports saving ``state_dict`` of Layer/Optimizer, Layer, Tensor and nested structure containing Tensor, Program. + Now supports saving ``state_dict`` of Layer/Optimizer, Tensor and nested structure containing Tensor, Program. .. note:: Different from ``paddle.jit.save``, since the save result of ``paddle.save`` is a single file, @@ -783,7 +768,7 @@ def load(path, **configs): Load an object can be used in paddle from specified path. .. note:: - Now supports loading ``state_dict`` of Layer/Optimizer, Layer, Tensor and nested structure containing Tensor, Program. + Now supports loading ``state_dict`` of Layer/Optimizer, Tensor and nested structure containing Tensor, Program. .. note:: In order to use the model parameters saved by paddle more efficiently,