tf.linalg.matvec
Stay organized with collections
Save and categorize content based on your preferences.
Multiplies matrix a
by vector b
, producing a
* b
.
tf.linalg.matvec(
a,
b,
transpose_a=False,
adjoint_a=False,
a_is_sparse=False,
b_is_sparse=False,
name=None
)
Used in the notebooks
The matrix a
must, following any transpositions, be a tensor of rank >= 2,
with shape(a)[-1] == shape(b)[-1]
, and shape(a)[:-2]
able to broadcast
with shape(b)[:-1]
.
Both a
and b
must be of the same type. The supported types are:
float16
, float32
, float64
, int32
, complex64
, complex128
.
Matrix a
can be transposed or adjointed (conjugated and transposed) on
the fly by setting one of the corresponding flag to True
. These are False
by default.
If one or both of the inputs contain a lot of zeros, a more efficient
multiplication algorithm can be used by setting the corresponding
a_is_sparse
or b_is_sparse
flag to True
. These are False
by default.
This optimization is only available for plain matrices/vectors (rank-2/1
tensors) with datatypes bfloat16
or float32
.
For example:
# 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, 139]
c = tf.linalg.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.linalg.matvec(a, b)
Args |
a
|
Tensor of type float16 , float32 , float64 , int32 , complex64 ,
complex128 and rank > 1.
|
b
|
Tensor with same type as a and compatible dimensions.
|
transpose_a
|
If True , a is transposed before multiplication.
|
adjoint_a
|
If True , a is conjugated and transposed before
multiplication.
|
a_is_sparse
|
If True , a is treated as a sparse matrix.
|
b_is_sparse
|
If True , b is treated as a sparse matrix.
|
name
|
Name for the operation (optional).
|
Returns |
A Tensor of the same type as a and b where each inner-most vector is
the product of the corresponding matrices in a and vectors in b , e.g. if
all transpose or adjoint attributes are False :
output [..., i] = sum_k (a [..., i, k] * b [..., k]), for all indices i.
|
Note
|
This is matrix-vector product, not element-wise product.
|
Raises |
ValueError
|
If transpose_a and adjoint_a are both set to True.
|
Except as otherwise noted, the content of this page is licensed under the Creative Commons Attribution 4.0 License, and code samples are licensed under the Apache 2.0 License. For details, see the Google Developers Site Policies. Java is a registered trademark of Oracle and/or its affiliates. Some content is licensed under the numpy license.
Last updated 2024-04-26 UTC.
[[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Missing the information I need","missingTheInformationINeed","thumb-down"],["Too complicated / too many steps","tooComplicatedTooManySteps","thumb-down"],["Out of date","outOfDate","thumb-down"],["Samples / code issue","samplesCodeIssue","thumb-down"],["Other","otherDown","thumb-down"]],["Last updated 2024-04-26 UTC."],[],[],null,["# tf.linalg.matvec\n\n\u003cbr /\u003e\n\n|------------------------------------------------------------------------------------------------------------------------------|\n| [View source on GitHub](https://github.com/tensorflow/tensorflow/blob/v2.16.1/tensorflow/python/ops/math_ops.py#L3662-L3759) |\n\nMultiplies matrix `a` by vector `b`, producing `a` \\* `b`.\n\n#### View aliases\n\n\n**Compat aliases for migration**\n\nSee\n[Migration guide](https://www.tensorflow.org/guide/migrate) for\nmore details.\n\n[`tf.compat.v1.linalg.matvec`](https://www.tensorflow.org/api_docs/python/tf/linalg/matvec)\n\n\u003cbr /\u003e\n\n tf.linalg.matvec(\n a,\n b,\n transpose_a=False,\n adjoint_a=False,\n a_is_sparse=False,\n b_is_sparse=False,\n name=None\n )\n\n### Used in the notebooks\n\n| Used in the tutorials |\n|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| - [Scalable model compression](https://www.tensorflow.org/tutorials/optimization/compression) - [Generalized Linear Models](https://www.tensorflow.org/probability/examples/Generalized_Linear_Models) - [Tutorial on Multi Armed Bandits in TF-Agents](https://www.tensorflow.org/agents/tutorials/bandits_tutorial) - [A Tutorial on Multi-Armed Bandits with Per-Arm Features](https://www.tensorflow.org/agents/tutorials/per_arm_bandits_tutorial) - [Substantial Undocumented Infection Facilitates the Rapid Dissemination of Novel Coronavirus (SARS-CoV2)](https://www.tensorflow.org/probability/examples/Undocumented_Infection_and_the_Dissemination_of_SARS-CoV2) |\n\nThe matrix `a` must, following any transpositions, be a tensor of rank \\\u003e= 2,\nwith `shape(a)[-1] == shape(b)[-1]`, and `shape(a)[:-2]` able to broadcast\nwith `shape(b)[:-1]`.\n\nBoth `a` and `b` must be of the same type. The supported types are:\n`float16`, `float32`, `float64`, `int32`, `complex64`, `complex128`.\n\nMatrix `a` can be transposed or adjointed (conjugated and transposed) on\nthe fly by setting one of the corresponding flag to `True`. These are `False`\nby default.\n\nIf one or both of the inputs contain a lot of zeros, a more efficient\nmultiplication algorithm can be used by setting the corresponding\n`a_is_sparse` or `b_is_sparse` flag to `True`. These are `False` by default.\nThis optimization is only available for plain matrices/vectors (rank-2/1\ntensors) with datatypes `bfloat16` or `float32`.\n\n#### For example:\n\n # 2-D tensor `a`\n # [[1, 2, 3],\n # [4, 5, 6]]\n a = tf.constant([1, 2, 3, 4, 5, 6], shape=[2, 3])\n\n # 1-D tensor `b`\n # [7, 9, 11]\n b = tf.constant([7, 9, 11], shape=[3])\n\n # `a` * `b`\n # [ 58, 139]\n c = tf.linalg.matvec(a, b)\n\n\n # 3-D tensor `a`\n # [[[ 1, 2, 3],\n # [ 4, 5, 6]],\n # [[ 7, 8, 9],\n # [10, 11, 12]]]\n a = tf.constant(np.arange(1, 13, dtype=np.int32),\n shape=[2, 2, 3])\n\n # 2-D tensor `b`\n # [[13, 14, 15],\n # [16, 17, 18]]\n b = tf.constant(np.arange(13, 19, dtype=np.int32),\n shape=[2, 3])\n\n # `a` * `b`\n # [[ 86, 212],\n # [410, 563]]\n c = tf.linalg.matvec(a, b)\n\n\u003cbr /\u003e\n\n\u003cbr /\u003e\n\n\u003cbr /\u003e\n\n| Args ---- ||\n|---------------|-----------------------------------------------------------------------------------------------------|\n| `a` | `Tensor` of type `float16`, `float32`, `float64`, `int32`, `complex64`, `complex128` and rank \\\u003e 1. |\n| `b` | `Tensor` with same type as `a` and compatible dimensions. |\n| `transpose_a` | If `True`, `a` is transposed before multiplication. |\n| `adjoint_a` | If `True`, `a` is conjugated and transposed before multiplication. |\n| `a_is_sparse` | If `True`, `a` is treated as a sparse matrix. |\n| `b_is_sparse` | If `True`, `b` is treated as a sparse matrix. |\n| `name` | Name for the operation (optional). |\n\n\u003cbr /\u003e\n\n\u003cbr /\u003e\n\n| Returns ------- ||\n|--------|----------------------------------------------------------|\n| A `Tensor` of the same type as `a` and `b` where each inner-most vector is the product of the corresponding matrices in `a` and vectors in `b`, e.g. if all transpose or adjoint attributes are `False`: \u003cbr /\u003e `output`\\[..., i\\] = sum_k (`a`\\[..., i, k\\] \\* `b`\\[..., k\\]), for all indices i. ||\n| `Note` | This is matrix-vector product, not element-wise product. |\n\n\u003cbr /\u003e\n\n\u003cbr /\u003e\n\n\u003cbr /\u003e\n\n\u003cbr /\u003e\n\n| Raises ------ ||\n|--------------|----------------------------------------------------|\n| `ValueError` | If transpose_a and adjoint_a are both set to True. |\n\n\u003cbr /\u003e"]]