Есть ли способ перетасовать данные на пользовательский keras ImageGenerator? - PullRequest
0 голосов
/ 23 февраля 2020

У меня есть собственный генератор, который читает файлы h5.

Кажется, что генератор довольно линейный, потому что данные не "рандомизированы"

Любой способ перемешать данные каждый раз при вводе новая эпоха?

class H5Gen(Sequence):
  def __init__(self, src, n_classes=2,
               batch_size=16,
               hot=True,
               augmenter=None,
               pprocessors=None):
    self.file = h5.File(src, 'r')
    self.n_classes = n_classes
    self.batch_size = batch_size
    self.hot = hot
    self.augmenter = augmenter
    self.pprocessors = pprocessors

  def __len__(self):
    return int(np.floor(self.file['images'].shape[0] / self.batch_size))

  def preprocess(self, X):
    X_processed = []

    for x in X:
      for p in self.pprocessors:
        x = p.preprocess(x)

      X_processed.append(x)

    return np.array(X_processed)

  def hot_encode(self, y):
    return to_categorical(y, num_classes=self.n_classes)

  def __getitem__(self, index):
    X = self.file['images'][index * self.batch_size: (index + 1) * self.batch_size]
    y = self.file['labels'][index  *self.batch_size: (index + 1) * self.batch_size]

    if self.hot:
      y = self.hot_encode(y)

    if self.pprocessors is not None:
      X = self.preprocess(X)

    if self.augmenter is not None:
        (X, y) = next(self.augmenter.flow(X, y, batch_size=self.batch_size))

    return (X, y)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...