Hi,

I tested `nn.InstanceNorm2d`

in v1.0 and observed that the output tensor of it does not have unit variance. Below, I wrote the test code for both standardization and instance normalization. The `nn.InstanceNorm2d`

with the `affine=False`

argument should return the output with channel-wise unit variance.

In addition, the `nn.InstanceNorm2d`

does not raise an error even if the dimensions of the input do not match. `nn.BatchNorm2d`

raise an error if the dimensions of the input do not match. Is this intended?

Thanks,

Yunjey

```
def standardize(x, eps=1e-6):
N, C, H, W = x.size()
x = x.view(N, C, H*W)
mean = torch.mean(x, dim=2, keepdim=True)
std = torch.std(x, dim=2, keepdim=True)
out = (x - mean) / (std + eps) # (N, C, H*W)
return out
# Test with standardization
x = torch.rand(1, 2, 3, 3)
out = standardize(x)
print('var: ', torch.var(out, dim=2)) # [1.0, 1.0]
# Test with InstanceNorm2d
norm = nn.InstanceNorm2d(2, affine=False)
out = norm(x)
N, C, H, W = out.size()
out = out.view(N, C, H*W)
print('var: ', torch.var(out, dim=2)) # [1.1248, 1.1249]
# Dimension not matched
norm = nn.InstanceNorm2d(444, affine=False)
x = torch.randn(2, 3, 3, 3)
out = norm(x) # This does not raise an error
norm = nn.BatchNorm2d(444, affine=False)
x = torch.randn(2, 3, 3, 3)
out = norm(x) # This raise an error
```