Apply nn.PixelShuffle() in training a network with a 3-channel input

My input tensor size is (72, 72) and the channel is 3. I have used nn.conv2d() in my network. And I want to use nn.PixelShuffle() after the convolution layers to get a HR ouput. I have learned that nn.PixelShuffle() gets a input of (4, 72, 72) and give an output in (1, 144,144). I have several issues.

  1. I think the tensor dimension cannot be expanded during training. So is my input of my network supposed to be in (3, 4, 72, 72)?

  2. If so, how to set the channel parameters in nn.conv2d() ? Like nn.conv2d(in_channels=3, out_channels=64) ?

nn.PixelShuffle expects an input in the shape [*, C * r**2, H, W] and outputs [*, C, H*r, W*r] as described in the docs.
If you want to use an input of [*, 4, 72, 72], r would correspond to 2 and thus C to 1.
In that case your conv layer should probably output 4 channels.