Luego de de esta prolongada búsqueda de datos dimos con la solución este inconveniente que tienen ciertos de nuestros usuarios. Te brindamos la solución y deseamos resultarte de gran ayuda.
Ver fuente en GitHub |
Calcule la pseudoinversa de Moore-Penrose de una o más matrices.
Ver alias
Alias de compatibilidad para la migración
Ver Guía de migración para más detalles.
tf.linalg.pinv( a, rcond=None, validate_args=False, name=None)
Calcula el inversa generalizada de una matriz utilizando su descomposición en valores singulares (SVD) e incluyendo todos los valores singulares grandes.
La pseudo-inversa de una matriz A
se define como: ‘la matriz que ‘resuelve’ [the least-squares problem] A @ x = b
‘, es decir, si x_hat
es una solución, entonces A_pinv
es la matriz tal que x_hat = A_pinv @ b
. Se puede demostrar que si U @ Sigma @ V.T = A
es la descomposición en valores singulares de A
luego A_pinv = V @ inv(Sigma) U^T
. [(Strang, 1980)][1]
Esta función es análoga a numpy.linalg.pinv
. Difiere solo en el valor predeterminado de rcond
. En numpy.linalg.pinv
el valor por defecto rcond
es 1e-15
. Aquí el valor predeterminado es 10. * max(num_rows, num_cols) * np.finfo(dtype).eps
.
argumentos | |
---|---|
a |
(Lote de) float -como en forma de matriz Tensor (s) que se van a pseudo-invertir. |
rcond |
Tensor de pequeños valores de corte singulares. Valores singulares más pequeños (en módulo) que rcond * mayor_valor_singular (nuevamente, en módulo) se establecen en cero. Debe transmitir contra tf.shape(a)[:-2] . Valor por defecto: 10. * max(num_rows, num_cols) * np.finfo(a.dtype).eps . |
validate_args |
Cuándo True , se pueden incrustar aserciones adicionales en el gráfico. Valor por defecto: False (es decir, no se agregan aserciones gráficas). |
name |
Pitón str antepuesto a las operaciones creadas por esta función. Valor por defecto: ‘pinv’. |
Devoluciones | |
---|---|
a_pinv |
(Lote de) pseudo-inverso de entrada a . Tiene la misma forma que a excepto que se transponen las dos dimensiones más a la derecha. |
aumenta | |
---|---|
TypeError |
si entrada a no tiene float -me gusta dtype . |
ValueError |
si entrada a tiene menos de 2 dimensiones. |
Ejemplos
import tensorflow as tf import tensorflow_probability as tfp a = tf.constant([[1.,0.4,0.5],[0.4,0.2,0.25],[0.5,0.25,0.35]]) tf.matmul(tf.linalg..pinv(a), a)# ==> array([[1., 0., 0.],[0.,1.,0.],[0.,0.,1.]], dtype=float32) a = tf.constant([[1.,0.4,0.5,1.],[0.4,0.2,0.25,2.],[0.5,0.25,0.35,3.]]) tf.matmul(tf.linalg..pinv(a), a)# ==> array([[ 0.76, 0.37, 0.21, -0.02],[0.37,0.43,-0.33,0.02],[0.21,-0.33,0.81,0.01],[-0.02,0.02,0.01,1.]], dtype=float32)
Referencias
[1]: G. Strang. ‘Álgebra lineal y sus aplicaciones, 2ª ed.’ Academic Press, Inc., 1980, págs. 139-142.
Eres capaz de asentar nuestra publicación fijando un comentario o dejando una puntuación te estamos eternamente agradecidos.