You can easily clone the sklearn behavior using this small script:
x = torch.randn(10, 5) * 10
scaler = StandardScaler()
arr_norm = scaler.fit_transform(x.numpy())
# PyTorch impl
m = x.mean(0, keepdim=True)
s = x.std(0, unbiased=False, keepdim=True)
x -= m
x /= s
torch.allclose(x, torch.from_numpy(arr_norm))
Alternatively, you could of course just use the sklearn scaler directly, as torch.numpy()
and torch.from_numpy()
return arrays which share the underlying data, and are thus very cheap.