Вписывайте данные в модель keras машинного обучения, когда данные огромны

В учебниках по машинному обучению с использованием keras код для обучения модели машинного обучения представляет собой типичный однострочный код.

model.fit(X_train, 
          Y_train, 
          nb_epoch=5, 
          batch_size = 128, 
          verbose=1, 
          validation_split=0.1)

Это кажется простым, когда обучающие данные X_train и Y_train малы. X_train и Y_train - это пустые ndarrays. В практических ситуациях обучающие данные могут занимать гигабайты, которые могут быть слишком большими, чтобы поместиться даже в ОЗУ компьютера.

Как вы отправляете данные в model.fit(), когда обучающие данные слишком велики?


person user1315789    schedule 17.08.2018    source источник
comment
рассмотрите возможность использования fit_generator и загружайте данные с диска партиями внутри генераторов.   -  person Mitiku    schedule 17.08.2018


Ответы (1)


В Keras есть простое решение. Вы можете просто использовать генераторы Python, где ваши данные загружаются лениво. Если у вас есть изображения, вы также можете использовать ImageDataGenerator.

def generate_data(x, y, batch_size):    
    while True:
        batch = []
        for b in range(batch_size):
           batch.append(myDataSlice)

        yield np.array(batch )

model.fit_generator(
generator=generate_data(x, y, batch_size),
steps_per_epoch=num_batches, 
validation_data=list_batch_generator(x_val, y_val, batch_size), 
validation_steps=num_batches_test)
person ixeption    schedule 17.08.2018