사용 AveragePooling2D 대신 GlobalAveragePooling2D 대체하는 조밀 한 후 레이어는 감독 하에서 분류

0

질문

를 사용할 수 있는 AveragePooling2D 레이어 pool_size 크기의 기능도 대신 GlobalAveragePooling2D 층? 이것의 목적은 교체를 고밀도 레이어는 감독 하에서. 은 GlobalAveragePooling2D 의 특별한 경우 AveragePooling2D??

deep-learning keras tensorflow
2021-11-22 13:35:20
2

최고의 응답

2

GlobalAveragePooling2D 이 다운 샘플링을 입력하여 평균값을 따라 공간 크기를 반환 1D 출력하지 않는 경우 기본적으로 설정 keepdims= True. AveragePooling2D 또한 다운샘플링는 입력하지만 걸리는 평균 값이 입력 창에 의해 정의 pool_size 매개 변수입니다. 그래서,그것을 반환합니다 3D 출력:

import tensorflow as tf
x = tf.constant([[1., 2., 3.],
                 [4., 5., 6.],
                 [7., 8., 9.]])

x = tf.reshape(x, [1, 3, 3, 1]) # Add batch dimension

avg_pool_2d = tf.keras.layers.AveragePooling2D(pool_size=(2, 2),
   strides=(1, 1), padding='valid')
avg_global_2d = tf.keras.layers.GlobalAveragePooling2D()
print(avg_pool_2d(x).shape)
print(avg_global_2d(x).shape)
(1, 2, 2, 1)
(1, 1)

당신은 아마이 있을 평평하게 출력 AveragePooling2D 층하려는 경우 그것을 먹을 Dense 층후:

import tensorflow as tf
x = tf.constant([[1., 2., 3.],
                 [4., 5., 6.],
                 [7., 8., 9.]])

x = tf.reshape(x, [1, 3, 3, 1]) # Add batch dimension

avg_pool_2d = tf.keras.layers.AveragePooling2D(pool_size=(2, 2),
   strides=(1, 1), padding='valid')
avg_global_2d = tf.keras.layers.GlobalAveragePooling2D()
print(tf.keras.layers.Flatten()(avg_pool_2d(x)).shape)
print(avg_global_2d(x).shape)
(1, 4)
(1, 1)

는 경우가 아닌 경우에 당신은 남길 수 있습으로 그것입니다.

업데이트: GlobalAveragePooling2DAveragePooling2D 할 수 있는 때때로 비슷하게 동작할 경우 조정 stridespool_size 매개 변수를 따라:

import tensorflow as tf
x = tf.constant([[1., 2., 3.],
                 [4., 5., 6.],
                 [7., 8., 9.]])

x = tf.reshape(x, [1, 3, 3, 1]) # Add batch dimension

avg_pool_2d = tf.keras.layers.AveragePooling2D(pool_size=(2, 2),
   strides=(3, 3), padding='valid')
avg_global_2d = tf.keras.layers.GlobalAveragePooling2D()

print(avg_pool_2d(x))
print(avg_global_2d(x))
tf.Tensor([[[[3.]]]], shape=(1, 1, 1, 1), dtype=float32)
tf.Tensor([[5.]], shape=(1, 1), dtype=float32)

avg_pool_2d = tf.keras.layers.AveragePooling2D(pool_size=(3, 3),
   strides=(2, 2), padding='valid')
avg_global_2d = tf.keras.layers.GlobalAveragePooling2D()
tf.Tensor([[[[5.]]]], shape=(1, 1, 1, 1), dtype=float32)
tf.Tensor([[5.]], shape=(1, 1), dtype=float32)
2021-11-22 14:51:04

'x=입력(모=(128,128,3))'후 더 많은 감독 하에서 레이어 내가:'a=Conv2D(200,(1,1),패딩='동일한',인증='softmax',data_format='channels_last')(output_of_the_layer_before)'마지막은 나선형 계층 그때 나는'b=Lambda(lambda x:짠(x,축=2))(AveragePooling2D(pool_size=(1,128))(a)
DSPinterested

이 완벽하게 작동합을 위해 특정 작업에 내가 저에 궁금해 하는 사용 GlobalaveragePooling2D 되지 않을 수도 있 사용할 수 있는 유일한 옵션에 대한 대체를 고밀도 레이어...도 GlobalAveragePooling2D 당신은 옵션이의'keepdims=True'또는'keepdims=False',공유할 수 없습니다 내 코드,이해 당신
DSPinterested

네,그것이 의미했습니다 그러나 정확히 무엇이 당신의 질문은 지금 또는 당신은 무엇을 이해하지?
AloneTogether

는 방법을 사용하여 AveragePooling2D 층과 같은 위에서 설명에 이르게 거의 동일한 분류 결과로 GlobalAveragePooling2D! 일반적으로 문헌에 나가 거의 항상 볼 수 있 GlobalAveragePooling2D 으로 교체 위해 고밀도 레이어에서의 감독 하에서만 본 AveragePooling2D 사용되는 대신 고밀도층
DSPinterested

업데이트에 대답하지만 할 수 없습을 재현한 코드를 추가 코멘트에..십시오 업데이트와 함께 귀하의 질문의 관련 코드,결과는,당신의 질문입니다.
AloneTogether

세계 평균 풀링은 특별한 것은 없습니다. 당신이 사용할 수 있는 평균 풀링으로 필터 크기가 동일한 입력 크기와 유효 패딩,그것은 정확히 동일합니다. 당신이 사용할 수 있습니 같은 기능 tf.reduce_mean. 이유는 아무도 이것은 그냥 매우 쉽고 간단하게 사용할 수 있는 글로벌 풀링을 직접...
xdurch0

@xdurch0,감!
DSPinterested
0

추가 답을 위,세계 평균을 풀링할 수 있습을 위해 사용되는 변수 크기의 이미지로서의 입력이 있습니다. 입력 전 풀링은 글로벌 (N,H,W,C) 다음 출력 될 것입니다 (N,1,1,C) 에 대한 때 keras keepdims=True. 이것은 출력의 이미지와는 다른 (H,W) 생산 유사한 모양의 출력이 있습니다.

참고:

2021-11-22 13:59:40

다른 언어로

이 페이지는 다른 언어로되어 있습니다

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................