Make.Enginemodule Graph : sig ... endval eval_arr : Graph.Optimiser.Operator.Symbol.Shape.Type.arr array -> unitval eval_elt : Graph.Optimiser.Operator.Symbol.Shape.Type.elt array -> unitval eval_graph : Graph.graph -> unitmodule Optimiser = Graph.Optimisertype graph = E.Graph.graphval shape_or_value : Optimiser.Operator.Symbol.Shape.Type.t -> stringval graph_to_dot : graph -> stringval graph_to_trace : graph -> stringval collect_rvs : 
  Optimiser.Operator.Symbol.Shape.Type.attr Owl_graph.node array ->
  Optimiser.Operator.Symbol.Shape.Type.attr Owl_graph.node arrayval invalidate_rvs : graph -> unitval make_graph : 
  input:Optimiser.Operator.Symbol.Shape.Type.attr Owl_graph.node array ->
  output:Optimiser.Operator.Symbol.Shape.Type.attr Owl_graph.node array ->
  string ->
  graphval get_inputs : 
  graph ->
  Optimiser.Operator.Symbol.Shape.Type.attr Owl_graph.node arrayval get_outputs : 
  graph ->
  Optimiser.Operator.Symbol.Shape.Type.attr Owl_graph.node arrayval get_node_arr_val : 
  Optimiser.Operator.Symbol.Shape.Type.attr Owl_graph.node ->
  Optimiser.Operator.Symbol.Shape.Type.Device.A.arrval get_node_elt_val : 
  Optimiser.Operator.Symbol.Shape.Type.attr Owl_graph.node ->
  Optimiser.Operator.Symbol.Shape.Type.Device.A.eltval set_node_arr_val : 
  Optimiser.Operator.Symbol.Shape.Type.attr Owl_graph.node ->
  Optimiser.Operator.Symbol.Shape.Type.Device.value ->
  unitval set_node_elt_val : 
  Optimiser.Operator.Symbol.Shape.Type.attr Owl_graph.node ->
  Optimiser.Operator.Symbol.Shape.Type.Device.value ->
  unitval is_iopair_safe : 'a Owl_graph.node -> 'a Owl_graph.node -> boolval make_iopair : 
  graph ->
  Optimiser.Operator.Symbol.Shape.Type.attr Owl_graph.node array ->
  Optimiser.Operator.Symbol.Shape.Type.attr Owl_graph.node array ->
  unitval update_iopair : graph -> unitval remove_unused_iopair : 
  'a Owl_graph.node array ->
  'b array ->
  'a Owl_graph.node array * 'b arrayval init_inputs : 
  (Optimiser.Operator.Symbol.Shape.Type.attr Owl_graph.node ->
    Optimiser.Operator.Symbol.Shape.Type.Device.value) ->
  graph ->
  unitval optimise : graph -> unitmodule Operator = Graph.Optimiser.Operatorval estimate_complexity : 'a Owl_graph.node array -> int * intval optimise_nodes : 
  Operator.Symbol.Shape.Type.attr Owl_graph.node array ->
  unitmodule Symbol = Graph.Optimiser.Operator.Symbolval noop : Symbol.Shape.Type.arr -> Symbol.Shape.Type.arrval empty : int array -> Symbol.Shape.Type.arrval zeros : int array -> Symbol.Shape.Type.arrval ones : int array -> Symbol.Shape.Type.arrval create : int array -> Symbol.Shape.Type.elt -> Symbol.Shape.Type.arrval sequential : 
  ?a:Symbol.Shape.Type.elt ->
  ?step:Symbol.Shape.Type.elt ->
  int array ->
  Symbol.Shape.Type.arrval uniform : 
  ?a:Symbol.Shape.Type.elt ->
  ?b:Symbol.Shape.Type.elt ->
  int array ->
  Symbol.Shape.Type.arrval gaussian : 
  ?mu:Symbol.Shape.Type.elt ->
  ?sigma:Symbol.Shape.Type.elt ->
  int array ->
  Symbol.Shape.Type.arrval bernoulli : ?p:Symbol.Shape.Type.elt -> int array -> Symbol.Shape.Type.arrval init : int array -> (int -> Symbol.Shape.Type.elt) -> Symbol.Shape.Type.arrval init_nd : 
  int array ->
  (int array -> Symbol.Shape.Type.elt) ->
  Symbol.Shape.Type.arrval shape : Symbol.Shape.Type.arr -> int arrayval numel : Symbol.Shape.Type.arr -> intval get : Symbol.Shape.Type.arr -> int array -> Symbol.Shape.Type.eltval set : Symbol.Shape.Type.arr -> int array -> Symbol.Shape.Type.elt -> unitval get_slice : int list list -> Symbol.Shape.Type.arr -> Symbol.Shape.Type.arrval set_slice : 
  int list list ->
  Symbol.Shape.Type.arr ->
  Symbol.Shape.Type.arr ->
  unitval get_fancy : 
  Owl_types.index list ->
  Symbol.Shape.Type.arr ->
  Symbol.Shape.Type.arrval set_fancy : 
  Owl_types.index list ->
  Symbol.Shape.Type.arr ->
  Symbol.Shape.Type.arr ->
  unitval copy : Symbol.Shape.Type.arr -> Symbol.Shape.Type.arrval reset : Symbol.Shape.Type.arr -> unitval reshape : Symbol.Shape.Type.arr -> int array -> Symbol.Shape.Type.arrval reverse : Symbol.Shape.Type.arr -> Symbol.Shape.Type.arrval tile : Symbol.Shape.Type.arr -> int array -> Symbol.Shape.Type.arrval repeat : Symbol.Shape.Type.arr -> int array -> Symbol.Shape.Type.arrval pad : 
  ?v:Symbol.Shape.Type.elt ->
  int list list ->
  Symbol.Shape.Type.arr ->
  Symbol.Shape.Type.arrval expand : ?hi:bool -> Symbol.Shape.Type.arr -> int -> Symbol.Shape.Type.arrval squeeze : ?axis:int array -> Symbol.Shape.Type.arr -> Symbol.Shape.Type.arrval concatenate : 
  ?axis:int ->
  Symbol.Shape.Type.arr array ->
  Symbol.Shape.Type.arrval stack : ?axis:int -> Symbol.Shape.Type.arr array -> Symbol.Shape.Type.arrval concat : 
  axis:int ->
  Symbol.Shape.Type.arr ->
  Symbol.Shape.Type.arr ->
  Symbol.Shape.Type.arrval draw : 
  ?axis:int ->
  Symbol.Shape.Type.arr ->
  int ->
  Symbol.Shape.Type.arr * 'a arrayval map : 
  (Symbol.Shape.Type.elt -> Symbol.Shape.Type.elt) ->
  Symbol.Shape.Type.arr ->
  Symbol.Shape.Type.arrval fold : 
  ?axis:int ->
  (Symbol.Shape.Type.elt -> Symbol.Shape.Type.elt -> Symbol.Shape.Type.elt) ->
  Symbol.Shape.Type.elt ->
  Symbol.Shape.Type.arr ->
  Symbol.Shape.Type.arrval scan : 
  ?axis:int ->
  (Symbol.Shape.Type.elt -> Symbol.Shape.Type.elt -> Symbol.Shape.Type.elt) ->
  Symbol.Shape.Type.arr ->
  Symbol.Shape.Type.arrval one_hot : int -> Symbol.Shape.Type.arr -> Symbol.Shape.Type.arrval delay : 
  (Symbol.Shape.Type.Device.A.arr -> Symbol.Shape.Type.Device.A.arr) ->
  Symbol.Shape.Type.arr ->
  Symbol.Shape.Type.arrval delay_array : 
  int array ->
  (Symbol.Shape.Type.Device.A.arr array -> Symbol.Shape.Type.Device.A.arr) ->
  Symbol.Shape.Type.arr array ->
  Symbol.Shape.Type.arrval lazy_print : 
  ?max_row:int ->
  ?max_col:int ->
  ?header:bool ->
  ?fmt:(Symbol.Shape.Type.Device.A.elt -> string) ->
  Symbol.Shape.Type.arr ->
  Symbol.Shape.Type.arrval abs : Symbol.Shape.Type.arr -> Symbol.Shape.Type.arrval neg : Symbol.Shape.Type.arr -> Symbol.Shape.Type.arrval floor : Symbol.Shape.Type.arr -> Symbol.Shape.Type.arrval ceil : Symbol.Shape.Type.arr -> Symbol.Shape.Type.arrval round : Symbol.Shape.Type.arr -> Symbol.Shape.Type.arrval sqr : Symbol.Shape.Type.arr -> Symbol.Shape.Type.arrval sqrt : Symbol.Shape.Type.arr -> Symbol.Shape.Type.arrval log : Symbol.Shape.Type.arr -> Symbol.Shape.Type.arrval log2 : Symbol.Shape.Type.arr -> Symbol.Shape.Type.arrval log10 : Symbol.Shape.Type.arr -> Symbol.Shape.Type.arrval exp : Symbol.Shape.Type.arr -> Symbol.Shape.Type.arrval sin : Symbol.Shape.Type.arr -> Symbol.Shape.Type.arrval cos : Symbol.Shape.Type.arr -> Symbol.Shape.Type.arrval tan : Symbol.Shape.Type.arr -> Symbol.Shape.Type.arrval sinh : Symbol.Shape.Type.arr -> Symbol.Shape.Type.arrval cosh : Symbol.Shape.Type.arr -> Symbol.Shape.Type.arrval tanh : Symbol.Shape.Type.arr -> Symbol.Shape.Type.arrval asin : Symbol.Shape.Type.arr -> Symbol.Shape.Type.arrval acos : Symbol.Shape.Type.arr -> Symbol.Shape.Type.arrval atan : Symbol.Shape.Type.arr -> Symbol.Shape.Type.arrval asinh : Symbol.Shape.Type.arr -> Symbol.Shape.Type.arrval acosh : Symbol.Shape.Type.arr -> Symbol.Shape.Type.arrval atanh : Symbol.Shape.Type.arr -> Symbol.Shape.Type.arrval min : 
  ?axis:int ->
  ?keep_dims:bool ->
  Symbol.Shape.Type.arr ->
  Symbol.Shape.Type.arrval max : 
  ?axis:int ->
  ?keep_dims:bool ->
  Symbol.Shape.Type.arr ->
  Symbol.Shape.Type.arrval sum : 
  ?axis:int ->
  ?keep_dims:bool ->
  Symbol.Shape.Type.arr ->
  Symbol.Shape.Type.arrval sum_reduce : 
  ?axis:int array ->
  Symbol.Shape.Type.arr ->
  Symbol.Shape.Type.arrval signum : Symbol.Shape.Type.arr -> Symbol.Shape.Type.arrval sigmoid : Symbol.Shape.Type.arr -> Symbol.Shape.Type.arrval relu : Symbol.Shape.Type.arr -> Symbol.Shape.Type.arrval dawsn : Symbol.Shape.Type.arr -> Symbol.Shape.Type.arrval min' : Symbol.Shape.Type.arr -> Symbol.Shape.Type.eltval max' : Symbol.Shape.Type.arr -> Symbol.Shape.Type.eltval sum' : Symbol.Shape.Type.arr -> Symbol.Shape.Type.eltval log_sum_exp' : Symbol.Shape.Type.arr -> Symbol.Shape.Type.eltval log_sum_exp : 
  ?axis:int ->
  ?keep_dims:bool ->
  Symbol.Shape.Type.arr ->
  Symbol.Shape.Type.arrval l1norm' : Symbol.Shape.Type.arr -> Symbol.Shape.Type.eltval l2norm' : Symbol.Shape.Type.arr -> Symbol.Shape.Type.eltval l2norm_sqr' : Symbol.Shape.Type.arr -> Symbol.Shape.Type.eltval clip_by_value : 
  ?amin:Symbol.Shape.Type.elt ->
  ?amax:Symbol.Shape.Type.elt ->
  Symbol.Shape.Type.arr ->
  Symbol.Shape.Type.arrval clip_by_l2norm : 
  Symbol.Shape.Type.elt ->
  Symbol.Shape.Type.arr ->
  Symbol.Shape.Type.arrval pow : 
  Symbol.Shape.Type.arr ->
  Symbol.Shape.Type.arr ->
  Symbol.Shape.Type.arrval scalar_pow : 
  Symbol.Shape.Type.elt ->
  Symbol.Shape.Type.arr ->
  Symbol.Shape.Type.arrval pow_scalar : 
  Symbol.Shape.Type.arr ->
  Symbol.Shape.Type.elt ->
  Symbol.Shape.Type.arrval atan2 : 
  Symbol.Shape.Type.arr ->
  Symbol.Shape.Type.arr ->
  Symbol.Shape.Type.arrval scalar_atan2 : 
  Symbol.Shape.Type.elt ->
  Symbol.Shape.Type.arr ->
  Symbol.Shape.Type.arrval atan2_scalar : 
  Symbol.Shape.Type.arr ->
  Symbol.Shape.Type.elt ->
  Symbol.Shape.Type.arrval hypot : 
  Symbol.Shape.Type.arr ->
  Symbol.Shape.Type.arr ->
  Symbol.Shape.Type.arrval min2 : 
  Symbol.Shape.Type.arr ->
  Symbol.Shape.Type.arr ->
  Symbol.Shape.Type.arrval max2 : 
  Symbol.Shape.Type.arr ->
  Symbol.Shape.Type.arr ->
  Symbol.Shape.Type.arrval add : 
  Symbol.Shape.Type.arr ->
  Symbol.Shape.Type.arr ->
  Symbol.Shape.Type.arrval sub : 
  Symbol.Shape.Type.arr ->
  Symbol.Shape.Type.arr ->
  Symbol.Shape.Type.arrval mul : 
  Symbol.Shape.Type.arr ->
  Symbol.Shape.Type.arr ->
  Symbol.Shape.Type.arrval div : 
  Symbol.Shape.Type.arr ->
  Symbol.Shape.Type.arr ->
  Symbol.Shape.Type.arrval add_scalar : 
  Symbol.Shape.Type.arr ->
  Symbol.Shape.Type.elt ->
  Symbol.Shape.Type.arrval sub_scalar : 
  Symbol.Shape.Type.arr ->
  Symbol.Shape.Type.elt ->
  Symbol.Shape.Type.arrval mul_scalar : 
  Symbol.Shape.Type.arr ->
  Symbol.Shape.Type.elt ->
  Symbol.Shape.Type.arrval div_scalar : 
  Symbol.Shape.Type.arr ->
  Symbol.Shape.Type.elt ->
  Symbol.Shape.Type.arrval scalar_add : 
  Symbol.Shape.Type.elt ->
  Symbol.Shape.Type.arr ->
  Symbol.Shape.Type.arrval scalar_sub : 
  Symbol.Shape.Type.elt ->
  Symbol.Shape.Type.arr ->
  Symbol.Shape.Type.arrval scalar_mul : 
  Symbol.Shape.Type.elt ->
  Symbol.Shape.Type.arr ->
  Symbol.Shape.Type.arrval scalar_div : 
  Symbol.Shape.Type.elt ->
  Symbol.Shape.Type.arr ->
  Symbol.Shape.Type.arrval fma : 
  Symbol.Shape.Type.arr ->
  Symbol.Shape.Type.arr ->
  Symbol.Shape.Type.arr ->
  Symbol.Shape.Type.arrval elt_equal : 
  Symbol.Shape.Type.arr ->
  Symbol.Shape.Type.arr ->
  Symbol.Shape.Type.arrval elt_not_equal : 
  Symbol.Shape.Type.arr ->
  Symbol.Shape.Type.arr ->
  Symbol.Shape.Type.arrval elt_less : 
  Symbol.Shape.Type.arr ->
  Symbol.Shape.Type.arr ->
  Symbol.Shape.Type.arrval elt_greater : 
  Symbol.Shape.Type.arr ->
  Symbol.Shape.Type.arr ->
  Symbol.Shape.Type.arrval elt_less_equal : 
  Symbol.Shape.Type.arr ->
  Symbol.Shape.Type.arr ->
  Symbol.Shape.Type.arrval elt_greater_equal : 
  Symbol.Shape.Type.arr ->
  Symbol.Shape.Type.arr ->
  Symbol.Shape.Type.arrval elt_equal_scalar : 
  Symbol.Shape.Type.arr ->
  Symbol.Shape.Type.elt ->
  Symbol.Shape.Type.arrval elt_not_equal_scalar : 
  Symbol.Shape.Type.arr ->
  Symbol.Shape.Type.elt ->
  Symbol.Shape.Type.arrval elt_less_scalar : 
  Symbol.Shape.Type.arr ->
  Symbol.Shape.Type.elt ->
  Symbol.Shape.Type.arrval elt_greater_scalar : 
  Symbol.Shape.Type.arr ->
  Symbol.Shape.Type.elt ->
  Symbol.Shape.Type.arrval elt_less_equal_scalar : 
  Symbol.Shape.Type.arr ->
  Symbol.Shape.Type.elt ->
  Symbol.Shape.Type.arrval elt_greater_equal_scalar : 
  Symbol.Shape.Type.arr ->
  Symbol.Shape.Type.elt ->
  Symbol.Shape.Type.arrval conv1d : 
  ?padding:Owl_types.padding ->
  Symbol.Shape.Type.arr ->
  Symbol.Shape.Type.arr ->
  int array ->
  Symbol.Shape.Type.arrval conv2d : 
  ?padding:Owl_types.padding ->
  Symbol.Shape.Type.arr ->
  Symbol.Shape.Type.arr ->
  int array ->
  Symbol.Shape.Type.arrval conv3d : 
  ?padding:Owl_types.padding ->
  Symbol.Shape.Type.arr ->
  Symbol.Shape.Type.arr ->
  int array ->
  Symbol.Shape.Type.arrval transpose_conv1d : 
  ?padding:Owl_types.padding ->
  Symbol.Shape.Type.arr ->
  Symbol.Shape.Type.arr ->
  int array ->
  Symbol.Shape.Type.arrval transpose_conv2d : 
  ?padding:Owl_types.padding ->
  Symbol.Shape.Type.arr ->
  Symbol.Shape.Type.arr ->
  int array ->
  Symbol.Shape.Type.arrval transpose_conv3d : 
  ?padding:Owl_types.padding ->
  Symbol.Shape.Type.arr ->
  Symbol.Shape.Type.arr ->
  int array ->
  Symbol.Shape.Type.arrval dilated_conv1d : 
  ?padding:Owl_types.padding ->
  Symbol.Shape.Type.arr ->
  Symbol.Shape.Type.arr ->
  int array ->
  int array ->
  Symbol.Shape.Type.arrval dilated_conv2d : 
  ?padding:Owl_types.padding ->
  Symbol.Shape.Type.arr ->
  Symbol.Shape.Type.arr ->
  int array ->
  int array ->
  Symbol.Shape.Type.arrval dilated_conv3d : 
  ?padding:Owl_types.padding ->
  Symbol.Shape.Type.arr ->
  Symbol.Shape.Type.arr ->
  int array ->
  int array ->
  Symbol.Shape.Type.arrval max_pool1d : 
  ?padding:Owl_types.padding ->
  Symbol.Shape.Type.arr ->
  int array ->
  int array ->
  Symbol.Shape.Type.arrval max_pool2d : 
  ?padding:Owl_types.padding ->
  Symbol.Shape.Type.arr ->
  int array ->
  int array ->
  Symbol.Shape.Type.arrval max_pool3d : 
  ?padding:Owl_types.padding ->
  Symbol.Shape.Type.arr ->
  int array ->
  int array ->
  Symbol.Shape.Type.arrval avg_pool1d : 
  ?padding:Owl_types.padding ->
  Symbol.Shape.Type.arr ->
  int array ->
  int array ->
  Symbol.Shape.Type.arrval avg_pool2d : 
  ?padding:Owl_types.padding ->
  Symbol.Shape.Type.arr ->
  int array ->
  int array ->
  Symbol.Shape.Type.arrval avg_pool3d : 
  ?padding:Owl_types.padding ->
  Symbol.Shape.Type.arr ->
  int array ->
  int array ->
  Symbol.Shape.Type.arrval upsampling2d : Symbol.Shape.Type.arr -> int array -> Symbol.Shape.Type.arrval conv1d_backward_input : 
  Symbol.Shape.Type.arr ->
  Symbol.Shape.Type.arr ->
  int array ->
  Symbol.Shape.Type.arr ->
  Symbol.Shape.Type.arrval conv1d_backward_kernel : 
  Symbol.Shape.Type.arr ->
  Symbol.Shape.Type.arr ->
  int array ->
  Symbol.Shape.Type.arr ->
  Symbol.Shape.Type.arrval conv2d_backward_input : 
  Symbol.Shape.Type.arr ->
  Symbol.Shape.Type.arr ->
  int array ->
  Symbol.Shape.Type.arr ->
  Symbol.Shape.Type.arrval conv2d_backward_kernel : 
  Symbol.Shape.Type.arr ->
  Symbol.Shape.Type.arr ->
  int array ->
  Symbol.Shape.Type.arr ->
  Symbol.Shape.Type.arrval conv3d_backward_input : 
  Symbol.Shape.Type.arr ->
  Symbol.Shape.Type.arr ->
  int array ->
  Symbol.Shape.Type.arr ->
  Symbol.Shape.Type.arrval conv3d_backward_kernel : 
  Symbol.Shape.Type.arr ->
  Symbol.Shape.Type.arr ->
  int array ->
  Symbol.Shape.Type.arr ->
  Symbol.Shape.Type.arrval transpose_conv1d_backward_input : 
  Symbol.Shape.Type.arr ->
  Symbol.Shape.Type.arr ->
  int array ->
  Symbol.Shape.Type.arr ->
  Symbol.Shape.Type.arrval transpose_conv1d_backward_kernel : 
  Symbol.Shape.Type.arr ->
  Symbol.Shape.Type.arr ->
  int array ->
  Symbol.Shape.Type.arr ->
  Symbol.Shape.Type.arrval transpose_conv2d_backward_input : 
  Symbol.Shape.Type.arr ->
  Symbol.Shape.Type.arr ->
  int array ->
  Symbol.Shape.Type.arr ->
  Symbol.Shape.Type.arrval transpose_conv2d_backward_kernel : 
  Symbol.Shape.Type.arr ->
  Symbol.Shape.Type.arr ->
  int array ->
  Symbol.Shape.Type.arr ->
  Symbol.Shape.Type.arrval transpose_conv3d_backward_input : 
  Symbol.Shape.Type.arr ->
  Symbol.Shape.Type.arr ->
  int array ->
  Symbol.Shape.Type.arr ->
  Symbol.Shape.Type.arrval transpose_conv3d_backward_kernel : 
  Symbol.Shape.Type.arr ->
  Symbol.Shape.Type.arr ->
  int array ->
  Symbol.Shape.Type.arr ->
  Symbol.Shape.Type.arrval dilated_conv1d_backward_input : 
  Symbol.Shape.Type.arr ->
  Symbol.Shape.Type.arr ->
  int array ->
  int array ->
  Symbol.Shape.Type.arr ->
  Symbol.Shape.Type.arrval dilated_conv1d_backward_kernel : 
  Symbol.Shape.Type.arr ->
  Symbol.Shape.Type.arr ->
  int array ->
  int array ->
  Symbol.Shape.Type.arr ->
  Symbol.Shape.Type.arrval dilated_conv2d_backward_input : 
  Symbol.Shape.Type.arr ->
  Symbol.Shape.Type.arr ->
  int array ->
  int array ->
  Symbol.Shape.Type.arr ->
  Symbol.Shape.Type.arrval dilated_conv2d_backward_kernel : 
  Symbol.Shape.Type.arr ->
  Symbol.Shape.Type.arr ->
  int array ->
  int array ->
  Symbol.Shape.Type.arr ->
  Symbol.Shape.Type.arrval dilated_conv3d_backward_input : 
  Symbol.Shape.Type.arr ->
  Symbol.Shape.Type.arr ->
  int array ->
  int array ->
  Symbol.Shape.Type.arr ->
  Symbol.Shape.Type.arrval dilated_conv3d_backward_kernel : 
  Symbol.Shape.Type.arr ->
  Symbol.Shape.Type.arr ->
  int array ->
  int array ->
  Symbol.Shape.Type.arr ->
  Symbol.Shape.Type.arrval max_pool1d_backward : 
  Owl_types.padding ->
  Symbol.Shape.Type.arr ->
  int array ->
  int array ->
  Symbol.Shape.Type.arr ->
  Symbol.Shape.Type.arrval max_pool2d_backward : 
  Owl_types.padding ->
  Symbol.Shape.Type.arr ->
  int array ->
  int array ->
  Symbol.Shape.Type.arr ->
  Symbol.Shape.Type.arrval max_pool3d_backward : 
  Owl_types.padding ->
  Symbol.Shape.Type.arr ->
  int array ->
  int array ->
  Symbol.Shape.Type.arr ->
  Symbol.Shape.Type.arrval avg_pool1d_backward : 
  Owl_types.padding ->
  Symbol.Shape.Type.arr ->
  int array ->
  int array ->
  Symbol.Shape.Type.arr ->
  Symbol.Shape.Type.arrval avg_pool2d_backward : 
  Owl_types.padding ->
  Symbol.Shape.Type.arr ->
  int array ->
  int array ->
  Symbol.Shape.Type.arr ->
  Symbol.Shape.Type.arrval avg_pool3d_backward : 
  Owl_types.padding ->
  Symbol.Shape.Type.arr ->
  int array ->
  int array ->
  Symbol.Shape.Type.arr ->
  Symbol.Shape.Type.arrval upsampling2d_backward : 
  Symbol.Shape.Type.arr ->
  int array ->
  Symbol.Shape.Type.arr ->
  Symbol.Shape.Type.arrval row_num : Symbol.Shape.Type.arr -> intval col_num : Symbol.Shape.Type.arr -> intval row : Symbol.Shape.Type.arr -> 'a -> Symbol.Shape.Type.arrval rows : Symbol.Shape.Type.arr -> int array -> Symbol.Shape.Type.arrval copy_row_to : Symbol.Shape.Type.arr -> 'a -> 'b -> unitval copy_col_to : Symbol.Shape.Type.arr -> 'a -> 'b -> unitval diag : ?k:int -> Symbol.Shape.Type.arr -> Symbol.Shape.Type.arrval trace : Symbol.Shape.Type.arr -> Symbol.Shape.Type.eltval dot : 
  Symbol.Shape.Type.arr ->
  Symbol.Shape.Type.arr ->
  Symbol.Shape.Type.arrval transpose : 
  ?axis:int array ->
  Symbol.Shape.Type.arr ->
  Symbol.Shape.Type.arrval to_rows : Symbol.Shape.Type.arr -> 'a arrayval of_rows : Symbol.Shape.Type.arr array -> Symbol.Shape.Type.arrval to_cols : Symbol.Shape.Type.arr -> 'a arrayval of_cols : Symbol.Shape.Type.arr array -> Symbol.Shape.Type.arrval of_array : 
  Symbol.Shape.Type.elt array ->
  int array ->
  Symbol.Shape.Type.arrval of_arrays : Symbol.Shape.Type.elt array array -> Symbol.Shape.Type.arrval to_arrays : Symbol.Shape.Type.arr -> Symbol.Shape.Type.elt array arraymodule Scalar = Graph.Optimiser.Operator.Scalarmodule Mat = Graph.Optimiser.Operator.Matmodule Linalg = Graph.Optimiser.Operator.Linalgmodule Shape = Graph.Optimiser.Operator.Symbol.Shapeval op_to_str : Shape.Type.op -> stringval is_random_variable : Shape.Type.op -> boolval refnum : 'a Owl_graph.node -> intval node_shape : Shape.Type.attr Owl_graph.node -> int arrayval node_numel : Shape.Type.attr Owl_graph.node -> intval is_shape_unknown : Shape.Type.attr Owl_graph.node -> boolval infer_shape_graph : Shape.Type.attr Owl_graph.node array -> unitval node_to_str : Shape.Type.attr Owl_graph.node -> stringval node_to_arr : Shape.Type.t -> Shape.Type.arrval arr_to_node : Shape.Type.arr -> Shape.Type.tval node_to_elt : Shape.Type.t -> Shape.Type.eltval elt_to_node : Shape.Type.elt -> Shape.Type.tval make_node : 
  ?name:string ->
  ?value:Shape.Type.Device.value array ->
  ?shape:int array option array ->
  ?freeze:bool ->
  ?reuse:bool ->
  ?state:Shape.Type.state ->
  Shape.Type.op ->
  Shape.Type.attr Owl_graph.nodeval make_then_connect : 
  ?shape:int array option array ->
  Shape.Type.op ->
  Shape.Type.attr Owl_graph.node array ->
  Shape.Type.attr Owl_graph.nodeval var_arr : ?shape:int array -> string -> Shape.Type.arrval var_elt : string -> Shape.Type.eltval const_arr : string -> Shape.Type.Device.A.arr -> Shape.Type.arrval const_elt : string -> Shape.Type.Device.A.elt -> Shape.Type.eltval make_empty_block : ?block_id:int -> int -> Shape.Type.blockval make_value_block : 
  Shape.Type.Device.value ->
  Shape.Type.attr Owl_graph.node ->
  unitval get_block : Shape.Type.attr Owl_graph.node -> Shape.Type.block arrayval add_node_to_block : 
  Shape.Type.attr Owl_graph.node ->
  Shape.Type.block ->
  unitval get_active_node : Shape.Type.block -> Shape.Type.attr Owl_graph.node optionval set_active_node : 
  Shape.Type.block ->
  Shape.Type.attr Owl_graph.node ->
  unitval get_block_id : Shape.Type.attr Owl_graph.node -> intval set_value : 
  Shape.Type.attr Owl_graph.node ->
  Shape.Type.Device.value array ->
  unitval get_value : Shape.Type.attr Owl_graph.node -> Shape.Type.Device.value arrayval set_operator : Shape.Type.attr Owl_graph.node -> Shape.Type.op -> unitval get_operator : Shape.Type.attr Owl_graph.node -> Shape.Type.opval set_reuse : Shape.Type.attr Owl_graph.node -> bool -> unitval get_reuse : Shape.Type.attr Owl_graph.node -> boolval is_var : Shape.Type.attr Owl_graph.node -> boolval is_const : Shape.Type.attr Owl_graph.node -> boolval is_node_arr : Shape.Type.attr Owl_graph.node -> boolval is_node_elt : Shape.Type.attr Owl_graph.node -> boolval is_assigned : Shape.Type.attr Owl_graph.node -> boolval check_assigned : Shape.Type.attr Owl_graph.node -> unitval is_valid : Shape.Type.attr Owl_graph.node -> boolval validate : Shape.Type.attr Owl_graph.node -> unitval invalidate : Shape.Type.attr Owl_graph.node -> unitval invalidate_graph : Shape.Type.attr Owl_graph.node -> unitval is_freeze : Shape.Type.attr Owl_graph.node -> boolval freeze : Shape.Type.attr Owl_graph.node -> unitval freeze_descendants : Shape.Type.attr Owl_graph.node array -> unitval freeze_ancestors : Shape.Type.attr Owl_graph.node array -> unitval pack_arr : Shape.Type.Device.A.arr -> Shape.Type.arrval unpack_arr : Shape.Type.arr -> Shape.Type.Device.A.arrval pack_elt : Shape.Type.Device.A.elt -> Shape.Type.eltval unpack_elt : Shape.Type.elt -> Shape.Type.Device.A.eltval unsafe_assign_arr : Shape.Type.arr -> Shape.Type.Device.A.arr -> unitval assign_arr : Shape.Type.arr -> Shape.Type.Device.A.arr -> unitval assign_elt : Shape.Type.elt -> Shape.Type.Device.A.elt -> unitval float_to_elt : float -> Shape.Type.eltval elt_to_float : Shape.Type.elt -> floatmodule Type = Graph.Optimiser.Operator.Symbol.Shape.Typeval infer_shape : 
  Type.op ->
  Type.attr Owl_graph.node array ->
  int array option arraymodule Device = Graph.Optimiser.Operator.Symbol.Shape.Type.Devicetype t = attr Owl_graph.nodeand block = E.Graph.Optimiser.Operator.Symbol.Shape.Type.block = {size : int;block_id : int;mutable active : t option;mutable memory : Device.value;mutable nodes : t list;}and attr = E.Graph.Optimiser.Operator.Symbol.Shape.Type.attr = {mutable op : op;mutable freeze : bool;mutable reuse : bool;mutable state : state;mutable shape : int array option array;mutable value : Device.value array;mutable block : block array option;}and op = E.Graph.Optimiser.Operator.Symbol.Shape.Type.op = | Noop| Var| Const| Empty of int array| Zeros of int array| Ones of int array| Create of int array| Sequential of int array| Uniform of int array| Gaussian of int array| Bernoulli of int array| Init of int array * int -> elt| Get of int array| Set of int array| GetSlice of int list list| SetSlice of int list list| GetFancy of Owl_types_common.index list| SetFancy of Owl_types_common.index list| Copy| Reset| Reshape of int array| Reverse| Tile of int array| Repeat of int array| Pad of elt * int list list| Concatenate of int| Stack of int| Split of int * int array| Draw of int * int| Map of elt -> elt| Fold of int * elt -> elt -> elt| Scan of int * elt -> elt -> elt| OneHot of int| OfArray of int array| Delay of Device.A.arr -> Device.A.arr| DelayArray of int array * Device.A.arr array -> Device.A.arr| LazyPrint of int option
  * int option
  * bool option
  * (Device.A.elt -> string) option| Abs| Neg| Floor| Ceil| Round| Sqr| Sqrt| Log| Log2| Log10| Exp| Sin| Cos| Tan| Sinh| Cosh| Tanh| Asin| Acos| Atan| Asinh| Acosh| Atanh| Min of bool * int| Max of bool * int| Sum of bool * int| SumReduce of int array| Signum| Sigmoid| Relu| Dawsn| Min'| Max'| Sum'| LogSumExp'| LogSumExp of bool * int| L1norm'| L2norm'| L2NormSqr'| ClipByValue| ClipByL2norm| Pow| ScalarPow| PowScalar| Atan2| ScalarAtan2| Atan2Scalar| Hypot| Min2| Max2| Add| Sub| Mul| Div| AddScalar| SubScalar| MulScalar| DivScalar| ScalarAdd| ScalarSub| ScalarMul| ScalarDiv| FMA| EltEqual| EltNotEqual| EltLess| EltGreater| EltLessEqual| EltGreaterEqual| EltEqualScalar| EltNotEqualScalar| EltLessScalar| EltGreaterScalar| EltLessEqualScalar| EltGreaterEqualScalar| Conv1d of Owl_types_common.padding * int array| Conv2d of Owl_types_common.padding * int array| Conv3d of Owl_types_common.padding * int array| TransposeConv1d of Owl_types_common.padding * int array| TransposeConv2d of Owl_types_common.padding * int array| TransposeConv3d of Owl_types_common.padding * int array| DilatedConv1d of Owl_types_common.padding * int array * int array| DilatedConv2d of Owl_types_common.padding * int array * int array| DilatedConv3d of Owl_types_common.padding * int array * int array| MaxPool1d of Owl_types_common.padding * int array * int array| MaxPool2d of Owl_types_common.padding * int array * int array| MaxPool3d of Owl_types_common.padding * int array * int array| AvgPool1d of Owl_types_common.padding * int array * int array| AvgPool2d of Owl_types_common.padding * int array * int array| AvgPool3d of Owl_types_common.padding * int array * int array| UpSampling2d of int array| Conv1dBackwardInput of int array| Conv1dBackwardKernel of int array| Conv2dBackwardInput of int array| Conv2dBackwardKernel of int array| Conv3dBackwardInput of int array| Conv3dBackwardKernel of int array| TransposeConv1dBackwardInput of int array| TransposeConv1dBackwardKernel of int array| TransposeConv2dBackwardInput of int array| TransposeConv2dBackwardKernel of int array| TransposeConv3dBackwardInput of int array| TransposeConv3dBackwardKernel of int array| DilatedConv1dBackwardInput of int array * int array| DilatedConv1dBackwardKernel of int array * int array| DilatedConv2dBackwardInput of int array * int array| DilatedConv2dBackwardKernel of int array * int array| DilatedConv3dBackwardInput of int array * int array| DilatedConv3dBackwardKernel of int array * int array| MaxPool1dBackward of Owl_types_common.padding * int array * int array| MaxPool2dBackward of Owl_types_common.padding * int array * int array| MaxPool3dBackward of Owl_types_common.padding * int array * int array| AvgPool1dBackward of Owl_types_common.padding * int array * int array| AvgPool2dBackward of Owl_types_common.padding * int array * int array| AvgPool3dBackward of Owl_types_common.padding * int array * int array| UpSampling2dBackward of int array| RowNum| ColNum| Row| Rows of int array| CopyRowTo| CopyColTo| Dot of bool * bool * elt * elt| Inv| Trace| Transpose of int array| ToRows| OfRows| Scalar_Add| Scalar_Sub| Scalar_Mul| Scalar_Div| Scalar_Pow| Scalar_Atan2| Scalar_Abs| Scalar_Neg| Scalar_Sqr| Scalar_Sqrt| Scalar_Exp| Scalar_Log| Scalar_Log2| Scalar_Log10| Scalar_Signum| Scalar_Floor| Scalar_Ceil| Scalar_Round| Scalar_Sin| Scalar_Cos| Scalar_Tan| Scalar_Sinh| Scalar_Cosh| Scalar_Tanh| Scalar_Asin| Scalar_Acos| Scalar_Atan| Scalar_Asinh| Scalar_Acosh| Scalar_Atanh| Scalar_Relu| Scalar_Dawsn| Scalar_Sigmoid| Fused_Adagrad of float * floatval make_device : unit -> deviceval value_to_float : value -> floatval is_arr : value -> boolval is_elt : value -> boolval number : Owl_types_common.number