Beispiel #1
0
    def shadow(self, args):

        """
        Helper function for `_shadow` that calls it on a flattened version of
        its argument.
        """
        shadow_vars = [self._shadow_inner(x) for x in utils.flatten(args)]
        new_args = utils.unflatten(args, shadow_vars)
        self.context.shadowed_containers[id(new_args)] = args
        return new_args
Beispiel #2
0
 def handle_escape(x):
     """
     Handles escaping variables
     """
     def escape(x):
         if isinstance(x, theano.tensor.sharedvar.SharedVariable):
             return x.get_value()
         elif utils.isvar(x):
             try:
                 return x.eval()
             except:
                 raise ValueError('Could not escape {0}'.format(x))
         else:
             return x
     return utils.unflatten(x, [escape(i) for i in utils.flatten(x)])
Beispiel #3
0
 def handle_escaped_call(fn, *args, **kwargs):
     esc_args = utils.unflatten(
         args, [TheanoTransformer.handle_escape(a) for a in utils.flatten(args)])
     esc_kwargs = utils.unflatten(
         kwargs, [TheanoTransformer.handle_escape(a) for a in utils.flatten(kwargs)])
     return fn(*esc_args, **esc_kwargs)