我试图用TensorFlow验证一个简单的特征值/特征向量问题。
进口tensorflow:
import tensorflow as tf # version 2.6.0例如,以一个简单的矩阵为例
ex1 = tf.convert_to_tensor([[0,1],[-2,-3]],dtype=tf.float32)
print(ex1)输出:
tf.Tensor(
[[ 0. 1.]
[-2. -3.]], shape=(2, 2), dtype=float32)然后使用tf.linalg.eigh计算特征值和特征向量:
eigVals, eigVects = tf.linalg.eigh(ex1)
print(tf.linalg.diag(eigVals),eigVects)输出:
tf.Tensor(
[[-4. 0. ]
[ 0. 1.0000001]], shape=(2, 2), dtype=float32) tf.Tensor(
[[ 0.4472136 0.8944272]
[ 0.8944272 -0.4472136]], shape=(2, 2), dtype=float32)现在,由于A的特征值和特征向量定义为Av = Lv,所以我可以计算Av和Lv,并且应该得到匹配的答案(在舍入误差范围内):
计算Av:
tf.matmul(ex1,eigVects)输出:
<tf.Tensor: shape=(2, 2), dtype=float32, numpy=
array([[ 0.8944272 , -0.4472136 ],
[-3.5777087 , -0.44721365]], dtype=float32)>并计算Lv:
tf.matmul(tf.linalg.diag(eigVals),eigVects)输出:
<tf.Tensor: shape=(2, 2), dtype=float32, numpy=
array([[-1.7888544 , -3.5777087 ],
[ 0.8944273 , -0.44721365]], dtype=float32)>为什么这些不匹配?
发布于 2021-11-12 20:58:18
根据艾格的文档
计算一批自伴随矩阵的本征分解。
https://stackoverflow.com/questions/69945346
复制相似问题