sig
  val add :
    Owl_algodiff_generic.Make.t ->
    Owl_algodiff_generic.Make.t -> Owl_algodiff_generic.Make.t
  val sub :
    Owl_algodiff_generic.Make.t ->
    Owl_algodiff_generic.Make.t -> Owl_algodiff_generic.Make.t
  val mul :
    Owl_algodiff_generic.Make.t ->
    Owl_algodiff_generic.Make.t -> Owl_algodiff_generic.Make.t
  val div :
    Owl_algodiff_generic.Make.t ->
    Owl_algodiff_generic.Make.t -> Owl_algodiff_generic.Make.t
  val dot :
    Owl_algodiff_generic.Make.t ->
    Owl_algodiff_generic.Make.t -> Owl_algodiff_generic.Make.t
  val pow :
    Owl_algodiff_generic.Make.t ->
    Owl_algodiff_generic.Make.t -> Owl_algodiff_generic.Make.t
  val atan2 :
    Owl_algodiff_generic.Make.t ->
    Owl_algodiff_generic.Make.t -> Owl_algodiff_generic.Make.t
  val min2 :
    Owl_algodiff_generic.Make.t ->
    Owl_algodiff_generic.Make.t -> Owl_algodiff_generic.Make.t
  val max2 :
    Owl_algodiff_generic.Make.t ->
    Owl_algodiff_generic.Make.t -> Owl_algodiff_generic.Make.t
  val cross_entropy :
    Owl_algodiff_generic.Make.t ->
    Owl_algodiff_generic.Make.t -> Owl_algodiff_generic.Make.t
  val neg : Owl_algodiff_generic.Make.t -> Owl_algodiff_generic.Make.t
  val abs : Owl_algodiff_generic.Make.t -> Owl_algodiff_generic.Make.t
  val signum : Owl_algodiff_generic.Make.t -> Owl_algodiff_generic.Make.t
  val floor : Owl_algodiff_generic.Make.t -> Owl_algodiff_generic.Make.t
  val ceil : Owl_algodiff_generic.Make.t -> Owl_algodiff_generic.Make.t
  val round : Owl_algodiff_generic.Make.t -> Owl_algodiff_generic.Make.t
  val sqr : Owl_algodiff_generic.Make.t -> Owl_algodiff_generic.Make.t
  val sqrt : Owl_algodiff_generic.Make.t -> Owl_algodiff_generic.Make.t
  val log : Owl_algodiff_generic.Make.t -> Owl_algodiff_generic.Make.t
  val log2 : Owl_algodiff_generic.Make.t -> Owl_algodiff_generic.Make.t
  val log10 : Owl_algodiff_generic.Make.t -> Owl_algodiff_generic.Make.t
  val exp : Owl_algodiff_generic.Make.t -> Owl_algodiff_generic.Make.t
  val sin : Owl_algodiff_generic.Make.t -> Owl_algodiff_generic.Make.t
  val cos : Owl_algodiff_generic.Make.t -> Owl_algodiff_generic.Make.t
  val tan : Owl_algodiff_generic.Make.t -> Owl_algodiff_generic.Make.t
  val sinh : Owl_algodiff_generic.Make.t -> Owl_algodiff_generic.Make.t
  val cosh : Owl_algodiff_generic.Make.t -> Owl_algodiff_generic.Make.t
  val tanh : Owl_algodiff_generic.Make.t -> Owl_algodiff_generic.Make.t
  val asin : Owl_algodiff_generic.Make.t -> Owl_algodiff_generic.Make.t
  val acos : Owl_algodiff_generic.Make.t -> Owl_algodiff_generic.Make.t
  val atan : Owl_algodiff_generic.Make.t -> Owl_algodiff_generic.Make.t
  val asinh : Owl_algodiff_generic.Make.t -> Owl_algodiff_generic.Make.t
  val acosh : Owl_algodiff_generic.Make.t -> Owl_algodiff_generic.Make.t
  val atanh : Owl_algodiff_generic.Make.t -> Owl_algodiff_generic.Make.t
  val sum : Owl_algodiff_generic.Make.t -> Owl_algodiff_generic.Make.t
  val average : Owl_algodiff_generic.Make.t -> Owl_algodiff_generic.Make.t
  val transpose : Owl_algodiff_generic.Make.t -> Owl_algodiff_generic.Make.t
  val l1norm : Owl_algodiff_generic.Make.t -> Owl_algodiff_generic.Make.t
  val l2norm : Owl_algodiff_generic.Make.t -> Owl_algodiff_generic.Make.t
  val l2norm_sqr : Owl_algodiff_generic.Make.t -> Owl_algodiff_generic.Make.t
  val sigmoid : Owl_algodiff_generic.Make.t -> Owl_algodiff_generic.Make.t
  val relu : Owl_algodiff_generic.Make.t -> Owl_algodiff_generic.Make.t
  val softplus : Owl_algodiff_generic.Make.t -> Owl_algodiff_generic.Make.t
  val softsign : Owl_algodiff_generic.Make.t -> Owl_algodiff_generic.Make.t
  val softmax : Owl_algodiff_generic.Make.t -> Owl_algodiff_generic.Make.t
  val ( + ) :
    Owl_algodiff_generic.Make.t ->
    Owl_algodiff_generic.Make.t -> Owl_algodiff_generic.Make.t
  val ( - ) :
    Owl_algodiff_generic.Make.t ->
    Owl_algodiff_generic.Make.t -> Owl_algodiff_generic.Make.t
  val ( * ) :
    Owl_algodiff_generic.Make.t ->
    Owl_algodiff_generic.Make.t -> Owl_algodiff_generic.Make.t
  val ( / ) :
    Owl_algodiff_generic.Make.t ->
    Owl_algodiff_generic.Make.t -> Owl_algodiff_generic.Make.t
  val ( *@ ) :
    Owl_algodiff_generic.Make.t ->
    Owl_algodiff_generic.Make.t -> Owl_algodiff_generic.Make.t
  val ( ** ) :
    Owl_algodiff_generic.Make.t ->
    Owl_algodiff_generic.Make.t -> Owl_algodiff_generic.Make.t
  val conv2d :
    ?padding:Owl_algodiff_generic.Make.padding ->
    Owl_algodiff_generic.Make.t ->
    Owl_algodiff_generic.Make.t -> int array -> Owl_algodiff_generic.Make.t
  val conv3d :
    ?padding:Owl_algodiff_generic.Make.padding ->
    Owl_algodiff_generic.Make.t ->
    Owl_algodiff_generic.Make.t -> int array -> Owl_algodiff_generic.Make.t
  val max_pool2d :
    Owl_algodiff_generic.Make.padding ->
    Owl_algodiff_generic.Make.t ->
    int array -> int array -> Owl_algodiff_generic.Make.t
  val avg_pool2d :
    Owl_algodiff_generic.Make.padding ->
    Owl_algodiff_generic.Make.t ->
    int array -> int array -> Owl_algodiff_generic.Make.t
  val reshape :
    Owl_algodiff_generic.Make.t -> int array -> Owl_algodiff_generic.Make.t
  val flatten : Owl_algodiff_generic.Make.t -> Owl_algodiff_generic.Make.t
  val mat_to_arr : Owl_algodiff_generic.Make.t -> Owl_algodiff_generic.Make.t
  val arr_to_mat : Owl_algodiff_generic.Make.t -> Owl_algodiff_generic.Make.t
  val dropout :
    ?rate:float ->
    ?seed:int -> Owl_algodiff_generic.Make.t -> Owl_algodiff_generic.Make.t
end