input = np.array([[2,4,6],[3,5,7],[1,6,8]], dtype=np.float32)
eigval_all, eigvec_all = tf.self_adjoint_eig(input)
with tf.compat.v1.Session() as sess:
print(sess.run(tf.self_adjoint_eig(input)))
OUTPUT:
(array([-0.94226784, 2.6309953 , 13.311278 ], dtype=float32), array([[-0.580067 , -0.7810435 , 0.2312871 ],
[ 0.70494777, -0.33907872, 0.62295616],
[-0.40813133, 0.52440166, 0.7472832 ]], dtype=float32))
Pytorch equivalent:
torch.symeig(torch.tensor(input), eigenvectors=True)
OUTPUT:
torch.return_types.symeig(
eigenvalues=tensor([-1.7482, -0.3348, 17.0831]),
eigenvectors=tensor([[ 0.7941, 0.4292, 0.4304],
[ 0.1423, -0.8197, 0.5549],
[-0.5909, 0.3794, 0.7119]]))
Another:
torch.eig(torch.tensor(input),eigenvectors=True)
OUTPUT:
torch.return_types.eig(
eigenvalues=tensor([[14.6176, 0.0000],
[ 0.1912, 0.6115],
[ 0.1912, -0.6115]]),
eigenvectors=tensor([[-0.4899, 0.1709, 0.3562],
[-0.6077, 0.7177, 0.0000],
[-0.6250, -0.5663, -0.0900]]))