Я использую следующий код (используя керас ), чтобы обучить 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?