Your posted model doesn’t raise the shape mismatch error, as seen in this code snippet which feeds random inputs to it using the defined shape:
for i in range(epochs):
    real = torch.randn(batch_size, img_dim)
    real = real.view(-1, 784).to(device=device)
    batch_size = real.shape[0]


    #Train Discriminator -> maximize Loss FN:  log(D(real)) + log(1-D(G(z)))
    z = torch.randn(batch_size, z_dim) #generate random noise

    fake = Gen(z)#get a fake image

    disc_real = Disc(real).view(batch_size, -1) #compute log(D(real))
    disc_real_loss = criterion(disc_real, torch.ones_like(disc_real))

    disc_fake = Disc(fake).view(-1) #compute log(1-D(G(z)))
    disc_fake_loss = criterion(disc_fake, torch.zeros_like(disc_fake))

    total_disc_loss = (disc_real_loss + disc_fake_loss)/2

    Disc.zero_grad()
    total_disc_loss.backward(retain_graph=True)
    disc_optim.step()

    #Train Generator -> maximize Loss FN: log(D(G(z)))

    gen_output = Disc(fake).view(-1)
    gen_loss = criterion(gen_output, torch.ones_like(gen_output))

    Gen.zero_grad()
    gen_loss.backward()
    gen_optim.step()

    print(
        f'Epoch: {i}/{epochs}, \
        Loss Discriminator: {total_disc_loss:.4f},\
        Loss Generator: {gen_loss:.4f}'
    )

Based on the mentioned shape in the error message, I guess the DataLoader is raising the error in its collate_fn while trying to create a batch from samples drawn from the Dataset.
Based on the used transformations, I guess that your input images are not square images and you would thus need to specify the img_dim as a tuple in the Resize transformation. Otherwise the resized images will keep their aspect ratio as described in the docs:

size (sequence or int) –
Desired output size. If size is a sequence like (h, w), output size will be matched to this. If size is an int, smaller edge of the image will be matched to this number. i.e, if height > width, then image will be rescaled to (size * height / width, size).