Im not sure of a way to visualize pytorch models other than printing it as you mention. I think they are working on implementing it.
However, since pytorch is so flexible it is possible to print() anywhere, which is great for debugging. So simply print the input just before it gets put into the specific layer…
Lets say its an convolutional layer:
`def forward(self, x):
print(x)
x = self.conv1(x.double())
x = F.softmax(x,dim=1)
    return x`

Often when layers output the same is because they never learn. Your gradients might explode, or the input to the layer might always be zeroes. It can be a result of ReLU() where the input to relu is all negative, making it simply zeroes.
Hope this helps 
Regards