Halaman ini diterjemahkan oleh Cloud Translation API.
Switch to English

tf.linalg.matmul

TensorFlow 1 versi Lihat sumber di GitHub

Mengalikan matriks a oleh matriks b , menghasilkan a * b .

Digunakan di notebook

Digunakan dalam panduan Digunakan dalam tutorial

Input harus, mengikuti setiap transposisi, menjadi tensor peringkat> = 2 dimana dalam 2 dimensi menentukan dimensi perkalian matriks valid, dan setiap dimensi luar lebih menentukan pencocokan ukuran batch.

Kedua matriks harus dari jenis yang sama. Jenis yang didukung adalah: float16 , float32 , float64 , int32 , complex64 , complex128 .

Entah matriks dapat dialihkan atau adjointed (terkonjugasi dan dialihkan) dengan cepat dengan menetapkan salah satu yang sesuai bendera untuk True . Ini adalah False secara default.

Jika salah satu atau kedua matriks mengandung banyak angka nol, algoritma perkalian yang lebih efisien dapat digunakan dengan menetapkan sesuai a_is_sparse atau b_is_sparse bendera untuk True . Ini adalah False secara default. Optimasi ini hanya tersedia untuk matriks polos (peringkat ke-2 tensor) dengan tipe data bfloat16 atau float32 .

Sebuah sederhana 2-D tensor perkalian matriks:

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)>

Sebuah perkalian matriks batch dengan bentuk batch yang [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)>

Sejak Operator python> = 3.5 @ didukung (lihat PEP 465 ). Dalam TensorFlow, itu hanya menyebut tf.matmul() fungsi, sehingga garis berikut adalah sama:

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

a tf.Tensor jenis float16 , float32 , float64 , int32 , complex64 , complex128 dan peringkat> 1.
b tf.Tensor dengan jenis yang sama dan peringkat sebagai a .
transpose_a Jika True , a yang dialihkan sebelum perkalian.
transpose_b Jika True , b adalah dialihkan sebelum perkalian.
adjoint_a Jika True , a terkonjugasi dan dialihkan sebelum perkalian.
adjoint_b Jika True , b terkonjugasi dan dialihkan sebelum perkalian.
a_is_sparse Jika True , a diperlakukan sebagai matriks jarang. Perhatikan, ini tidak mendukung tf.sparse.SparseTensor , itu hanya membuat optimasi yang berasumsi kebanyakan nilai-nilai dalam a adalah nol. Lihat tf.sparse.sparse_dense_matmul untuk beberapa dukungan untuk tf.sparse.SparseTensor perkalian.
b_is_sparse Jika True , b diperlakukan sebagai matriks jarang. Perhatikan, ini tidak mendukung tf.sparse.SparseTensor , itu hanya membuat optimasi yang berasumsi kebanyakan nilai-nilai dalam a adalah nol. Lihat tf.sparse.sparse_dense_matmul untuk beberapa dukungan untuk tf.sparse.SparseTensor perkalian.
name Nama untuk operasi (opsional).

Sebuah tf.Tensor dari jenis yang sama sebagai a dan b di mana masing-masing dalam-paling matriks adalah produk dari matriks yang sesuai dalam a dan b , misalnya jika semua transpose atau adjoint atribut yang False :

output[..., i, j] = sum_k (a[..., i, k] * b[..., k, j]) , untuk semua indeks i , j .

Note Ini adalah produk matriks, produk tidak unsur-bijaksana.

ValueError Jika transpose_a dan adjoint_a , atau transpose_b dan adjoint_b keduanya disetel True .