ParameterDict

class paddle.nn. ParameterDict ( parameters: ParameterDict | Mapping[str, Tensor] | Sequence[tuple[str, Tensor]] | None = None ) [source]

Holds parameters in a dictionary.

ParameterDict can be indexed like a regular Python dictionary, but Parameters it contains are properly registered.

Parameters

parameters (iterable, optional) – a mapping (dictionary) of (string : Any) or an iterable of key-value pairs of type (string, Any)

Examples

>>> import paddle

>>> class MyLayer(paddle.nn.Layer):
...     def __init__(self, num_stacked_param):
...         super().__init__()
...         # create ParameterDict with iterable Parameters
...         self.params = paddle.nn.ParameterDict(
...             {f"t{i}": paddle.create_parameter(shape=[2, 2], dtype='float32') for i in range(num_stacked_param)})
...
...     def forward(self, x):
...         for i, key in enumerate(self.params):
...             x = paddle.matmul(x, self.params[key])
...         return x
...
>>> x = paddle.uniform(shape=[5, 2], dtype='float32')
>>> num_stacked_param = 4
>>> model = MyLayer(num_stacked_param)
>>> print(len(model.params))
4
>>> res = model(x)
>>> print(res.shape)
[5, 2]

>>> replaced_param = paddle.create_parameter(shape=[2, 3], dtype='float32')
>>> model.params['t3'] = replaced_param  # replace t3 param
>>> res = model(x)
>>> print(res.shape)
[5, 3]
>>> model.params['t4'] = paddle.create_parameter(shape=[3, 4], dtype='float32')  # append param
>>> print(len(model.params))
5
>>> res = model(x)
>>> print(res.shape)
[5, 4]
update ( parameters: ParameterDict | Mapping[str, Tensor] | Sequence[tuple[str, Tensor]] ) None

update

Update a given parameter at the end of the dict.

Parameters

parameters (Parameter) – parameter to update