2

For the following CNN

model = Sequential()
model.add(Convolution2D(64, 3, 3, border_mode='same', input_shape=(3, 256, 256)))
# now model.output_shape == (None, 64, 256, 256)

# add a 3x3 convolution on top, with 32 output filters:
model.add(Convolution2D(32, 3, 3, border_mode='same'))
# now model.output_shape == (None, 32, 256, 256)
print(model.summary())

However model summary gives the following output

____________________________________________________________________________________________________
Layer (type)                     Output Shape          Param #     Connected to                     
====================================================================================================
convolution2d_44 (Convolution2D) (None, 3, 256, 64)    147520      convolution2d_input_24[0][0]     
____________________________________________________________________________________________________
convolution2d_45 (Convolution2D) (None, 3, 256, 32)    18464       convolution2d_44[0][0]           
====================================================================================================
Total params: 165984

Why am i getting the given output shape ?

NelsonGon
  • 13,015
  • 7
  • 27
  • 57
Abhinav Rai
  • 1,027
  • 1
  • 9
  • 9
  • This may sound trivial but I spent an hour trying to figure out what I was doing wrong. To future me, turns out I fed the wrong outputs to the compiler. – NelsonGon Aug 05 '20 at 09:03

1 Answers1

5

It is a problem caused by the setting of input_shape. In your current setting, you want to input 256x256 with 3 channels. However, Keras thinks you are giving 3x256 image with 256 channels. There several ways to correct it.

  • Option 1: Change the order in input_shape

  • Option 2: Specify image_dim_ordering in your layers

  • Option 3: Modify the keras configuration file by changing 'tf' to 'th' in your ~/.keras/keras.json

pyan
  • 3,577
  • 4
  • 23
  • 36