title: How to handle variable sized input in CNN with Keras?
body: <p>I am trying to perform the usual classification on the MNIST database but with randomly cropped digits. 
  Images are cropped the following way : removed randomly first/last and/or row/column.</p>
  
  <p>I would like to use a Convolutional Neural Network using Keras (and Tensorflow backend) to perform convolution and then the usual classification.</p>
  
  <p>Inputs are of variable size and i can't manage to get it to work.</p>
  
  <p>Here is how I cropped digits</p>
  
  <pre><code>import numpy as np
  from keras.utils import to_categorical
  from sklearn.datasets import load_digits
  
  digits = load_digits()
  
  X = digits.images
  X = np.expand_dims(X, axis=3)
  
  X_crop = list()
  for index in range(len(X)):
      X_crop.append(X[index, np.random.randint(0,2):np.random.randint(7,9), np.random.randint(0,2):np.random.randint(7,9), :])
  X_crop = np.array(X_crop)
  
  y = to_categorical(digits.target)
  
  from sklearn.model_selection import train_test_split
  
  X_train, X_test, y_train, y_test = train_test_split(X_crop, y, train_size=0.8, test_size=0.2)
  </code></pre>
  
  <p>And here is the architecture of the model I want to use</p>
  
  <pre><code>from keras.layers import Dense, Dropout
  from keras.layers.convolutional import Conv2D
  from keras.models import Sequential
  
  model = Sequential()
  
  model.add(Conv2D(filters=10, 
                   kernel_size=(3,3), 
                   input_shape=(None, None, 1), 
                   data_format='channels_last'))
  
  model.add(Dense(128, activation='relu'))
  model.add(Dropout(0.2))
  
  model.add(Dense(10, activation='softmax'))
  
  
  model.compile(loss='categorical_crossentropy', optimizer='sgd', metrics=['accuracy'])
  
  model.summary()
  
  model.fit(X_train, y_train, epochs=100, batch_size=16, validation_data=(X_test, y_test))
  </code></pre>
  
  <ol>
  <li><p>Does someone have an idea on how to handle variable sized input in my neural network? </p></li>
  <li><p>And how to perform classification?</p></li>
  </ol>