def convert_to_training_data(data): """ :param data: format is SelfPlayWorker.buffer :return: """ state_list = [] policy_list = [] z_list = [] for state, policy, z in data: env = ChessEnv().update(state) black_ary, white_ary = env.black_and_white_plane() state = [black_ary, white_ary] if env.board.turn == chess.BLACK else [white_ary, black_ary] state_list.append(state) policy_list.append(policy) z_list.append(z) return np.array(state_list), np.array(policy_list), np.array(z_list)
def convert_to_training_data(data): """ :param data: format is SelfPlayWorker.buffer :return: """ state_list = [] policy_list = [] z_list = [] aux_move_number = 1 movements = [] for state, policy, z in data: move_number = int( (ChessEnv().update(state, movements)).board.fen().split(" ")[5]) if aux_move_number < move_number: if len(movements) > 8: movements.pop(0) movements.append(env.observation) aux_move_number = move_number else: aux_move_number = 1 movements = [] env = ChessEnv().update(state, movements) black_ary, white_ary, current_player, move_number = env.black_and_white_plane( ) state = [black_ary, white_ary ] if env.board.fen().split(" ")[1] == 'b' else [ white_ary, black_ary ] state = np.reshape(np.reshape(np.array(state), (18, 6, 8, 8)), (108, 8, 8)) state = np.vstack((state, np.reshape(current_player, (1, 8, 8)), np.reshape(move_number, (1, 8, 8)))) state_list.append(state) policy_list.append(policy) z_list.append(z) return np.array(state_list), np.array(policy_list), np.array(z_list)