mindspore.nn.CellDict
- 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 with 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
- pop(key)[source]
Remove key from the CellDict and return its cell.
- Parameters
key (string) – key to pop from the CellDict.
- Raises
KeyError – If key not exist in CellDict when attempt 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 with 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 with the attributes of class Cell.
KeyError – If the key in cells contain “.”.
KeyError – If the key in cells is an empty string.