def run_step(step_num): if step_num == 0: model = models.RandomModel() elif step_num == 1: model = models.PriorModel() elif step_num == 2: model = models.SupModel() elif step_num == 3: print('Training will take 6-7 minutes') model = models.EmbedModel() elif step_num == 4: print('Training will take 30-40 minutes') gru = models.GRU() model = models.NeuralModel(gru) else: raise ValueError('Invalid step number') trainset = Dataset.get('train') num_train_candidates = Candidate.get_count() model.fit(trainset, num_train_candidates) print('Training finished!') for dsname in Dataset.ds2path.keys(): ds = Dataset.get(dsname) pred_cids = model.predict(ds) print(dsname, ds.eval(pred_cids))
def main(): args = docopt(__doc__, options_first=True) available_models = { "user": models.UserWasdModel(), "random": models.RandomModel(), "knn": models.KnnModel() } width = int(args["--width"]) height = int(args["--height"]) if args["--list-models"]: print("user, random, knn") elif args["play"]: log = create_log_file(args["--output"]) if args["--save"] else None simulate(width, height, models.UserWasdModel(), log, display=True) elif args["simulate"]: for _ in range(int(args["NUM_GAMES"])): log = create_log_file(args["--output"]) if args["--save"] else None simulate(width, height, available_models[args["--model"]], log, args["--display"])
for i in range(7): maze[16][11+i]=1 maze[17][11]=1 game = Maze(maze) print(maze.size) # only show the maze if test == Test.SHOW_MAZE_ONLY: game.render(Render.MOVES) game.reset() # play using random model if test == Test.RANDOM_MODEL: game.render(Render.MOVES) model = models.RandomModel(game) game.play(model, start_cell=(0, 0)) # train using tabular Q-learning if test == Test.Q_LEARNING: game.render(Render.TRAINING) model = models.QTableModel(game, name="QTableModel") h, w, _, _ = model.train(discount=0.90, exploration_rate=0.10, learning_rate=0.10, episodes=500, stop_at_convergence=True) # train using tabular Q-learning and an eligibility trace (aka TD-lamba) if test == Test.Q_ELIGIBILITY: game.render(Render.TRAINING) model = models.QTableTraceModel(game) h, w, _, _ = model.train(discount=0.90, exploration_rate=0.10, learning_rate=0.10, episodes=200,
import models from dataset import Dataset, KnowledgeBase if __name__ == '__main__': model = models.RandomModel() trainset = Dataset.get('train') model.fit(trainset) print('【Random Model】') for dsname in Dataset.ds2path.keys(): ds = Dataset.get(dsname) pred_cids = model.predict(ds) print(dsname, ds.eval(pred_cids)) print('--------------------') model = models.PriorModel() trainset = Dataset.get('train') model.fit(trainset) print('【Prior Probability Model】') for dsname in Dataset.ds2path.keys(): ds = Dataset.get(dsname) pred_cids = model.predict(ds) print(dsname, ds.eval(pred_cids)) print('--------------------') model = models.SupModel() trainset = Dataset.get('train') model.fit(trainset) print('【Supervised Model】') for dsname in Dataset.ds2path.keys(): ds = Dataset.get(dsname)