def evalu(rdnn, ddat, dset): cost, preds = rdnn.predict(ddat) preds = [p.argmax(axis=-1).flatten() for b in preds for p in b] correct = sum(np.sum(np.array(sent['lseq']) == pred) for sent, pred in zip(dset,preds)) total = sum(len(p) for p in preds) cerr = 1-(correct/total) gold_labels = [] pred_labels = [] for sent, pred in zip(dset,preds): ls = get_ls(sent['wiseq'],pred) gold_labels.extend([sent['ls'][ii] for ii, interested in enumerate(sent['ii']) if interested]) pred_labels.extend([ls[ii] for ii, interested in enumerate(sent['ii']) if interested]) p, r, f = evaluate_system.evaluateIdentifier(gold_labels, pred_labels) return [cost, cerr, p, r, f]
def evalu(dset, yhat): # slens = [len(sent['ls']) for sent in dset] slens = [sum(sent['ii']) for sent in dset] offset = 0 preds = [] for slen in slens: preds.append(yhat[offset:offset+slen]) offset+=slen assert len(preds) == len(dset) gold_labels = [] pred_labels = [] for sent, pred in zip(dset,preds): gold_labels.extend([sent['ls'][ii] for ii, interested in enumerate(sent['ii']) if interested]) # pred_labels.extend([pred[ii] for ii, interested in enumerate(sent['ii']) if interested]) pred_labels.extend(pred) logging.debug(tabulate(confusion_matrix(np.array(gold_labels), np.array(pred_labels)), headers=[0,1])) p, r, f = evaluate_system.evaluateIdentifier(gold_labels, pred_labels) return p,r,f