Давайте предположим два следующих случая, поскольку вы уже упоминали, что 100 массивов не пространственно коррелированы:
- 384 значения каждого объекта пространственно независимы.
- 384 значения каждой функции пространственно зависят.Например, это значения в частотном диапазоне после некоторого БПФ или аналогичной операции.
В случае 1 у вас есть в основном независимая функция 100x384.Таким образом, сглаживание, кажется, является опцией.
В случае 2, возможно, имеет смысл применить двумерную свертку ко всем элементам.Вот как это делается:
Сначала вы должны подготовить данные в правильном формате.Предполагая, что ваши данные имеют 482 временных шага, вы должны решить, сколько временных шагов вы хотели бы иметь в каждой выборке.Например, вы можете решить сделать 10 временных шагов в каждой выборке, что без перекрытия между выборками даст вам около 48 выборок.Таким образом, данные теперь будут иметь форму (48, 10, 100, 384).Кроме того, мы должны добавить дополнительное измерение в качестве канала, чтобы иметь возможность применять двумерную свертку в Керасе.Таким образом, ваши данные обретут форму (48, 10, 100, 384, 1)
Далее вы можете выбрать архитектуру.Мы будем применять Conv2D к каждому массиву на каждом временном шаге.Мы используем размер ядра (1, x) или (100, x), поскольку ваши массивы пространственно не связаны.Вот пример архитектуры:
model = Sequential()
model.add(TimeDistributed(Conv2D(16, (1, 5), activation="relu"), input_shape=(10, 100, 384, 1)))
model.add(TimeDistributed(MaxPooling2D((1, 2))))
model.add(TimeDistributed(Conv2D(32, (100, 9), activation="relu"), input_shape=(10, 100, 384, 1)))
model.add(TimeDistributed(MaxPooling2D((1, 4))))
model.add(TimeDistributed(Flatten()))
model.add(LSTM(16, return_sequences=True))
model.add(Dense(1, activation='sigmoid'))
Несколько дополнительных примечаний:
- Вы, безусловно, можете добавить больше слоев каждого типа.
- TimeDistruted является новым выше.Вы можете прочитать об этом здесь .
- Если у вас есть изображения для начала, рассмотрите возможность использования гибрида CNN / LSTM или Conv3D с самого начала по сравнению с извлечением 100 массивов из изображения.
- Взгляните на ConvLSTM2D здесь для комбинированного слоя CNN и LSTM.