TensorFlow函數(shù):tf.svd

2018-03-27 10:52 更新

tf.svd函數(shù)

別名:

  • tf.linalg.svd
  • tf.svd
tf.svd(
    tensor,
    full_matrices=False,
    compute_uv=True,
    name=None
)

定義在:tensorflow/python/ops/linalg_ops.py

請(qǐng)參閱指南:數(shù)學(xué)函數(shù)>矩陣數(shù)學(xué)函數(shù)

計(jì)算一個(gè)或多個(gè)矩陣的奇值分解.

計(jì)算 tensor 的每個(gè)內(nèi)矩陣的 SVD,使得 tensor[..., :, :] = u[..., :, :] * diag(s[..., :, :]) * transpose(conj(v[..., :, :]))

# a is a tensor.
# s is a tensor of singular values.
# u is a tensor of left singular vectors.
# v is a tensor of right singular vectors.
s, u, v = svd(a)
s = svd(a, compute_uv=False)

函數(shù)參數(shù):

  • tensor:具有形狀 [..., M, N] 的 Tensor,讓 P 成為最小的 M 和 N.
  • full_matrices:如果為 true,則計(jì)算全尺寸的 u 和 v;如果為 false(默認(rèn)值),則只計(jì)算前導(dǎo) P 奇向量;如果 compute_uv 為 False,則忽略.
  • compute_uv:如果為 True,則分別計(jì)算和返回在 u 和 v 中的左和右奇向量,否則,只會(huì)計(jì)算奇值,這可能會(huì)更快.
  • name:字符串,操作的可選名稱.

函數(shù)返回值:

  • s:奇值;形狀是 [..., P].這些值按相反的數(shù)量級(jí)排序,所以 s [...,0] 是最大的值,s [...,1] 是第二大的值,等等.
  • u:奇左向量;如果 full_matrices 為 False(默認(rèn)),則形狀是 [..., M, P];如果 full_matrices 為 True,那么形狀為 [..., M, M].如果 compute_uv 為 False,則不會(huì)返回.
  • v:奇右向量.如果 full_matrices 為 False(默認(rèn)),則形狀是 [..., N, P].如果 full_matrices 為 True,則形狀為 [..., N, N].如果 compute_uv 為 False,則不會(huì)返回.

NumPy的兼容性

主要等同于 numpy.linalg.svd, 只是輸出參數(shù)的順序在這里是 s, u, v 當(dāng) compute_uv 是真的, 而不是你, s, v 為 numpy.linalg.svd.* full_matrices 默認(rèn)為 False, 而 numpy.linalg.svd 則為 True.* tf.linalg.svd 使用 svd 的標(biāo)準(zhǔn)定義 (a = U 西格瑪 V ^ H), 這樣, a 的左奇異向量是您的列, 而 a 的右奇異向量是 v 的列.另一方面, numpy.linalg.svd 將伴隨 (V ^ H) 作為第三個(gè)輸出參數(shù)返回.

以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)