Пример #1
0
 def inverse(self, out_bij):
     """ irevnet inverse """
     out = split(out_bij)
     for i in range(len(self.stack)):
         out = self.stack[-1 - i].inverse(out)
     out = merge(out[0], out[1])
     x = self.init_psi.inverse(out)
     return x
Пример #2
0
 def inverse(self, x):
     """ bijective or injecitve block inverse """
     x2, y1 = x[0], x[1]
     if self.stride == 2:
         x2 = self.psi.inverse(x2)
     Fx2 = -self.bottleneck_block(x2)
     x1 = Fx2 + y1
     if self.stride == 2:
         x1 = self.psi.inverse(x1)
     if self.pad != 0 and self.stride == 1:
         x = merge(x1, x2)
         x = self.inj_pad.inverse(x)
         x1, x2 = split(x)
         x = (x1, x2)
     else:
         x = (x1, x2)
     return x
Пример #3
0
 def inverse(self, x):
     out = split(x)
     for i in range(len(self.block_list)):
         out = self.stack[-1 - i].inverse(out)
     out = merge(out[0], out[1])
     return out