Вход LSTM не помещается в памяти - PullRequest
0 голосов
/ 31 марта 2020

Я использую следующий код (используя керас ), чтобы обучить LSTM выполнять двоичную классификацию.

x_train = np.reshape(data_x, (N_SAMPLES, N_TIME_STEPS, N_FEATURES))
y_train = np.reshape(data_x, (N_SAMPLES, N_TIME_STEPS, 1))

model = Sequential();
model.add(LSTM(n_units, input_shape=(N_TIME_STEPS, N_FEATURES), return_sequences = True));
model.add(Dropout(dropout))
model.add(Dense(1, activation = 'sigmoid'))

model.compile(loss = 'binary_crossentropy', optimizer = 'adam', metrics = ['accuracy'])
model.fit(x_train, y_train, epochs = n_epochs, batch_size = batch_size, verbose = 2)

data_x содержит N_SAMPLES * N_TIME_STEPS записей, каждая с * Вектор длины 1008 * Я использую N_FEATURES = 600, из которых 400 функции остаются неизменными per time step. Изменяются только last 200 функции. Когда N_TIME_STEPS > 50, затраты на хранение тех же 400 функций 50 times слишком велики. У меня не хватает памяти, потому что N_SAMPLES > 1m и x_train слишком велики для загрузки в память.

Есть ли способ сжать этот ввод и все еще заставить работать LSTM?

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