tf.linalg.matmul
| Просмотреть исходный код на GitHub |
Умножает матрицу a на матрицу b, получая a * b.
tf.linalg.matmul(
a, b, transpose_a=False, transpose_b=False, adjoint_a=False, adjoint_b=False,
a_is_sparse=False, b_is_sparse=False, name=None
)
Входы, после любых транспонирований, должны быть тензорами ранга >= 2, где внутренние 2 измерения задают допустимые аргументы матричного умножения, а любые дополнительные внешние измерения совпадают.
Обе матрицы должны быть одного типа. Поддерживаемые типы: float16, float32, float64, int32, complex64, complex128.
Любая матрица может быть транспонирована или сопряжённо-транспонирована (сопряжена и транспонирована) на лету, установив соответствующий флаг в True. По умолчанию они False.
Если одна или обе матрицы содержат много нулей, можно использовать более эффективный алгоритм умножения, установив соответствующий флаг a_is_sparse или b_is_sparse в значение True. По умолчанию они False. Эта оптимизация доступна только для обычных матриц (тензоров ранга 2) с типами данных bfloat16 или float32.
Например:
# 2-D tensor `a`
# [[1, 2, 3],
# [4, 5, 6]]
a = tf.constant([1, 2, 3, 4, 5, 6], shape=[2, 3])
# 2-D tensor `b`
# [[ 7, 8],
# [ 9, 10],
# [11, 12]]
b = tf.constant([7, 8, 9, 10, 11, 12], shape=[3, 2])
# `a` * `b`
# [[ 58, 64],
# [139, 154]]
c = tf.matmul(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])
# 3-D tensor `b`
# [[[13, 14],
# [15, 16],
# [17, 18]],
# [[19, 20],
# [21, 22],
# [23, 24]]]
b = tf.constant(np.arange(13, 25, dtype=np.int32),
shape=[2, 3, 2])
# `a` * `b`
# [[[ 94, 100],
# [229, 244]],
# [[508, 532],
# [697, 730]]]
c = tf.matmul(a, b)
# Since python >= 3.5 the @ operator is supported (see PEP 465).
# In TensorFlow, it simply calls the `tf.matmul()` function, so the
# following lines are equivalent:
d = a @ b @ [[10.], [11.]]
d = tf.matmul(tf.matmul(a, b), [[10.], [11.]])
| Аргументы | |
|---|---|
a | Tensor типа float16, float32, float64, int32, complex64, complex128 и ранга > 1. |
b | Tensor с тем же типом и рангом, что и a. |
transpose_a | Если True, a транспонируется перед умножением. |
transpose_b | Если True, b транспонируется перед умножением. |
adjoint_a | Если True, a сопряжена и транспонирована перед умножением. |
adjoint_b | Если True, b сопряжена и транспонирована перед умножением. |
a_is_sparse | Если True, a обрабатывается как разреженная матрица. |
b_is_sparse | Если True, b обрабатывается как разреженная матрица. |
name | Имя операции (необязательно). |
| Возвращаемое значение | |
|---|---|
Тензор того же типа, что и a и b, где каждая внутренняя матрица является произведением соответствующих матриц в a и b, например, если все атрибуты транспонирования или сопряжения False:
| |
Note | Это матричное произведение, а не поэлементное произведение. |
| Исключения | |
|---|---|
ValueError | Если transpose_a и adjoint_a, или transpose_b и adjoint_b оба установлены в True. |
© 2020 The TensorFlow Authors. All rights reserved.
Licensed under the Creative Commons Attribution License 3.0.
Code samples licensed under the Apache 2.0 License.
https://www.tensorflow.org/versions/r1.15/api_docs/python/tf/linalg/matmul