Closed shenw000 closed 1 year ago
That property is probably not falsifiable, so pgd will just run forever. Dnnf cannot prove that a property is true. You can specify a maximum number of retries with the --n_starts
option if you want dnnf to stop. Or you can use an external tool to kill dnnf after a certain amount of time has passed.
First I was able to run the DNNF-GHPR benchmark in a container created from your dnnf image. So I think that my setup for running container is correct.
However, when I run the ACAS-Xu benchmark in the same container, it simply can't finish for several days. The command that I tested is dnnf properties/property_1.py --network N onnx/N_1_1.onnx --backend cleverhans.projected_gradien_descent
The output of the ACAS-Xu benchmark run of above command is below: Falsifying: Forall(x, ((([[ 0.6 -0.5 -0.5 0.45 -0.5 ]] <= x) & (x <= [[ 0.68 0.5 0.5 0.5 -0.45]])) ==> (N(x)[(0, 0)] <= 3.991125645861615)))
Network N: Input_0 : Input([1 5], dtype=float32) Gemm_0 : Gemm(Input_0, ndarray(shape=(50, 5)), ndarray(shape=(50,)), transpose_a=0, transpose_b=1, alpha=1.000000, beta=1.000000) Relu_0 : Relu(Gemm_0) Gemm_1 : Gemm(Relu_0, ndarray(shape=(50, 50)), ndarray(shape=(50,)), transpose_a=0, transpose_b=1, alpha=1.000000, beta=1.000000) Relu_1 : Relu(Gemm_1) Gemm_2 : Gemm(Relu_1, ndarray(shape=(50, 50)), ndarray(shape=(50,)), transpose_a=0, transpose_b=1, alpha=1.000000, beta=1.000000) Relu_2 : Relu(Gemm_2) Gemm_3 : Gemm(Relu_2, ndarray(shape=(50, 50)), ndarray(shape=(50,)), transpose_a=0, transpose_b=1, alpha=1.000000, beta=1.000000) Relu_3 : Relu(Gemm_3) Gemm_4 : Gemm(Relu_3, ndarray(shape=(50, 50)), ndarray(shape=(50,)), transpose_a=0, transpose_b=1, alpha=1.000000, beta=1.000000) Relu_4 : Relu(Gemm_4) Gemm_5 : Gemm(Relu_4, ndarray(shape=(50, 50)), ndarray(shape=(50,)), transpose_a=0, transpose_b=1, alpha=1.000000, beta=1.000000) Relu_5 : Relu(Gemm_5) Gemm_6 : Gemm(Relu_5, ndarray(shape=(5, 50)), ndarray(shape=(5,)), transpose_a=0, transpose_b=1, alpha=1.000000, beta=1.000000)
Can you provide some suggestions and directions about solve this problem?
Your help is greatly appreciated.