In my understanding，target_shape determine the output shape，the effect is similar to param output_shape in conv2d_transpose(tensorflow).So what‘s the effect of adj?
You have two ways to define the output you want, if you specify
target_shape, then the padding and adjustment will be automatically computed for you. But you can also provide them directly. In that case do not specify the
target_shape. You can see how these parameters are used here
However, if you are looking to start a new project I would suggest you have a look at the nicer Gluon API: Here is the Deconvolution layer which is here correctly called Transpose Convolution. The doc for that particular is not great, I have issued a PR to fix it. It is based on the pyTorch API though, so you can check the API here
When using transpose convolution, the parameters are little weird to think about, because you are specifying the parameters of the convolution that applied to your output shape would give you your input shape. Check these very good viz to get your head around it.