tf.linalg.matvec
| View source on GitHub |
Умножает матрицу 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 должна, после любых транспонирований, быть тензором ранга >= 2, и у нас должно быть shape(b) = shape(a)[:-2] + [shape(a)[-1]].
И a и b должны быть одного типа. Поддерживаемые типы: float16, float32, float64, int32, complex64, complex128.
Матрица a может быть транспонирована или присоединённой (сопряжённой и транспонированной) на лету, установив один из соответствующих флагов в True. По умолчанию они равны False.
Если один или оба входных значения содержат много нулей, для более эффективного алгоритма умножения можно установить соответствующий флаг a_is_sparse или b_is_sparse в значение True. По умолчанию они равны False. Эта оптимизация доступна только для обычных матриц/векторов (тензоров ранга 2/1) с типами данных bfloat16 или float32.
Например:
# 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.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.matvec(a, b)
| Аргументы | |
|---|---|
a | Tensor типа float16, float32, float64, int32, complex64, complex128 и ранга > 1. |
b | Tensor с тем же типом и рангом = rank(a) - 1. |
transpose_a | Если True, a транспонируется перед умножением. |
adjoint_a | Если True, a сопрягается и транспонируется перед умножением. |
a_is_sparse | Если True, a обрабатывается как разреженная матрица. |
b_is_sparse | Если True, b обрабатывается как разреженная матрица. |
name | Имя операции (необязательно). |
| Возвращаемое значение | |
|---|---|
Тензор того же типа, что и a и b, где каждый внутренний вектор является произведением соответствующих матриц в a и векторов в b, например, если все атрибуты транспонирования или сопряжения False:
| |
Note | Это матрично-векторное произведение, а не поэлементное произведение. |
| Исключения | |
|---|---|
ValueError | Если transpose_a и adjoint_a оба установлены в 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/matvec