let make_net ins outs hidden transfers =
let size = ins :: hidden @ [outs] in
let rec loop size transfers =
if List.length size -1 != List.length transfers then
raise (Invalid_argument "Layouts do not match")
else
match size with
n :: m :: size -> (make_layer n m (List.hd transfers))
:: (loop (m::size) (List.tl transfers))
| _ -> []
in
loop size transfers