/usr/local/lib64/python3.6/site-packages/torch
NameSizeModeActions
ao/-0755rm
autograd/-0755rm
backends/-0755rm
bin/-0755rm
contrib/-0755rm
cpu/-0755rm
cuda/-0755rm
distributed/-0755rm
distributions/-0755rm
fft/-0755rm
for_onnx/-0755rm
futures/-0755rm
fx/-0755rm
include/-0755rm
jit/-0755rm
lib/-0755rm
linalg/-0755rm
multiprocessing/-0755rm
nn/-0755rm
onnx/-0755rm
optim/-0755rm
package/-0755rm
profiler/-0755rm
quantization/-0755rm
share/-0755rm
sparse/-0755rm
special/-0755rm
testing/-0755rm
utils/-0755rm
_C/-0755rm
__pycache__/-0755rm
autocast_mode.py96630644editdlrm
functional.py712570644editdlrm
hub.py233710644editdlrm
overrides.py841460644editdlrm
py.typed00644editdlrm
quasirandom.py74890644editdlrm
random.py48280644editdlrm
serialization.py365440644editdlrm
storage.py57620644editdlrm
torch_version.py34680644editdlrm
types.py15520644editdlrm
version.py1250644editdlrm
_appdirs.py262450644editdlrm
_C.cpython-36m-x86_64-linux-gnu.so292960755editdlrm
_classes.py17170644editdlrm
_deploy.py31000644editdlrm
_dl.cpython-36m-x86_64-linux-gnu.so298320755editdlrm
_jit_internal.py469100644editdlrm
_linalg_utils.py23730644editdlrm
_lobpcg.py440760644editdlrm
_lowrank.py110310644editdlrm
_namedtensor_internals.py53510644editdlrm
_ops.py44570644editdlrm
_python_dispatcher.py70110644editdlrm
_six.py18580644editdlrm
_sources.py38820644editdlrm
_storage_docs.py12980644editdlrm
_tensor.py508540644editdlrm
_tensor_docs.py1134740644editdlrm
_tensor_str.py180910644editdlrm
_torch_docs.py3646780644editdlrm
_utils.py216170644editdlrm
_utils_internal.py16870644editdlrm
_VF.py6560644editdlrm
_vmap_internals.py132190644editdlrm
__config__.py5510644editdlrm
__future__.py8130644editdlrm
__init__.py311990644editdlrm
Edit: /usr/local/lib64/python3.6/site-packages/torch/_linalg_utils.py (2373B)
"""Various linear algebra utility methods for internal use. """ from torch import Tensor import torch from typing import Optional, Tuple def is_sparse(A): """Check if tensor A is a sparse tensor""" if isinstance(A, torch.Tensor): return A.layout == torch.sparse_coo error_str = "expected Tensor" if not torch.jit.is_scripting(): error_str += " but got {}".format(type(A)) raise TypeError(error_str) def get_floating_dtype(A): """Return the floating point dtype of tensor A. Integer types map to float32. """ dtype = A.dtype if dtype in (torch.float16, torch.float32, torch.float64): return dtype return torch.float32 def matmul(A: Optional[Tensor], B: Tensor) -> Tensor: """Multiply two matrices. If A is None, return B. A can be sparse or dense. B is always dense. """ if A is None: return B if is_sparse(A): return torch.sparse.mm(A, B) return torch.matmul(A, B) def conjugate(A): """Return conjugate of tensor A. .. note:: If A's dtype is not complex, A is returned. """ if A.is_complex(): return A.conj() return A def transpose(A): """Return transpose of a matrix or batches of matrices. """ ndim = len(A.shape) return A.transpose(ndim - 1, ndim - 2) def transjugate(A): """Return transpose conjugate of a matrix or batches of matrices. """ return conjugate(transpose(A)) def bform(X: Tensor, A: Optional[Tensor], Y: Tensor) -> Tensor: """Return bilinear form of matrices: :math:`X^T A Y`. """ return matmul(transpose(X), matmul(A, Y)) def qform(A: Optional[Tensor], S: Tensor): """Return quadratic form :math:`S^T A S`. """ return bform(S, A, S) def basis(A): """Return orthogonal basis of A columns. """ if A.is_cuda: # torch.orgqr is not available in CUDA Q = torch.linalg.qr(A).Q else: Q = torch.orgqr(*torch.geqrf(A)) return Q def symeig(A: Tensor, largest: Optional[bool] = False) -> Tuple[Tensor, Tensor]: """Return eigenpairs of A with specified ordering. """ if largest is None: largest = False E, Z = torch.linalg.eigh(A, UPLO='U') # assuming that E is ordered if largest: E = torch.flip(E, dims=(-1,)) Z = torch.flip(Z, dims=(-1,)) return E, Z