Keras: [Question] Transposed Conv equivalent to Upsampling + Conv?

Created on 11 Jul 2017  路  3Comments  路  Source: keras-team/keras

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?

Most helpful comment

They are not equivalent. You can have a look at https://distill.pub/2016/deconv-checkerboard/

All 3 comments

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/

Was this page helpful?
0 / 5 - 0 ratings

Related issues

rantsandruse picture rantsandruse  路  3Comments

amityaffliction picture amityaffliction  路  3Comments

nryant picture nryant  路  3Comments

braingineer picture braingineer  路  3Comments

harishkrishnav picture harishkrishnav  路  3Comments