You are passing a 2-dimensional input tensor to the model, while the first conv layer expects a 4-dimensional tensor in the shape [batch_size, channels, height, width].
This line of code creates the flattened tensor:
noisy = noisy.view(noisy.size(0),-1).type(torch.FloatTensor)
noisy = noisy.to(device)
output = model(noisy)

After the view operation noisy will have the shape [batch_size, nb_features] and you would need to reshape it to the expected 4 dimensions.