무료 변환, 가끔 무료 메모리
PyTorch 와 NumPy 는 trivial 하게 inter-operate. 외울 건 하나: 변환이 메모리를 공유할 때와 copy 할 때:
torch.from_numpy(arr)— 메모리 공유. 한쪽 mutate 하면 다른 쪽도 mutate.tensor.numpy()— tensor 가 CPU 이고 contiguous 면 메모리 공유. GPU 면 에러.torch.tensor(arr)— 항상 copy. 독립성 원할 때.torch.as_tensor(arr)— 가능하면 메모리 공유, 아니면 copy. 어느 쪽이든 상관없을 때 유용.
GPU 룰
NumPy array 는 CPU tensor 에서만 얻을 수 있어. GPU 에 있으면 먼저 옮겨 (.cpu()). gradient 있으면 .detach() 먼저 — graph attachment 제거. 안 그러면 NumPy 가 변환 거부.
'model output 을 numpy 로 줘' 의 완전한 주문: output.detach().cpu().numpy(). 이 chain 외워 — metric 계산이나 plot 할 때 끊임없이 쓸 거야.