old_contents: 
  def my_init(shape, dtype=None):
      array = np.zeros(shape=(5,5,3,3))
      array[2,2] = np.eye(3) 
      return array
  
  inp = Input((None, None, 3), dtype="float32")
  x = Conv2D(kernel_size=(5,5), filters=3, strides=2,
             padding="same", kernel_initializer=my_init)(inp)
  
  conv_strides_same = Model(inputs=inp, outputs=x)
  x2 = Conv2D(kernel_size=(5,5), filters=3, strides=2,
             padding="valid", kernel_initializer=my_init)(inp)
  
  conv_strides_valid = Model(inputs=inp, outputs=x2)
  
  img_out = conv_strides_same.predict(np.expand_dims(sample_image, 0))
  img_out2 = conv_strides_valid.predict(np.expand_dims(sample_image, 0))
  show(img_out[0])
  
  print("Shape of result with SAME padding:", img_out.shape)
  print("Shape of result with VALID padding:", img_out2.shape)
  
  
  # We observe that the stride divided the size of the image by 2
  # In the case of 'VALID' padding mode, no padding is added, so 
  # the size of the ouput image is actually 1 less because of the
  # kernel size
  
new_contents: def my_init(shape=(5, 5, 3, 3), dtype=None):
      array = np.zeros(shape=shape)
      array[2, 2] = np.eye(3)
      return array
  
  
  conv_strides_same = Sequential([
      Conv2D(filters=3, kernel_size=5, strides=2,
             padding="same", kernel_initializer=my_init,
             input_shape=(None, None, 3))
  ])
  conv_strides_valid = Sequential([
      Conv2D(filters=3, kernel_size=5, strides=2,
             padding="valid", kernel_initializer=my_init,
             input_shape=(None, None, 3))
  ])
  
  img_in = np.expand_dims(sample_image, 0)
  img_out_same = conv_strides_same.predict(img_in)
  img_out_valid = conv_strides_valid.predict(img_in)
  
  print("Shape of result with SAME padding:", img_out_same.shape)
  print("Shape of result with VALID padding:", img_out_valid.shape)
  
  fig, (ax0, ax1, ax2) = plt.subplots(ncols=3, figsize=(12, 4))
  ax0.imshow(img_in[0].astype(np.uint8))
  ax1.imshow(img_out_same[0].astype(np.uint8))
  ax2.imshow(img_out_valid[0].astype(np.uint8))
  
  # We observe that the stride divided the size of the image by 2
  # In the case of 'VALID' padding mode, no padding is added, so 
  # the size of the ouput image is actually 1 less because of the
  # kernel size
subject: Update solution to be consistent