def test_gpr(): gpr = IncrementalGaussianProcess() gpr.first_fit([get_add_skip_model().extract_descriptor()], [0.5]) assert gpr.first_fitted gpr.incremental_fit([get_concat_skip_model().extract_descriptor()], [0.6]) assert abs(gpr.predict(np.array([get_add_skip_model().extract_descriptor()]))[0] - 0.5) < 1e-4 assert abs(gpr.predict(np.array([get_concat_skip_model().extract_descriptor()]))[0] - 0.6) < 1e-4
def test_gpr(): gpr = IncrementalGaussianProcess() gpr.first_fit([get_add_skip_model().extract_descriptor()], [0.5]) assert gpr.first_fitted gpr.incremental_fit([get_concat_skip_model().extract_descriptor()], [0.6]) assert abs( gpr.predict(np.array([get_add_skip_model().extract_descriptor()]))[0] - 0.5) < 1e-4 assert abs( gpr.predict(np.array([get_concat_skip_model().extract_descriptor()])) [0] - 0.6) < 1e-4
def test_dense_wider_stub(): graph = get_add_skip_model() graph.weighted = False layer_num = graph.n_layers graph.to_wider_model(32, 3) assert graph.n_layers == layer_num
def test_extract_descriptor_add(): descriptor = get_add_skip_model().extract_descriptor() assert len(descriptor.layers) == 24 assert descriptor.skip_connections == [ (6, 10, NetworkDescriptor.ADD_CONNECT), (10, 14, NetworkDescriptor.ADD_CONNECT) ]
def test_dense_wider_stub(): model = to_stub_model(get_add_skip_model()) graph = Graph(model) layer_num = graph.n_layers graph.to_wider_model(graph.layer_to_id[model.layers[-2]], 3) assert graph.n_layers == layer_num
def test_dense_wider_stub(): model = get_add_skip_model() graph = Graph(model, False) layer_num = graph.n_layers graph.to_wider_model(19, 3) assert graph.n_layers == layer_num
def test_dense_wider_stub(): graph = get_add_skip_model() graph.weighted = False layer_num = graph.n_layers graph.to_wider_model(26, 3) assert graph.n_layers == layer_num
def test_produce_keras_model(): for graph in [get_conv_dense_model(), get_add_skip_model(), get_pooling_model(), get_concat_skip_model()]: model = graph.produce_keras_model() assert isinstance(model, keras.models.Model)
def test_keras_model(): for graph in [get_conv_dense_model(), get_add_skip_model(), get_pooling_model(), get_concat_skip_model()]: keras_model = KerasModel(graph) keras_model.set_weight_to_graph() assert isinstance(keras_model, KerasModel)
def test_extract_descriptor_add(): descriptor = get_add_skip_model().extract_descriptor() assert descriptor.n_conv == 5 assert descriptor.n_dense == 2 assert descriptor.skip_connections == [ (2, 3, NetworkDescriptor.ADD_CONNECT), (3, 4, NetworkDescriptor.ADD_CONNECT) ]
def test_copy_model(): model = get_add_skip_model() new_model = Graph(model).produce_model() input_data = get_conv_data() output1 = model.predict_on_batch(input_data).flatten() output2 = new_model.predict_on_batch(input_data).flatten() assert np.sum(output1 - output2) == 0
def test_gpr(): gpr = IncrementalGaussianProcess() gpr.first_fit(Graph(get_add_skip_model()).extract_descriptor(), 0.5) gpr.incremental_fit( Graph(get_concat_skip_model()).extract_descriptor(), 0.6) assert abs( gpr.predict( np.array([Graph(get_concat_skip_model()).extract_descriptor()]))[0] - 0.6) < 1e-4
def test_produce_keras_model(): for graph in [ get_conv_dense_model(), get_add_skip_model(), get_pooling_model(), get_concat_skip_model() ]: model = graph.produce_keras_model() assert isinstance(model, keras.models.Model)
def test_skip_concatenate(): model = get_add_skip_model() graph = Graph(model) new_model = graph.to_concat_skip_model(model.layers[4], model.layers[4]) input_data = get_conv_data() output1 = model.predict_on_batch(input_data).flatten() output2 = new_model.predict_on_batch(input_data).flatten() assert abs(np.sum(output1 - output2)) < 1e-4
def test_dense_wider(): model = get_add_skip_model() graph = Graph(model) new_model = graph.to_wider_model(model.layers[-2], 3) input_data = get_conv_data() output1 = model.predict_on_batch(input_data).flatten() output2 = new_model.predict_on_batch(input_data).flatten() assert abs(np.sum(output1 - output2)) < 1e-4
def test_keras_model(): for graph in [ get_conv_dense_model(), get_add_skip_model(), get_pooling_model(), get_concat_skip_model() ]: keras_model = KerasModel(graph) keras_model.set_weight_to_graph() assert isinstance(keras_model, KerasModel)
def test_dense_wider(): model = get_add_skip_model() graph = Graph(model, True) graph.to_wider_model(19, 3) new_model = graph.produce_model() input_data = get_conv_data() output1 = model.predict_on_batch(input_data).flatten() output2 = new_model.predict_on_batch(input_data).flatten() assert np.sum(np.abs(output1 - output2)) < 1e-4
def test_dense_wider(): model = get_add_skip_model() graph = NetworkMorphismGraph(model) graph.to_wider_model(graph.layer_to_id[model.layers[-2]], 3) new_model = graph.produce_model() input_data = get_conv_data() output1 = model.predict_on_batch(input_data).flatten() output2 = new_model.predict_on_batch(input_data).flatten() assert np.sum(np.abs(output1 - output2)) < 1e-4
def test_dense_wider(): graph = get_add_skip_model() model = graph.produce_model() graph = deepcopy(graph) graph.to_wider_model(32, 3) new_model = graph.produce_model() input_data = torch.Tensor(get_conv_data()) model.eval() new_model.eval() output1 = model(input_data) output2 = new_model(input_data) assert (output1 - output2).abs().sum() < 1e-4
def test_dense_wider(): graph = get_add_skip_model() model = graph.produce_model() graph = deepcopy(graph) graph.to_wider_model(26, 3) new_model = graph.produce_model() input_data = torch.Tensor(get_conv_data()) model.eval() new_model.eval() output1 = model(input_data) output2 = new_model(input_data) assert (output1 - output2).abs().sum() < 1e-4
def test_edit_distance(): descriptor1 = get_add_skip_model().extract_descriptor() descriptor2 = get_concat_skip_model().extract_descriptor() assert edit_distance(descriptor1, descriptor2) == 12.0
def test_wider_weighted_add(): layer = get_add_skip_model().layers[10] new_layer = wider_weighted_add(layer, 4) assert isinstance(new_layer, WeightedAdd)
def test_edit_distance(): descriptor1 = Graph(get_add_skip_model()).extract_descriptor() descriptor2 = Graph(get_concat_skip_model()).extract_descriptor() assert edit_distance(descriptor1, descriptor2, 1.0) == 2.0
def test_save_weighted_add(): model = get_add_skip_model() path = 'tests/resources/temp/m.h5' model.save(path) load_model(path, {'WeightedAdd': WeightedAdd}) os.remove(path)
def test_extract_descriptor_add(): descriptor = get_add_skip_model().extract_descriptor() assert descriptor.n_conv == 5 assert descriptor.n_dense == 2 assert descriptor.skip_connections == [(2, 3, NetworkDescriptor.ADD_CONNECT), (3, 4, NetworkDescriptor.ADD_CONNECT)]
def test_wider_weighted_add(): layer = StubAdd() layer.set_weights(get_add_skip_model().layers[13].get_weights()) new_layer = wider_weighted_add(layer, 4) assert isinstance(new_layer, StubAdd)
def test_extract_descriptor_add(): descriptor = get_add_skip_model().extract_descriptor() assert len(descriptor.layers) == 24 assert descriptor.skip_connections == [(6, 10, NetworkDescriptor.ADD_CONNECT), (10, 14, NetworkDescriptor.ADD_CONNECT)]
def test_edit_distance(): descriptor1 = get_add_skip_model().extract_descriptor() descriptor2 = get_concat_skip_model().extract_descriptor() assert edit_distance(descriptor1, descriptor2) == 12.0
def test_to_stub_model(): model = get_add_skip_model() stub_model = to_stub_model(model) assert len(stub_model.layers) == 18
def test_graph_duplicate(): assert same_graph(get_add_skip_model().extract_descriptor(), get_add_skip_model().extract_descriptor()) assert not same_graph(get_concat_skip_model().extract_descriptor(), get_add_skip_model().extract_descriptor())
def test_graph_duplicate(): assert same_graph(get_add_skip_model().extract_descriptor(), get_add_skip_model().extract_descriptor()) assert not same_graph(get_concat_skip_model().extract_descriptor(), get_add_skip_model().extract_descriptor())