首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >TensorFlow特征值与特征向量

TensorFlow特征值与特征向量
EN

Stack Overflow用户
提问于 2018-07-26 09:28:53
回答 1查看 632关注 0票数 3

我想在TensorFlow中使用特征值,但是它使用“tf.self_adjoint_eig”给出了错误的特征值/特征向量。

在下面的代码中,我试图恢复原始矩阵,但是输出与原始矩阵不同,知道如何修复吗?

代码语言:javascript
复制
`A11 = tf.constant([[1, 3],[1, 1]], dtype=tf.float32)
[e1, W1] = tf.self_adjoint_eig(A11)
e1 = tf.diag(e1)
A11r = tf.matmul(tf.matmul(W1, e1), tf.matrix_inverse(W1))
A11: [[1. 3.]
[1. 1.]]
A11r: [[0.9999999 0.9999999]
[0.9999999 0.9999999]]` 
EN

回答 1

Stack Overflow用户

发布于 2022-06-09 08:57:23

如果“tf.self_adjoint_eig”不是强制性的,您可以这样做:

代码语言:javascript
复制
A11 = tf.constant([[1., 3.],[1., 1.]], dtype=tf.float32)
[e1, W1] = tf.linalg.eig(A11)
e1 = tf.linalg.diag(e1)
A11r = tf.matmul(tf.matmul(W1, e1), tf.linalg.inv(W1))
A11: [[1. 3.]
[1. 1.]]
A11r: [[0.9999999 0.9999999]
[0.9999999 0.9999999]]

尝试将tf.linalg.function_name()

这是与你的相比的结果。

代码语言:javascript
复制
Input: A11
Output: <tf.Tensor: shape=(2, 2), dtype=float32, numpy=
array([[1., 3.],
       [1., 1.]], dtype=float32)>

Input: A11r
Output: <tf.Tensor: shape=(2, 2), dtype=complex64, numpy=
array([[1.0000001+0.j, 3.0000005+0.j],
       [1.       +0.j, 1.       +0.j]], dtype=complex64)>

以下是我得到的错误,并查看“导入tensorflow as tf”

  1. AttributeError:模块'tensortlow‘没有属性'self_adjoint_eig’
  2. AttributeError:模块'tensorflow‘没有属性'diag’
  3. AttributeError:模块'tensorflow‘没有属性'matrix_inverse’
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51535479

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档