module Num

Extended Modules

Defined in:

cl_tensor/internal/cache_op.cr
num.cr
tensor/build.cr
tensor/internal/constants.cr
tensor/manipulate.cr
tensor/operators.cr
tensor/reductions.cr
tensor/work.cr

Constant Summary

ColMajor = OrderType::ColMajor
RowMajor = OrderType::RowMajor
VERSION = "0.4.0dev"
WORK_POOL = WorkPool.new

Instance Method Summary

Macro Summary

Instance Method Detail

def acos(a : Tensor | Enumerable) #

[View source]
def acos(a : Number) #

[View source]
def acos!(a : Tensor) #

[View source]
def acosh(a : Tensor | Enumerable) #

[View source]
def acosh(a : Number) #

[View source]
def acosh!(a : Tensor) #

[View source]
def acospi(a : ClTensor(Float32)) #

[View source]
def acospi!(a : ClTensor(Float32)) #

[View source]
def add(a : Tensor | Enumerable, b : Tensor | Enumerable) #

[View source]
def add(a : Tensor | Enumerable, b : Number) #

[View source]
def add(a : Number, b : Tensor | Enumerable) #

[View source]
def add(a : Number, b : Number) #

[View source]
def add(a : ClTensor(Float32), b : ClTensor(Float32)) #

[View source]
def add!(a : Tensor, b : Tensor | Enumerable) #

[View source]
def add!(a : Tensor, b : Number) #

[View source]
def add!(a : ClTensor(Float32), b : ClTensor(Float32)) #

[View source]
def all(a : Tensor | Enumerable, axis : Int, dims : Bool = false) #

Reduces a Tensor along an axis, asserting the truthiness of all values in each view into the Tensor

Arguments

a : Tensor | Enumerable Argument to reduce axis : Int Axis of reduction dims : Bool Indicate if the axis of reduction should remain in the result

Examples

a = Tensor.new([2, 2]) { |i| i }
Num.all(a, 0) # => [false, true]
Num.all(a, 1, dims: true)
# [[false],
#  [ true]]

[View source]
def all(a : Tensor | Enumerable) #

Reduces a Tensor to a boolean by asserting the truthiness of all elements

Arguments

a : Tensor | Enumerable Argument to reduce

Examples

a = [0, 2, 3]
Num.all(a) # => false

[View source]
def all_close(a : Tensor | Enumerable, b : Tensor | Enumerable, epsilon = 1e-6) #

Asserts that two Tensors are equal, allowing for small margins of errors with floating point values using an EPSILON value.

Arguments

a : Tensor | Enumerable First Tensor to compare b : Tensor | Enumerable Second Tensor to compare epsilon : Number Allowed variance between numbers

Examples

a = [0.0, 0.0, 0.0000000001].to_tensor
b = [0.0, 0.0, 0.0].to_tensor
Num.all_close(a, b) # => true

[View source]
def any(a : Tensor | Enumerable, axis : Int, dims : Bool = false) #

Reduces a Tensor along an axis, asserting the truthiness of any values in each view into the Tensor

Arguments

a : Tensor | Enumerable Argument to reduce axis : Int Axis of reduction dims : Bool Indicate if the axis of reduction should remain in the result

Examples

a = Tensor.new([2, 2]) { |i| i }
Num.any(a, 0) # => [true, true]
Num.any(a, 1, dims: true)
# [[true],
#  [ true]]

[View source]
def any(a : Tensor | Enumerable) #

Reduces a Tensor to a boolean by asserting the truthiness of any element

Arguments

a : Tensor | Enumerable Argument to reduce

Examples

a = [0, 2, 3]
Num.any(a) # => true

[View source]
def asin(a : Tensor | Enumerable) #

[View source]
def asin(a : Number) #

[View source]
def asin(a : ClTensor(Float32)) #

[View source]
def asin!(a : Tensor) #

[View source]
def asin!(a : ClTensor(Float32)) #

[View source]
def asinh(a : Tensor | Enumerable) #

[View source]
def asinh(a : Number) #

[View source]
def asinh(a : ClTensor(Float32)) #

[View source]
def asinh!(a : Tensor) #

[View source]
def asinh!(a : ClTensor(Float32)) #

[View source]
def asinpi(a : ClTensor(Float32)) #

[View source]
def asinpi!(a : ClTensor(Float32)) #

[View source]
def atan(a : Tensor | Enumerable) #

[View source]
def atan(a : Number) #

[View source]
def atan(a : ClTensor(Float32)) #

[View source]
def atan!(a : Tensor) #

[View source]
def atan!(a : ClTensor(Float32)) #

[View source]
def atan2(a : Tensor, b : Tensor | Enumerable) #

[View source]
def atan2(a : Tensor | Enumerable, b : Tensor | Enumerable) #

[View source]
def atan2(a : Tensor | Enumerable, b : Number) #

[View source]
def atan2(a : Number, b : Tensor | Enumerable) #

[View source]
def atan2(a : Number, b : Number) #

[View source]
def atan2!(a : Tensor, b : Number) #

[View source]
def atanh(a : Tensor | Enumerable) #

[View source]
def atanh(a : Number) #

[View source]
def atanh(a : ClTensor(Float32)) #

[View source]
def atanh!(a : Tensor) #

[View source]
def atanh!(a : ClTensor(Float32)) #

[View source]
def atanpi(a : ClTensor(Float32)) #

[View source]
def atanpi!(a : ClTensor(Float32)) #

[View source]
def besselj(a : Tensor, b : Tensor | Enumerable) #

[View source]
def besselj(a : Tensor | Enumerable, b : Tensor | Enumerable) #

[View source]
def besselj(a : Tensor | Enumerable, b : Number) #

[View source]
def besselj(a : Number, b : Tensor | Enumerable) #

[View source]
def besselj(a : Number, b : Number) #

[View source]
def besselj!(a : Tensor, b : Number) #

[View source]
def besselj0(a : Tensor | Enumerable) #

[View source]
def besselj0(a : Number) #

[View source]
def besselj0!(a : Tensor) #

[View source]
def besselj1(a : Tensor | Enumerable) #

[View source]
def besselj1(a : Number) #

[View source]
def besselj1!(a : Tensor) #

[View source]
def bessely(a : Tensor, b : Tensor | Enumerable) #

[View source]
def bessely(a : Tensor | Enumerable, b : Tensor | Enumerable) #

[View source]
def bessely(a : Tensor | Enumerable, b : Number) #

[View source]
def bessely(a : Number, b : Tensor | Enumerable) #

[View source]
def bessely(a : Number, b : Number) #

[View source]
def bessely!(a : Tensor, b : Number) #

[View source]
def bessely0(a : Tensor | Enumerable) #

[View source]
def bessely0(a : Number) #

[View source]
def bessely0!(a : Tensor) #

[View source]
def bessely1(a : Tensor | Enumerable) #

[View source]
def bessely1(a : Number) #

[View source]
def bessely1!(a : Tensor) #

[View source]
def bitwise_and(a : Tensor | Enumerable, b : Tensor | Enumerable) #

[View source]
def bitwise_and(a : Tensor | Enumerable, b : Number) #

[View source]
def bitwise_and(a : Number, b : Tensor | Enumerable) #

[View source]
def bitwise_and(a : Number, b : Number) #

[View source]
def bitwise_and!(a : Tensor, b : Tensor | Enumerable) #

[View source]
def bitwise_and!(a : Tensor, b : Number) #

[View source]
def bitwise_or(a : Tensor | Enumerable, b : Tensor | Enumerable) #

[View source]
def bitwise_or(a : Tensor | Enumerable, b : Number) #

[View source]
def bitwise_or(a : Number, b : Tensor | Enumerable) #

[View source]
def bitwise_or(a : Number, b : Number) #

[View source]
def bitwise_or!(a : Tensor, b : Tensor | Enumerable) #

[View source]
def bitwise_or!(a : Tensor, b : Number) #

[View source]
def bitwise_xor(a : Tensor | Enumerable, b : Tensor | Enumerable) #

[View source]
def bitwise_xor(a : Tensor | Enumerable, b : Number) #

[View source]
def bitwise_xor(a : Number, b : Tensor | Enumerable) #

[View source]
def bitwise_xor(a : Number, b : Number) #

[View source]
def bitwise_xor!(a : Tensor, b : Tensor | Enumerable) #

[View source]
def bitwise_xor!(a : Tensor, b : Number) #

[View source]
def cbrt(a : Tensor | Enumerable) #

[View source]
def cbrt(a : Number) #

[View source]
def cbrt(a : ClTensor(Float32)) #

[View source]
def cbrt!(a : Tensor) #

[View source]
def cbrt!(a : ClTensor(Float32)) #

[View source]
def ceil(a : ClTensor(Float32)) #

[View source]
def ceil!(a : ClTensor(Float32)) #

[View source]
def concat(t_array : Array(Tensor | Enumerable), axis : Int) #

Join a sequence of Tensors along an existing axis. The Tensors must have the same shape for all axes other than the axis of concatenation

Arguments

t_array : Array(Tensor | Enumerable) Array of items to concatenate. All elements will be cast to Tensor, so arrays can be passed here, but all inputs must have the same generic type. Union types are not allowed axis : Int Axis of concatenation, negative axes are allowed

Examples

a = [1, 2, 3]
b = Tensor.from_array [4, 5, 6]
Num.concat([a, b], 0) # => [1, 2, 3, 4, 5, 6]

c = Tensor.new([3, 2, 2]) { |i| i / 2 }
Num.concat([c, c, c], -1)

# [[[0  , 0.5, 0  , 0.5, 0  , 0.5],
#  [1  , 1.5, 1  , 1.5, 1  , 1.5]],
#
# [[2  , 2.5, 2  , 2.5, 2  , 2.5],
#  [3  , 3.5, 3  , 3.5, 3  , 3.5]],
#
# [[4  , 4.5, 4  , 4.5, 4  , 4.5],
#  [5  , 5.5, 5  , 5.5, 5  , 5.5]]]

[View source]
def concat(t_array : Array(Tensor | Enumerable)) #

Join a sequence of one dimensional Tensors along the first axis, creating a one-dimensional output

Arguments

t_array : Array(Tensor | Enumerable) Array of items to concatenate. All elements will be cast to Tensor, so arrays can be passed here, but all inputs must have the same generic type. Union types are not allowed

Examples

a = [1, 2, 3]
b = Tensor.from_array [4, 5, 6]
Num.concat([a, b]) # => [1, 2, 3, 4, 5, 6]

[View source]
def concat(*t_args : Tensor | Enumerable, axis : Int) #

Join a sequence of Tensors along an existing axis. The Tensors must have the same shape for all axes other than the axis of concatenation

Arguments

t_array : Array(Tensor | Enumerable) Array of items to concatenate. All elements will be cast to Tensor, so arrays can be passed here, but all inputs must have the same generic type. Union types are not allowed axis : Int Axis of concatenation, negative axes are allowed

Examples

a = [1, 2, 3]
b = Tensor.from_array [4, 5, 6]
Num.concat([a, b], 0) # => [1, 2, 3, 4, 5, 6]

c = Tensor.new([3, 2, 2]) { |i| i / 2 }
Num.concat([c, c, c], -1)

# [[[0  , 0.5, 0  , 0.5, 0  , 0.5],
#  [1  , 1.5, 1  , 1.5, 1  , 1.5]],
#
# [[2  , 2.5, 2  , 2.5, 2  , 2.5],
#  [3  , 3.5, 3  , 3.5, 3  , 3.5]],
#
# [[4  , 4.5, 4  , 4.5, 4  , 4.5],
#  [5  , 5.5, 5  , 5.5, 5  , 5.5]]]

[View source]
def concat(*t_args : Tensor | Enumerable) #

Join a sequence of one dimensional Tensors along the first axis, creating a one-dimensional output

Arguments

t_array : Array(Tensor | Enumerable) Array of items to concatenate. All elements will be cast to Tensor, so arrays can be passed here, but all inputs must have the same generic type. Union types are not allowed

Examples

a = [1, 2, 3]
b = Tensor.from_array [4, 5, 6]
Num.concat([a, b]) # => [1, 2, 3, 4, 5, 6]

[View source]
def conj(t : Tensor(U)) forall U #

[View source]
def copysign(a : Tensor, b : Tensor | Enumerable) #

[View source]
def copysign(a : Tensor | Enumerable, b : Tensor | Enumerable) #

[View source]
def copysign(a : Tensor | Enumerable, b : Number) #

[View source]
def copysign(a : Number, b : Tensor | Enumerable) #

[View source]
def copysign(a : Number, b : Number) #

[View source]
def copysign!(a : Tensor, b : Number) #

[View source]
def cos(a : Tensor | Enumerable) #

[View source]
def cos(a : Number) #

[View source]
def cos(a : ClTensor(Float32)) #

[View source]
def cos!(a : Tensor) #

[View source]
def cos!(a : ClTensor(Float32)) #

[View source]
def cosh(a : Tensor | Enumerable) #

[View source]
def cosh(a : Number) #

[View source]
def cosh(a : ClTensor(Float32)) #

[View source]
def cosh!(a : Tensor) #

[View source]
def cosh!(a : ClTensor(Float32)) #

[View source]
def cospi(a : ClTensor(Float32)) #

[View source]
def cospi!(a : ClTensor(Float32)) #

[View source]
def cumsum(t : Tensor | Enumerable, axis : Int) #

Accumulate's a Tensor along an axis, summing each view into the Tensor

Arguments

a : Tensor | Enumerable Argument to sum axis : Int Axis of summation

Examples

a = Tensor.new([3, 3, 2]) { |i| i }
Num.cumsum(a, 0)

# [[[ 0,  1],
#   [ 2,  3],
#   [ 4,  5]],
#
#  [[ 6,  8],
#   [10, 12],
#   [14, 16]],
#
#  [[18, 21],
#   [24, 27],
#   [30, 33]]]

[View source]
def cumsum(a : Tensor | Enumerable) #

Accumulate a Tensor as though it is flat. Returning a one dimensional result.

Arguments

a : Tensor | Enumerable Tensor to accumulate. Will be treated as one-dimensional

Examples

a = [1, 2, 3]
Num.cumsum(a) # => [1, 3, 6]

[View source]
def divide(a : Tensor | Enumerable, b : Tensor | Enumerable) #

[View source]
def divide(a : Tensor | Enumerable, b : Number) #

[View source]
def divide(a : Number, b : Tensor | Enumerable) #

[View source]
def divide(a : Number, b : Number) #

[View source]
def divide(a : ClTensor(Float32), b : ClTensor(Float32)) #

[View source]
def divide!(a : Tensor, b : Tensor | Enumerable) #

[View source]
def divide!(a : Tensor, b : Number) #

[View source]
def divide!(a : ClTensor(Float32), b : ClTensor(Float32)) #

[View source]
def equal(a : Tensor | Enumerable, b : Tensor | Enumerable) #

[View source]
def equal(a : Tensor | Enumerable, b : Number) #

[View source]
def equal(a : Number, b : Tensor | Enumerable) #

[View source]
def equal(a : Number, b : Number) #

[View source]
def equal!(a : Tensor, b : Tensor | Enumerable) #

[View source]
def equal!(a : Tensor, b : Number) #

[View source]
def erf(a : Tensor | Enumerable) #

[View source]
def erf(a : Number) #

[View source]
def erf(a : ClTensor(Float32)) #

[View source]
def erf!(a : Tensor) #

[View source]
def erf!(a : ClTensor(Float32)) #

[View source]
def erfc(a : Tensor | Enumerable) #

[View source]
def erfc(a : Number) #

[View source]
def erfc(a : ClTensor(Float32)) #

[View source]
def erfc!(a : Tensor) #

[View source]
def erfc!(a : ClTensor(Float32)) #

[View source]
def exp(a : Tensor | Enumerable) #

[View source]
def exp(a : Number) #

[View source]
def exp(a : ClTensor(Float32)) #

[View source]
def exp!(a : Tensor) #

[View source]
def exp!(a : ClTensor(Float32)) #

[View source]
def exp10(a : ClTensor(Float32)) #

[View source]
def exp10!(a : ClTensor(Float32)) #

[View source]
def exp2(a : Tensor | Enumerable) #

[View source]
def exp2(a : Number) #

[View source]
def exp2(a : ClTensor(Float32)) #

[View source]
def exp2!(a : Tensor) #

[View source]
def exp2!(a : ClTensor(Float32)) #

[View source]
def expm1(a : Tensor | Enumerable) #

[View source]
def expm1(a : Number) #

[View source]
def expm1(a : ClTensor(Float32)) #

[View source]
def expm1!(a : Tensor) #

[View source]
def expm1!(a : ClTensor(Float32)) #

[View source]
def fabs(a : ClTensor(Float32)) #

[View source]
def fabs!(a : ClTensor(Float32)) #

[View source]
def flip(a : Tensor | Enumerable, axis : Int) #

Flips a Tensor along an axis, returning a view

Arguments

  • a : Tensor | Enumerable Argument to flip
  • axis : Int Axis to flip

Examples

a = [[1, 2, 3], [4, 5, 6]]
puts Num.flip(a, 1)

# [[3, 2, 1],
#  [6, 5, 4]]

[View source]
def flip(a : Tensor | Enumerable) #

Flips a Tensor along all axes, returning a view

Arguments

  • a : Tensor | Enumerable Argument to flip

Examples

a = [[1, 2, 3], [4, 5, 6]]
puts Num.flip(a)

# [[6, 5, 4],
#  [3, 2, 1]]

[View source]
def floor(a : ClTensor(Float32)) #

[View source]
def floor!(a : ClTensor(Float32)) #

[View source]
def floordiv(a : Tensor | Enumerable, b : Tensor | Enumerable) #

[View source]
def floordiv(a : Tensor | Enumerable, b : Number) #

[View source]
def floordiv(a : Number, b : Tensor | Enumerable) #

[View source]
def floordiv(a : Number, b : Number) #

[View source]
def floordiv!(a : Tensor, b : Tensor | Enumerable) #

[View source]
def floordiv!(a : Tensor, b : Number) #

[View source]
def gamma(a : Tensor | Enumerable) #

[View source]
def gamma(a : Number) #

[View source]
def gamma!(a : Tensor) #

[View source]
def greater(a : Tensor | Enumerable, b : Tensor | Enumerable) #

[View source]
def greater(a : Tensor | Enumerable, b : Number) #

[View source]
def greater(a : Number, b : Tensor | Enumerable) #

[View source]
def greater(a : Number, b : Number) #

[View source]
def greater!(a : Tensor, b : Tensor | Enumerable) #

[View source]
def greater!(a : Tensor, b : Number) #

[View source]
def greater_equal(a : Tensor | Enumerable, b : Tensor | Enumerable) #

[View source]
def greater_equal(a : Tensor | Enumerable, b : Number) #

[View source]
def greater_equal(a : Number, b : Tensor | Enumerable) #

[View source]
def greater_equal(a : Number, b : Number) #

[View source]
def greater_equal!(a : Tensor, b : Tensor | Enumerable) #

[View source]
def greater_equal!(a : Tensor, b : Number) #

[View source]
def h_concat(t_array : Array(Tensor | Enumerable)) #

Stack an array of Tensors in sequence column-wise. While this method can take Tensors with any number of dimensions, it makes the most sense with rank <= 3

For one dimensional Tensors, this will still stack along the first axis

Arguments t_array : Array(Tensor | Enumerable) Tensors to concatenate

Examples

a = [1, 2, 3].to_tensor
Num.h_concat([a, a]) # => [1, 2, 3, 1, 2, 3]

b = [[1, 2], [3, 4]].to_tensor
Num.h_concat([b, b])

# [[1, 2, 1, 2],
#  [3, 4, 3, 4]]

[View source]
def h_concat(*t_args : Tensor | Enumerable) #

Stack an array of Tensors in sequence column-wise. While this method can take Tensors with any number of dimensions, it makes the most sense with rank <= 3

For one dimensional Tensors, this will still stack along the first axis

Arguments t_array : Array(Tensor | Enumerable) Tensors to concatenate

Examples

a = [1, 2, 3].to_tensor
Num.h_concat([a, a]) # => [1, 2, 3, 1, 2, 3]

b = [[1, 2], [3, 4]].to_tensor
Num.h_concat([b, b])

# [[1, 2, 1, 2],
#  [3, 4, 3, 4]]

[View source]
def hypot(a : Tensor, b : Tensor | Enumerable) #

[View source]
def hypot(a : Tensor | Enumerable, b : Tensor | Enumerable) #

[View source]
def hypot(a : Tensor | Enumerable, b : Number) #

[View source]
def hypot(a : Number, b : Tensor | Enumerable) #

[View source]
def hypot(a : Number, b : Number) #

[View source]
def hypot!(a : Tensor, b : Number) #

[View source]
def ilogb(a : Tensor | Enumerable) #

[View source]
def ilogb(a : Number) #

[View source]
def ilogb!(a : Tensor) #

[View source]
def ldexp(a : Tensor, b : Tensor | Enumerable) #

[View source]
def ldexp(a : Tensor | Enumerable, b : Tensor | Enumerable) #

[View source]
def ldexp(a : Tensor | Enumerable, b : Number) #

[View source]
def ldexp(a : Number, b : Tensor | Enumerable) #

[View source]
def ldexp(a : Number, b : Number) #

[View source]
def ldexp!(a : Tensor, b : Number) #

[View source]
def left_shift(a : Tensor | Enumerable, b : Tensor | Enumerable) #

[View source]
def left_shift(a : Tensor | Enumerable, b : Number) #

[View source]
def left_shift(a : Number, b : Tensor | Enumerable) #

[View source]
def left_shift(a : Number, b : Number) #

[View source]
def left_shift!(a : Tensor, b : Tensor | Enumerable) #

[View source]
def left_shift!(a : Tensor, b : Number) #

[View source]
def less(a : Tensor | Enumerable, b : Tensor | Enumerable) #

[View source]
def less(a : Tensor | Enumerable, b : Number) #

[View source]
def less(a : Number, b : Tensor | Enumerable) #

[View source]
def less(a : Number, b : Number) #

[View source]
def less!(a : Tensor, b : Tensor | Enumerable) #

[View source]
def less!(a : Tensor, b : Number) #

[View source]
def less_equal(a : Tensor | Enumerable, b : Tensor | Enumerable) #

[View source]
def less_equal(a : Tensor | Enumerable, b : Number) #

[View source]
def less_equal(a : Number, b : Tensor | Enumerable) #

[View source]
def less_equal(a : Number, b : Number) #

[View source]
def less_equal!(a : Tensor, b : Tensor | Enumerable) #

[View source]
def less_equal!(a : Tensor, b : Number) #

[View source]
def lgamma(a : Tensor | Enumerable) #

[View source]
def lgamma(a : Number) #

[View source]
def lgamma(a : ClTensor(Float32)) #

[View source]
def lgamma!(a : Tensor) #

[View source]
def lgamma!(a : ClTensor(Float32)) #

[View source]
def log(a : Tensor | Enumerable) #

[View source]
def log(a : Number) #

[View source]
def log(a : ClTensor(Float32)) #

[View source]
def log!(a : Tensor) #

[View source]
def log!(a : ClTensor(Float32)) #

[View source]
def log10(a : Tensor | Enumerable) #

[View source]
def log10(a : Number) #

[View source]
def log10(a : ClTensor(Float32)) #

[View source]
def log10!(a : Tensor) #

[View source]
def log10!(a : ClTensor(Float32)) #

[View source]
def log1p(a : Tensor | Enumerable) #

[View source]
def log1p(a : Number) #

[View source]
def log1p(a : ClTensor(Float32)) #

[View source]
def log1p!(a : Tensor) #

[View source]
def log1p!(a : ClTensor(Float32)) #

[View source]
def log2(a : Tensor | Enumerable) #

[View source]
def log2(a : Number) #

[View source]
def log2(a : ClTensor(Float32)) #

[View source]
def log2!(a : Tensor) #

[View source]
def log2!(a : ClTensor(Float32)) #

[View source]
def logb(a : Tensor | Enumerable) #

[View source]
def logb(a : Number) #

[View source]
def logb(a : ClTensor(Float32)) #

[View source]
def logb!(a : Tensor) #

[View source]
def logb!(a : ClTensor(Float32)) #

[View source]
def max(a : Tensor, b : Tensor | Enumerable) #

[View source]
def max(a : Tensor | Enumerable, b : Tensor | Enumerable) #

[View source]
def max(a : Tensor | Enumerable, axis : Int, dims : Bool = false) #

Reduces a Tensor along an axis, finding the max of each view into the Tensor

Arguments

a : Tensor | Enumerable Argument to reduce axis : Int Axis of reduction dims : Bool Indicate if the axis of reduction should remain in the result

Examples

a = Tensor.new([2, 2]) { |i| i }
Num.max(a, 0) # => [2, 3]
Num.max(a, 1, dims: true)
# [[1],
#  [3]]

[View source]
def max(a : Tensor | Enumerable, b : Number) #

[View source]
def max(a : Number, b : Tensor | Enumerable) #

[View source]
def max(a : Number, b : Number) #

[View source]
def max(a : Tensor | Enumerable) #

Reduces a Tensor to a scalar by finding the maximum value

Arguments

a : Tensor | Enumerable Argument to reduce

Examples

a = [1, 2, 3]
Num.max(a) # => 3

[View source]
def max!(a : Tensor, b : Number) #

[View source]
def mean(a : Tensor | Enumerable, axis : Int, dims : Bool = false) #

Reduces a Tensor along an axis, finding the average of each view into the Tensor

Arguments

a : Tensor | Enumerable Argument to reduce axis : Int Axis of reduction dims : Bool Indicate if the axis of reduction should remain in the result

Examples

a = Tensor.new([2, 2]) { |i| i }
Num.mean(a, 0) # => [1, 2]
Num.mean(a, 1, dims: true)
# [[0],
#  [2]]

[View source]
def mean(a : Tensor | Enumerable) #

Reduces a Tensor to a scalar by finding the average

Arguments

a : Tensor | Enumerable Argument to reduce

Examples

a = [1, 2, 3]
Num.mean(a) # => 2.0

[View source]
def min(a : Tensor, b : Tensor | Enumerable) #

[View source]
def min(a : Tensor | Enumerable, b : Tensor | Enumerable) #

[View source]
def min(a : Tensor | Enumerable, axis : Int, dims : Bool = false) #

Reduces a Tensor along an axis, finding the min of each view into the Tensor

Arguments

a : Tensor | Enumerable Argument to reduce axis : Int Axis of reduction dims : Bool Indicate if the axis of reduction should remain in the result

Examples

a = Tensor.new([2, 2]) { |i| i }
Num.min(a, 0) # => [0, 1]
Num.min(a, 1, dims: true)
# [[0],
#  [2]]

[View source]
def min(a : Tensor | Enumerable, b : Number) #

[View source]
def min(a : Number, b : Tensor | Enumerable) #

[View source]
def min(a : Number, b : Number) #

[View source]
def min(a : Tensor | Enumerable) #

Reduces a Tensor to a scalar by finding the minimum value

Arguments

a : Tensor | Enumerable Argument to reduce

Examples

a = [1, 2, 3]
Num.min(a) # => 3

[View source]
def min!(a : Tensor, b : Number) #

[View source]
def modulo(a : Tensor | Enumerable, b : Tensor | Enumerable) #

[View source]
def modulo(a : Tensor | Enumerable, b : Number) #

[View source]
def modulo(a : Number, b : Tensor | Enumerable) #

[View source]
def modulo(a : Number, b : Number) #

[View source]
def modulo!(a : Tensor, b : Tensor | Enumerable) #

[View source]
def modulo!(a : Tensor, b : Number) #

[View source]
def multiply(a : Tensor | Enumerable, b : Tensor | Enumerable) #

[View source]
def multiply(a : Tensor | Enumerable, b : Number) #

[View source]
def multiply(a : Number, b : Tensor | Enumerable) #

[View source]
def multiply(a : Number, b : Number) #

[View source]
def multiply(a : ClTensor(Float32), b : ClTensor(Float32)) #

[View source]
def multiply!(a : Tensor, b : Tensor | Enumerable) #

[View source]
def multiply!(a : Tensor, b : Number) #

[View source]
def multiply!(a : ClTensor(Float32), b : ClTensor(Float32)) #

[View source]
def not_equal(a : Tensor | Enumerable, b : Tensor | Enumerable) #

[View source]
def not_equal(a : Tensor | Enumerable, b : Number) #

[View source]
def not_equal(a : Number, b : Tensor | Enumerable) #

[View source]
def not_equal(a : Number, b : Number) #

[View source]
def not_equal!(a : Tensor, b : Tensor | Enumerable) #

[View source]
def not_equal!(a : Tensor, b : Number) #

[View source]
def power(a : Tensor | Enumerable, b : Tensor | Enumerable) #

[View source]
def power(a : Tensor | Enumerable, b : Number) #

[View source]
def power(a : Number, b : Tensor | Enumerable) #

[View source]
def power(a : Number, b : Number) #

[View source]
def power!(a : Tensor, b : Tensor | Enumerable) #

[View source]
def power!(a : Tensor, b : Number) #

[View source]
def prod(a : Tensor | Enumerable, axis : Int, dims : Bool = false) #

Reduces a Tensor along an axis, multiplying each view into the Tensor

Arguments

a : Tensor | Enumerable Argument to reduce axis : Int Axis of reduction dims : Bool Indicate if the axis of reduction should remain in the result

Examples

a = Tensor.new([2, 2]) { |i| i }
Num.prod(a, 0) # => [0, 3]
Num.prod(a, 1, dims: true)
# [[0],
#  [6]]

[View source]
def prod(a : Tensor | Enumerable) #

Reduces a Tensor to a scalar by multiplying all of its elements

Arguments

a : Tensor | Enumerable Argument to reduce

Examples

a = [1, 2, 3]
Num.prod(a) # => 6

[View source]
def ptp(a : Tensor | Enumerable, axis : Int, dims : Bool = false) #

Finds the difference between the maximum and minimum elements of a Tensor along an axis

Arguments

a : Tensor Argument to reduce axis : Tensor Axis of reduction dims : Bool Keep axis of reduction in output

Examples

a = [[3, 4], [1, 2], [6, 2]]
Num.ptp(a, 1) # [1, 1, 4]

[View source]
def ptp(a : Tensor | Enumerable) #

Finds the difference between the maximum and minimum elements of a Tensor

Arguments

a : Tensor to find peak to peak value

Examples

a = [1, 2, 3]
Num.ptp(a) # => 2

[View source]
def repeat(a : Tensor | Enumerable, n : Int, axis : Int) #

Repeat elements of a Tensor along an axis

Arguments

  • a : Tensor | Enumerable Object to repeat
  • n : Int Number of times to repeat
  • axis : Int Axis along which to repeat

Examples

a = [[1, 2, 3], [4, 5, 6]]
Num.repeat(a, 2, 1)

# [[1, 1, 2, 2, 3, 3],
#  [4, 4, 5, 5, 6, 6]]

[View source]
def repeat(a : Tensor | Enumerable, n : Int) #

Repeat elements of a Tensor, treating the Tensor as flat

Arguments

  • a : Tensor | Enumerable Object to repeat
  • n : Int Number of times to repeat

Examples

a = [1, 2, 3]
Num.repeat(a, 2) # => [1, 1, 2, 2, 3, 3]

[View source]
def right_shift(a : Tensor | Enumerable, b : Tensor | Enumerable) #

[View source]
def right_shift(a : Tensor | Enumerable, b : Number) #

[View source]
def right_shift(a : Number, b : Tensor | Enumerable) #

[View source]
def right_shift(a : Number, b : Number) #

[View source]
def right_shift!(a : Tensor, b : Tensor | Enumerable) #

[View source]
def right_shift!(a : Tensor, b : Number) #

[View source]
def rint(a : ClTensor(Float32)) #

[View source]
def rint!(a : ClTensor(Float32)) #

[View source]
def round(a : ClTensor(Float32)) #

[View source]
def round!(a : ClTensor(Float32)) #

[View source]
def rsqrt(a : ClTensor(Float32)) #

[View source]
def rsqrt!(a : ClTensor(Float32)) #

[View source]
def sin(a : Tensor | Enumerable) #

[View source]
def sin(a : Number) #

[View source]
def sin(a : ClTensor(Float32)) #

[View source]
def sin!(a : Tensor) #

[View source]
def sin!(a : ClTensor(Float32)) #

[View source]
def sinh(a : Tensor | Enumerable) #

[View source]
def sinh(a : Number) #

[View source]
def sinh(a : ClTensor(Float32)) #

[View source]
def sinh!(a : Tensor) #

[View source]
def sinh!(a : ClTensor(Float32)) #

[View source]
def sinpi(a : ClTensor(Float32)) #

[View source]
def sinpi!(a : ClTensor(Float32)) #

[View source]
def sqrt(a : Tensor | Enumerable) #

[View source]
def sqrt(a : Number) #

[View source]
def sqrt(a : ClTensor(Float32)) #

[View source]
def sqrt!(a : Tensor) #

[View source]
def sqrt!(a : ClTensor(Float32)) #

[View source]
def std(a : Tensor | Enumerable, axis : Int, dims : Bool = false) #

Reduces a Tensor along an axis, finding the std of each view into the Tensor

Arguments

a : Tensor | Enumerable Argument to reduce axis : Int Axis of reduction dims : Bool Indicate if the axis of reduction should remain in the result

Examples

a = Tensor.new([2, 2]) { |i| i }
Num.std(a, 0) # => [1, 1]
Num.std(a, 1, dims: true)
# [[0.707107],
#  [0.707107]]

[View source]
def std(a : Tensor | Enumerable) #

Reduces a Tensor to a scalar by finding the standard deviation

Arguments

a : Tensor | Enumerable Argument to reduce

Examples

a = [1, 2, 3]
Num.std(a) # => 0.816496580927726

[View source]
def subtract(a : Tensor | Enumerable, b : Tensor | Enumerable) #

[View source]
def subtract(a : Tensor | Enumerable, b : Number) #

[View source]
def subtract(a : Number, b : Tensor | Enumerable) #

[View source]
def subtract(a : Number, b : Number) #

[View source]
def subtract(a : ClTensor(Float32), b : ClTensor(Float32)) #

[View source]
def subtract!(a : Tensor, b : Tensor | Enumerable) #

[View source]
def subtract!(a : Tensor, b : Number) #

[View source]
def subtract!(a : ClTensor(Float32), b : ClTensor(Float32)) #

[View source]
def sum(a : Tensor | Enumerable, axis : Int, dims : Bool = false) #

Reduces a Tensor along an axis, summing each view into the Tensor

Arguments

a : Tensor | Enumerable Argument to sum axis : Int Axis of summation dims : Bool Indicate if the axis of reduction should remain in the result

Examples

a = Tensor.new([2, 2]) { |i| i }
Num.sum(a, 0) # => [2, 4]
Num.sum(a, 1, dims: true)
# [[1],
#  [5]]

[View source]
def sum(a : Tensor | Enumerable) #

Reduces a Tensor to a scalar by summing all of its elements

Arguments

a : Tensor | Enumerable Argument to sum

Examples

a = [1, 2, 3]
Num.sum(a) # => 6

[View source]
def tan(a : Tensor | Enumerable) #

[View source]
def tan(a : Number) #

[View source]
def tan(a : ClTensor(Float32)) #

[View source]
def tan!(a : Tensor) #

[View source]
def tan!(a : ClTensor(Float32)) #

[View source]
def tanh(a : Tensor | Enumerable) #

[View source]
def tanh(a : Number) #

[View source]
def tanh(a : ClTensor(Float32)) #

[View source]
def tanh!(a : Tensor) #

[View source]
def tanh!(a : ClTensor(Float32)) #

[View source]
def tanpi(a : ClTensor(Float32)) #

[View source]
def tanpi!(a : ClTensor(Float32)) #

[View source]
def tgamma(a : ClTensor(Float32)) #

[View source]
def tgamma!(a : ClTensor(Float32)) #

[View source]
def tile(a : Tensor | Enumerable, n : Int) #

Tile elements of a Tensor

Arguments

  • a : Tensor | Enumerable Argument to tile
  • n : Int Number of times to tile

Examples

a = [[1, 2, 3], [4, 5, 6]]
puts Num.tile(a, 2)

# [[1, 2, 3, 1, 2, 3],
#  [4, 5, 6, 4, 5, 6]]

[View source]
def tile(a : Tensor | Enumerable, n : Array(Int)) #

Tile elements of a Tensor

Arguments

  • a : Tensor | Enumerable Argument to tile
  • n : Array(Int) Number of times to tile in each dimension

Examples

a = [[1, 2, 3], [4, 5, 6]]
puts Num.tile(a, [2, 2])

# [[1, 2, 3, 1, 2, 3],
#  [4, 5, 6, 4, 5, 6],
#  [1, 2, 3, 1, 2, 3],
#  [4, 5, 6, 4, 5, 6]]

[View source]
def trunc(a : ClTensor(Float32)) #

[View source]
def trunc!(a : ClTensor(Float32)) #

[View source]
def v_concat(t_array : Array(Tensor | Enumerable)) #

Stack an array of Tensors in sequence row-wise. While this method can take Tensors with any number of dimensions, it makes the most sense with rank <= 3

Arguments t_array : Array(Tensor | Enumerable) Tensors to concatenate

Examples

a = [1, 2, 3].to_tensor
Num.v_concat([a, a])

# [[1, 2, 3],
#  [1, 2, 3]]

[View source]
def v_concat(*t_args : Tensor | Enumerable) #

Stack an array of Tensors in sequence row-wise. While this method can take Tensors with any number of dimensions, it makes the most sense with rank <= 3

Arguments t_array : Array(Tensor | Enumerable) Tensors to concatenate

Examples

a = [1, 2, 3].to_tensor
Num.v_concat([a, a])

# [[1, 2, 3],
#  [1, 2, 3]]

[View source]
def value_counts(a : Tensor(U)) forall U #

[View source]

Macro Detail

macro builtin(fn) #

[View source]
macro op(fn) #

[View source]