EDIT:
I report the same error as you with the use of nn.functional.conv_transpose2d():
class AE_tied_weights(nn.Module):
    
    def __init__(self, input_dim=28*28, hidden_layers=(), output_dim=2000):

        super(AE_tied_weights, self).__init__()

        self.encoder = nn.ModuleList([nn.Conv2d(1, 64, 4, 2, 1)])
        self.bias = nn.ParameterList([nn.Parameter(torch.randn(1))])

    def forward(self, x):

        h = self.encoder[0](x)
        h = torch.sigmoid(h)
        y = nn.functional.conv_transpose2d(h, weight=self.encoder[0].weight.transpose(0, 1), bias=self.bias[0], stride=2, padding=1)

        return x, h, y

transposing weight=self.encoder[0].weight.transpose(0, 1) gives the following error:
y = nn.functional.conv_transpose2d(h, weight=self.encoder[0].weight.transpose(0, 1), bias=self.bias[0], stride=2, padding=1)
RuntimeError: Given transposed=1, weight[1, 64, 4, 4], so expected input[60, 64, 14, 14] to have 1 channels, but got 64 channels instead

Which I don’t find very consistent with my previous feed back…