| import math |
| import torch |
|
|
|
|
| |
| def tensor2log(x): |
| a = (math.e - 1.) / 2. |
| b = (math.e + 1.) / 2. |
| x = a * x + b |
| return torch.log(x).float() |
|
|
|
|
| def log2tensor(x): |
| a = 2. / (math.e - 1.) |
| b = (math.e + 1.) / (1. - math.e) |
| x = torch.exp(x) |
| x = a * x + b |
| return x.float() |
|
|
|
|
| |
| def _tensor2log(x): |
| a = math.e - 1. |
| b = 1. |
| x = a * x + b |
| return torch.log(x).float() |
|
|
|
|
| def _log2tensor(x): |
| a = 1. / (math.e - 1.) |
| b = -a |
| x = torch.exp(x) |
| x = a * x + b |
| return x.float() |
|
|
|
|
| if __name__ == '__main__': |
| inputx = torch.rand(1, 3, 64, 64) |
| print(torch.min(inputx), torch.max(inputx)) |
|
|
| out = _tensor2log(inputx) |
| print(torch.min(out), torch.max(out)) |
|
|
| out = _log2tensor(out) |
| print(torch.min(out), torch.max(out)) |
| print(torch.mean(out - inputx)) |
|
|