Я работал над клоном Alpha Go Zero, используя TensorFlow и Keras. Кажется, все работает нормально, но я не уверен, имеет ли смысл код, который я использую для обучения моей модели:
def train_from_game_log(self, game_log):
half_point = len(game_log['x'])//2
x = np.array(game_log['x'][half_point:])
y0 = np.array(game_log['y'][0][half_point:])
y1 = np.array(game_log['y'][1][half_point:])
self.model.fit(x, [y0, y1], shuffle=True, batch_size=64, epochs=4)
x = tf.image.rot90(x, k=1)
y0 = np.reshape(y0, (-1,self.input_board_size, self.input_board_size, 1))
y0 = tf.image.rot90(y0, k=1)
y0 = np.reshape(y0, (-1,self.input_board_size*self.input_board_size))
self.model.fit(x, [y0, y1], shuffle=True, batch_size=64, epochs=4)
x = tf.image.rot90(x, k=1)
y0 = np.reshape(y0, (-1,self.input_board_size, self.input_board_size, 1))
y0 = tf.image.rot90(y0, k=1)
y0 = np.reshape(y0, (-1,self.input_board_size*self.input_board_size))
self.model.fit(x, [y0, y1], shuffle=True, batch_size=64, epochs=4)
x = tf.image.rot90(x, k=1)
y0 = np.reshape(y0, (-1,self.input_board_size, self.input_board_size, 1))
y0 = tf.image.rot90(y0, k=1)
y0 = np.reshape(y0, (-1,self.input_board_size*self.input_board_size))
self.model.fit(x, [y0, y1], shuffle=True, batch_size=64, epochs=4)
Я вращаю свой набор данных и снова запускаю fit()
на модели.
Есть ли смысл его так тренировать? Будет ли это смещать модель к последнему вращению? Стоит ли вместо этого сделать генератор?