Advertisement
Guest User

Untitled

a guest
Mar 24th, 2019
72
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.29 KB | None | 0 0
  1. import pickle
  2. import numpy as np
  3. from matplotlib import pyplot as plt
  4. import seaborn as sns
  5. # def transform_boards(list_of_boards):
  6. #     array_of_boards = np.array(list_of_boards)
  7. #     one_hot_sparse = self.board_ohe.transform(array_of_boards.reshape([-1, 1]))
  8. #     return one_hot_sparse.toarray().reshape([-1, 4, 4, 16])
  9.  
  10. def transform_boards1(list_of_boards):
  11.     array_of_boards = np.array(list_of_boards)
  12.     return array_of_boards.reshape([-1, 4, 4, 1])
  13.  
  14. def generate_rotated_boards(list_of_boards, y):
  15.     boards = transform_boards1(list_of_boards)
  16.     boards1 = np.rot90(boards, axes=(1, 2))
  17.     boards2 = np.rot90(boards1, axes=(1, 2))
  18.     boards3 = np.rot90(boards2, axes=(1, 2))
  19.     flipped0 = np.flip(boards, axis=1)
  20.     flipped1 = np.rot90(flipped0, axes=(1, 2))
  21.     flipped2 = np.rot90(flipped1, axes=(1, 2))
  22.     flipped3 = np.rot90(flipped2, axes=(1, 2))
  23.     x_boards = np.concatenate([boards, boards1, boards2, boards3, flipped0, flipped1, flipped2, flipped3], axis=0)
  24.     y_extended = np.array(y*8).reshape(-1, 1)
  25.     return x_boards, y_extended
  26. with open("game_history.pickle", 'rb') as ff:
  27.     game_history = pickle.load(ff)
  28. import keras as k
  29. def conv_prelu(x, n=512, padding='valid'):
  30.     x = k.layers.Conv2D(filters=n, kernel_size=(2, 2), padding=padding)(x)
  31.     x = k.layers.PReLU()(x)
  32.     return x
  33.  
  34.    
  35.  
  36. input_boards = k.layers.Input(shape=(4, 4, 1), name="input_boards")
  37. x = conv_prelu(input_boards, padding='same')
  38. x = conv_prelu(x, padding='same')
  39. x = conv_prelu(x, padding='same')
  40. x = conv_prelu(x) # 3, 3
  41. x = conv_prelu(x) # 2, 2
  42. x = conv_prelu(x) # 1, 1
  43. x = k.layers.Flatten()(x)
  44. x = k.layers.Dense(64, activation=k.layers.PReLU())(x)
  45. x = k.layers.Dense(16, activation=k.layers.PReLU())(x)
  46. prediction = k.layers.Dense(1, activation='linear')(x)
  47. my_optimizer = k.optimizers.Adam(lr=0.001, beta_1=0.9, beta_2=0.999, epsilon=None, decay=0.001, amsgrad=False)
  48. model = k.models.Model(inputs=input_boards, outputs=prediction)
  49. model.compile(optimizer=my_optimizer, loss='mean_squared_error',metrics=['mae', 'logcosh'])
  50.  
  51. tb = k.callbacks.TensorBoard(log_dir="jp_logs/run1", write_graph=False)
  52. boards = game_history[0]
  53. values = game_history[1]
  54. x, y = generate_rotated_boards(boards, values)
  55. x.shape, y.shape
  56. model.fit(x, y, verbose=1, epochs=30, batch_size=4000)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement