do
noise =x.data.new(*x.size()).normal_()

you should avoid the CPU -> GPU copy, that was slow. Also use torch’s build_in function if it’s accessible, even though it won’t cost much to transform between numpy.ndarray and torch.Tensor.
as far as I know, tensor.new has 3 usages:

tensor.new(size1, size2, …)
tensor.new(Tensor) or tensor.new(ndarray)
tensor.new() which would create tensor, then you can resize like a.new().resize_as_(b)