text: import os
  import sys
  import time
  
  import numpy as np
  from tqdm import tqdm
  import tensorflow as tf
  
  sys.path.append('../../')
  from utils import average_meter
  #from NeuralNet import NeuralNet
  
  from scotland_yard_nnet import ScotlandYardNNet as synnet
  
  args = dict({
      'lr': 0.001,
      'dropout': 0.3,
      'epochs': 10,
      'batch_size': 64,
      'num_channels': 512,
  })
  
  
  class NNetWrapper:
      def __init__(self, game, player):
          self.nnet = synnet(game, args, player)
  
      def train(self, examples):
          """
          examples: list of examples, each example is of form (board, pi, v)
          """
          input_boards, target_pis, target_vs = list(zip(*examples))
          input_boards = np.asarray(input_boards)
          target_pis = np.asarray(target_pis)
          target_vs = np.asarray(target_vs)
          self.nnet.model.fit(x=input_boards, y=[target_pis, target_vs], batch_size=args["batch_size"],
                              epochs=args["epochs"])
  
      def predict(self, board):
          """
          board: np array with board
          """
          # timing
          start = time.time()
  
          # preparing input
          board = board[np.newaxis, :]
  
          # run
          pi, v = self.nnet.model.predict(board)
  
          # print('PREDICTION TIME TAKEN : {0:03f}'.format(time.time()-start))
          return pi[0], v[0]
  
  
      def save_checkpoint(self, folder='checkpoint', filename='checkpoint.pth.tar'):
          filepath = os.path.join(folder, filename)
          if not os.path.exists(folder):
              print("Checkpoint Directory does not exist! Making directory {}".format(folder))
              os.mkdir(folder)
          else:
              print("Checkpoint Directory exists! ")
          self.nnet.model.save_weights(filepath)
  
  
      def load_checkpoint(self, folder='checkpoint', filename='checkpoint.pth.tar'):
          filepath = os.path.join(folder, filename)
          if not os.path.exists(filepath):
              raise ("No model in path {}".format(filepath))
          self.nnet.model.load_weights(filepath)
  