コード例 #1
0
ファイル: base.py プロジェクト: zhongyunuestc/teafacto
 def makemask(self, arg=0):      # default: mask zero
     if isfunction(arg):
         self._mask = arg(self)
     elif isnumber(arg):
         self._mask = tensorops.eq(self, arg)
     else:
         raise Exception("wrong input argument type")
     return self
コード例 #2
0
ファイル: base.py プロジェクト: qdbszsj/teafacto-1
    def wrapply(self, *args, **kwargs):  # is this multi-output compatible?
        transform = None
        oldtrainmode = None
        olddebugmode = None
        global _TRAINMODE
        global _DEBUGMODE
        #print "{} train mode (in base.py)".format(_TRAINMODE)
        if "transform" in kwargs and kwargs["transform"] is not None:
            transform = kwargs.pop("transform")
        if "_trainmode" in kwargs:  # changes global _TRAINMODE
            oldtrainmode = _TRAINMODE
            _TRAINMODE = kwargs.pop("_trainmode")
        if "_debugmode" in kwargs:  # changes global _DEBUGMODE
            olddebugmode = _DEBUGMODE
            _DEBUGMODE = kwargs.pop("_debugmode")
        if "_batsize" in kwargs:
            batsize = kwargs.pop("_batsize")
        if "_trainmode" in inspect.getargspec(self.apply)[0]:
            kwargs["_trainmode"] = _TRAINMODE
        if "_debugmode" in inspect.getargspec(self.apply)[0]:
            kwargs["_debugmode"] = _DEBUGMODE

        # param pushing
        paramstopush = set(
        )  # params to transfer from input vars to output vars
        for var in recurfilter(lambda x: isinstance(x, Var),
                               kwargs) + recurfilter(
                                   lambda x: isinstance(x, Var), args):
            paramstopush.update(var._params)
        updatestopush = _get_updates_from([args, kwargs])
        # extra outs pushing
        extraoutstopush = {}
        for var in recurfilter(lambda x: isinstance(x, Var),
                               kwargs) + recurfilter(
                                   lambda x: isinstance(x, Var), args):
            extraoutstopush.update(var._extra_outs)

        if transform is not None and isfunction(transform):
            args, kwargs = transform(*args, **kwargs)

        ret = self.apply(
            *args, **kwargs
        )  # ret carries params of its own --> these params have been added in this block
        possiblechildren = recurfilter(lambda x: isinstance(x, Var), ret)
        for p in possiblechildren:
            p.push_params(paramstopush)
            p.push_params(self.ownparams)
            p.push_updates(updatestopush)
            p.push_extra_outs(extraoutstopush)
            for k, v in self._param_settings_toprop.items():
                for param in p.allparams.difference(paramstopush):
                    if hasattr(param, k):
                        setattr(param, k, v)
        if oldtrainmode is not None:  # this was where we changed the global _TRAINMODE
            _TRAINMODE = oldtrainmode  # put it back
        if olddebugmode is not None:
            _DEBUGMODE = olddebugmode
        return ret
コード例 #3
0
ファイル: base.py プロジェクト: harsh9t/teafacto
def wrapf(attr, root=None):
    if isfunction(attr): # real function
        innerwrap = prefwrap(attr, root)    #lambda *args, **kwargs: fwrap(attr, root, *args, **kwargs)
    elif isnumber(attr) or isstring(attr): # or other literals/non-syms/modules/properties/...
        return attr
    elif isinstance(attr, ModuleType):
        innerwrap = pwrap(attr)
    elif isinstance(attr, theano.Variable):
        innerwrap = vwrap(attr, root)
    else:
        innerwrap = attr
    return innerwrap
コード例 #4
0
ファイル: base.py プロジェクト: lukovnikov/teafacto
def wrapf(attr, root=None):
    if isfunction(attr): # real function
        innerwrap = OpBlock(attr, root)
    elif isnumber(attr) or isstring(attr): # or other literals/non-syms/modules/properties/...
        return attr
    elif isinstance(attr, ModuleType):
        innerwrap = WrappedAttr(attr)
    elif isinstance(attr, theano.Variable):
        innerwrap = Var(attr)
        if isinstance(root, Var):       # propagate params
            innerwrap.push_params(root._params)
    else:
        innerwrap = attr
    return innerwrap
コード例 #5
0
ファイル: base.py プロジェクト: zhongyunuestc/teafacto
def wrapf(attr, root=None):
    if isfunction(attr): # real function
        innerwrap = OpBlock(attr, root)
    elif isnumber(attr) or isstring(attr): # or other literals/non-syms/modules/properties/...
        return attr
    elif isinstance(attr, ModuleType):
        innerwrap = WrappedAttr(attr)
    elif isinstance(attr, theano.Variable):
        innerwrap = Var(attr)
        if isinstance(root, Var):       # propagate params
            innerwrap.push_params(root._params)
    else:
        innerwrap = attr
    return innerwrap
コード例 #6
0
ファイル: base.py プロジェクト: lukovnikov/teafacto
 def wrapply(self, *args, **kwargs): # is this multi-output compatible?
     transform = None
     if "transform" in kwargs and kwargs["transform"] is not None:
         transform = kwargs.pop("transform")
     paramstopush = set()        # params to transfer from input vars to output vars
     for var in recurfilter(lambda x: isinstance(x, Var), kwargs) + recurfilter(lambda x: isinstance(x, Var), args):
         paramstopush.update(var._params)
     if transform is not None and isfunction(transform):
         args, kwargs = transform(*args, **kwargs)
     ret = self.apply(*args, **kwargs)   # ret carries params of its own --> these params have been added in this block
     possiblechildren = recurfilter(lambda x: isinstance(x, Var), ret)
     for p in possiblechildren:
         p.push_params(paramstopush)
         p.push_params(self.ownparams)
     return ret
コード例 #7
0
ファイル: base.py プロジェクト: nilesh-c/teafacto
 def wrapply(self, *args, **kwargs):  # is this multi-output compatible?
     transform = None
     if "transform" in kwargs and kwargs["transform"] is not None:
         transform = kwargs.pop("transform")
     paramstopush = set(
     )  # params to transfer from input vars to output vars
     for var in recurfilter(lambda x: isinstance(x, Var),
                            kwargs) + recurfilter(
                                lambda x: isinstance(x, Var), args):
         paramstopush.update(var._params)
     if transform is not None and isfunction(transform):
         args, kwargs = transform(*args, **kwargs)
     ret = self.apply(
         *args, **kwargs
     )  # ret carries params of its own --> these params have been added in this block
     possiblechildren = recurfilter(lambda x: isinstance(x, Var), ret)
     for p in possiblechildren:
         p.push_params(paramstopush)
         p.push_params(self.ownparams)
     return ret
コード例 #8
0
ファイル: base.py プロジェクト: nilesh-c/teafacto
 def transform(self, f):
     assert (isfunction(f))
     self.transf = f if f is not None and isfunction(
         f) else self.transf
     return self
コード例 #9
0
ファイル: base.py プロジェクト: nilesh-c/teafacto
 def init(self, arg, *args, **kwargs):
     if isstring(arg):
         assert hasattr(self, arg)
         return getattr(self, arg)(*args, **kwargs)
     elif isfunction(arg):
         return self._init_helper(arg)
コード例 #10
0
ファイル: base.py プロジェクト: harsh9t/teafacto
 def init(self, arg, *args, **kwargs):
     if isstring(arg):
         assert hasattr(self, arg)
         return getattr(self, arg)(*args, **kwargs)
     elif isfunction(arg):
         return self._init_helper(arg)
コード例 #11
0
ファイル: base.py プロジェクト: lukovnikov/teafacto
 def transform(self, f):
     assert(isfunction(f))
     self.transf = f if f is not None and isfunction(f) else self.transf
     return self