當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Python tf.linalg.matvec用法及代碼示例


將矩陣 a 乘以向量 b ,產生 a * b

用法

tf.linalg.matvec(
    a, b, transpose_a=False, adjoint_a=False, a_is_sparse=False, b_is_sparse=False,
    name=None
)

參數

  • a Tensor 類型為 float16 , float32 , float64 , int32 , complex64 , complex128 且排名 > 1。
  • b Tensora 具有相同的類型和兼容的尺寸。
  • transpose_a 如果 True , a 在乘法之前被轉置。
  • adjoint_a 如果 True , a 在乘法之前被共軛和轉置。
  • a_is_sparse 如果 True , a 被視為稀疏矩陣。
  • b_is_sparse 如果 True , b 被視為稀疏矩陣。
  • name 操作的名稱(可選)。

返回

  • A Tensor同類型的ab其中每個 inner-most 向量是相應矩陣的乘積a和向量b,例如如果所有轉置或伴隨屬性都是False

    output [..., i] = sum_k (a [..., i, k] * b [..., k]),對於所有索引 i。

  • Note 這是matrix-vector 產品,而不是元素產品。

拋出

  • ValueError 如果 transpose_a 和 adjoint_a 都設置為 True。

矩陣 a 在任何轉置之後必須是秩 >= 2 的張量,其中 shape(a)[-1] == shape(b)[-1]shape(a)[:-2] 能夠使用 shape(b)[:-1] 進行廣播。

ab 必須是同一類型。支持的類型是:float16 , float32 , float64 , int32 , complex64 , complex128

矩陣 a 可以通過將相應標誌之一設置為 True 來動態轉置或連接(共軛和轉置)。默認情況下,這些是False

如果一個或兩個輸入包含很多零,則可以通過將相應的 a_is_sparseb_is_sparse 標誌設置為 True 來使用更有效的乘法算法。默認情況下,這些是False。此優化僅適用於數據類型為 bfloat16float32 的普通矩陣/向量(rank-2/1 張量)。

例如:

# 2-D tensor `a`
# [[1, 2, 3],
#  [4, 5, 6]]
a = tf.constant([1, 2, 3, 4, 5, 6], shape=[2, 3])

# 1-D tensor `b`
# [7, 9, 11]
b = tf.constant([7, 9, 11], shape=[3])

# `a` * `b`
# [ 58,  64]
c = tf.linalg.matvec(a, b)


# 3-D tensor `a`
# [[[ 1,  2,  3],
#   [ 4,  5,  6]],
#  [[ 7,  8,  9],
#   [10, 11, 12]]]
a = tf.constant(np.arange(1, 13, dtype=np.int32),
                shape=[2, 2, 3])

# 2-D tensor `b`
# [[13, 14, 15],
#  [16, 17, 18]]
b = tf.constant(np.arange(13, 19, dtype=np.int32),
                shape=[2, 3])

# `a` * `b`
# [[ 86, 212],
#  [410, 563]]
c = tf.linalg.matvec(a, b)

相關用法


注:本文由純淨天空篩選整理自tensorflow.org大神的英文原創作品 tf.linalg.matvec。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。