def __init__(self, numchars=256, charembdim=50, charemb=None, charinnerdim=100, numwords=1000, wordembdim=100, wordemb=None, wordinnerdim=200, maskid=None, bidir=False, returnall=False, **kw): # char level inits if charemb is None: charemb = VectorEmbed(indim=numchars, dim=charembdim) else: charemb = charemb charembdim = charemb.outdim if not issequence(charinnerdim): charinnerdim = [charinnerdim] charlayers, lastchardim = MakeRNU.make(charembdim, charinnerdim, bidir=bidir) charenc = SeqEncoder(charemb, *charlayers).maskoptions(maskid, MaskMode.AUTO) # word level inits if wordemb is None: wordemb = VectorEmbed(indim=numwords, dim=wordembdim) elif wordemb is False: wordemb = None wordembdim = 0 else: wordemb = wordemb wordembdim = wordemb.outdim if not issequence(wordinnerdim): wordinnerdim = [wordinnerdim] wordlayers, outdim = MakeRNU.make(wordembdim + lastchardim, wordinnerdim, bidir=bidir) wordenc = SeqEncoder(None, *wordlayers).maskoptions(MaskMode.NONE) if returnall: wordenc.all_outputs() self.outdim = outdim super(WordCharSentEnc, self).__init__(l1enc=charenc, l2emb=wordemb, l2enc=wordenc, maskid=maskid)
def __init__(self, indim=400, inpembdim=50, inpemb=None, innerdim=100, maskid=None, bidir=False, **kw): if inpemb is None: if inpembdim is None: inpemb = IdxToOneHot(indim) inpembdim = indim else: inpemb = VectorEmbed(indim=indim, dim=inpembdim) else: inpembdim = inpemb.outdim lastdim = inpembdim if not issequence(innerdim): # single encoder innerdim = [innerdim] rnns = [] for innerdimi in innerdim: if not issequence(innerdimi): # one layer in encoder innerdimi = [innerdimi] rnn, lastdim = MakeRNU.make(lastdim, innerdimi, bidir=bidir) rnns.append(rnn) self.outdim = lastdim super(SimpleSeqStar2Vec, self).__init__(inpemb, *rnns, maskid=maskid, **kw)
def makernu(inpembdim, innerdim, bidir=False, zoneout=False, dropout_h=False, dropout_in=False): return MakeRNU.make(inpembdim, innerdim, bidir=bidir, zoneout=zoneout, dropout_h=dropout_h, dropout_in=dropout_in)
def makernu(inpembdim, innerdim, bidir=False): return MakeRNU.make(inpembdim, innerdim, bidir=bidir)
def getrnnfrominnerdim(self, innerdim, rnu=GRU): assert (len(innerdim) >= 2) initdim = innerdim[0] otherdim = innerdim[1:] return MakeRNU.make(initdim, otherdim, rnu=rnu)[0]
def makernu(inpembdim, innerdim, bidir=False): return MakeRNU.make(inpembdim, innerdim, bidir=bidir)
def getrnnfrominnerdim(self, innerdim, rnu=GRU): assert(len(innerdim) >= 2) initdim = innerdim[0] otherdim = innerdim[1:] return MakeRNU.make(initdim, otherdim, rnu=rnu)[0]