title: Understanding basic Keras Conv2DTranspose example
body: <p>This is definitely a basic question, but I'm having trouble understanding exactly what is going on with Keras's <code>layers.Conv2DTranspose</code> function. I have the following three lines:</p>
  
  <h1>Setup</h1>
  
  <pre><code>model = tf.keras.Sequential()
  ...
  model.add(layers.Reshape((10, 10, 256)))
  model.add(layers.Conv2DTranspose(128, (5, 5), strides=(1, 1), padding='same', use_bias=False))
  assert model.output_shape == (None, 10, 10, 128)
  </code></pre>
  
  <p>The first occurrence of Reshape gets me a tensor of shape [10x10x256].</p>
  
  <p>In the <code>Conv2DTranspose</code> layer, somehow I'm sliding a filter of shape [5x5] along this tensor and ending up with a new tensor of shape [10x10x128].</p>
  
  <p><a href="https://i.stack.imgur.com/X7jOB.jpg" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/X7jOB.jpg" alt="Graphical depiction of what I think this is doing"></a></p>
  
  <h1>Question</h1>
  
  <p>What mathematically is happening to get me from the first tensor [10x10x256] to the second [10x10x128]?</p>