提交 2e3f2af7 编写于 作者: C Cao Ying 提交者: GitHub

Merge pull request #3701 from lcy-seso/save_parameter_name_in_ordereddict

save parameters into OrderedDict and refine the comments.
...@@ -14,6 +14,7 @@ ...@@ -14,6 +14,7 @@
import numpy as np import numpy as np
from paddle.proto.ParameterConfig_pb2 import ParameterConfig from paddle.proto.ParameterConfig_pb2 import ParameterConfig
from collections import OrderedDict
import paddle.trainer.config_parser as cp import paddle.trainer.config_parser as cp
import struct import struct
import tarfile import tarfile
...@@ -42,9 +43,25 @@ def create(layers): ...@@ -42,9 +43,25 @@ def create(layers):
class Parameters(object): class Parameters(object):
""" """
Parameters is a dictionary contains Paddle's parameter. The key of `Parameters` manages all the learnable parameters in a neural network.
Parameters is the name of parameter. The value of Parameters is a plain It stores parameters' information in an OrderedDict. The key is
:code:`numpy.ndarry` . the name of a parameter, and value is a parameter's configuration(in
protobuf format), such as initialization mean and std, its size, whether it
is a static parameter, and so on.
:param __param_conf__: store the configurations of learnable parameters in
the network in an OrderedDict. Parameter is added one by one into the
dict by following their created order in the network: parameters of
the previous layers in a network are careted first. You can visit the
parameters from bottom to top by iterating over this dict.
:type __param_conf__: OrderedDict
:param __gradient_machines__: all of the parameters in a neural network are
appended to a PaddlePaddle gradient machine, which is used internally to
copy parameter values between C++ and Python end.
:type __gradient_machines__: list
:param __tmp_params__: a dict to store dummy parameters if no
__gradient_machines__ is appended to `Parameters`.
:type __tmp_params__: dict
Basically usage is Basically usage is
...@@ -62,7 +79,7 @@ class Parameters(object): ...@@ -62,7 +79,7 @@ class Parameters(object):
""" """
def __init__(self): def __init__(self):
self.__param_conf__ = dict() self.__param_conf__ = OrderedDict()
self.__gradient_machines__ = [] self.__gradient_machines__ = []
self.__tmp_params__ = dict() self.__tmp_params__ = dict()
...@@ -231,6 +248,9 @@ class Parameters(object): ...@@ -231,6 +248,9 @@ class Parameters(object):
:rtype: np.ndarray :rtype: np.ndarray
""" """
import py_paddle.swig_paddle as api import py_paddle.swig_paddle as api
if self.__param_conf__[key].is_static:
return np.zeros(self.__param_conf__[key].size, dtype=np.float32)
return self.__getter_inner(key, api.PARAMETER_GRADIENT) return self.__getter_inner(key, api.PARAMETER_GRADIENT)
def set(self, parameter_name, value): def set(self, parameter_name, value):
...@@ -250,7 +270,7 @@ class Parameters(object): ...@@ -250,7 +270,7 @@ class Parameters(object):
append gradient machine to parameters. This method is used internally in append gradient machine to parameters. This method is used internally in
Trainer.train. Trainer.train.
:param gradient_machine: Paddle C++ GradientMachine object. :param gradient_machine: PaddlePaddle C++ GradientMachine object.
:type gradient_machine: api.GradientMachine :type gradient_machine: api.GradientMachine
:return: :return:
""" """
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册