def create_in_out_manager(extended_architecture, layers): """ @type extended_architecture: dict @type layers: dict[unicode, pylstm.wrapper.py_layers.BaseLayer] @rtype: buffer_manager.BufferManager """ in_out_manager = BufferManager() possible_sources = list(extended_architecture.keys()) while possible_sources: layer = possible_sources[0] source_set, sink_set = get_forward_closure(layer, extended_architecture) for s in source_set: possible_sources.remove(s) source_list, sink_list, connection_table = set_up_connection_table( source_set, sink_set, extended_architecture) perm = permute_rows(connection_table) source_list = [source_list[i] for i in perm] connection_table = np.atleast_2d(connection_table[perm]) source_getters = OrderedDict() for n in source_list: source_getters[n] = (layers[n].get_output_buffer_size, layers[n].create_output_view) sink_getters = OrderedDict() for n in sink_list: sink_getters[n] = (layers[n].get_input_buffer_size, layers[n].create_input_view) in_out_manager.add(source_getters, sink_getters, connection_table) return in_out_manager
def create_param_manager(layers): """ @type layers: dict[unicode, pylstm.wrapper.py_layers.BaseLayer] @rtype: buffer_manager.BufferManager """ param_manager = BufferManager() for name, l in layers.items()[1:]: sources = {name: (l.get_parameter_size, l.create_param_view)} param_manager.add(sources, {}) return param_manager
def create_bwd_state_manager(layers): """ @type layers: dict[unicode, pylstm.wrapper.py_layers.BaseLayer] @rtype: buffer_manager.BufferManager """ bwd_state_manager = BufferManager() for name, l in layers.items()[1:]: sources = {name: (l.get_bwd_state_size, l.create_bwd_state)} bwd_state_manager.add(sources, {}) return bwd_state_manager