← Вернуться к списку

Как извлечь признаки из обученной CNN, когда размерность признаков большая?

Краткое содержание

Я обучил сверточную нейронную сеть на изображениях для детекции эмоций. Теперь мне нужно использовать ту же сеть для извлечения признаков из изображений и использовать их для обучения LSTM. Проблема заключается в следующем: размерности верхних слоев:[None, 4, 4, 512]или[None, 4, 4, 1024]. Следовательно, извлечение признаков из этого слоя приведет к вектору размерностью 4 x 4 x 512 = 8192или 4 x 4 x 1024 = 16384для каждого изображения. Очевидно, это не то, что мне нужно. Поэтому я хотел бы знать, что делать в этом случае и как извлечь признаки приемлемого размера. Должен ли я применить global average pooling к активации или что-то еще? Любая помощь будет очень ценна!

Полный текст

4 $\begingroup$ Я обучил сверточную нейронную сеть на изображениях для распознавания эмоций. Теперь мне нужно использовать ту же сеть для извлечения признаков из изображений и использовать их для обучения LSTM. Проблема в том, что размерности верхних слоев составляют: [None, 4, 4, 512] или [None, 4, 4, 1024]. Следовательно, извлечение признаков из этого слоя приведет к вектору размерности 4 x 4 x 512 = 8192 или 4 x 4 x 1024 = 16384 для каждого изображения. Очевидно, это не то, что мне нужно. Поэтому я хотел бы знать, что делать в этом случае и как извлечь признаки разумного размера. Следует ли применять глобальное среднее объединение (global average pooling) к активации или как-то иначе? Любая помощь будет очень appreciated! convolutional-neural-networks long-short-term-memory feature-selection dimensionality Share Improve this question Follow edited 30 mins ago Mr. AI Cool 1,107 1 1 silver badge 19 19 bronze badges asked Nov 1, 2018 at 16:56 I. A 141 3 3 bronze badges $\endgroup$ Add a comment | 2 Answers 2 Sorted by: Reset to default Highest score (default) Date modified (newest first) Date created (oldest first) 1 $\begingroup$ Я думаю, нормально позволить CNN извлекать большое количество карт признаков, а затем вы можете уменьшить признаки из них. Чтобы уменьшить признаки из результата CNN, вы можете выполнить отбор признаков (feature selection) или извлечение признаков (feature extraction). Некоторые предпочитают использовать отбор признаков и выбирать наиболее значимые карты признаков, например: Action unit selective feature maps in deep networks for facial expression recognition Convolutional Neural Network Simplification Based on Feature Maps Selection Надеюсь, это поможет. Share Improve this answer Follow answered Nov 2, 2018 at 6:50 malioboro 2,909 3 3 gold badges 23 23 silver badges 47 47 bronze badges $\endgroup$ Add a comment | 1 $\begingroup$ В дополнение к первому ответу об отборе признаков, вы также можете добавить слой глобального максимального или среднего объединения в конце вашей сети. Это уменьшит размерность до 512 или 1024. Если это все еще слишком много, другой вариант — добавить дополнительный сверточный слой с уменьшенным количеством каналов, а затем выполнить глобальное объединение. Вам придется экспериментировать, чтобы определить, какой вариант лучше для ваших данных. Share Improve this answer Follow answered Apr 20, 2021 at 20:58 Mike NZ 451 2 2 silver badges 6 6 bronze badges $\endgroup$ Add a comment | You must log in to answer this question. Start asking to get answers Find the answer to your question by asking. Ask question Explore related questions convolutional-neural-networks long-short-term-memory feature-selection dimensionality See similar questions with these tags.