mindspore.nn.CellDict

View Source On AtomGit
class mindspore.nn.CellDict(*args, **kwargs)[source]

Holds Cells in a dictionary. For more details about Cell , please refer to mindspore.nn.Cell .

CellDict can be used like a regular Python dictionary.

Parameters:
  • args (iterable, optional) – An iterable of key-value pairs of (key, Cell), the type of key-value pairs is (string, Cell); or a mapping(dictionary) from string to Cell. The type of Cell can not be CellDict, CellList or SequentialCell. The key can not be same as the attributes of class Cell, can not contain '.', can not be an empty string. The key of type string is used to search corresponding Cell in the CellDict.

  • kwargs (dict) – Reserved for keyword argument to be expanded.

Supported Platforms:

Ascend GPU CPU

Examples

>>> import collections
>>> from collections import OrderedDict
>>> import mindspore as ms
>>> import numpy as np
>>> from mindspore import Tensor, nn
>>>
>>> cell_dict = nn.CellDict({'conv': nn.Conv2d(10, 6, 5),
...                          'relu': nn.ReLU(),
...                          'max_pool2d': nn.MaxPool2d(kernel_size=4, stride=4)})
>>> print(len(cell_dict))
3
>>> cell_dict.clear()
>>> print(len(cell_dict))
0
>>> ordered_cells = OrderedDict([('conv', nn.Conv2d(10, 6, 5, pad_mode='valid')),
...                              ('relu', nn.ReLU()),
...                              ('max_pool2d', nn.MaxPool2d(kernel_size=2, stride=2))])
>>> cell_dict.update(ordered_cells)
>>> x = Tensor(np.ones([1, 10, 6, 10]), ms.float32)
>>> for cell in cell_dict.values():
...     x = cell(x)
>>> print(x.shape)
(1, 6, 1, 3)
>>> x = Tensor(np.ones([1, 10, 6, 10]), ms.float32)
>>> for item in cell_dict.items():
...     x = item[1](x)
>>> print(x.shape)
(1, 6, 1, 3)
>>> print(cell_dict.keys())
odict_keys(['conv', 'relu', 'max_pool2d'])
>>> pop_cell = cell_dict.pop('conv')
>>> x = Tensor(np.ones([1, 10, 6, 5]), ms.float32)
>>> x = pop_cell(x)
>>> print(x.shape)
(1, 6, 2, 1)
>>> print(len(cell_dict))
2
clear()[source]

Remove all Cells from the CellDict.

items()[source]

Return an iterable of the CellDict key-value pairs.

Returns:

An iterable object.

keys()[source]

Return an iterable of the CellDict keys.

Returns:

An iterable object.

pop(key)[source]

Remove key from the CellDict and return its cell.

Parameters:

key (str) – key to pop from the CellDict.

Raises:

KeyError – If key does not exist in CellDict when attempting to access cell.

update(cells)[source]

Update the CellDict by overwriting the existing keys with the key-value pairs from a mapping or an iterable.

Parameters:

cells (iterable) – An iterable of key-value pairs of (key, Cell), the type of key-value pairs is (string, Cell); Or a mapping(dictionary) from string to Cell. The type of Cell can not be CellDict, CellList or SequentialCell. The key can not be same as the attributes of class Cell, can not contain '.', can not be an empty string.

Note

If the cells is a CellDict, an OrderedDict or an iterable containing key-value pairs, the order of newly added elements is maintained.

Raises:
  • TypeError – If cells is not an iterable object.

  • TypeError – If key-value pairs in cells are not iterable objects.

  • ValueError – If the length of key-value pairs in cells is not 2.

  • TypeError – If the cell in cells is None.

  • TypeError – If the type of cell in cells is not Cell.

  • TypeError – If the type of cell in cells is CellDict, CellList or SequentialCell.

  • TypeError – If the type of key in cells is not string.

  • KeyError – If the key in cells is same as the attributes of class Cell.

  • KeyError – If the key in cells contains ".".

  • KeyError – If the key in cells is an empty string.

values()[source]

Return an iterable of the CellDict values.

Returns:

An iterable object.