MCPcopy Create free account
hub / github.com/NeuralNetworkVerification/Marabou / execute

Method execute

src/nlr/DeepPolySigmoidElement.cpp:35–103  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

33}
34
35void DeepPolySigmoidElement::execute(
36 const Map<unsigned, DeepPolyElement *> &deepPolyElementsBefore )
37{
38 log( "Executing..." );
39 ASSERT( hasPredecessor() );
40 allocateMemory();
41
42 // Update the symbolic and concrete upper- and lower- bounds
43 // of each neuron
44 for ( unsigned i = 0; i < _size; ++i )
45 {
46 NeuronIndex sourceIndex = *( _layer->getActivationSources( i ).begin() );
47 DeepPolyElement *predecessor = deepPolyElementsBefore[sourceIndex._layer];
48 double sourceLb = predecessor->getLowerBound( sourceIndex._neuron );
49 double sourceUb = predecessor->getUpperBound( sourceIndex._neuron );
50
51 _ub[i] = SigmoidConstraint::sigmoid( sourceUb );
52 _lb[i] = SigmoidConstraint::sigmoid( sourceLb );
53
54 if ( sourceUb == sourceLb )
55 {
56 _symbolicUb[i] = 0;
57 _symbolicUpperBias[i] = _ub[i];
58 _symbolicLb[i] = 0;
59 _symbolicLowerBias[i] = _lb[i];
60 }
61 else
62 {
63 double lambda = ( _ub[i] - _lb[i] ) / ( sourceUb - sourceLb );
64 double lambdaPrime = std::min( SigmoidConstraint::sigmoidDerivative( sourceLb ),
65 SigmoidConstraint::sigmoidDerivative( sourceUb ) );
66
67 // update lower bound
68 if ( FloatUtils::isPositive( sourceLb ) )
69 {
70 _symbolicLb[i] = lambda;
71 _symbolicLowerBias[i] = SigmoidConstraint::sigmoid( sourceLb ) - lambda * sourceLb;
72 }
73 else
74 {
75 _symbolicLb[i] = lambdaPrime;
76 _symbolicLowerBias[i] =
77 SigmoidConstraint::sigmoid( sourceLb ) - lambdaPrime * sourceLb;
78 }
79
80 // update upper bound
81 if ( !FloatUtils::isPositive( sourceUb ) )
82 {
83 _symbolicUb[i] = lambda;
84 _symbolicUpperBias[i] = SigmoidConstraint::sigmoid( sourceUb ) - lambda * sourceUb;
85 }
86 else
87 {
88 _symbolicUb[i] = lambdaPrime;
89 _symbolicUpperBias[i] =
90 SigmoidConstraint::sigmoid( sourceUb ) - lambdaPrime * sourceUb;
91 }
92 }

Callers

nothing calls this directly

Calls 5

StringfClass · 0.85
getActivationSourcesMethod · 0.80
beginMethod · 0.45
getLowerBoundMethod · 0.45
getUpperBoundMethod · 0.45

Tested by

no test coverage detected