示例#1
0
    def test_output(self):
        """Test output of running eval_model"""
        class display_output(object):
            def __init__(self):
                self.data = []

            def write(self, s):
                self.data.append(s)

            def __str__(self):
                return "".join(self.data)

        old_out = sys.stdout
        output = display_output()
        try:
            sys.stdout = output
            eval_model(self.opt, self.parser, printargs=False)
        finally:
            # restore sys.stdout
            sys.stdout = old_out

        str_output = str(output)
        self.assertTrue(len(str_output) > 0, "Output is empty")

        # decode the output
        scores = str_output.split("\n---\n")
        for i in range(1, len(scores)):
            score = ast.literal_eval(scores[i])
            # check totals
            self.assertTrue(score['total'] == i,
                            "Total is incorrect")
            # accuracy should be one
            self.assertTrue(score['accuracy'] == 1,
                            "accuracy != 1")
示例#2
0
    def test_output(self):
        """Test output of running eval_model"""
        class display_output(object):
            def __init__(self):
                self.data = []

            def write(self, s):
                self.data.append(s)

            def __str__(self):
                return "".join(self.data)

        old_out = sys.stdout
        output = display_output()
        try:
            sys.stdout = output
            eval_model(self.opt, self.parser, printargs=False)
        finally:
            # restore sys.stdout
            sys.stdout = old_out

        str_output = str(output)
        self.assertTrue(len(str_output) > 0, "Output is empty")

        # decode the output
        scores = str_output.split("\n---\n")
        for i in range(1, len(scores)):
            score = ast.literal_eval(scores[i])
            # check totals
            self.assertTrue(score['total'] == i, "Total is incorrect")
            # accuracy should be one
            self.assertTrue(score['accuracy'] == 1, "accuracy != 1")
示例#3
0
    def test_hogwild_eval(self):
        """Test eval with numthreads > 1 and batchsize in [1,2,3]."""
        parser = setup_args()
        NUM_EXS = 500
        parser.set_defaults(
            task='tasks.repeat:RepeatTeacher:{}'.format(NUM_EXS),
            model='repeat_label',
            datatype='valid',
            num_examples=-1,
            display_examples=False,
        )

        old_out = sys.stdout
        output = display_output()
        try:
            sys.stdout = output
            for nt in [2, 5, 10]:
                parser.set_defaults(numthreads=nt)
                for bs in [1, 2, 3]:
                    parser.set_defaults(batchsize=bs)
                    parser.set_defaults(batch_sort=(bs % 2 == 0))
                    report = eval_model(parser, printargs=False)
                    self.assertEqual(report['total'], NUM_EXS)
        finally:
            # restore sys.stdout
            sys.stdout = old_out
    def test_output(self):
        """Test output of running eval_model"""
        class display_output(object):
            def __init__(self):
                self.data = []

            def write(self, s):
                self.data.append(s)

            def __str__(self):
                return "".join(self.data)

        parser = setup_args()
        parser.set_defaults(
            task='tasks.repeat:RepeatTeacher:10',
            model='repeat_label',
            datatype='valid',
            num_examples=5,
            display_examples=False,
        )

        old_out = sys.stdout
        output = display_output()
        try:
            sys.stdout = output
            opt = parser.parse_args(print_args=False)
            eval_model(opt, print_parser=parser)
        finally:
            # restore sys.stdout
            sys.stdout = old_out

        str_output = str(output)
        self.assertTrue(len(str_output) > 0, "Output is empty")

        # decode the output
        scores = str_output.split("\n---\n")
        for i in range(1, len(scores)):
            score = ast.literal_eval(scores[i])
            # check totals
            self.assertTrue(score['total'] == i, "Total is incorrect")
            # accuracy should be one
            self.assertTrue(score['accuracy'] == 1, "accuracy != 1")
示例#5
0
from download_models import build
from parlai.core.params import ParlaiParser
from examples.eval_model import eval_model
'''Evaluate pre-trained model trained for hits@1 metric
Key-Value Memory Net model trained on personachat using persona 'self'
'''

if __name__ == '__main__':
    parser = ParlaiParser(add_model_args=True)
    parser.add_argument('-n', '--num-examples', default=100000000)
    parser.add_argument('-d', '--display-examples', type='bool', default=False)
    parser.add_argument('-ltim', '--log-every-n-secs', type=float, default=2)
    parser.set_defaults(
        task='personachat:self',
        model='projects.personachat.kvmemnn.kvmemnn:Kvmemnn',
        model_file=
        'models:personachat/kvmemnn/kvmemnn/persona-self_rephraseTrn-True_rephraseTst-False_lr-0.1_esz-500_margin-0.1_tfidf-False_shareEmb-True_hops1_lins0_model',
        datatype='test',
        numthreads=8)
    opt = parser.parse_args()
    # build all profile memory models
    fnames = ['kvmemnn.tgz']
    opt['model_type'] = 'kvmemnn'  # for builder
    build(opt, fnames)

    # add additional model args
    opt['interactive_mode'] = False

    eval_model(parser)
示例#6
0
# Copyright (c) 2017-present, Facebook, Inc.
# All rights reserved.
# This source code is licensed under the BSD-style license found in the
# LICENSE file in the root directory of this source tree. An additional grant
# of patent rights can be found in the PATENTS file in the same directory.
"""Evaluate pre-trained model trained for ppl metric.
This seq2seq model was trained on convai2:self.
"""

from projects.convai2.baselines.download_models import download
from parlai.core.params import ParlaiParser
from examples.eval_model import setup_args, eval_model
from parlai.agents.seq2seq.seq2seq import Seq2seqAgent

if __name__ == '__main__':
    parser = setup_args()
    parser.set_defaults(
        task='convai2:self',
        model='seq2seq',
        model_file=
        'models:convai2/seq2seq/convai2_self_seq2seq_model/convai2_self_seq2seq_model',
        dict_file='models:convai2/seq2seq/dict_convai2_self/dict_convai2_self',
        datatype='valid',
        batchsize=128,
    )
    opt = parser.parse_args()
    download(opt, 'convai2/seq2seq', 'convai2_self_seq2seq_model.tgz')
    download(opt, 'convai2/seq2seq', 'dict_convai2_self')
    eval_model(parser, printargs=False)
示例#7
0
Profile memory model trained on personachat using persona 'self'
Run from ParlAI directory
'''

if __name__ == '__main__':
    parser = ParlaiParser(add_model_args=True)
    parser.add_argument('-n', '--num-examples', default=100000000)
    parser.add_argument('-d', '--display-examples', type='bool', default=False)
    parser.add_argument('-ltim', '--log-every-n-secs', type=float, default=2)
    parser.set_defaults(
        task='personachat:self',
        model='projects.personachat.persona_seq2seq:PersonachatSeqseqAgentSplit',
        model_file='data/models/personachat/profile_memory/profilememory_mem2_reweight_sharelt_encdropout0.2_selfpersona_useall_attn_general_lstm_1024_1_1e-3_0.1',
        datatype='test'
    )
    PersonachatSeqseqAgentSplit.add_cmdline_args(parser)

    opt = parser.parse_args()
    opt['model_type'] = 'profile_memory'
    # build all profile memory models
    fnames = ['profilememory_mem2_reweight_sharelt_encdropout0.2_selfpersona_useall_attn_general_lstm_1024_1_1e-3_0.1',
              'profilememory_learnreweight_sharelt_encdropout0.4_s2s_usepersona_self_useall_attn_general_lstm_1024_1_1e-3_0.1',
              'fulldict.dict']
    build(opt, fnames)

    # add additional model args
    opt['dict_file'] = 'data/models/personachat/profile_memory/fulldict.dict'
    opt['rank_candidates'] = True

    eval_model(opt, parser)