Beispiel #1
0
    def __init__(self, model_file):
        dat = np.load(model_file)
        args = dat['argsd'].tolist()
        rnn_param_values = dat['rnn_param_values'].tolist()

        trn, dev, tst = get_sents(args['lang'])

        repclass = getattr(rep, 'Rep' + args['rep'])
        repobj = repclass()
        for d in (trn, dev, tst):
            for sent in d:
                sent.update({
                    'cseq': repobj.get_cseq(sent),
                    'wiseq': repobj.get_wiseq(sent),
                    'tseq': repobj.get_tseq(sent)
                })

        trn = sorted(trn, key=lambda sent: len(sent['cseq']))
        dev = sorted(dev, key=lambda sent: len(sent['cseq']))
        tst = sorted(tst, key=lambda sent: len(sent['cseq']))

        self.feat = featchar.Feat(args['feat'])
        self.feat.fit(trn, dev, tst)

        self.vdecoder = decoder.ViterbiDecoder(trn, self.feat)

        batcher = Batcher(args['n_batch'], self.feat)  # batch size 1
        devdat = batcher.get_batches(dev)
        tstdat = batcher.get_batches(tst)

        rdnn = RNN(self.feat.NC, self.feat.NF, args)
        cost, dev_predictions = rdnn.predict(devdat)
        cost, tst_predictions = rdnn.predict(tstdat)

        self.predictions = {}
        self.predictions['dev'] = dev_predictions
        self.predictions['tst'] = tst_predictions

        self.dset = {}
        self.dset['dev'] = dev
        self.dset['tst'] = tst
        self.repobj = repobj

        self.reporter = exper.Reporter(self.feat, rep.get_ts_bio)

        print rdnn.l_soft_out.get_params()
        print rdnn.blayers[0][0].get_params()
        params = lasagne.layers.get_all_param_values(rdnn.layers[-1])
        print map(np.shape, params)
        lasagne.layers.set_all_param_values(rdnn.layers[-1],
                                            rnn_param_values[:len(params)])

        logger = logging.getLogger()
        logger.setLevel(logging.INFO)
        shandler = logging.StreamHandler()
        shandler.setLevel(logging.INFO)
        logger.addHandler(shandler)

        validator = Validator(trn, dev, tst, batcher, self.reporter)
        validator.validate(rdnn, args, self.vdecoder)
Beispiel #2
0
 def __init__(self, dset, feat):
     self.feat = feat
     self.tfunc = rep.get_ts_bio if dset.level == 'char' else lambda x, y: y
     # self.tdecoder = decoder.ViterbiDecoder(dset.trn, feat) if dset.level == 'char' else decoder.MaxDecoder(dset.trn, feat)
     self.tdecoder = decoder.ViterbiDecoder(
         dset.trn, feat) if dset.level == 'char' else decoder.WDecoder(
             dset.trn, feat)