sig
  type arr
  type elt = float
  val empty : int array -> Owl_algodiff_generic.NdarraySig.arr
  val zeros : int array -> Owl_algodiff_generic.NdarraySig.arr
  val uniform :
    ?scale:Owl_algodiff_generic.NdarraySig.elt ->
    int array -> Owl_algodiff_generic.NdarraySig.arr
  val gaussian :
    ?sigma:Owl_algodiff_generic.NdarraySig.elt ->
    int array -> Owl_algodiff_generic.NdarraySig.arr
  val bernoulli :
    ?p:float -> ?seed:int -> int array -> Owl_algodiff_generic.NdarraySig.arr
  val shape : Owl_algodiff_generic.NdarraySig.arr -> int array
  val numel : Owl_algodiff_generic.NdarraySig.arr -> int
  val reset : Owl_algodiff_generic.NdarraySig.arr -> unit
  val reshape :
    Owl_algodiff_generic.NdarraySig.arr ->
    int array -> Owl_algodiff_generic.NdarraySig.arr
  val sum_slices :
    ?axis:int ->
    Owl_algodiff_generic.NdarraySig.arr ->
    Owl_algodiff_generic.NdarraySig.arr
  val print : Owl_algodiff_generic.NdarraySig.arr -> unit
  val abs :
    Owl_algodiff_generic.NdarraySig.arr ->
    Owl_algodiff_generic.NdarraySig.arr
  val neg :
    Owl_algodiff_generic.NdarraySig.arr ->
    Owl_algodiff_generic.NdarraySig.arr
  val floor :
    Owl_algodiff_generic.NdarraySig.arr ->
    Owl_algodiff_generic.NdarraySig.arr
  val ceil :
    Owl_algodiff_generic.NdarraySig.arr ->
    Owl_algodiff_generic.NdarraySig.arr
  val round :
    Owl_algodiff_generic.NdarraySig.arr ->
    Owl_algodiff_generic.NdarraySig.arr
  val sqr :
    Owl_algodiff_generic.NdarraySig.arr ->
    Owl_algodiff_generic.NdarraySig.arr
  val sqrt :
    Owl_algodiff_generic.NdarraySig.arr ->
    Owl_algodiff_generic.NdarraySig.arr
  val log :
    Owl_algodiff_generic.NdarraySig.arr ->
    Owl_algodiff_generic.NdarraySig.arr
  val log2 :
    Owl_algodiff_generic.NdarraySig.arr ->
    Owl_algodiff_generic.NdarraySig.arr
  val log10 :
    Owl_algodiff_generic.NdarraySig.arr ->
    Owl_algodiff_generic.NdarraySig.arr
  val exp :
    Owl_algodiff_generic.NdarraySig.arr ->
    Owl_algodiff_generic.NdarraySig.arr
  val sin :
    Owl_algodiff_generic.NdarraySig.arr ->
    Owl_algodiff_generic.NdarraySig.arr
  val cos :
    Owl_algodiff_generic.NdarraySig.arr ->
    Owl_algodiff_generic.NdarraySig.arr
  val tan :
    Owl_algodiff_generic.NdarraySig.arr ->
    Owl_algodiff_generic.NdarraySig.arr
  val sinh :
    Owl_algodiff_generic.NdarraySig.arr ->
    Owl_algodiff_generic.NdarraySig.arr
  val cosh :
    Owl_algodiff_generic.NdarraySig.arr ->
    Owl_algodiff_generic.NdarraySig.arr
  val tanh :
    Owl_algodiff_generic.NdarraySig.arr ->
    Owl_algodiff_generic.NdarraySig.arr
  val asin :
    Owl_algodiff_generic.NdarraySig.arr ->
    Owl_algodiff_generic.NdarraySig.arr
  val acos :
    Owl_algodiff_generic.NdarraySig.arr ->
    Owl_algodiff_generic.NdarraySig.arr
  val atan :
    Owl_algodiff_generic.NdarraySig.arr ->
    Owl_algodiff_generic.NdarraySig.arr
  val asinh :
    Owl_algodiff_generic.NdarraySig.arr ->
    Owl_algodiff_generic.NdarraySig.arr
  val acosh :
    Owl_algodiff_generic.NdarraySig.arr ->
    Owl_algodiff_generic.NdarraySig.arr
  val atanh :
    Owl_algodiff_generic.NdarraySig.arr ->
    Owl_algodiff_generic.NdarraySig.arr
  val sum :
    Owl_algodiff_generic.NdarraySig.arr ->
    Owl_algodiff_generic.NdarraySig.elt
  val signum :
    Owl_algodiff_generic.NdarraySig.arr ->
    Owl_algodiff_generic.NdarraySig.arr
  val l1norm :
    Owl_algodiff_generic.NdarraySig.arr ->
    Owl_algodiff_generic.NdarraySig.elt
  val l2norm :
    Owl_algodiff_generic.NdarraySig.arr ->
    Owl_algodiff_generic.NdarraySig.elt
  val l2norm_sqr :
    Owl_algodiff_generic.NdarraySig.arr ->
    Owl_algodiff_generic.NdarraySig.elt
  val sigmoid :
    Owl_algodiff_generic.NdarraySig.arr ->
    Owl_algodiff_generic.NdarraySig.arr
  val relu :
    Owl_algodiff_generic.NdarraySig.arr ->
    Owl_algodiff_generic.NdarraySig.arr
  val clip_by_l2norm :
    Owl_algodiff_generic.NdarraySig.elt ->
    Owl_algodiff_generic.NdarraySig.arr ->
    Owl_algodiff_generic.NdarraySig.arr
  val pow :
    Owl_algodiff_generic.NdarraySig.arr ->
    Owl_algodiff_generic.NdarraySig.arr ->
    Owl_algodiff_generic.NdarraySig.arr
  val scalar_pow :
    Owl_algodiff_generic.NdarraySig.elt ->
    Owl_algodiff_generic.NdarraySig.arr ->
    Owl_algodiff_generic.NdarraySig.arr
  val pow_scalar :
    Owl_algodiff_generic.NdarraySig.arr ->
    Owl_algodiff_generic.NdarraySig.elt ->
    Owl_algodiff_generic.NdarraySig.arr
  val atan2 :
    Owl_algodiff_generic.NdarraySig.arr ->
    Owl_algodiff_generic.NdarraySig.arr ->
    Owl_algodiff_generic.NdarraySig.arr
  val scalar_atan2 :
    Owl_algodiff_generic.NdarraySig.elt ->
    Owl_algodiff_generic.NdarraySig.arr ->
    Owl_algodiff_generic.NdarraySig.arr
  val atan2_scalar :
    Owl_algodiff_generic.NdarraySig.arr ->
    Owl_algodiff_generic.NdarraySig.elt ->
    Owl_algodiff_generic.NdarraySig.arr
  val add :
    Owl_algodiff_generic.NdarraySig.arr ->
    Owl_algodiff_generic.NdarraySig.arr ->
    Owl_algodiff_generic.NdarraySig.arr
  val sub :
    Owl_algodiff_generic.NdarraySig.arr ->
    Owl_algodiff_generic.NdarraySig.arr ->
    Owl_algodiff_generic.NdarraySig.arr
  val mul :
    Owl_algodiff_generic.NdarraySig.arr ->
    Owl_algodiff_generic.NdarraySig.arr ->
    Owl_algodiff_generic.NdarraySig.arr
  val div :
    Owl_algodiff_generic.NdarraySig.arr ->
    Owl_algodiff_generic.NdarraySig.arr ->
    Owl_algodiff_generic.NdarraySig.arr
  val add_scalar :
    Owl_algodiff_generic.NdarraySig.arr ->
    Owl_algodiff_generic.NdarraySig.elt ->
    Owl_algodiff_generic.NdarraySig.arr
  val sub_scalar :
    Owl_algodiff_generic.NdarraySig.arr ->
    Owl_algodiff_generic.NdarraySig.elt ->
    Owl_algodiff_generic.NdarraySig.arr
  val mul_scalar :
    Owl_algodiff_generic.NdarraySig.arr ->
    Owl_algodiff_generic.NdarraySig.elt ->
    Owl_algodiff_generic.NdarraySig.arr
  val div_scalar :
    Owl_algodiff_generic.NdarraySig.arr ->
    Owl_algodiff_generic.NdarraySig.elt ->
    Owl_algodiff_generic.NdarraySig.arr
  val scalar_add :
    Owl_algodiff_generic.NdarraySig.elt ->
    Owl_algodiff_generic.NdarraySig.arr ->
    Owl_algodiff_generic.NdarraySig.arr
  val scalar_sub :
    Owl_algodiff_generic.NdarraySig.elt ->
    Owl_algodiff_generic.NdarraySig.arr ->
    Owl_algodiff_generic.NdarraySig.arr
  val scalar_mul :
    Owl_algodiff_generic.NdarraySig.elt ->
    Owl_algodiff_generic.NdarraySig.arr ->
    Owl_algodiff_generic.NdarraySig.arr
  val scalar_div :
    Owl_algodiff_generic.NdarraySig.elt ->
    Owl_algodiff_generic.NdarraySig.arr ->
    Owl_algodiff_generic.NdarraySig.arr
  type padding
  val conv2d :
    ?padding:Owl_algodiff_generic.NdarraySig.padding ->
    Owl_algodiff_generic.NdarraySig.arr ->
    Owl_algodiff_generic.NdarraySig.arr ->
    int array -> Owl_algodiff_generic.NdarraySig.arr
  val conv2d_backward_input :
    Owl_algodiff_generic.NdarraySig.arr ->
    Owl_algodiff_generic.NdarraySig.arr ->
    int array ->
    Owl_algodiff_generic.NdarraySig.arr ->
    Owl_algodiff_generic.NdarraySig.arr
  val conv2d_backward_kernel :
    Owl_algodiff_generic.NdarraySig.arr ->
    Owl_algodiff_generic.NdarraySig.arr ->
    int array ->
    Owl_algodiff_generic.NdarraySig.arr ->
    Owl_algodiff_generic.NdarraySig.arr
  val conv3d :
    ?padding:Owl_algodiff_generic.NdarraySig.padding ->
    Owl_algodiff_generic.NdarraySig.arr ->
    Owl_algodiff_generic.NdarraySig.arr ->
    int array -> Owl_algodiff_generic.NdarraySig.arr
  val conv3d_backward_input :
    Owl_algodiff_generic.NdarraySig.arr ->
    Owl_algodiff_generic.NdarraySig.arr ->
    int array ->
    Owl_algodiff_generic.NdarraySig.arr ->
    Owl_algodiff_generic.NdarraySig.arr
  val conv3d_backward_kernel :
    Owl_algodiff_generic.NdarraySig.arr ->
    Owl_algodiff_generic.NdarraySig.arr ->
    int array ->
    Owl_algodiff_generic.NdarraySig.arr ->
    Owl_algodiff_generic.NdarraySig.arr
  val max_pool2d :
    ?padding:Owl_algodiff_generic.NdarraySig.padding ->
    Owl_algodiff_generic.NdarraySig.arr ->
    int array -> int array -> Owl_algodiff_generic.NdarraySig.arr
  val max_pool3d :
    ?padding:Owl_algodiff_generic.NdarraySig.padding ->
    Owl_algodiff_generic.NdarraySig.arr ->
    int array -> int array -> Owl_algodiff_generic.NdarraySig.arr
  val avg_pool2d :
    ?padding:Owl_algodiff_generic.NdarraySig.padding ->
    Owl_algodiff_generic.NdarraySig.arr ->
    int array -> int array -> Owl_algodiff_generic.NdarraySig.arr
  val avg_pool3d :
    ?padding:Owl_algodiff_generic.NdarraySig.padding ->
    Owl_algodiff_generic.NdarraySig.arr ->
    int array -> int array -> Owl_algodiff_generic.NdarraySig.arr
  val max_pool2d_backward :
    Owl_algodiff_generic.NdarraySig.padding ->
    Owl_algodiff_generic.NdarraySig.arr ->
    int array ->
    int array ->
    Owl_algodiff_generic.NdarraySig.arr ->
    Owl_algodiff_generic.NdarraySig.arr
  val avg_pool2d_backward :
    Owl_algodiff_generic.NdarraySig.padding ->
    Owl_algodiff_generic.NdarraySig.arr ->
    int array ->
    int array ->
    Owl_algodiff_generic.NdarraySig.arr ->
    Owl_algodiff_generic.NdarraySig.arr
end