1. torch.diag_embed(input) convierte la última dimensión del tensor de entrada en una matriz diagonal
parámetro
la entrada es tensor
ejemplo
import torch
a = torch.tensor([[1,2],[3,4]])
print(a)
'''a->tensor([[1, 2],
[3, 4]]), shape->(1,2)'''
b = torch.diag_embed(a)
print(b)
'''tensor([[[1, 0],
[0, 2]],
[[3, 0],
[0, 4]]]), shape->(1,2,2)'''
2. torch.linalg.qr(A, modo)
parámetro
- A: Tensor cuya forma es más de dos dimensiones
- modo: uno de 'reducido', 'completo', 'r'. Controla la forma del tensor devuelto, por defecto es 'reducido'
retorno (Q,R)
Propósito: Calcular la descomposición QR de la matriz.
La descomposición QR requiere una comprensión simple.
Cuando mode='reduced', la descomposición QR simplificada Q ∈ R m × k Q \in \mathbb{R}^{m \times k}q∈Rm × k,R ∈ R k × n R \in \mathbb{R}^{k \times n}R∈Rk × norte . dondek = min ( metro , norte ) k=min(m,n)k=min ( m ,n )
Cuando mode='complete', la descomposición QR completaQ ∈ R m × m Q \in \mathbb{R}^{m \times m}q∈Rmetro × metro,R ∈ R metro × norte R \in \mathbb{R}^{m \times n}R∈Rm × n . Tenga en cuenta que cuandon >= m n>=m
norte>=m , la descomposición QR simplificada es consistente con la descomposición QR completa.
Cuando mode='r', solo se devuelve la matriz r de la descomposición QR simplificada, y la matriz Q está vacía. R ∈ R k × n R \in \mathbb{R}^{k \times n}R∈Rk × norte
Aviso
- mode='r' no es compatible con la retropropagación, utilice mode='reduced'
- Cuando el primer k de A = min ( m , n ) k=min(m,n)k=min ( m ,n ) Cuando las columnas son linealmente independientes, la descomposición QR solo es única en la diagonal de R. Si este no es el caso, diferentes bibliotecas o en diferentes dispositivos pueden producir diferentes descomposiciones efectivas.
- Solo si la primera k de cada matriz en A = min ( m , n ) k=min(m,n)k=min ( m ,n ) El cálculo del gradiente solo se admite cuando las columnas son linealmente independientes. Si no se cumple esta condición, no se arrojará ningún error, pero el gradiente resultante será incorrecto. Esto se debe a que la descomposición QR no es diferenciable en estos puntos.