Transcendental-Programmer
Refactor core logic: move and modularize all latent space, sampling, and utility code into faceforge_core/
e3af1ef
import random | |
import math | |
import torch | |
def random_circle_init(min_r : float = 0.5, on_edge : bool = False): | |
theta = random.uniform(0, 2 * math.pi) | |
if on_edge: | |
r = 1.0 | |
else: | |
r = random.uniform(min_r, 1.0) | |
x = r * math.cos(theta) | |
y = r * math.sin(theta) | |
return x, y | |
def recursive_find_dtype(x): | |
""" | |
Assuming x is some list/tuple of things that could be tensors, searches for any tensors and returns dtype | |
""" | |
for i in x: | |
if isinstance(i, list): | |
res = recursive_find_dtype(i) | |
if res is None: | |
continue | |
else: | |
return res | |
elif isinstance(i, torch.Tensor): | |
return i.dtype | |
def recursive_find_device(x): | |
""" | |
Assuming x is some list/tuple of things that could be tensors, searches for any tensors and returns device | |
""" | |
for i in x: | |
if isinstance(i, list): | |
res = recursive_find_device(i) | |
if res is None: | |
continue | |
return res | |
elif isinstance(i, torch.Tensor): | |
return i.device | |