示例#1
0
    def test_graph_propagate_forward(self):
        layer_1 = layers.Input(1)
        layer_2 = layers.Input(2)

        graph = LayerGraph()
        graph.add_layer(layer_1)

        with self.assertRaises(ValueError):
            graph.propagate_forward({layer_2: T.matrix()})
示例#2
0
    def test_graph_propagate_forward(self):
        layer_1 = layers.Input(1)
        layer_2 = layers.Input(2)

        graph = LayerGraph()
        graph.add_layer(layer_1)

        with self.assertRaises(ValueError):
            graph.propagate_forward({layer_2: T.matrix()})
示例#3
0
    def test_graph_propagate_forward(self):
        layer_1 = layers.Input(1)
        layer_2 = layers.Input(2)

        graph = LayerGraph()
        graph.add_layer(layer_1)
        input_value_2 = np.random.random((10, 2))

        with self.assertRaises(ValueError):
            graph.propagate_forward({layer_2: input_value_2})
示例#4
0
    def test_tree_graph(self):
        l0 = layers.Input(1)
        l1 = layers.Sigmoid(10)
        l2 = layers.Sigmoid(20)
        l3 = layers.Sigmoid(30)
        l4 = layers.Sigmoid(40)
        l5 = layers.Sigmoid(50)
        l6 = layers.Sigmoid(60)

        # Tree Structure:
        #
        # l0 - l1 - l5 - l6
        #        \
        #         l2 - l4
        #           \
        #            -- l3
        graph = LayerGraph()
        # Connection #1
        graph.connect_layers(l0, l1)
        graph.connect_layers(l1, l5)
        graph.connect_layers(l5, l6)
        # Connection #2
        graph.connect_layers(l1, l2)
        graph.connect_layers(l2, l3)
        # Connection #3
        graph.connect_layers(l2, l4)

        for layer in graph.forward_graph:
            layer.initialize()

        subgraph = graph.subgraph_for_output(l6)
        self.assertEqual(1, len(subgraph.output_layers))
        self.assertIs(l6, subgraph.output_layers[0])
        self.assertEqual(1, len(subgraph.input_layers))
        self.assertIs(l0, subgraph.input_layers[0])

        x = T.matrix()
        outputs = graph.propagate_forward(x)

        text_input = asfloat(np.array([[1]]))
        expected_shapes = [(1, 30), (1, 40), (1, 60)]

        for output, expected_shape in zip(outputs, expected_shapes):
            output_value = output.eval({x: text_input})
            self.assertIn(output_value.shape, expected_shapes)
示例#5
0
    def test_tree_graph(self):
        l0 = layers.Input(1)
        l1 = layers.Sigmoid(10)
        l2 = layers.Sigmoid(20)
        l3 = layers.Sigmoid(30)
        l4 = layers.Sigmoid(40)
        l5 = layers.Sigmoid(50)
        l6 = layers.Sigmoid(60)

        # Tree Structure:
        #
        # l0 - l1 - l5 - l6
        #        \
        #         l2 - l4
        #           \
        #            -- l3
        graph = LayerGraph()
        # Connection #1
        graph.connect_layers(l0, l1)
        graph.connect_layers(l1, l5)
        graph.connect_layers(l5, l6)
        # Connection #2
        graph.connect_layers(l1, l2)
        graph.connect_layers(l2, l3)
        # Connection #3
        graph.connect_layers(l2, l4)

        for layer in graph.forward_graph:
            layer.initialize()

        subgraph = graph.subgraph_for_output(l6)
        self.assertEqual(1, len(subgraph.output_layers))
        self.assertIs(l6, subgraph.output_layers[0])
        self.assertEqual(1, len(subgraph.input_layers))
        self.assertIs(l0, subgraph.input_layers[0])

        x = T.matrix()
        outputs = graph.propagate_forward(x)

        text_input = asfloat(np.array([[1]]))
        expected_shapes = [(1, 30), (1, 40), (1, 60)]

        for output, expected_shape in zip(outputs, expected_shapes):
            output_value = output.eval({x: text_input})
            self.assertIn(output_value.shape, expected_shapes)