Объединение RNN (рекуррентная нейтральная сеть) с уровнем CNN
Как объединить или можно ли объединить алгоритм RNN со слоем CNN с использованием Python для классификации изображений?
1 ответ
Это зависит от того, что вы пытаетесь решить, но, безусловно, есть несколько способов сделать это.
Во-первых, вы можете настроить подачу из слоя CNN на уровень LSTM. Здесь вы пытаетесь захватить пространственные особенности, а затем закодировать эти особые особенности в последовательном встраивании. Это можно сделать, распределяя вывод CNN по времени так, чтобы LSTM получал последовательный ввод.
#define CNN model
cnn = Sequential()
cnn.add(Conv2D(...))
cnn.add(MaxPooling2D(...))
cnn.add(Flatten())
# define LSTM model
model = Sequential()
model.add(TimeDistributed(cnn, ...))
model.add(LSTM(..))
model.add(Dense(...))
Вы также можете сделать наоборот и передать LSTM в CNN. Это может быть связано с тем, что вы можете захотеть кодировать последовательные объекты, но после этого вам могут потребоваться пространственные комбинации этих скрытых представлений. Это может быть реализовано без каких-либо распределенных по времени слоев.
Подробности здесь.