2017-10-01 8 views
1

KerasでCNNを作成した後に、それぞれBatchNormalization、Activation、MaxPoolingという12の畳み込みレイヤーを作成しました。層のサンプルは次のとおりです。Maxpooling LayerがKerasでエラーを起こす

model.add(Conv2D(256, (3, 3), padding='same')) 
model.add(BatchNormalization()) 
model.add(Activation('relu')) 
model.add(MaxPooling2D(pool_size=2)) 

私は上記のコードのようにすべてのコンベンション層を形成した後MaxPoolingを追加した場合、私は最終層でエラーを取得する32枚の特徴マップで始まり、512で終わります

ValueError: Negative dimension size caused by subtracting 2 from 1 for 'max_pooling2d_11/MaxPool' (op: 'MaxPool') with input shapes: [?,1,1,512].

いずれかのレイヤーで1つのMaxPoolingを省略すると、モデルがコンパイルされ、トレーニングが開始されます。私はバックエンドとしてTensorflowを使用しており、最初のレイヤーには画像の正しい入力形状があります。

これが起こっている可能性のあることはありますか?

+0

最初のレイヤーの入力シェイプとは何ですか? –

+0

入力の形状は次のとおりです:input_shape =(img_width、img_height、color_channels)in numbers(256,256,3) – Vasilis

答えて

2

空間次元が256x256の場合、ネットワークに8つ以上のMax-Poolingレイヤーを持つことはできません。 2 ** 8 == 256のように、2倍、8倍ダウンサンプリングした後、フィーチャマップは空間次元で1x1になります。つまり、0x0または負のディメンションを取得するように最大プールを実行できません。

Max Poolingの明らかな制限ですが、必ずしも論文で論議されているわけではありません。

関連する問題