In the U-net videos where the transpose convolution is explained, i don’t understand how the filter size, the padding and the strides are chosen to match the output size, is there a formula for that (like there was for the normal convolution) ?

Hi @houzefa303 ,

Yes, there is a formula to calculate the output that you can check in the video Stride Conv, Week1.

Anyway, the formula is

((n + 2p -f )/s) + 1

Where:

n: input size

f: filter size

p: padding

s: stride

I think that’s the formula for the Normal Convolution

Is there a similar one for the Transpose Convolution ?

As the name suggests, the formula for the transpose convolution is the “opposite” of the one for the regular (forward) convolution. Following @carlosrl’s notations:

Convolution: nout = ((n + 2p - f)/s + 1

Transpose convolution: nout = s(n - 1) + f - 2p

There is some misunderstanding: if n+2p-f is not divisible by s, then what formula can we use?

There is some misunderstanding: if n+2p-f is not divisible by s, then what formula can we use

You should really set `n`

, `p`

, and `f`

so that the sum `n+2p-f`

will be divisible by `s`

. That’s how you get `nout`

I think there is a misunderstanding of the formula for computing *n_out* in the convolution case. It is not required that *n + 2p - f* is divisible by *s*. That is why there is the “floor” function in the formula. Here is the correct formula:

n_{out} = \displaystyle \lfloor \frac {n_{in} +2p - f}{s} \rfloor + 1

So you just perform the division and then truncate it to the next lowest integer and add 1. Prof Ng gave the formula this way in the lectures and it’s also given in the notebook in ConvNets Week 1 Step by Step Assignment. Here’s a screenshot of that section of the notebook: