232 def __init__(self, num_svs, num_itrs, num_outputs, transpose=False, eps=1e-12):
233 """constructor"""
234
235 ## Number of power iterations per step
236 self.num_itrs = num_itrs
237 ## Number of singular values
238 self.num_svs = num_svs
239 ## Transposed?
240 self.transpose = transpose
241 ## Epsilon value for avoiding divide-by-0
242 self.eps = eps
243 # Register a singular vector for each sv
244 for i in range(self.num_svs):
245 self.register_buffer(f"u{i:d}", torch.randn(1, num_outputs))
246 self.register_buffer(f"sv{i:d}", torch.ones(1))
247