mygrad.multiply_sequence#

mygrad.multiply_sequence(*variables: ArrayLike, constant: Optional[bool] = None) Tensor[source]#

f(a, b, ...) -> a * b * ...

Multiply a sequence of tensors.

Parameters
variablesArrayLike

A sequence of broadcast-compatible tensors. Non-tensor array-likes are treated as constants.

constantOptional[bool]

If True, this tensor is treated as a constant, and thus does not facilitate back propagation (i.e. constant.grad will always return None).

Defaults to False for float-type data. Defaults to True for integer-type data.

Integer-type tensors must be constant.

Returns
mygrad.Tensor

Notes

It is more efficient to back-propagate through this function than it is through a computational graph with N-1 corresponding multiplication operations.

Examples

>>> import mygrad as mg
>>> x = mg.tensor([1. , 2.])
>>> y = mg.tensor([-1.])
>>> z = mg.tensor([[1.]])
>>> out = mg.multiply_sequence(x, y, z); out
    Tensor([[-1., -2.]])
>>> out.backward()
>>> x.grad
array([-1., -1.])
>>> y.grad
array([3.])
>>> z.grad
array([[-3.]])