@@ -86,6 +86,9 @@ def backward(self, x):
86
86
def forward (self , x ):
87
87
return tt .log (x )
88
88
89
+ def jacobian_det (self , x ):
90
+ return x
91
+
89
92
log = Log ()
90
93
91
94
@@ -109,20 +112,22 @@ class Interval(ElemwiseTransform):
109
112
110
113
name = "interval"
111
114
112
- def __init__ (self , a , b , eps = 1e-6 ):
115
+ def __init__ (self , a , b ):
113
116
self .a = a
114
117
self .b = b
115
- self .eps = eps
116
118
117
119
def backward (self , x ):
118
120
a , b = self .a , self .b
119
- r = (b - a ) / ( 1 + tt .exp ( - x ) ) + a
121
+ r = (b - a ) * tt .nnet . sigmoid ( x ) + a
120
122
return r
121
123
122
124
def forward (self , x ):
123
- a , b , e = self .a , self .b , self .eps
124
- r = tt .log (tt .maximum ((x - a ) / tt .maximum (b - x , e ), e ))
125
- return r
125
+ a , b = self .a , self .b
126
+ return tt .log (x - a ) - tt .log (b - x )
127
+
128
+ def jacobian_det (self , x ):
129
+ s = tt .nnet .softplus (- x )
130
+ return tt .log (self .b - self .a ) - 2 * s - x
126
131
127
132
interval = Interval
128
133
@@ -145,6 +150,9 @@ def forward(self, x):
145
150
r = tt .log (x - a )
146
151
return r
147
152
153
+ def jacobian_det (self , x ):
154
+ return x
155
+
148
156
lowerbound = LowerBound
149
157
150
158
@@ -166,6 +174,9 @@ def forward(self, x):
166
174
r = tt .log (b - x )
167
175
return r
168
176
177
+ def jacobian_det (self , x ):
178
+ return x
179
+
169
180
upperbound = UpperBound
170
181
171
182
0 commit comments