Пакетное обучение для больших наборов данных и моделей с большим количеством входов - PullRequest
0 голосов
/ 24 февраля 2019

У меня есть модель keras с 50 входами (от x1 до x50) и 1 выходом.Я сталкиваюсь с общей проблемой обучения нескольких больших файлов в Keras, которые слишком велики, чтобы поместиться в памяти GPU.

Сначала я пытался:

x1 = np.load('x1_train.npy')
x2 = np.load('x2_train.npy')
x3 = np.load('x3_train.npy')
x4 = np.load('x4_train.npy')
x5 = np.load('x5_train.npy')
x6 = np.load('x6_train.npy')

y_train = pd.read_csv("train_labels.csv")

И затем подгонятьиспользование данных:

model.fit([x1,x2,x3,x4,x5,x6], y_train, validation_data = ([x1_val,x2_val,x3_val,x4_val,x5_val,x6_val],y_validate), epochs = 15, batch_size = 20, verbose = 2)

Но доступной оперативной памяти было недостаточно для размещения данных и, следовательно, сбоя.

Сейчас я делаю:

def generate_batches(batch_size):
  while True:
    x1 = np.load('x1_train.npy')
    x2 = np.load('x2_train.npy')
    x3 = np.load('x3_train.npy')
    x4 = np.load('x4_train.npy')
    x5 = np.load('x5_train.npy')
    x6 = np.load('x6_train.npy')

    y_train = pd.read_csv("train_labels.csv")

    for cbatch in range(0, x1.shape[0], batch_size):
      i = cbatch + batch_size
         yield ([x1[cbatch:i,:,:],x2[cbatch:i,:,:],x3[cbatch:i,:,:],x4[cbatch:i,:,:],x5[cbatch:i,:,:],x6[cbatch:i,:,:]], y_train[cbatch:i])

Я планируюиспользовать fit_generator для подгонки модели, но приведенный выше код все еще дает сбой.

x1, x2 ... x50 все имеют форму (77156, 30, 50, 1)

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