Uninitialized means that the memory will be allocated and the corresponding tensor will represent its values using the bits which were already in the memory block before it was allocated.
This means the values should never be used without a proper initialization, as they might represent “everything” (valid values, NaN, Inf).
If you want to initialize the tensor with zeros, use torch.zeros.
The advantage of torch.empty is that it’s faster, because it will just assign the memory to the tensor without filling it with specific values. This is often used, if you need a buffer, which is guaranteed to be filled with other values later (or initialized somehow).