spyrit.misc.walsh_hadamard.fwalsh2_S_torchļ
- spyrit.misc.walsh_hadamard.fwalsh2_S_torch(X, ind=True)[source]ļ
Fast Walsh S-transform of X in ā2Dā
- Args:
X(torch.tensor): input image with shape (*, n, n). `n`**2should be a power of two.
ind(bool, optional): True for sequency (default)ind(list, optional): permutation indices.- Returns:
torch.tensor: S-transformed signal with shape (*, n, n)
- Examples:
>>> import spyrit.misc.walsh_hadamard as wh >>> X = torch.tensor([[1, 3, 0, 8],[7, 5, 1, 2],[2, 3, 6, 1],[4, 6, 8, 0]]) >>> wh.fwalsh2_S_torch(X)
- Example 2:
Repeating the Walsh-ordered S-transform using input indices is faster
>>> import timeit >>> import torch >>> import spyrit.misc.walsh_hadamard as wh >>> X = torch.rand(128, 2**6, 2**6, device=torch.device('cuda:0')) >>> t = timeit.timeit(lambda: wh.fwalsh2_S_torch(X), number=10) >>> print(f"No indices as inputs (10x): {t:.3f} seconds") >>> ind = wh.sequency_perm_ind(X.shape[-1]*X.shape[-2]) >>> t = timeit.timeit(lambda: wh.fwalsh2_S_torch(X,ind), number=10) >>> print(f"With indices as inputs (10x): {t:.3f} seconds")