#!/usr/bin/python2 from dlgo.gtp import GTPFrontend from dlgo.agent.predict import load_prediction_agent from dlgo.agent import termination import h5py model_file = h5py.File("agents/betago.hdf5", "r") agent = load_prediction_agent(model_file) strategy = termination.get("opponent_passes") termination_agent = termination.TerminationAgent(agent, strategy) frontend = GTPFrontend(termination_agent) frontend.run()
encoder = SevenPlaneEncoder((go_board_rows, go_board_cols)) processor = GoDataProcessor(encoder=encoder.name()) X, y = processor.load_go_data(num_samples=100) # end::e2e_processor[] # tag::e2e_model[] input_shape = (encoder.num_planes, go_board_rows, go_board_cols) model = Sequential() network_layers = large.layers(input_shape) for layer in network_layers: model.add(layer) model.add(Dense(nb_classes, activation='softmax')) model.compile(loss='categorical_crossentropy', optimizer='adadelta', metrics=['accuracy']) model.fit(X, y, batch_size=128, epochs=20, verbose=1) # end::e2e_model[] # tag::e2e_agent[] deep_learning_bot = DeepLearningAgent(model, encoder) deep_learning_bot.serialize("../agents/deep_bot.h5") # end::e2e_agent[] # tag::e2e_load_agent[] model_file = h5py.File("../agents/deep_bot.h5", "r") bot_from_file = load_prediction_agent(model_file) web_app = get_web_app({'predict': bot_from_file}) web_app.run() # end::e2e_load_agent[]
sgf_move = self.sgf.coordinates(move) self.sgf.append(";{}[{}]\n".format(our_letter, sgf_move)) # end::play_local_our[] # tag::play_local_their[] def play_their_move(self): their_name = self.their_color.name their_letter = their_name[0].upper() pos = self.command_and_response("genmove {}\n".format(their_name)) if pos.lower() == 'resign': self.game_state = self.game_state.apply_move(Move.resign()) self._stopped = True elif pos.lower() == 'pass': self.game_state = self.game_state.apply_move(Move.pass_turn()) self.sgf.append(";{}[]\n".format(their_letter)) if self.game_state.last_move.is_pass: self._stopped = True else: move = gtp_position_to_coords(pos) self.game_state = self.game_state.apply_move(move) self.sgf.append(";{}[{}]\n".format(their_letter, self.sgf.coordinates(move))) # end::play_local_their[] if __name__ == "__main__": bot = load_prediction_agent(h5py.File("agents/deep_bot.h5", "r")) gnu_go = LocalGtpBot(go_bot=bot, termination=PassWhenOpponentPasses(), handicap=0, opponent='gnugo', ) gnu_go.run()
import argparse parser = argparse.ArgumentParser() parser.add_argument( '--bot-file', help="Path to the h5 file that has the bot. i.e. ./agents/deep_bot.h5", required=True) parser.add_argument( '--print-probs', help="If set, print probabilities of each move during the bot's turn", action="store_true") args = parser.parse_args() agent1 = h5py.File(args.bot_file, "r") bot_1_from_file = load_prediction_agent(agent1, print_probs=args.print_probs) def main(): while True: board_size = 19 try: board_size = int(board_size) except ValueError: print('Invalid Entry') continue if board_size in range(5, 20): break else: print('Invalid Entry') game = goboard.GameState.new_game(board_size)
their_name = self.their_color.name their_letter = their_name[0].upper() pos = self.command_and_response("genmove {}\n".format(their_name)) if pos.lower() == 'resign': self.game_state = self.game_state.apply_move(Move.resign()) self._stopped = True elif pos.lower() == 'pass': self.game_state = self.game_state.apply_move(Move.pass_turn()) self.sgf.append(";{}[]\n".format(their_letter)) if self.game_state.last_move.is_pass: self._stopped = True else: move = gtp_position_to_coords(pos) self.game_state = self.game_state.apply_move(move) self.sgf.append(";{}[{}]\n".format(their_letter, self.sgf.coordinates(move))) # end::play_local_their[] if __name__ == "__main__": bot = load_prediction_agent(h5py.File("../../agents/betago.hdf5", "r")) gnu_go = LocalGtpBot( go_bot=bot, termination=PassWhenOpponentPasses(), handicap=0, opponent='pachi', ) gnu_go.run()
pos = self.command_and_response("genmove {}\n".format(their_name)) if pos.lower() == 'resign': self.game_state = self.game_state.apply_move(Move.resign()) self._stopped = True elif pos.lower() == 'pass': self.game_state = self.game_state.apply_move(Move.pass_turn()) self.sgf.append(";{}[]\n".format(their_letter)) if self.game_state.last_move.is_pass: self._stopped = True else: move = gtp_position_to_coords(pos) self.game_state = self.game_state.apply_move(move) self.sgf.append(";{}[{}]\n".format(their_letter, self.sgf.coordinates(move))) # end::play_local_their[] if __name__ == "__main__": bot = load_prediction_agent( h5py.File( "/Users/andrewnomura/PycharmProjects/GammaGo_3/agents/deep_bot.h5", "r")) gnu_go = LocalGtpBot( go_bot=bot, termination=PassWhenOpponentPasses(), handicap=0, opponent='gnugo', ) gnu_go.run()
import numpy as np from dlgo import rl from dlgo import scoring from dlgo import goboard_fast as goboard from dlgo.goboard_fast import Move from dlgo.gotypes import Player, Point from dlgo.utils import print_board, print_move from dlgo import agent from dlgo.agent.predict import DeepLearningAgent, load_prediction_agent from dlgo.agent import load_prediction_agent, load_policy_agent, AlphaGoMCTS from dlgo.rl import load_value_agent # Load policy agent and value agent fast_policy = load_prediction_agent( h5py.File('models/AlphaGo/alphago_policyv0-0-0.h5', 'r')) strong_policy = load_policy_agent( h5py.File('models/AlphaGo/alphago_policyv0-0-0.h5', 'r')) value = load_value_agent( h5py.File('models/AlphaGo/alphago_valuev1-0-1.h5', 'r')) # Create AlphaGo MCTS agent based on the policy agent and the value agent alphago = AlphaGoMCTS(strong_policy, fast_policy, value, depth=10, rollout_limit=50, num_simulations=100) # Test duration for selecting a move game_state = goboard.GameState.new_game(19)