# Algodiff.Generic Functor¶

This document is auto-generated for Owl’s APIs. #134 entries have been extracted.

Github: {Signature} {Implementation}

## Type definition¶

type t =
| F of A.elt
| Arr of A.arr
(* primal, tangent, tag *)
| DF of t * t * int
(* primal, adjoint, op, fanout, tag, tracker *)
| DR of t * t ref * op * int ref * int * int ref

and adjoint = t -> t ref -> (t * t) list -> (t * t) list

and register = t list -> t list

and label = string * t list

and op = adjoint * register * label


Abstract number type

## Supported Maths functions¶

val ( + ) : t -> t -> t


Refer to Dense.Ndarray.Generic

val ( - ) : t -> t -> t


Refer to Dense.Ndarray.Generic

val ( * ) : t -> t -> t


Refer to Dense.Ndarray.Generic

val ( / ) : t -> t -> t


Refer to Dense.Ndarray.Generic

val ( *@ ) : t -> t -> t


Refer to Dense.Ndarray.Generic

val ( ** ) : t -> t -> t


Refer to Dense.Ndarray.Generic

val add : t -> t -> t


Refer to Dense.Ndarray.Generic

val sub : t -> t -> t


Refer to Dense.Ndarray.Generic

val mul : t -> t -> t


Refer to Dense.Ndarray.Generic

val div : t -> t -> t


Refer to Dense.Ndarray.Generic

val dot : t -> t -> t


Refer to Dense.Ndarray.Generic

val pow : t -> t -> t


Refer to Dense.Ndarray.Generic

val atan2 : t -> t -> t


Refer to Dense.Ndarray.Generic

val min2 : t -> t -> t


Refer to Dense.Ndarray.Generic

val max2 : t -> t -> t


Refer to Dense.Ndarray.Generic

val cross_entropy : t -> t -> t


Refer to Dense.Ndarray.Generic

val inv : t -> t


Refer to Dense.Ndarray.Generic

val neg : t -> t


Refer to Dense.Ndarray.Generic

val abs : t -> t


Refer to Dense.Ndarray.Generic

val signum : t -> t


Refer to Dense.Ndarray.Generic

val floor : t -> t


Refer to Dense.Ndarray.Generic

val ceil : t -> t


Refer to Dense.Ndarray.Generic

val round : t -> t


Refer to Dense.Ndarray.Generic

val sqr : t -> t


Refer to Dense.Ndarray.Generic

val sqrt : t -> t


Refer to Dense.Ndarray.Generic

val log : t -> t


Refer to Dense.Ndarray.Generic

val log2 : t -> t


Refer to Dense.Ndarray.Generic

val log10 : t -> t


Refer to Dense.Ndarray.Generic

val exp : t -> t


Refer to Dense.Ndarray.Generic

val sin : t -> t


Refer to Dense.Ndarray.Generic

val cos : t -> t


Refer to Dense.Ndarray.Generic

val tan : t -> t


Refer to Dense.Ndarray.Generic

val sinh : t -> t


Refer to Dense.Ndarray.Generic

val cosh : t -> t


Refer to Dense.Ndarray.Generic

val tanh : t -> t


Refer to Dense.Ndarray.Generic

val asin : t -> t


Refer to Dense.Ndarray.Generic

val acos : t -> t


Refer to Dense.Ndarray.Generic

val atan : t -> t


Refer to Dense.Ndarray.Generic

val asinh : t -> t


Refer to Dense.Ndarray.Generic

val acosh : t -> t


Refer to Dense.Ndarray.Generic

val atanh : t -> t


Refer to Dense.Ndarray.Generic

val sum' : t -> t


Refer to Dense.Ndarray.Generic

val sum : ?axis:int -> t -> t


Refer to Dense.Ndarray.Generic

val sum_reduce : ?axis:int array -> t -> t


Refer to Dense.Ndarray.Generic

val mean : t -> t


Refer to Dense.Ndarray.Generic

val transpose : t -> t


Refer to Dense.Ndarray.Generic

val l1norm' : t -> t


Refer to Dense.Ndarray.Generic

val l2norm' : t -> t


Refer to Dense.Ndarray.Generic

val l2norm_sqr' : t -> t


Refer to Dense.Ndarray.Generic

val sigmoid : t -> t


Refer to Dense.Ndarray.Generic

val relu : t -> t


Refer to Dense.Ndarray.Generic

val softplus : t -> t


Refer to Dense.Ndarray.Generic

val softsign : t -> t


Refer to Dense.Ndarray.Generic

val softmax : ?axis:int -> t -> t


Refer to Dense.Ndarray.Generic

val reshape : t -> int array -> t


Refer to Dense.Ndarray.Generic

val flatten : t -> t


Refer to Dense.Ndarray.Generic

val concat : int -> t -> t -> t


Refer to Dense.Ndarray.Generic

val get_slice : int list list -> t -> t


Refer to Dense.Ndarray.Generic

val set_slice : int list list -> t -> t -> t


Refer to Dense.Ndarray.Generic

val diag : ?k:int -> t -> t


Refer to Dense.Ndarray.Generic

val diagm : ?k:int -> t -> t


Refer to Dense.Ndarray.Generic

val trace : t -> t


Refer to Dense.Ndarray.Generic

val triu : ?k:int -> t -> t


Refer to Dense.Ndarray.Generic

val inv : t -> t


Refer to Dense.Ndarray.Generic

val chol : ?upper:bool -> t -> t


Refer to Dense.Ndarray.Generic

val qr : t -> t * t


Refer to Dense.Ndarray.Generic

val lq : t -> t * t


Refer to Dense.Ndarray.Generic

val svd : ?thin:bool -> t -> t * t * t


Refer to Dense.Ndarray.Generic

val lyapunov : t -> t -> t


Refer to Dense.Ndarray.Generic

val discrete_lyapunov : ?solver:[ default | bilinear | direct ] -> t -> t -> t


Refer to Dense.Ndarray.Generic

val dropout : ?rate:float -> t -> t


Refer to Dense.Ndarray.Generic

val conv1d : ?padding:padding -> t -> t -> int array -> t


Refer to Dense.Ndarray.Generic

val conv2d : ?padding:padding -> t -> t -> int array -> t


Refer to Dense.Ndarray.Generic

val conv3d : ?padding:padding -> t -> t -> int array -> t


Refer to Dense.Ndarray.Generic

val dilated_conv1d : ?padding:padding -> t -> t -> int array -> int array -> t


Refer to Dense.Ndarray.Generic

val dilated_conv2d : ?padding:padding -> t -> t -> int array -> int array -> t


Refer to Dense.Ndarray.Generic

val dilated_conv3d : ?padding:padding -> t -> t -> int array -> int array -> t


Refer to Dense.Ndarray.Generic

val transpose_conv1d : ?padding:padding -> t -> t -> int array -> t


Refer to Dense.Ndarray.Generic

val transpose_conv2d : ?padding:padding -> t -> t -> int array -> t


Refer to Dense.Ndarray.Generic

val transpose_conv3d : ?padding:padding -> t -> t -> int array -> t


Refer to Dense.Ndarray.Generic

val max_pool1d : padding -> t -> int array -> int array -> t


Refer to Dense.Ndarray.Generic

val max_pool2d : padding -> t -> int array -> int array -> t


Refer to Dense.Ndarray.Generic

val max_pool3d : padding -> t -> int array -> int array -> t


Refer to Dense.Ndarray.Generic

val avg_pool1d : padding -> t -> int array -> int array -> t


Refer to Dense.Ndarray.Generic

val avg_pool2d : padding -> t -> int array -> int array -> t


Refer to Dense.Ndarray.Generic

val avg_pool3d : padding -> t -> int array -> int array -> t


Refer to Dense.Ndarray.Generic

val upsampling2d : t -> int array -> t


Refer to Dense.Ndarray.Generic

## Core functions¶

val diff : (t -> t) -> t -> t


similar to diff, but return (f x, diff f x).

source code

val diff' : (t -> t) -> t -> t * t


gradient of f : (vector -> scalar) at x, reverse ad.

source code

val grad : (t -> t) -> t -> t


similar to grad, but return (f x, grad f x).

source code

val grad' : (t -> t) -> t -> t * t

jacobian of f : (vector -> vector) at x, both x and y are row
vectors.

source code

val jacobian : (t -> t) -> t -> t


similar to jacobian, but return (f x, jacobian f x)

source code

val jacobian' : (t -> t) -> t -> t * t

jacobian vector product of f : (vector -> vector) at x along v, forward
ad. Namely, it calcultes (jacobian x) v

source code

val jacobianv : (t -> t) -> t -> t -> t


similar to jacobianv', but return (f x, jacobianv f x v)

source code

val jacobianv' : (t -> t) -> t -> t -> t * t

transposed jacobian vector product of f : (vector -> vector) at x along
v, backward ad. Namely, it calculates transpose ((jacobianv f x v)).

source code

val jacobianTv : (t -> t) -> t -> t -> t


similar to jacobianTv, but return (f x, transpose (jacobianv f x v))

source code

val jacobianTv' : (t -> t) -> t -> t -> t * t


hessian of f : (scalar -> scalar) at x.

source code

val hessian : (t -> t) -> t -> t


simiarl to hessian, but return (f x, hessian f x)

source code

val hessian' : (t -> t) -> t -> t * t

hessian vector product of f : (scalar -> scalar) at x along v. Namely,
it calculates (hessian x) v.

source code

val hessianv : (t -> t) -> t -> t -> t


similar to hessianv, but return (f x, hessianv f x v).

source code

val hessianv' : (t -> t) -> t -> t -> t * t


laplacian of f : (scalar -> scalar) at x.

source code

val laplacian : (t -> t) -> t -> t


simiar to laplacian, but return (f x, laplacian f x).

source code

val laplacian' : (t -> t) -> t -> t * t


return (grad f x, hessian f x), f : (scalar -> scalar)

source code

val gradhessian : (t -> t) -> t -> t * t


return (f x, grad f x, hessian f x)

source code

val gradhessian' : (t -> t) -> t -> t * t * t


return (grad f x v, hessian f x v)

source code

val gradhessianv : (t -> t) -> t -> t -> t * t


return (f x, grad f x v, hessian f x v)

source code

## Low-level functions¶

val pack_elt : A.elt -> t


convert from t type to elt type.

val unpack_elt : t -> A.elt


convert from float type to t type.

val pack_flt : float -> t


convert from t type to float type.

val unpack_flt : t -> float


convert from arr type to t type.

val pack_arr : A.arr -> t


convert from t type to arr type.

val unpack_arr : t -> A.arr


TODO

val tag : unit -> int


TODO

source code

val primal : t -> t


TODO

val primal' : t -> t


TODO

val adjval : t -> t


TODO

val adjref : t -> t ref


TODO

val tangent : t -> t


TODO

val make_forward : t -> t -> int -> t


TODO

source code

val make_reverse : t -> int -> t


TODO

source code

val reverse_prop : t -> t -> unit


TODO

val type_info : t -> string


TODO

val shape : t -> int array


TODO

val copy_primal' : t -> t


A shortcut function for F A.(float_to_elt x).

val _f : float -> t


other functions, without tracking gradient

val clip_by_value : amin:A.elt -> amax:A.elt -> t -> t


other functions, without tracking gradient

## Helper functions¶

val to_trace : t list -> string

to_dot [t0; t1; ...] outputs the trace of computation graph in the dot file
format which you can use other tools further visualisation, such as Graphviz.
val to_dot : t list -> string


pp_num t pretty prints the abstract number used in Algodiff`.