When trying to load the contents of a Tensor from a stream, if the tensor isn't located on the CPU then the loading will fail. The reason seems to be located here, since the .to() method returns a new tensor when the tensor is copied to a new device.
Sample code:
var tensor1 = torch.rand(10, device: torch.CUDA);
// Save to memory stream
using var ms = new MemoryStream();
tensor1.Save(new BinaryWriter(ms, Encoding.UTF8, true));
ms.Position = 0;
tensor1.Load(new BinaryReader(ms));