示例#1
0
def lstm_unit():
    # Define neurons
    read = Node(Product, input=True)
    remember = Node(Product, input=True)
    internal = Node(Sum)
    output = Node(Product, inout=True)
    # Combine and connect them
    read.connect(internal)
    remember.connect(internal)
    internal.connect(output, remember)
    return Node(read, remember, internal, output)
示例#2
0
    def test_edges_layers(self):
        # ->(0)->(2)->(4)->
        #      \/^  \/^
        #      /\v  /\v
        # ->(1)->(3)->(5)->
        node = Node(Constant, inout=True)
        layer = Node(node * 2)
        layers = Node(layer * 3, inout=True)
        connect_layers(layers)
        network = Network(layers)

        assert len(network.current) == 6
        assert network.weights.getnnz() == 8
        assert network.edges == [(0, 2), (0, 3), (1, 2), (1, 3), (2, 4),
                                 (2, 5), (3, 4), (3, 5)]
示例#3
0
def fully_connected_network(input_size,
                            hidden_size,
                            output_size,
                            input_func=Sigmoid,
                            hidden_func=Sigmoid,
                            output_func=Sigmoid):
    # Define layers
    input_ = Node(Node(input_func) * input_size, input=True)
    hidden = Node(Node(hidden_func, inout=True) * hidden_size)
    output = Node(Node(output_func) * output_size, output=True)
    # Combine and connect them
    network = Node(input_, hidden, output)
    network.children.connect(network.children)
    return network
示例#4
0
def lstm_network(input_size,
                 hidden_size,
                 output_size,
                 hidden_count,
                 input_func=Constant,
                 output_func=Sigmoid):
    # Define layers
    input_ = Node(Node(input_func) * input_size, input=True)
    hidden = Node(Node(lstm_unit(), inout=True) * hidden_size)
    output = Node(Node(output_func) * output_size, output=True)
    # Combine and connect them
    network = Node(input_, hidden * hidden_count, output)
    for last, current in pairwise(network):
        last.connect(current)
    return network
示例#5
0
    def test_edges_cell(self):
        # -> ((0)->(1)->(2)) -> ((3)->(4)->(5)) ->
        input_ = Node(Constant, input=True)
        hidden = Node(Constant)
        output = Node(Constant, output=True)
        input_.connect(hidden)
        hidden.connect(output)

        cell = Node(input_, hidden, output, inout=True)
        cells = Node(cell * 2)
        cells[0].input = True
        cells[1].output = True
        cells[0].connect(cells[1])
        network = Network(cells)

        assert len(network.current) == 6
        assert network.weights.getnnz() == 5
        assert network.edges == [(0, 1), (1, 2), (2, 3), (3, 4), (4, 5)]
示例#6
0
文件: fixtures.py 项目: danijar/conny
def layers(request):
    node = Node(Constant, inout=True)
    layer = Node(node * request.param)
    layers = Node(layer * request.param)
    layers.amount = request.param * request.param
    return layers
示例#7
0
    def test_edges_cell(self):
        # -> ((0)->(1)->(2)) -> ((3)->(4)->(5)) ->
        input_ = Node(Constant, input=True)
        hidden = Node(Constant)
        output = Node(Constant, output=True)
        input_.connect(hidden)
        hidden.connect(output)

        cell = Node(input_, hidden, output, inout=True)
        cells = Node(cell * 2)
        cells[0].input = True
        cells[1].output = True
        cells[0].connect(cells[1])
        network = Network(cells)

        assert len(network.current) == 6
        assert network.weights.getnnz() == 5
        assert network.edges == [(0, 1), (1, 2), (2, 3), (3, 4), (4, 5)]
示例#8
0
def lstm_unit():
    # Define neurons
    read = Node(Product, input=True)
    remember = Node(Product, input=True)
    internal = Node(Sum)
    output = Node(Product, inout=True)
    # Combine and connect them
    read.connect(internal)
    remember.connect(internal)
    internal.connect(output, remember)
    return Node(read, remember, internal, output)