Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
caisar
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Deploy
Releases
Package Registry
Container Registry
Model registry
Operate
Terraform modules
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
pub
caisar
Commits
e4fd53c3
Commit
e4fd53c3
authored
1 year ago
by
Michele Alberti
Browse files
Options
Downloads
Patches
Plain Diff
[language] Rework neural networks interface.
parent
b6ed30cd
No related branches found
No related tags found
No related merge requests found
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
src/interpretation.ml
+2
-2
2 additions, 2 deletions
src/interpretation.ml
src/language.ml
+8
-8
8 additions, 8 deletions
src/language.ml
src/language.mli
+4
-4
4 additions, 4 deletions
src/language.mli
src/transformations/native_nn_prover.ml
+2
-2
2 additions, 2 deletions
src/transformations/native_nn_prover.ml
with
16 additions
and
16 deletions
src/interpretation.ml
+
2
−
2
View file @
e4fd53c3
...
...
@@ -253,8 +253,8 @@ let caisar_builtins : caisar_env CRE.built_in_theories list =
let
filename
=
Caml
.
Filename
.
concat
cwd
neural_network
in
let
nn
=
match
id_string
with
|
"NNet"
->
NNet
(
Language
.
create_nn
et
_nn
env
filename
)
|
"ONNX"
->
ONNX
(
Language
.
create_onnx
_nn
env
filename
)
|
"NNet"
->
NNet
(
Language
.
create_nn_nn
et
env
filename
)
|
"ONNX"
->
ONNX
(
Language
.
create_
nn_
onnx
env
filename
)
|
_
->
failwith
(
Fmt
.
str
"Unrecognized neural network format %s"
id_string
)
in
...
...
This diff is collapsed.
Click to expand it.
src/language.ml
+
8
−
8
View file @
e4fd53c3
...
...
@@ -186,8 +186,8 @@ let mem_vector = Term.Hls.mem vectors
(* -- Classifier *)
type
nn
=
{
nn_inputs
:
int
;
nn_outputs
:
int
;
nn_
nb_
inputs
:
int
;
nn_
nb_
outputs
:
int
;
nn_ty_elt
:
Ty
.
ty
;
[
@
printer
fun
fmt
ty
->
Fmt
.
pf
fmt
"%a"
Pretty
.
print_ty
ty
]
nn_filename
:
string
;
nn_nier
:
Onnx
.
G
.
t
option
;
[
@
opaque
]
...
...
@@ -204,7 +204,7 @@ let fresh_nn_ls env name =
let
id
=
Ident
.
id_fresh
name
in
Term
.
create_fsymbol
id
[]
ty
let
create_nn
et
_nn
=
let
create_nn_nn
et
=
Env
.
Wenv
.
memoize
13
(
fun
env
->
let
h
=
Hashtbl
.
create
(
module
String
)
in
let
ty_elt
=
...
...
@@ -219,8 +219,8 @@ let create_nnet_nn =
|
Error
s
->
Loc
.
errorm
"%s"
s
|
Ok
{
n_inputs
;
n_outputs
;
_
}
->
{
nn_inputs
=
n_inputs
;
nn_outputs
=
n_outputs
;
nn_
nb_
inputs
=
n_inputs
;
nn_
nb_
outputs
=
n_outputs
;
nn_ty_elt
=
ty_elt
;
nn_filename
=
filename
;
nn_nier
=
None
;
...
...
@@ -229,7 +229,7 @@ let create_nnet_nn =
Term
.
Hls
.
add
nets
ls
nn
;
ls
))
let
create_onnx
_nn
=
let
create_
nn_
onnx
=
Env
.
Wenv
.
memoize
13
(
fun
env
->
let
h
=
Hashtbl
.
create
(
module
String
)
in
let
ty_elt
=
vector_elt_ty
env
in
...
...
@@ -249,8 +249,8 @@ let create_onnx_nn =
|
Ok
nier
->
Some
nier
in
{
nn_inputs
=
n_inputs
;
nn_outputs
=
n_outputs
;
nn_
nb_
inputs
=
n_inputs
;
nn_
nb_
outputs
=
n_outputs
;
nn_ty_elt
=
ty_elt
;
nn_filename
=
filename
;
nn_nier
=
nier
;
...
...
This diff is collapsed.
Click to expand it.
src/language.mli
+
4
−
4
View file @
e4fd53c3
...
...
@@ -72,15 +72,15 @@ val mem_vector : Term.lsymbol -> bool
(** -- Neural Network *)
type
nn
=
private
{
nn_inputs
:
int
;
nn_outputs
:
int
;
nn_
nb_
inputs
:
int
;
nn_
nb_
outputs
:
int
;
nn_ty_elt
:
Ty
.
ty
;
nn_filename
:
string
;
nn_nier
:
Onnx
.
G
.
t
option
;
}
[
@@
deriving
show
]
val
create_nn
et
_nn
:
Env
.
env
->
string
->
Term
.
lsymbol
val
create_onnx
_nn
:
Env
.
env
->
string
->
Term
.
lsymbol
val
create_nn_nn
et
:
Env
.
env
->
string
->
Term
.
lsymbol
val
create_
nn_
onnx
:
Env
.
env
->
string
->
Term
.
lsymbol
val
lookup_nn
:
Term
.
lsymbol
->
nn
option
val
mem_nn
:
Term
.
lsymbol
->
bool
This diff is collapsed.
Click to expand it.
src/transformations/native_nn_prover.ml
+
2
−
2
View file @
e4fd53c3
...
...
@@ -37,8 +37,8 @@ let get_input_variables =
[
{
t_node
=
Tapp
(
ls1
,
_
);
_
};
{
t_node
=
Tapp
(
ls2
,
args
);
_
}
]
)
when
String
.
equal
ls_name
.
id_string
(
Ident
.
op_infix
"@@"
)
->
(
match
(
Language
.
lookup_nn
ls1
,
Language
.
lookup_vector
ls2
)
with
|
Some
{
nn_inputs
;
_
}
,
Some
n
->
assert
(
nn_inputs
=
n
&&
n
=
List
.
length
args
);
|
Some
{
nn_
nb_
inputs
;
_
}
,
Some
n
->
assert
(
nn_
nb_
inputs
=
n
&&
n
=
List
.
length
args
);
List
.
foldi
~
init
:
acc
~
f
:
add
args
|
_
->
acc
)
|
_
->
Term
.
t_fold
aux
acc
term
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment