Beispiel #1
0
def copy_torch(x: torch.Tensor, requires_grad, device=None) -> torch.Tensor:
    grad = requires_grad if requires_grad is not None else Backend.requires_grad(
    )
    device = torch.device(
        device) if device is not None else Backend.get_device()
    new_tensor = x.clone()
    if device is not None and new_tensor.device == device:
        new_tensor = new_tensor.to(device)
    if grad is not None and not grad:
        new_tensor = new_tensor.detach()
    return new_tensor
Beispiel #2
0
def to_torch(x,
             requires_grad: bool = None,
             device: str = None,
             copy: bool = False):
    use_grad = requires_grad if requires_grad is not None else Backend.requires_grad(
    )
    device = device if device is not None else Backend.get_device()
    if isinstance(x, torch.Tensor):
        return (copy_torch(x, device=device, requires_grad=use_grad)
                if copy else _assign_device_and_grad(
                    x, device=device, requires_grad=use_grad))
    return new_torch_tensor(x, device=device, copy=copy)
Beispiel #3
0
 def permutation(x):
     idx = torch.randperm(x.shape[0])
     sample = x[idx].to(Backend.get_device()).detach()
     return to_backend(sample)