def batch_generator(x, y, batch_size):
size = len(x)
while True:
shuffle_indexes = np.random.permutation(np.arange(size))
x_shuffled, y_shuffled = x[shuffle_indexes], y[shuffle_indexes]
for i in range(0, size, batch_size):
x_batch, y_batch = x_shuffled[i:i + batch_size], y_shuffled[i:i + batch_size]
yield x_batch, y_batch