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()})
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()})
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})
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)
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)