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