Brick selectors


Bases: object

Encapsulates a path in a hierarchy of bricks.

Currently the only allowed elements of paths are names of the bricks and names of parameters. The latter can only be put in the end of the path. It is planned to support regular expressions in some way later.

Parameters:nodes (list or tuple of path nodes) – The nodes of the path.

tuple – The tuple containing path nodes.

class BrickName[source]

Bases: str

class ParameterName[source]

Bases: str

parameter_separator = '.'
static parse(string)[source]

Constructs a path from its string representation.


More error checking.

Parameters:string (str) – String representation of the path.
separator = '/'
separator_re = <_sre.SRE_Pattern object>

Bases: object

Selection of elements of a hierarchy of bricks.

Parameters:bricks (list of Brick) – The bricks of the selection.

Returns parameters from selected bricks and their descendants.

Parameters:parameter_name (Path.ParameterName, optional) – If given, only parameters with a name attribute equal to parameter_name are returned.
Returns:parameters – A dictionary of (path, parameter) pairs, where path is a string representation of the path in the brick hierarchy to the parameter (i.e. the slash-delimited path to the brick that owns the parameter, followed by a dot, followed by the parameter’s name), and parameter is the Theano variable representing the parameter.
Return type:OrderedDict


>>> from blocks.bricks import MLP, Tanh
>>> mlp = MLP([Tanh(), Tanh(), Tanh()], [5, 7, 11, 2])
>>> mlp.allocate()
>>> selector = Selector([mlp])
>>> selector.get_parameters()  
OrderedDict([('/mlp/linear_0.W', W), ('/mlp/linear_0.b', b),
('/mlp/linear_1.W', W), ('/mlp/linear_1.b', b),
('/mlp/linear_2.W', W), ('/mlp/linear_2.b', b)])

Or, select just the weights of the MLP by passing the parameter name W:

>>> w_select = Selector([mlp])
>>> w_select.get_parameters('W')  
OrderedDict([('/mlp/linear_0.W', W), ('/mlp/linear_1.W', W),
('/mlp/linear_2.W', W)])

Select a subset of current selection matching the path given.


Current implementation is very inefficient (theoretical complexity is \(O(n^3)\), where \(n\) is the number of bricks in the hierarchy). It can be sped up easily.

Parameters:path (Path or str) – The path for the desired selection. If a string is given it is parsed into a path.
  • Depending on the path given, one of the following
  • * Selector with desired bricks.
  • * list of SharedTensorVariable.