Esempio n. 1
0
    def test_save_and_load_model(self):
        model = TensorRec(n_components=10)
        model.fit(self.interactions,
                  self.user_features,
                  self.item_features,
                  epochs=10)

        predictions = model.predict(user_features=self.user_features,
                                    item_features=self.item_features)
        ranks = model.predict_rank(user_features=self.user_features,
                                   item_features=self.item_features)
        model.save_model(directory_path=self.test_dir)

        # Check that, after saving, the same predictions come back
        predictions_after_save = model.predict(
            user_features=self.user_features, item_features=self.item_features)
        ranks_after_save = model.predict_rank(user_features=self.user_features,
                                              item_features=self.item_features)
        self.assertTrue((predictions == predictions_after_save).all())
        self.assertTrue((ranks == ranks_after_save).all())

        # Blow away the session
        set_session(None)
        tf.reset_default_graph()

        # Reload the model, predict, and check for equal predictions
        new_model = TensorRec.load_model(directory_path=self.test_dir)
        new_predictions = new_model.predict(user_features=self.user_features,
                                            item_features=self.item_features)
        new_ranks = new_model.predict_rank(user_features=self.user_features,
                                           item_features=self.item_features)

        self.assertTrue((predictions == new_predictions).all())
        self.assertTrue((ranks == new_ranks).all())
Esempio n. 2
0
    def setUpClass(cls):

        cls.n_user_features = 200
        cls.n_item_features = 150

        cls.interactions, cls.user_features, cls.item_features = generate_dummy_data(
            num_users=15,
            num_items=30,
            interaction_density=.5,
            num_user_features=cls.n_user_features,
            num_item_features=cls.n_item_features,
            n_features_per_user=20,
            n_features_per_item=20,
            pos_int_ratio=.5)

        set_session(None)
        cls.temp_dir = tempfile.mkdtemp()
        cls.interactions_path = os.path.join(cls.temp_dir,
                                             'interactions.tfrecord')
        cls.user_features_path = os.path.join(cls.temp_dir,
                                              'user_features.tfrecord')
        cls.item_features_path = os.path.join(cls.temp_dir,
                                              'item_features.tfrecord')

        write_tfrecord_from_sparse_matrix(cls.user_features_path,
                                          cls.user_features)
        write_tfrecord_from_sparse_matrix(cls.item_features_path,
                                          cls.item_features)
        write_tfrecord_from_sparse_matrix(cls.interactions_path,
                                          cls.interactions)
Esempio n. 3
0
 def test_fit_from_tfrecords(self):
     set_session(None)
     model = TensorRec(n_components=10)
     model.fit(self.interactions_path,
               self.user_features_path,
               self.item_features_path,
               epochs=10)
Esempio n. 4
0
    def test_save_and_load_model(self):
        model = TensorRec(n_components=10)
        model.fit(self.interactions, self.user_features, self.item_features, epochs=10)

        predictions = model.predict(user_features=self.user_features, item_features=self.item_features)
        ranks = model.predict_rank(user_features=self.user_features, item_features=self.item_features)
        model.save_model(directory_path=self.test_dir)

        # Check that, after saving, the same predictions come back
        predictions_after_save = model.predict(user_features=self.user_features, item_features=self.item_features)
        ranks_after_save = model.predict_rank(user_features=self.user_features, item_features=self.item_features)
        self.assertTrue((predictions == predictions_after_save).all())
        self.assertTrue((ranks == ranks_after_save).all())

        # Blow away the session
        set_session(None)
        tf.reset_default_graph()

        # Reload the model, predict, and check for equal predictions
        new_model = TensorRec.load_model(directory_path=self.test_dir)
        new_predictions = new_model.predict(user_features=self.user_features, item_features=self.item_features)
        new_ranks = new_model.predict_rank(user_features=self.user_features, item_features=self.item_features)

        self.assertTrue((predictions == new_predictions).all())
        self.assertTrue((ranks == new_ranks).all())
Esempio n. 5
0
 def setUpClass(cls):
     cls.interactions, cls.user_features, cls.item_features = generate_dummy_data(
         num_users=15, num_items=30, interaction_density=.5, num_user_features=200, num_item_features=200,
         n_features_per_user=20, n_features_per_item=20, pos_int_ratio=.5
     )
     tf.reset_default_graph()
     set_session(None)
Esempio n. 6
0
    def setUpClass(cls):

        # Blow away an existing session to avoid 'tf_map_func not found' error
        set_session(None)

        cls.n_users = 15
        cls.n_items = 30

        int_ds, uf_ds, if_ds = generate_dummy_data(
            num_users=cls.n_users, num_items=cls.n_items, interaction_density=.5, num_user_features=200,
            num_item_features=200, n_features_per_user=20, n_features_per_item=20, pos_int_ratio=.5
        )

        cls.temp_dir = tempfile.mkdtemp()
        cls.interactions = os.path.join(cls.temp_dir, 'interactions.tfrecord')
        cls.user_features = os.path.join(cls.temp_dir, 'user_features.tfrecord')
        cls.item_features = os.path.join(cls.temp_dir, 'item_features.tfrecord')

        write_tfrecord_from_sparse_matrix(cls.interactions, int_ds)
        write_tfrecord_from_sparse_matrix(cls.user_features, uf_ds)
        write_tfrecord_from_sparse_matrix(cls.item_features, if_ds)

        cls.standard_model = TensorRec(n_components=10)
        cls.standard_model.fit(cls.interactions, cls.user_features, cls.item_features, epochs=10)

        cls.unbiased_model = TensorRec(n_components=10, biased=False)
        cls.unbiased_model.fit(cls.interactions, cls.user_features, cls.item_features, epochs=10)
Esempio n. 7
0
    def setUpClass(cls):

        cls.n_user_features = 200
        cls.n_item_features = 150

        cls.interactions, cls.user_features, cls.item_features = generate_dummy_data(
            num_users=15, num_items=30, interaction_density=.5, num_user_features=cls.n_user_features,
            num_item_features=cls.n_item_features, n_features_per_user=20, n_features_per_item=20, pos_int_ratio=.5
        )

        set_session(None)
        cls.temp_dir = tempfile.mkdtemp()
        cls.interactions_path = os.path.join(cls.temp_dir, 'interactions.tfrecord')
        cls.user_features_path = os.path.join(cls.temp_dir, 'user_features.tfrecord')
        cls.item_features_path = os.path.join(cls.temp_dir, 'item_features.tfrecord')

        write_tfrecord_from_sparse_matrix(cls.user_features_path, cls.user_features)
        write_tfrecord_from_sparse_matrix(cls.item_features_path, cls.item_features)
        write_tfrecord_from_sparse_matrix(cls.interactions_path, cls.interactions)
Esempio n. 8
0
 def test_fit_from_tfrecords(self):
     set_session(None)
     model = TensorRec(n_components=10)
     model.fit(self.interactions_path, self.user_features_path, self.item_features_path, epochs=10)