Пример #1
0
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
Пример #2
0
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
Пример #3
0
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
Пример #4
0
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
Пример #5
0
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
Пример #6
0
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