parlai/agents/seq2seq/seq2seq.py

Killed 45 out of 110 mutants

Survived

Survived mutation testing. These mutants show holes in your test suite.

Mutant 97

--- parlai/agents/seq2seq/seq2seq.py
+++ parlai/agents/seq2seq/seq2seq.py
@@ -38,7 +38,7 @@
         """
         Add command-line arguments specifically for this agent.
         """
-        agent = argparser.add_argument_group('Seq2Seq Arguments')
+        agent = argparser.add_argument_group('XXSeq2Seq ArgumentsXX')
         agent.add_argument(
             '-hs',
             '--hiddensize',

Mutant 101

--- parlai/agents/seq2seq/seq2seq.py
+++ parlai/agents/seq2seq/seq2seq.py
@@ -43,7 +43,7 @@
             '-hs',
             '--hiddensize',
             type=int,
-            default=128,
+            default=129,
             help='size of the hidden layers',
         )
         agent.add_argument(

Mutant 102

--- parlai/agents/seq2seq/seq2seq.py
+++ parlai/agents/seq2seq/seq2seq.py
@@ -44,7 +44,7 @@
             '--hiddensize',
             type=int,
             default=128,
-            help='size of the hidden layers',
+            help='XXsize of the hidden layersXX',
         )
         agent.add_argument(
             '-esz',

Mutant 105

--- parlai/agents/seq2seq/seq2seq.py
+++ parlai/agents/seq2seq/seq2seq.py
@@ -50,7 +50,7 @@
             '-esz',
             '--embeddingsize',
             type=int,
-            default=128,
+            default=129,
             help='size of the token embeddings',
         )
         agent.add_argument(

Mutant 106

--- parlai/agents/seq2seq/seq2seq.py
+++ parlai/agents/seq2seq/seq2seq.py
@@ -51,7 +51,7 @@
             '--embeddingsize',
             type=int,
             default=128,
-            help='size of the token embeddings',
+            help='XXsize of the token embeddingsXX',
         )
         agent.add_argument(
             '-nl', '--numlayers', type=int, default=2, help='number of hidden layers'

Mutant 109

--- parlai/agents/seq2seq/seq2seq.py
+++ parlai/agents/seq2seq/seq2seq.py
@@ -54,7 +54,7 @@
             help='size of the token embeddings',
         )
         agent.add_argument(
-            '-nl', '--numlayers', type=int, default=2, help='number of hidden layers'
+            '-nl', '--numlayers', type=int, default=3, help='number of hidden layers'
         )
         agent.add_argument(
             '-dr', '--dropout', type=float, default=0.1, help='dropout rate'

Mutant 110

--- parlai/agents/seq2seq/seq2seq.py
+++ parlai/agents/seq2seq/seq2seq.py
@@ -54,7 +54,7 @@
             help='size of the token embeddings',
         )
         agent.add_argument(
-            '-nl', '--numlayers', type=int, default=2, help='number of hidden layers'
+            '-nl', '--numlayers', type=int, default=2, help='XXnumber of hidden layersXX'
         )
         agent.add_argument(
             '-dr', '--dropout', type=float, default=0.1, help='dropout rate'

Mutant 113

--- parlai/agents/seq2seq/seq2seq.py
+++ parlai/agents/seq2seq/seq2seq.py
@@ -57,7 +57,7 @@
             '-nl', '--numlayers', type=int, default=2, help='number of hidden layers'
         )
         agent.add_argument(
-            '-dr', '--dropout', type=float, default=0.1, help='dropout rate'
+            '-dr', '--dropout', type=float, default=1.1, help='dropout rate'
         )
         agent.add_argument(
             '-bi',

Mutant 114

--- parlai/agents/seq2seq/seq2seq.py
+++ parlai/agents/seq2seq/seq2seq.py
@@ -57,7 +57,7 @@
             '-nl', '--numlayers', type=int, default=2, help='number of hidden layers'
         )
         agent.add_argument(
-            '-dr', '--dropout', type=float, default=0.1, help='dropout rate'
+            '-dr', '--dropout', type=float, default=0.1, help='XXdropout rateXX'
         )
         agent.add_argument(
             '-bi',

Mutant 118

--- parlai/agents/seq2seq/seq2seq.py
+++ parlai/agents/seq2seq/seq2seq.py
@@ -63,7 +63,7 @@
             '-bi',
             '--bidirectional',
             type='bool',
-            default=False,
+            default=True,
             help='whether to encode the context with a ' 'bidirectional rnn',
         )
         agent.add_argument(

Mutant 119

--- parlai/agents/seq2seq/seq2seq.py
+++ parlai/agents/seq2seq/seq2seq.py
@@ -64,7 +64,7 @@
             '--bidirectional',
             type='bool',
             default=False,
-            help='whether to encode the context with a ' 'bidirectional rnn',
+            help='XXwhether to encode the context with a XX' 'bidirectional rnn',
         )
         agent.add_argument(
             '-att',

Mutant 120

--- parlai/agents/seq2seq/seq2seq.py
+++ parlai/agents/seq2seq/seq2seq.py
@@ -64,7 +64,7 @@
             '--bidirectional',
             type='bool',
             default=False,
-            help='whether to encode the context with a ' 'bidirectional rnn',
+            help='whether to encode the context with a ' 'XXbidirectional rnnXX',
         )
         agent.add_argument(
             '-att',

Mutant 123

--- parlai/agents/seq2seq/seq2seq.py
+++ parlai/agents/seq2seq/seq2seq.py
@@ -69,7 +69,7 @@
         agent.add_argument(
             '-att',
             '--attention',
-            default='none',
+            default='XXnoneXX',
             choices=['none', 'concat', 'general', 'dot', 'local'],
             help='Choices: none, concat, general, local. '
             'If set local, also set attention-length. '

Mutant 124

--- parlai/agents/seq2seq/seq2seq.py
+++ parlai/agents/seq2seq/seq2seq.py
@@ -70,7 +70,7 @@
             '-att',
             '--attention',
             default='none',
-            choices=['none', 'concat', 'general', 'dot', 'local'],
+            choices=['XXnoneXX', 'concat', 'general', 'dot', 'local'],
             help='Choices: none, concat, general, local. '
             'If set local, also set attention-length. '
             '(see arxiv.org/abs/1508.04025)',

Mutant 125

--- parlai/agents/seq2seq/seq2seq.py
+++ parlai/agents/seq2seq/seq2seq.py
@@ -70,7 +70,7 @@
             '-att',
             '--attention',
             default='none',
-            choices=['none', 'concat', 'general', 'dot', 'local'],
+            choices=['none', 'XXconcatXX', 'general', 'dot', 'local'],
             help='Choices: none, concat, general, local. '
             'If set local, also set attention-length. '
             '(see arxiv.org/abs/1508.04025)',

Mutant 127

--- parlai/agents/seq2seq/seq2seq.py
+++ parlai/agents/seq2seq/seq2seq.py
@@ -70,7 +70,7 @@
             '-att',
             '--attention',
             default='none',
-            choices=['none', 'concat', 'general', 'dot', 'local'],
+            choices=['none', 'concat', 'general', 'XXdotXX', 'local'],
             help='Choices: none, concat, general, local. '
             'If set local, also set attention-length. '
             '(see arxiv.org/abs/1508.04025)',

Mutant 128

--- parlai/agents/seq2seq/seq2seq.py
+++ parlai/agents/seq2seq/seq2seq.py
@@ -70,7 +70,7 @@
             '-att',
             '--attention',
             default='none',
-            choices=['none', 'concat', 'general', 'dot', 'local'],
+            choices=['none', 'concat', 'general', 'dot', 'XXlocalXX'],
             help='Choices: none, concat, general, local. '
             'If set local, also set attention-length. '
             '(see arxiv.org/abs/1508.04025)',

Mutant 129

--- parlai/agents/seq2seq/seq2seq.py
+++ parlai/agents/seq2seq/seq2seq.py
@@ -71,7 +71,7 @@
             '--attention',
             default='none',
             choices=['none', 'concat', 'general', 'dot', 'local'],
-            help='Choices: none, concat, general, local. '
+            help='XXChoices: none, concat, general, local. XX'
             'If set local, also set attention-length. '
             '(see arxiv.org/abs/1508.04025)',
         )

Mutant 132

--- parlai/agents/seq2seq/seq2seq.py
+++ parlai/agents/seq2seq/seq2seq.py
@@ -78,7 +78,7 @@
         agent.add_argument(
             '-attl',
             '--attention-length',
-            default=48,
+            default=49,
             type=int,
             help='Length of local attention.',
         )

Mutant 133

--- parlai/agents/seq2seq/seq2seq.py
+++ parlai/agents/seq2seq/seq2seq.py
@@ -80,7 +80,7 @@
             '--attention-length',
             default=48,
             type=int,
-            help='Length of local attention.',
+            help='XXLength of local attention.XX',
         )
         agent.add_argument(
             '--attention-time',

Mutant 136

--- parlai/agents/seq2seq/seq2seq.py
+++ parlai/agents/seq2seq/seq2seq.py
@@ -85,7 +85,7 @@
         agent.add_argument(
             '--attention-time',
             default='post',
-            choices=['pre', 'post'],
+            choices=['XXpreXX', 'post'],
             help='Whether to apply attention before or after ' 'decoding.',
         )
         agent.add_argument(

Mutant 137

--- parlai/agents/seq2seq/seq2seq.py
+++ parlai/agents/seq2seq/seq2seq.py
@@ -85,7 +85,7 @@
         agent.add_argument(
             '--attention-time',
             default='post',
-            choices=['pre', 'post'],
+            choices=['pre', 'XXpostXX'],
             help='Whether to apply attention before or after ' 'decoding.',
         )
         agent.add_argument(

Mutant 138

--- parlai/agents/seq2seq/seq2seq.py
+++ parlai/agents/seq2seq/seq2seq.py
@@ -86,7 +86,7 @@
             '--attention-time',
             default='post',
             choices=['pre', 'post'],
-            help='Whether to apply attention before or after ' 'decoding.',
+            help='XXWhether to apply attention before or after XX' 'decoding.',
         )
         agent.add_argument(
             '-rnn',

Mutant 139

--- parlai/agents/seq2seq/seq2seq.py
+++ parlai/agents/seq2seq/seq2seq.py
@@ -86,7 +86,7 @@
             '--attention-time',
             default='post',
             choices=['pre', 'post'],
-            help='Whether to apply attention before or after ' 'decoding.',
+            help='Whether to apply attention before or after ' 'XXdecoding.XX',
         )
         agent.add_argument(
             '-rnn',

Mutant 142

--- parlai/agents/seq2seq/seq2seq.py
+++ parlai/agents/seq2seq/seq2seq.py
@@ -91,7 +91,7 @@
         agent.add_argument(
             '-rnn',
             '--rnn-class',
-            default='lstm',
+            default='XXlstmXX',
             choices=Seq2seq.RNN_OPTS.keys(),
             help='Choose between different types of RNNs.',
         )

Mutant 143

--- parlai/agents/seq2seq/seq2seq.py
+++ parlai/agents/seq2seq/seq2seq.py
@@ -93,7 +93,7 @@
             '--rnn-class',
             default='lstm',
             choices=Seq2seq.RNN_OPTS.keys(),
-            help='Choose between different types of RNNs.',
+            help='XXChoose between different types of RNNs.XX',
         )
         agent.add_argument(
             '-dec',

Mutant 146

--- parlai/agents/seq2seq/seq2seq.py
+++ parlai/agents/seq2seq/seq2seq.py
@@ -98,7 +98,7 @@
         agent.add_argument(
             '-dec',
             '--decoder',
-            default='same',
+            default='XXsameXX',
             choices=['same', 'shared'],
             help='Choose between different decoder modules. '
             'Default "same" uses same class as encoder, '

Mutant 147

--- parlai/agents/seq2seq/seq2seq.py
+++ parlai/agents/seq2seq/seq2seq.py
@@ -99,7 +99,7 @@
             '-dec',
             '--decoder',
             default='same',
-            choices=['same', 'shared'],
+            choices=['XXsameXX', 'shared'],
             help='Choose between different decoder modules. '
             'Default "same" uses same class as encoder, '
             'while "shared" also uses the same weights. '

Mutant 148

--- parlai/agents/seq2seq/seq2seq.py
+++ parlai/agents/seq2seq/seq2seq.py
@@ -99,7 +99,7 @@
             '-dec',
             '--decoder',
             default='same',
-            choices=['same', 'shared'],
+            choices=['same', 'XXsharedXX'],
             help='Choose between different decoder modules. '
             'Default "same" uses same class as encoder, '
             'while "shared" also uses the same weights. '

Mutant 149

--- parlai/agents/seq2seq/seq2seq.py
+++ parlai/agents/seq2seq/seq2seq.py
@@ -100,7 +100,7 @@
             '--decoder',
             default='same',
             choices=['same', 'shared'],
-            help='Choose between different decoder modules. '
+            help='XXChoose between different decoder modules. XX'
             'Default "same" uses same class as encoder, '
             'while "shared" also uses the same weights. '
             'Note that shared disabled some encoder '

Mutant 152

--- parlai/agents/seq2seq/seq2seq.py
+++ parlai/agents/seq2seq/seq2seq.py
@@ -109,7 +109,7 @@
         agent.add_argument(
             '-lt',
             '--lookuptable',
-            default='unique',
+            default='XXuniqueXX',
             choices=['unique', 'enc_dec', 'dec_out', 'all'],
             help='The encoder, decoder, and output modules can '
             'share weights, or not. '

Mutant 153

--- parlai/agents/seq2seq/seq2seq.py
+++ parlai/agents/seq2seq/seq2seq.py
@@ -110,7 +110,7 @@
             '-lt',
             '--lookuptable',
             default='unique',
-            choices=['unique', 'enc_dec', 'dec_out', 'all'],
+            choices=['XXuniqueXX', 'enc_dec', 'dec_out', 'all'],
             help='The encoder, decoder, and output modules can '
             'share weights, or not. '
             'Unique has independent embeddings for each. '

Mutant 154

--- parlai/agents/seq2seq/seq2seq.py
+++ parlai/agents/seq2seq/seq2seq.py
@@ -110,7 +110,7 @@
             '-lt',
             '--lookuptable',
             default='unique',
-            choices=['unique', 'enc_dec', 'dec_out', 'all'],
+            choices=['unique', 'XXenc_decXX', 'dec_out', 'all'],
             help='The encoder, decoder, and output modules can '
             'share weights, or not. '
             'Unique has independent embeddings for each. '

Mutant 155

--- parlai/agents/seq2seq/seq2seq.py
+++ parlai/agents/seq2seq/seq2seq.py
@@ -110,7 +110,7 @@
             '-lt',
             '--lookuptable',
             default='unique',
-            choices=['unique', 'enc_dec', 'dec_out', 'all'],
+            choices=['unique', 'enc_dec', 'XXdec_outXX', 'all'],
             help='The encoder, decoder, and output modules can '
             'share weights, or not. '
             'Unique has independent embeddings for each. '

Mutant 157

--- parlai/agents/seq2seq/seq2seq.py
+++ parlai/agents/seq2seq/seq2seq.py
@@ -111,7 +111,7 @@
             '--lookuptable',
             default='unique',
             choices=['unique', 'enc_dec', 'dec_out', 'all'],
-            help='The encoder, decoder, and output modules can '
+            help='XXThe encoder, decoder, and output modules can XX'
             'share weights, or not. '
             'Unique has independent embeddings for each. '
             'Enc_dec shares the embedding for the encoder '

Mutant 161

--- parlai/agents/seq2seq/seq2seq.py
+++ parlai/agents/seq2seq/seq2seq.py
@@ -125,7 +125,7 @@
             '--numsoftmax',
             default=1,
             type=int,
-            help='default 1, if greater then uses mixture of '
+            help='XXdefault 1, if greater then uses mixture of XX'
             'softmax (see arxiv.org/abs/1711.03953).',
         )
         agent.add_argument(

Mutant 165

--- parlai/agents/seq2seq/seq2seq.py
+++ parlai/agents/seq2seq/seq2seq.py
@@ -133,7 +133,7 @@
             '--input-dropout',
             type=float,
             default=0.0,
-            help='Probability of replacing tokens with UNK in training.',
+            help='XXProbability of replacing tokens with UNK in training.XX',
         )
 
         super(Seq2seqAgent, cls).add_cmdline_args(argparser)

Mutant 166

--- parlai/agents/seq2seq/seq2seq.py
+++ parlai/agents/seq2seq/seq2seq.py
@@ -144,7 +144,7 @@
         Set up model.
         """
         super().__init__(opt, shared)
-        self.id = 'Seq2Seq'
+        self.id = 'XXSeq2SeqXX'
 
     def build_model(self, states=None):
         """

Mutant 167

--- parlai/agents/seq2seq/seq2seq.py
+++ parlai/agents/seq2seq/seq2seq.py
@@ -144,7 +144,7 @@
         Set up model.
         """
         super().__init__(opt, shared)
-        self.id = 'Seq2Seq'
+        self.id = None
 
     def build_model(self, states=None):
         """

Mutant 174

--- parlai/agents/seq2seq/seq2seq.py
+++ parlai/agents/seq2seq/seq2seq.py
@@ -163,7 +163,7 @@
             start_idx=self.START_IDX,
             end_idx=self.END_IDX,
             unknown_idx=self.dict[self.dict.unk_token],
-            longest_label=states.get('longest_label', 1),
+            longest_label=states.get('XXlongest_labelXX', 1),
             **kwargs,
         )
 

Mutant 175

--- parlai/agents/seq2seq/seq2seq.py
+++ parlai/agents/seq2seq/seq2seq.py
@@ -163,7 +163,7 @@
             start_idx=self.START_IDX,
             end_idx=self.END_IDX,
             unknown_idx=self.dict[self.dict.unk_token],
-            longest_label=states.get('longest_label', 1),
+            longest_label=states.get('longest_label', 2),
             **kwargs,
         )
 

Mutant 176

--- parlai/agents/seq2seq/seq2seq.py
+++ parlai/agents/seq2seq/seq2seq.py
@@ -167,7 +167,7 @@
             **kwargs,
         )
 
-        if opt.get('dict_tokenizer') == 'bpe' and opt['embedding_type'] != 'random':
+        if opt.get('XXdict_tokenizerXX') == 'bpe' and opt['embedding_type'] != 'random':
             print('skipping preinitialization of embeddings for bpe')
         elif not states and opt['embedding_type'] != 'random':
             # `not states`: only set up embeddings if not loading model

Mutant 177

--- parlai/agents/seq2seq/seq2seq.py
+++ parlai/agents/seq2seq/seq2seq.py
@@ -167,7 +167,7 @@
             **kwargs,
         )
 
-        if opt.get('dict_tokenizer') == 'bpe' and opt['embedding_type'] != 'random':
+        if opt.get('dict_tokenizer') != 'bpe' and opt['embedding_type'] != 'random':
             print('skipping preinitialization of embeddings for bpe')
         elif not states and opt['embedding_type'] != 'random':
             # `not states`: only set up embeddings if not loading model

Mutant 178

--- parlai/agents/seq2seq/seq2seq.py
+++ parlai/agents/seq2seq/seq2seq.py
@@ -167,7 +167,7 @@
             **kwargs,
         )
 
-        if opt.get('dict_tokenizer') == 'bpe' and opt['embedding_type'] != 'random':
+        if opt.get('dict_tokenizer') == 'XXbpeXX' and opt['embedding_type'] != 'random':
             print('skipping preinitialization of embeddings for bpe')
         elif not states and opt['embedding_type'] != 'random':
             # `not states`: only set up embeddings if not loading model

Mutant 179

--- parlai/agents/seq2seq/seq2seq.py
+++ parlai/agents/seq2seq/seq2seq.py
@@ -167,7 +167,7 @@
             **kwargs,
         )
 
-        if opt.get('dict_tokenizer') == 'bpe' and opt['embedding_type'] != 'random':
+        if opt.get('dict_tokenizer') == 'bpe' and opt['XXembedding_typeXX'] != 'random':
             print('skipping preinitialization of embeddings for bpe')
         elif not states and opt['embedding_type'] != 'random':
             # `not states`: only set up embeddings if not loading model

Mutant 180

--- parlai/agents/seq2seq/seq2seq.py
+++ parlai/agents/seq2seq/seq2seq.py
@@ -167,7 +167,7 @@
             **kwargs,
         )
 
-        if opt.get('dict_tokenizer') == 'bpe' and opt['embedding_type'] != 'random':
+        if opt.get('dict_tokenizer') == 'bpe' and opt['embedding_type'] == 'random':
             print('skipping preinitialization of embeddings for bpe')
         elif not states and opt['embedding_type'] != 'random':
             # `not states`: only set up embeddings if not loading model

Mutant 181

--- parlai/agents/seq2seq/seq2seq.py
+++ parlai/agents/seq2seq/seq2seq.py
@@ -167,7 +167,7 @@
             **kwargs,
         )
 
-        if opt.get('dict_tokenizer') == 'bpe' and opt['embedding_type'] != 'random':
+        if opt.get('dict_tokenizer') == 'bpe' and opt['embedding_type'] != 'XXrandomXX':
             print('skipping preinitialization of embeddings for bpe')
         elif not states and opt['embedding_type'] != 'random':
             # `not states`: only set up embeddings if not loading model

Mutant 182

--- parlai/agents/seq2seq/seq2seq.py
+++ parlai/agents/seq2seq/seq2seq.py
@@ -167,7 +167,7 @@
             **kwargs,
         )
 
-        if opt.get('dict_tokenizer') == 'bpe' and opt['embedding_type'] != 'random':
+        if opt.get('dict_tokenizer') == 'bpe' or opt['embedding_type'] != 'random':
             print('skipping preinitialization of embeddings for bpe')
         elif not states and opt['embedding_type'] != 'random':
             # `not states`: only set up embeddings if not loading model

Mutant 183

--- parlai/agents/seq2seq/seq2seq.py
+++ parlai/agents/seq2seq/seq2seq.py
@@ -169,7 +169,7 @@
 
         if opt.get('dict_tokenizer') == 'bpe' and opt['embedding_type'] != 'random':
             print('skipping preinitialization of embeddings for bpe')
-        elif not states and opt['embedding_type'] != 'random':
+        elif  states and opt['embedding_type'] != 'random':
             # `not states`: only set up embeddings if not loading model
             self._copy_embeddings(model.decoder.lt.weight, opt['embedding_type'])
             if opt['lookuptable'] in ['unique', 'dec_out']:

Mutant 185

--- parlai/agents/seq2seq/seq2seq.py
+++ parlai/agents/seq2seq/seq2seq.py
@@ -169,7 +169,7 @@
 
         if opt.get('dict_tokenizer') == 'bpe' and opt['embedding_type'] != 'random':
             print('skipping preinitialization of embeddings for bpe')
-        elif not states and opt['embedding_type'] != 'random':
+        elif not states and opt['embedding_type'] == 'random':
             # `not states`: only set up embeddings if not loading model
             self._copy_embeddings(model.decoder.lt.weight, opt['embedding_type'])
             if opt['lookuptable'] in ['unique', 'dec_out']:

Mutant 186

--- parlai/agents/seq2seq/seq2seq.py
+++ parlai/agents/seq2seq/seq2seq.py
@@ -169,7 +169,7 @@
 
         if opt.get('dict_tokenizer') == 'bpe' and opt['embedding_type'] != 'random':
             print('skipping preinitialization of embeddings for bpe')
-        elif not states and opt['embedding_type'] != 'random':
+        elif not states and opt['embedding_type'] != 'XXrandomXX':
             # `not states`: only set up embeddings if not loading model
             self._copy_embeddings(model.decoder.lt.weight, opt['embedding_type'])
             if opt['lookuptable'] in ['unique', 'dec_out']:

Mutant 187

--- parlai/agents/seq2seq/seq2seq.py
+++ parlai/agents/seq2seq/seq2seq.py
@@ -169,7 +169,7 @@
 
         if opt.get('dict_tokenizer') == 'bpe' and opt['embedding_type'] != 'random':
             print('skipping preinitialization of embeddings for bpe')
-        elif not states and opt['embedding_type'] != 'random':
+        elif not states or opt['embedding_type'] != 'random':
             # `not states`: only set up embeddings if not loading model
             self._copy_embeddings(model.decoder.lt.weight, opt['embedding_type'])
             if opt['lookuptable'] in ['unique', 'dec_out']:

Mutant 189

--- parlai/agents/seq2seq/seq2seq.py
+++ parlai/agents/seq2seq/seq2seq.py
@@ -182,7 +182,7 @@
             # set loaded states if applicable
             model.load_state_dict(states['model'])
 
-        if opt['embedding_type'].endswith('fixed'):
+        if opt['embedding_type'].endswith('XXfixedXX'):
             print('Seq2seq: fixing embedding weights.')
             model.decoder.lt.weight.requires_grad = False
             model.encoder.lt.weight.requires_grad = False

Mutant 190

--- parlai/agents/seq2seq/seq2seq.py
+++ parlai/agents/seq2seq/seq2seq.py
@@ -193,7 +193,7 @@
 
     def build_criterion(self):
         # set up criteria
-        if self.opt.get('numsoftmax', 1) > 1:
+        if self.opt.get('XXnumsoftmaxXX', 1) > 1:
             return nn.NLLLoss(ignore_index=self.NULL_IDX, reduction='none')
         else:
             return nn.CrossEntropyLoss(ignore_index=self.NULL_IDX, reduction='none')

Mutant 191

--- parlai/agents/seq2seq/seq2seq.py
+++ parlai/agents/seq2seq/seq2seq.py
@@ -193,7 +193,7 @@
 
     def build_criterion(self):
         # set up criteria
-        if self.opt.get('numsoftmax', 1) > 1:
+        if self.opt.get('numsoftmax', 2) > 1:
             return nn.NLLLoss(ignore_index=self.NULL_IDX, reduction='none')
         else:
             return nn.CrossEntropyLoss(ignore_index=self.NULL_IDX, reduction='none')

Mutant 192

--- parlai/agents/seq2seq/seq2seq.py
+++ parlai/agents/seq2seq/seq2seq.py
@@ -193,7 +193,7 @@
 
     def build_criterion(self):
         # set up criteria
-        if self.opt.get('numsoftmax', 1) > 1:
+        if self.opt.get('numsoftmax', 1) >= 1:
             return nn.NLLLoss(ignore_index=self.NULL_IDX, reduction='none')
         else:
             return nn.CrossEntropyLoss(ignore_index=self.NULL_IDX, reduction='none')

Mutant 193

--- parlai/agents/seq2seq/seq2seq.py
+++ parlai/agents/seq2seq/seq2seq.py
@@ -193,7 +193,7 @@
 
     def build_criterion(self):
         # set up criteria
-        if self.opt.get('numsoftmax', 1) > 1:
+        if self.opt.get('numsoftmax', 1) > 2:
             return nn.NLLLoss(ignore_index=self.NULL_IDX, reduction='none')
         else:
             return nn.CrossEntropyLoss(ignore_index=self.NULL_IDX, reduction='none')

Mutant 196

--- parlai/agents/seq2seq/seq2seq.py
+++ parlai/agents/seq2seq/seq2seq.py
@@ -212,7 +212,7 @@
         Overriden to include longest_label
         """
         states = super().state_dict()
-        if hasattr(self.model, 'module'):
+        if hasattr(self.model, 'XXmoduleXX'):
             states['longest_label'] = self.model.module.longest_label
         else:
             states['longest_label'] = self.model.longest_label

Mutant 197

--- parlai/agents/seq2seq/seq2seq.py
+++ parlai/agents/seq2seq/seq2seq.py
@@ -215,7 +215,7 @@
         if hasattr(self.model, 'module'):
             states['longest_label'] = self.model.module.longest_label
         else:
-            states['longest_label'] = self.model.longest_label
+            states['XXlongest_labelXX'] = self.model.longest_label
 
         return states
 

Mutant 199

--- parlai/agents/seq2seq/seq2seq.py
+++ parlai/agents/seq2seq/seq2seq.py
@@ -223,7 +223,7 @@
         """
         Return opt and model states.
         """
-        states = torch.load(path, map_location=lambda cpu, _: cpu)
+        states = torch.load(path, map_location=lambda cpu, _: None)
         # set loaded states if applicable
         self.model.load_state_dict(states['model'])
         if 'longest_label' in states:

Mutant 202

--- parlai/agents/seq2seq/seq2seq.py
+++ parlai/agents/seq2seq/seq2seq.py
@@ -226,7 +226,7 @@
         states = torch.load(path, map_location=lambda cpu, _: cpu)
         # set loaded states if applicable
         self.model.load_state_dict(states['model'])
-        if 'longest_label' in states:
+        if 'XXlongest_labelXX' in states:
             self.model.longest_label = states['longest_label']
         return states
 

Mutant 203

--- parlai/agents/seq2seq/seq2seq.py
+++ parlai/agents/seq2seq/seq2seq.py
@@ -226,7 +226,7 @@
         states = torch.load(path, map_location=lambda cpu, _: cpu)
         # set loaded states if applicable
         self.model.load_state_dict(states['model'])
-        if 'longest_label' in states:
+        if 'longest_label' not in states:
             self.model.longest_label = states['longest_label']
         return states
 

Suspicious

Mutants that made the test suite take longer, but otherwise seemed ok

Mutant 194

--- parlai/agents/seq2seq/seq2seq.py
+++ parlai/agents/seq2seq/seq2seq.py
@@ -196,7 +196,7 @@
         if self.opt.get('numsoftmax', 1) > 1:
             return nn.NLLLoss(ignore_index=self.NULL_IDX, reduction='none')
         else:
-            return nn.CrossEntropyLoss(ignore_index=self.NULL_IDX, reduction='none')
+            return nn.CrossEntropyLoss(ignore_index=self.NULL_IDX, reduction='XXnoneXX')
 
     def batchify(self, *args, **kwargs):
         """

Mutant 198

--- parlai/agents/seq2seq/seq2seq.py
+++ parlai/agents/seq2seq/seq2seq.py
@@ -215,7 +215,7 @@
         if hasattr(self.model, 'module'):
             states['longest_label'] = self.model.module.longest_label
         else:
-            states['longest_label'] = self.model.longest_label
+            states['longest_label'] = None
 
         return states
 

Mutant 205

--- parlai/agents/seq2seq/seq2seq.py
+++ parlai/agents/seq2seq/seq2seq.py
@@ -227,7 +227,7 @@
         # set loaded states if applicable
         self.model.load_state_dict(states['model'])
         if 'longest_label' in states:
-            self.model.longest_label = states['longest_label']
+            self.model.longest_label = None
         return states
 
     def is_valid(self, obs):