此页面由 Cloud Translation API 翻译。
Switch to English

tf.linalg.matmul

TensorFlow 1版 GitHub上查看源代码

乘以矩阵a由矩阵b ,产生a * b

用在笔记本电脑

使用的指南使用教程

输入信号必须,以下任何换位,是秩> = 2的张量,其中内2个维度指定有效矩阵乘法的尺寸,和任何其它的外部尺寸相匹配指定批量大小。

两个矩阵必须是同一类型的。支持的类型有: float16float32float64int32complex64complex128

或者矩阵可以转或通过设置相应的标志之一adjointed(共轭转置和)对飞True 。这些都是False的默认值。

如果矩阵中的一个或两者中含有大量的零,一个更有效的乘法算法可以通过设置相应的使用a_is_sparseb_is_sparse标志True 。这些都是False的默认值。这种优化是仅适用于纯矩阵(秩2张量)与数据类型bfloat16float32

一个简单的2-d张量矩阵乘法:

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

a tf.Tensor类型的float16float32float64int32complex64complex128和秩> 1。
b tf.Tensor与相同类型和秩为a
transpose_a 如果Truea是乘法之前调换。
transpose_b 如果Trueb是乘法之前调换。
adjoint_a 如果Truea是共轭和乘法之前换位。
adjoint_b 如果Trueb共轭和乘法之前换位。
a_is_sparse 如果Truea被视为稀疏矩阵。请注意,这并不支持tf.sparse.SparseTensor ,它只是让该承担最值优化a是零。见tf.sparse.sparse_dense_matmul对于一些支持tf.sparse.SparseTensor乘法。
b_is_sparse 如果Trueb将被视为一个稀疏矩阵。请注意,这并不支持tf.sparse.SparseTensor ,它只是让该承担最值优化a是零。见tf.sparse.sparse_dense_matmul对于一些支持tf.sparse.SparseTensor乘法。
name 名称为操作(可选)。

tf.Tensor相同类型的ab ,其中每个最内矩阵是对应的矩阵的乘积在ab ,例如,如果所有转置或伴随的属性是False

output[..., i, j] = sum_k (a[..., i, k] * b[..., k, j])对于所有索引ij

Note 这是矩阵乘积,而不是逐元素乘积。

ValueError 如果transpose_aadjoint_a ,或transpose_badjoint_b都设置为True