를 사용할 수 있는 AveragePooling2D 레이어 pool_size 크기의 기능도 대신 GlobalAveragePooling2D 층? 이것의 목적은 교체를 고밀도 레이어는 감독 하에서. 은 GlobalAveragePooling2D 의 특별한 경우 AveragePooling2D??
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)
는 경우가 아닌 경우에 당신은 남길 수 있습으로 그것입니다.
업데이트: GlobalAveragePooling2D
고 AveragePooling2D
할 수 있는 때때로 비슷하게 동작할 경우 조정 strides
고 pool_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)
'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
세계 평균 풀링은 특별한 것은 없습니다. 당신이 사용할 수 있는 평균 풀링으로 필터 크기가 동일한 입력 크기와 유효 패딩,그것은 정확히 동일합니다. 당신이 사용할 수 있습니 같은 기능
xdurch0
tf.reduce_mean
. 이유는 아무도 이것은 그냥 매우 쉽고 간단하게 사용할 수 있는 글로벌 풀링을 직접...
@xdurch0,감!
DSPinterested