code: def apply2(self, func, *args, **kwargs):
          
          ret = func(args[0], self._t, *(args[1:]), **kwargs)
          return LinearWrap(ret)
docs: Apply a function on the wrapped tensor. The tensor
          will be the second argument of func.
  
          This is because many symbolic functions
          (such as tensorpack's layers) takes 'scope' as the first argument.
  
          Returns:
              LinearWrap: ``LinearWrap(func(args[0], self.tensor(), *args[1:], **kwargs))``.