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


Python tf.compat.v1.Variable.__rmatmul__用法及代碼示例


用法

__rmatmul__(
    x
)

參數

  • a tf.Tensor 類型為 float16 , float32 , float64 , int32 , complex64 , complex128 且等級 > 1。
  • b tf.Tensora 具有相同的類型和等級。
  • transpose_a 如果 True , a 在乘法之前被轉置。
  • transpose_b 如果 True , b 在乘法之前被轉置。
  • adjoint_a 如果 True , a 在乘法之前被共軛和轉置。
  • adjoint_b 如果 True , b 在乘法之前被共軛和轉置。
  • a_is_sparse 如果True,a被視為稀疏矩陣。注意,這不支持tf.sparse.SparseTensor, 它隻是進行假設大多數值的優化a為零。看tf.sparse.sparse_dense_matmul一些支持tf.sparse.SparseTensor乘法。
  • b_is_sparse 如果True,b被視為稀疏矩陣。注意,這不支持tf.sparse.SparseTensor, 它隻是進行假設大多數值的優化a為零。看tf.sparse.sparse_dense_matmul一些支持tf.sparse.SparseTensor乘法。
  • output_type 如果需要,輸出數據類型。默認為 None 在這種情況下 output_type 與輸入類型相同。目前僅在輸入張量為 (u)int8 類型且 output_type 可以為 int32 時有效。
  • name 操作的名稱(可選)。

返回

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

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

  • Note 這是矩陣產品,而不是元素產品。

拋出

  • ValueError 如果 transpose_aadjoint_a ,或 transpose_badjoint_b 都設置為 True
  • TypeError 如果指定了output_type,但a , boutput_type的類型不是(u)int8、(u)int8和int32。

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

在任何轉置之後,輸入必須是秩 >= 2 的張量,其中內部 2 維指定有效的矩陣乘法維度,任何進一步的外部維度指定匹配的批量大小。

兩個矩陣必須屬於同一類型。支持的類型是:bfloat16 , float16 , float32 , float64 , int32 , int64 , complex64 , complex128

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

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

一個簡單的二維張量矩陣乘法:

a = tf.constant([1, 2, 3, 4, 5, 6], shape=[2, 3])
a  # 2-D tensor
<tf.Tensor:shape=(2, 3), dtype=int32, numpy=
array([[1, 2, 3],
       [4, 5, 6]], dtype=int32)>
b = tf.constant([7, 8, 9, 10, 11, 12], shape=[3, 2])
b  # 2-D tensor
<tf.Tensor:shape=(3, 2), dtype=int32, numpy=
array([[ 7,  8],
       [ 9, 10],
       [11, 12]], dtype=int32)>
c = tf.matmul(a, b)
c  # `a` * `b`
<tf.Tensor:shape=(2, 2), dtype=int32, numpy=
array([[ 58,  64],
       [139, 154]], dtype=int32)>

具有批次形狀的批次矩陣乘法 [2]:

a = tf.constant(np.arange(1, 13, dtype=np.int32), shape=[2, 2, 3])
a  # 3-D tensor
<tf.Tensor:shape=(2, 2, 3), dtype=int32, numpy=
array([[[ 1,  2,  3],
        [ 4,  5,  6]],
       [[ 7,  8,  9],
        [10, 11, 12]]], dtype=int32)>
b = tf.constant(np.arange(13, 25, dtype=np.int32), shape=[2, 3, 2])
b  # 3-D tensor
<tf.Tensor:shape=(2, 3, 2), dtype=int32, numpy=
array([[[13, 14],
        [15, 16],
        [17, 18]],
       [[19, 20],
        [21, 22],
        [23, 24]]], dtype=int32)>
c = tf.matmul(a, b)
c  # `a` * `b`
<tf.Tensor:shape=(2, 2, 2), dtype=int32, numpy=
array([[[ 94, 100],
        [229, 244]],
       [[508, 532],
        [697, 730]]], dtype=int32)>

由於 python >= 3.5,支持 @ 運算符(參見 PEP 465)。在 TensorFlow 中,它隻是調用 tf.matmul() 函數,因此以下幾行是等價的:

d = a @ b @ [[10], [11]]
d = tf.matmul(tf.matmul(a, b), [[10], [11]])

相關用法


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