private static Map<String, Reward> loadTrainingData(final String inputFileName) { try (BufferedReader reader = new BufferedReader( new InputStreamReader(new GZIPInputStream(new FileInputStream(inputFileName))))) { Map<String, Reward> data = new TreeMap<>(); String line; while ((line = reader.readLine()) != null) { if (line.startsWith("#")) { continue; } String[] tokens = line.split("\\s"); String positionId = PositionId.positionIDFromKey(AuchKey.fromNnPosition(tokens[0])); Reward reward = new Reward(); for (int i = 0; i < Constants.NUM_OUTPUTS; i++) { reward.data()[i] = Double.parseDouble(tokens[i + 1]); } data.put(positionId, reward); } addMissedInversions(data); return data; } catch (final Exception e) { throw new RuntimeException(e); } }
private static void addMissedInversions(final Map<String, Reward> data) { Map<String, Reward> missed = new TreeMap<>(); for (String key : data.keySet()) { Board board = Board.positionFromID(key); board.swapSides(); String posRev = board.positionID(); if (!data.containsKey(posRev)) { Reward reward = data.get(key); reward.invert(); missed.put(posRev, reward); } } data.putAll(missed); }