Is
m = Conv2DTranspose(16, 3, strides=2, padding='same')(m)
equivalent to
m = Upsampling2D(2)(m)
m = Conv2D(16, 3, padding='same')(m)
?
If not, how are they different a) in Keras b) in practical terms?
they are different
strides=2 implies such an operation:
f( pix1,pix2,...,pixNN) = newpix1, ... , newpixMM
while upsampling then strides=1 implies:
g(pix1,pix2,...,pixNN) = pix1,pix1,pix1,pix1,pix2,pix2, ... , pixNN, pixNN, pixNN
f(pix1,pix1,pix1,pix1,pix2,pix2, ... , pixNN, pixNN) =
newpix1,newpix1,newpix1,newpix1,newpix2,newpix2, ... , newpixNN, newpixNN, newpixN*N
Are there any 'more detailed' interpretations of the differences between these two operations (Conv2DTranspose vs Upsampling2D + Conv2D)? In terms of images features re-presentation?
They are not equivalent. You can have a look at https://distill.pub/2016/deconv-checkerboard/
Most helpful comment
They are not equivalent. You can have a look at https://distill.pub/2016/deconv-checkerboard/