utils.py 753 B

1234567891011121314151617181920212223242526
  1. # mypy: allow-untyped-defs
  2. def maybe_view(tensor, size, check_same_size=True):
  3. if check_same_size and tensor.size() == size:
  4. return tensor
  5. return tensor.contiguous().view(size)
  6. def maybe_unexpand(tensor, old_size, check_same_size=True):
  7. if check_same_size and tensor.size() == old_size:
  8. return tensor
  9. num_unsqueezed = tensor.dim() - len(old_size)
  10. expanded_dims = [
  11. dim
  12. for dim, (expanded, original) in enumerate(
  13. zip(tensor.size()[num_unsqueezed:], old_size)
  14. )
  15. if expanded != original
  16. ]
  17. for _ in range(num_unsqueezed):
  18. tensor = tensor.sum(0, keepdim=False)
  19. for dim in expanded_dims:
  20. tensor = tensor.sum(dim, keepdim=True)
  21. return tensor