def load_and_train(epochs=50, vectorlength=16): # Set up logging dictConfig(LOG_CONFIG) games = Games() # Use the following to load already parsed data games.load() games.flatten(vectorlength=vectorlength) # Network structure # Structure: [input_layer, hidden_layer, hidden_layer ... , output_layer] # Example: [784, 620, 100, 10] layer_structure = [vectorlength, 192, 128, 96, 4] # Example: [rectify, rectify, softmax] activation_functions = [rectify, rectify, rectify, rectify, softmax] # Remeber to change num_labels to 4, since we have Up, Right, Down, Left # Also we normalize the values. Don't know if it will affect anything, # but not taking any chances. cfg = { 'learning_rate': 0.00001, 'num_labels': 4, 'training_batch_size': 512, } # Create a network using the default parameters net = ANN(layer_structure, activation_functions, config=cfg) net.load_input_data(normalize=False, module6_file=True) net.train(epochs=epochs, include_test_set=False) return net
def load_raw_and_save(alternate=False, num_games=16, only_successful=False, vectorlength=16): """ Loads raw data from game_data.txt, parses, transforms to alternate repr if set to True, then flattens the data, and pickles and saves the data to disk. """ games = Games() # Use the following to parse 512 games from scratch, that have at least reached 2048, # then add an additional filter of min_maxtile 4096, flatten to Nx16 np.ndArray and gzip pickle games.parse_from_raw_game_data(num_games=num_games, only_successful=only_successful) if alternate: games.transform_to_alternate_representation() boards, labels = games.flatten(vectorlength=vectorlength) print('Total labels: %d' % len(labels)) print('Total board states: %d' % len(boards)) games.save()