3 $\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 Apr 23, 2021 at 1:45 Shayan Shafiq 350 1 1 gold badge 4 4 silver badges 12 12 bronze badges asked Nov 1, 2018 at 16:56 I. A 131 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) 0 $\begingroup$ Я думаю, нормально позволить CNN извлекать большое количество карт признаков, а затем вы можете сократить признаки из них. Чтобы сократить признаки из результата CNN, вы можете выполнить отбор признаков или извлечение признаков. Некоторые люди предпочитают использовать отбор признаков и выбирать наиболее значимые карты признаков, например: 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,899 3 3 gold badges 23 23 silver badges 47 47 bronze badges $\endgroup$ Add a comment | 0 $\begingroup$ В дополнение к первому ответу об отборе признаков, вы также можете добавить слой глобального максимального или среднего объединения в конце вашей сети. Это сократит размерность до 512 или 1024. Если это все еще слишком много, другой вариант — добавить дополнительный сверточный слой с уменьшенным количеством каналов, а затем выполнить глобальное объединение. Вам придется экспериментировать, чтобы определить, какой вариант лучше для ваших данных. Share Improve this answer Follow answered Apr 20, 2021 at 20:58 Mike NZ 441 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.
3 $\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 Apr 23, 2021 at 1:45 Shayan Shafiq 350 1 1 gold badge 4 4 silver badges 12 12 bronze badges asked Nov 1, 2018 at 16:56 I. A 131 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) 0 $\begingroup$ Я думаю, нормально позволить CNN извлекать большое количество карт признаков, а затем вы можете сократить признаки из них. Чтобы сократить признаки из результата CNN, вы можете выполнить отбор признаков или извлечение признаков. Некоторые люди предпочитают использовать отбор признаков и выбирать наиболее значимые карты признаков, например: 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,899 3 3 gold badges 23 23 silver badges 47 47 bronze badges $\endgroup$ Add a comment | 0 $\begingroup$ В дополнение к первому ответу об отборе признаков, вы также можете добавить слой глобального максимального или среднего объединения в конце вашей сети. Это сократит размерность до 512 или 1024. Если это все еще слишком много, другой вариант — добавить дополнительный сверточный слой с уменьшенным количеством каналов, а затем выполнить глобальное объединение. Вам придется экспериментировать, чтобы определить, какой вариант лучше для ваших данных. Share Improve this answer Follow answered Apr 20, 2021 at 20:58 Mike NZ 441 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.
← Вернуться к списку
Проблема с извлечением признаков из сверточного слоя, где размеры карт признаков велики.
Краткое содержание
Я обучил сверточную нейронную сеть на изображениях для детекции эмоций. Теперь мне нужно использовать ту же сеть для извлечения признаков из изображений и применить их для обучения LSTM. Проблема заключается в том, что размерности верхних слоев составляют: [None, 4, 4, 512] или [None, 4, 4, 1024]. Следовательно, извлечение признаков из этого слоя приведет к получению вектора размерностью 4 x 4 x 512 = 8192 или 4 x 4 x 1024 = 16384 для каждого изображения. Очевидно, это не то, что мне нужно. Поэтому я хотел бы знать, что делать в данном случае и как извлекать признаки приемлемого размера. Следует ли применять global average pooling к активациям или как-то иначе? Любая помощь будет очень ценна!