Пример #1
0
    def test_build_predict_func(self, get_model):
        """Test the build of a model"""
        new_session()
        X_tr = np.ones((train_samples, input_dim))
        model = get_model()
        model.compile(loss='categorical_crossentropy',
                      optimizer='rmsprop',
                      metrics=['accuracy'])

        model_name = model.__class__.__name__

        pred_func = KTB.build_predict_func(model)

        tensors = [X_tr]
        if model_name != 'Model':
            tensors.append(1.)

        res = pred_func(tensors)

        assert len(res[0]) == len(X_tr)

        if K.backend() == 'tensorflow':
            K.clear_session()

        print(self)
Пример #2
0
    def test_build_predict_func(self, get_model):
        """Test the build of a model"""
        new_session()
        X_tr = np.ones((train_samples, input_dim))
        model = get_model()
        model.compile(loss='categorical_crossentropy',
                      optimizer='rmsprop',
                      metrics=['accuracy'])

        model_name = model.__class__.__name__

        pred_func = KTB.build_predict_func(model)

        tensors = [X_tr]
        if model_name != 'Model':
            tensors.append(1.)

        res = pred_func(tensors)

        assert len(res[0]) == len(X_tr)

        if K.backend() == 'tensorflow':
            K.clear_session()

        print(self)
    def test_deserialization(self):
        model = sequential()
        model.compile(optimizer='sgd', loss='categorical_crossentropy')
        ser_mod = to_dict_w_opt(model)
        custom_objects = {'test_loss': [1, 2]}
        custom_objects = {k: serialize(custom_objects[k])
                          for k in custom_objects}
        model_from_dict_w_opt(ser_mod, custom_objects=custom_objects)

        if K.backend() == 'tensorflow':
            K.clear_session()

        print(self)
    def test_predict(self, get_model):
        """Test to predict using the backend"""
        data, data_val = make_data(train_samples, test_samples)
        model = get_model()
        model.compile(optimizer='sgd', loss='categorical_crossentropy')

        expe = Experiment(model)
        expe.fit([data], [data_val])
        KTB.predict(expe.model_dict, [data['X']])

        if K.backend() == 'tensorflow':
            K.clear_session()

        print(self)
    def test_experiment_instance_utils(self, get_model):
        model = get_model()

        model.compile(loss='categorical_crossentropy',
                      optimizer='rmsprop',
                      metrics=['accuracy'])

        expe = Experiment(model)
        expe.model_dict = model
        expe.backend_name = 'another_backend'
        expe.model_dict = model

        assert expe.backend is not None
        expe = Experiment()

        print(self)
Пример #6
0
    def test_deserialization(self):
        new_session()
        model = sequential()
        model.compile(optimizer='sgd', loss='categorical_crossentropy')
        ser_mod = to_dict_w_opt(model)
        custom_objects = {'test_loss': [1, 2]}
        custom_objects = {
            k: serialize(custom_objects[k])
            for k in custom_objects
        }
        model_from_dict_w_opt(ser_mod, custom_objects=custom_objects)

        if K.backend() == 'tensorflow':
            K.clear_session()

        print(self)
Пример #7
0
    def test_predict(self, get_model):
        """Test to predict using the backend"""
        new_session()
        data, data_val = make_data(train_samples, test_samples)
        model = get_model()
        model.compile(optimizer='sgd', loss='categorical_crossentropy')

        expe = Experiment(model)
        expe.fit([data], [data_val])
        KTB.predict(expe.model_dict, [data['X']], False)
        KTB.predict(expe.model_dict, [data['X']], True)

        if K.backend() == 'tensorflow':
            K.clear_session()

        print(self)
Пример #8
0
    def test_experiment_instance_utils(self, get_model):
        new_session()
        model = get_model()

        model.compile(loss='categorical_crossentropy',
                      optimizer='rmsprop',
                      metrics=['accuracy'])

        expe = Experiment(model)
        expe.model_dict = model
        expe.backend_name = 'another_backend'
        expe.model_dict = model

        assert expe.backend is not None
        expe = Experiment()

        print(self)
Пример #9
0
def prepare_model(get_model, get_loss_metric, custom):
    model = get_model

    loss, metric = get_loss_metric

    cust_objects = dict()

    if isinstance(metric, six.string_types):
        metrics = [metric]
    else:
        cust_objects[metric.__name__] = metric
        metrics = [metric()]

    if not isinstance(loss, six.string_types):
        cust_objects['cat_cross'] = loss
        if isinstance(loss, list):
            cust_objects['cat_cross'] = loss[-1]

        if model.__class__.__name__ == 'Model':
            loss_replace = loss
            if isinstance(loss, list):
                loss_replace = loss[-1]
            loss = dict()
            loss['main_loss'] = loss_replace

    if custom:
        cust_objects['Dropout_cust'] = return_custom

    if isinstance(loss, list):
        loss[-1] = loss[-1]()
    elif inspect.isfunction(loss):
        loss = loss()
    elif isinstance(loss, dict):
        loss = {k: v() for k, v in loss.items()}

    model.compile(loss=loss,
                  optimizer='rmsprop',
                  metrics=metrics,
                  custom_objects=cust_objects)
    return model, metrics, cust_objects
Пример #10
0
def prepare_model(get_model, get_loss_metric, custom):
    model = get_model

    loss, metric = get_loss_metric

    cust_objects = dict()

    if isinstance(metric, six.string_types):
        metrics = [metric]
    else:
        cust_objects[metric.__name__] = metric
        metrics = [metric()]

    if not isinstance(loss, six.string_types):
        cust_objects['cat_cross'] = loss
        if isinstance(loss, list):
            cust_objects['cat_cross'] = loss[-1]

        if model.__class__.__name__ == 'Model':
            loss_replace = loss
            if isinstance(loss, list):
                loss_replace = loss[-1]
            loss = dict()
            loss['main_loss'] = loss_replace

    if custom:
        cust_objects['Dropout_cust'] = return_custom

    if isinstance(loss, list):
        loss[-1] = loss[-1]()
    elif inspect.isfunction(loss):
        loss = loss()
    elif isinstance(loss, dict):
        loss = {k: v() for k, v in loss.items()}

    model.compile(loss=loss,
                  optimizer='rmsprop',
                  metrics=metrics,
                  custom_objects=cust_objects)
    return model, metrics, cust_objects
Пример #11
0
    def test_fit(self, get_model):
        "Test the training of a serialized model"
        data, data_val = make_data(train_samples, test_samples)

        model = get_model()
        model.compile(loss='categorical_crossentropy',
                      optimizer='rmsprop',
                      metrics=['accuracy'])

        model_dict = dict()
        model_dict['model_arch'] = to_dict_w_opt(model)

        res = KTB.train(copy.deepcopy(model_dict['model_arch']), [data],
                        [data_val], [])
        res = KTB.fit(NAME, VERSION, model_dict, [data], 'test', [data_val],
                      [])

        assert len(res) == 4

        if K.backend() == 'tensorflow':
            K.clear_session()

        print(self)
Пример #12
0
    def test_fit(self, get_model):
        "Test the training of a serialized model"
        new_session()
        data, data_val = make_data(train_samples, test_samples)

        model = get_model()
        model.compile(loss='categorical_crossentropy',
                      optimizer='rmsprop',
                      metrics=['accuracy'])

        model_dict = dict()
        model_dict['model_arch'] = to_dict_w_opt(model)

        res = KTB.train(copy.deepcopy(model_dict['model_arch']), [data],
                        [data_val], [])
        res = KTB.fit(NAME, VERSION, model_dict, [data], 'test', [data_val],
                      [])

        assert len(res) == 4

        if K.backend() == 'tensorflow':
            K.clear_session()

        print(self)