# Convolutional neural network with 1 channel images/1 input channel

I'm following a tutorial on tensorflow using a convolutional neural network for images, but I'm looking to do it with grayscale images. How would the code posted there be different if it was for grayscale images instead of colored images with 3 channels?

model = models.Sequential()
model.add(layers.Conv2D(32, (3, 3), activation='relu', input_shape=(32, 32, 3)))


The following will be the updated code for grayscale images:

model = models.Sequential()
model.add(layers.Conv2D(32, (3, 3), activation='relu', input_shape=(32, 32, 1)))


Why?

Because for an RGB image, there are 3 channels, 'R', 'G' and 'B' So, the input shape will be (height, width, 3)

But since grayscale has only one channel, the input shape becomes (height, width, 1)

Note that if you are using Keras with Tensorflow backend, then the data_format is channels_last, which means that the input shape should be (height, width, channels).

Otherwise, if you are using Theano as the backend, then the input shape should be (channels, height, width) since Theano uses the channels_first data format.

 input_shape=(32, 32, 3)))

will become

 input_shape=(32, 32, 1)))


Channel is the last argument by default

"...When using this layer as the first layer in a model, provide the keyword argument input_shape (tuple of integers, does not include the sample axis), e.g. input_shape=(128, 128, 3) for 128x128 RGB pictures in data_format="channels_last..."

Ref - Keras Docs