def setUp(self):
     self.model = LearnerModel(categories=10,
                               learning_rate=0.01,
                               logger=logging.getLogger("test"),
                               beta=0.005)
     self.model.build_graph()
     self.model.initialize()
 def setUp(self):
     self.model = LearnerModel(categories=10,
                               use_sigmoid=True,
                               learning_rate=1.5,
                               logger=logging.getLogger("test"))
     self.model.build_graph()
     self.model.initialize()
     print("Testing sigmoid functionality")
 def test_save(self):
     print("Testing saving functionality")
     print(self.model.predict(np.zeros([1, 2048, 32])))
     self.model.train(np.zeros([800, 2048, 32]), np.zeros([800, 10]))
     print(self.model.predict(np.zeros([1, 2048, 32])))
     self.model.save("saved/test.model")
     self.model.close()
     tf.reset_default_graph()
     self.model = LearnerModel(categories=10,
                               logger=logging.getLogger("test"))
     self.model.build_graph()
     self.model.load("saved/test.model-0")
     print(self.model.predict(np.zeros([1, 2048, 32])))
class TestLearner(unittest.TestCase):
    """A collection of tests against the model to ensure it works"""
    def setUp(self):
        self.model = LearnerModel(categories=10,
                                  logger=logging.getLogger("test"))

    def test_build(self):
        """Test whether the graph can be built correctly"""
        self.model.build_graph()

    def tearDown(self):
        self.model.close()
        tf.reset_default_graph()
class TestSigmoid(unittest.TestCase):
    def setUp(self):
        self.model = LearnerModel(categories=10,
                                  use_sigmoid=True,
                                  learning_rate=1.5,
                                  logger=logging.getLogger("test"))
        self.model.build_graph()
        self.model.initialize()
        print("Testing sigmoid functionality")

    def test_sigmoid(self):
        print(self.model.predict(np.zeros([1, 2048, 32])))
        self.model.train(np.zeros([800, 2048, 32]), np.zeros([800, 10]))
        print(self.model.predict(np.zeros([1, 2048, 32])))

    def tearDown(self):
        self.model.close()
        tf.reset_default_graph()
Exemple #6
0
def train(flags: argparse.Namespace, configuration: configparser.ConfigParser):
    global IS_RUNNING

    operation_logger = logging.getLogger("operations")

    driver = configuration.get("rmdb", "engine")
    host = configuration.get("rmdb", "host")
    port = configuration.get("rmdb", "port")
    username = configuration.get("rmdb", "username")
    password = configuration.get("rmdb", "password")
    database = configuration.get("rmdb", "database")

    session = sessionmaker()
    engine = create_engine(
        f"{driver}://{username}:{password}@{host}:{port}/{database}")
    session.configure(bind=engine)
    sess = session()

    database = RelationalDatabase(sess=sess,
                                  logger=logging.getLogger("database"))
    database.get_all_category()

    model = LearnerModel(categories=database.genre_size() +
                         database.category_size(),
                         logger=logging.getLogger("learner_model"))

    session_file = configuration.get("recommender", "session_file")

    session_configuration = configparser.ConfigParser()
    session_configuration.read_file(session_file)

    if session_configuration.get("session", "id"):
        batch_manager = DatabaseBatchManager(sess,
                                             logging.getLogger("manager"))
    else:
        operation_logger.error(
            "error with getting the session id. create id with batch operation"
        )
        return

    saver = FileSaver("results/default.map", logging.getLogger("file_saver"))

    collector = SpotifyCollector(configuration.get("spotify", "id"),
                                 configuration.get("spotify", "secret"))

    if configuration.get(
            "recommender", "cache_directory") and not os.path.exists(
                configuration.get("recommender", "cache_directory")):
        os.makedirs(configuration.get("recommender", "cache_directory"))

    tempdir = configuration.get("recommender",
                                "cache_directory") if configuration.get(
                                    "recommender", "cache_directory") else ""

    training_config = TrainingConfiguration(
        False, flags.batch_size, tempdir, 32,
        session_configuration.get("session", "id"))
    download_config = DownloadConfiguration(tempdir, flags.batch_size)
    trainer = Trainer(training_config, model, batch_manager, collector,
                      saver, database,
                      configuration.get("recommender", "session_file"))

    downloader = Downloader(collector, download_config)

    deleter = DeleteRunner(tempdir)

    downloader.run()
    deleter.run()
    trainer.run()

    print("Press [Enter] to save the model at the snapshot.")
    while IS_RUNNING:
        input()
        IS_RUNNING = False
 def setUp(self):
     self.model = LearnerModel(categories=10,
                               logger=logging.getLogger("test"))
     self.model.build_graph()
     self.model.initialize()
class TestPredictor(unittest.TestCase):
    def setUp(self):
        self.model = LearnerModel(categories=10,
                                  learning_rate=0.01,
                                  logger=logging.getLogger("test"),
                                  beta=0.005)
        self.model.build_graph()
        self.model.initialize()

    def test_train(self):
        """Test whether the model can be trained"""
        for _ in range(1, 20):
            self.model.train(np.zeros([1, 2048, 32]), np.zeros([1, 10]))

    def test_flush(self):
        """Test whether the graph can be run with a zero array"""
        result = self.model.predict(np.zeros([1, 2048, 32]))
        print(result)

    def test_predict(self):
        """Test whether the graph can be run with a zero array"""
        print()
        print("Testing the prediction:")
        print("Ensure that the second result is smaller than the first")
        result = self.model.predict(np.zeros([1, 2048, 32]))
        print(result)
        for _ in range(1, 20):
            self.model.train(np.zeros([10, 2048, 32]), np.zeros([10, 10]))
        result = self.model.predict(np.zeros([1, 2048, 32]))
        print(result)

    def tearDown(self):
        self.model.close()
        tf.reset_default_graph()
 def setUp(self):
     self.model = LearnerModel(categories=10,
                               logger=logging.getLogger("test"))