code: import cv2
  import numpy as np
  from glob import glob
  import matplotlib.pyplot as plt
  
  np.random.seed(0)
  
  num_classes = 2
  img_height, img_width = 64, 64
  
  CLS = ['akahara', 'madara']
  
  # get train data
  def data_load(path, hf=False, vf=False, rot=None):
      xs = []
      ts = []
      paths = []
      
      for dir_path in glob(path + '/*'):
          for path in glob(dir_path + '/*'):
              x = cv2.imread(path)
              x = cv2.resize(x, (img_width, img_height)).astype(np.float32)
              x /= 255.
              x = x[..., ::-1]
              xs.append(x)
  
              for i, cls in enumerate(CLS):
                  if cls in path:
                      t = i
              
              ts.append(t)
  
              paths.append(path)
  
              if hf:
                  xs.append(x[:, ::-1])
                  ts.append(t)
                  paths.append(path)
  
              if vf:
                  xs.append(x[::-1])
                  ts.append(t)
                  paths.append(path)
  
              if hf and vf:
                  xs.append(x[::-1, ::-1])
                  ts.append(t)
                  paths.append(path)
  
              if rot is not None:
                  angle = rot
                  scale = 1
  
                  # show
                  a_num = 360 // rot
                  w_num = np.ceil(np.sqrt(a_num))
                  h_num = np.ceil(a_num / w_num)
                  count = 1
                  plt.subplot(h_num, w_num, count)
                  plt.axis('off')
                  plt.imshow(x)
                  plt.title("angle=0")
                  
                  while angle < 360:
                      _h, _w, _c = x.shape
                      max_side = max(_h, _w)
                      tmp = np.zeros((max_side, max_side, _c))
                      tx = int((max_side - _w) / 2)
                      ty = int((max_side - _h) / 2)
                      tmp[ty: ty+_h, tx: tx+_w] = x.copy()
                      M = cv2.getRotationMatrix2D((max_side/2, max_side/2), angle, scale)
                      _x = cv2.warpAffine(tmp, M, (max_side, max_side))
                      _x = _x[tx:tx+_w, ty:ty+_h]
                      xs.append(x)
                      ts.append(t)
                      paths.append(path)
  
                      # show
                      count += 1
                      plt.subplot(h_num, w_num, count)
                      plt.imshow(_x)
                      plt.axis('off')
                      plt.title("angle={}".format(angle))
  
                      angle += rot
                  plt.show()
  
  
      xs = np.array(xs, dtype=np.float32)
      ts = np.array(ts, dtype=np.int)
      
      xs = xs.transpose(0,3,1,2)
  
      return xs, ts, paths
  
  
  xs, ts, paths = data_load("../Dataset/train/images/", hf=True, vf=True, rot=1)
  
  mb = 3
  mbi = 0
  train_ind = np.arange(len(xs))
  np.random.seed(0)
  np.random.shuffle(train_ind)
  
  for i in range(10):
      if mbi + mb > len(xs):
          mb_ind = train_ind[mbi:]
          np.random.shuffle(train_ind)
          mb_ind = np.hstack((mb_ind, train_ind[:(mb-(len(xs)-mbi))]))
          mbi = mb - (len(xs) - mbi)
      else:
          mb_ind = train_ind[mbi: mbi+mb]
          mbi += mb
  
      print(mb_ind)
  
apis: numpy.sqrt numpy.random.shuffle numpy.ceil numpy.zeros matplotlib.pyplot.axis numpy.random.seed matplotlib.pyplot.title matplotlib.pyplot.subplot matplotlib.pyplot.imshow matplotlib.pyplot.show numpy.array