encode_pytorch_tensor
Engine.encode_pytorch_tensor(tensor, level)- PyTorch tensor를 plaintext 형태로 인코딩합니다.
tensor의 device는 CPU 혹은 CUDA로 설정할 수 있고 엔진과 일치해야 합니다.
메세지는
Engine.slot_count크기의 단위로 인코딩되며 메시지의 길이가 slot count로 나누어떨어지지 않을 경우, 0으로 패딩되어서 인코딩 됩니다.
- 인풋:
- tensor: torch.Tensor
- level: optional
- 지정된 경우에는 해당 최대 곱셈 횟수에 필요한 만큼만 인코딩을 합니다. 레벨이 낮을 수록 차지하는 공간이 작지만 최대 곱셈 횟수가 줄어듭니다.
- 아웃풋:
- Plaintext
Examples
CPU
import torch
from desilofhe import Engine
engine = Engine()
tensor = torch.tensor([1, 2, 3, 4])
encoded = engine.encode_pytorch_tensor(tensor)
encoded_level_2 = engine.encode_pytorch_tensor(tensor, level=2)
GPU
import torch
from desilofhe import Engine
engine = Engine(mode="gpu")
tensor = torch.tensor([1, 2, 3, 4], device="cuda")
encoded = engine.encode_pytorch_tensor(tensor)
기본적으로는 encrypt 함수 내부에서 encode 를 처리해주기 때문에 별도로 호출할 필요가 없지만, 같은 message를 여러번 다른 연산에서 사용할 경우에는 매번 인코딩하지 않아도 되어서 효율적일 수 있습니다.