tensor.pow
#tensor.pow
fn pow(self: @Tensor<T>, other: @Tensor<T>) -> Tensor<T>;
Pow takes input data (Tensor) and exponent Tensor, and produces one output data (Tensor) where the function f(x) = x^exponent, is applied to the data tensor elementwise. The input tensors must have either:
Exactly the same shape
The same number of dimensions and the length of each dimension is either a common length or 1.
Args
self
(@Tensor<T>
) - The first tensor, base of the exponent.other
(@Tensor<T>
) - The second tensor, power of the exponent.
Panics
Panics if the shapes are not equal or broadcastable
Returns
A new Tensor<T>
with the same shape as the broadcasted inputs.
Examples
Case 1: Compare tensors with same shape
use core::array::{ArrayTrait, SpanTrait};
use orion::operators::tensor::{TensorTrait, Tensor, U32Tensor};
fn pow_example() -> Tensor<usize> {
let tensor_1 = TensorTrait::<u32>::new(
shape: array![3, 3].span(), data: array![0, 1, 2, 3, 4, 5, 6, 7, 8].span(),
);
let tensor_2 = TensorTrait::<u32>::new(
shape: array![3, 3].span(), data: array![0, 1, 2, 0, 1, 2, 0, 1, 2].span(),
);
return tensor_1.pow(@tensor_2);
}
>>> [0,1,4,0,4,25,0,7,64]
Case 2: Compare tensors with different shapes
use core::array::{ArrayTrait, SpanTrait};
use orion::operators::tensor::{TensorTrait, Tensor, U32Tensor};
fn pow_example() -> Tensor<usize> {
let tensor_1 = TensorTrait::<u32>::new(
shape: array![3, 3].span(), data: array![0, 1, 2, 3, 4, 5, 6, 7, 8].span(),
);
let tensor_2 = TensorTrait::<u32>::new(
shape: array![1, 3].span(), data: array![0, 1, 2].span(),
);
return tensor_1.pow(@tensor_2);
}
>>> [0,1,4,0,4,25,0,7,64]
Last updated
Was this helpful?