parlai/agents/memnn/memnn.py

Killed 56 out of 114 mutants

Survived

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

Mutant 1

--- parlai/agents/memnn/memnn.py
+++ parlai/agents/memnn/memnn.py
@@ -24,7 +24,6 @@
     - 'adam' seems to work very poorly compared to 'sgd' for hogwild training
     """
 
-    @staticmethod
     def add_cmdline_args(argparser):
         arg_group = argparser.add_argument_group('MemNN Arguments')
         arg_group.add_argument(

Mutant 2

--- parlai/agents/memnn/memnn.py
+++ parlai/agents/memnn/memnn.py
@@ -26,7 +26,7 @@
 
     @staticmethod
     def add_cmdline_args(argparser):
-        arg_group = argparser.add_argument_group('MemNN Arguments')
+        arg_group = argparser.add_argument_group('XXMemNN ArgumentsXX')
         arg_group.add_argument(
             '-esz',
             '--embedding-size',

Mutant 6

--- parlai/agents/memnn/memnn.py
+++ parlai/agents/memnn/memnn.py
@@ -31,7 +31,7 @@
             '-esz',
             '--embedding-size',
             type=int,
-            default=128,
+            default=129,
             help='size of token embeddings',
         )
         arg_group.add_argument(

Mutant 7

--- parlai/agents/memnn/memnn.py
+++ parlai/agents/memnn/memnn.py
@@ -32,7 +32,7 @@
             '--embedding-size',
             type=int,
             default=128,
-            help='size of token embeddings',
+            help='XXsize of token embeddingsXX',
         )
         arg_group.add_argument(
             '-hops', '--hops', type=int, default=3, help='number of memory hops'

Mutant 10

--- parlai/agents/memnn/memnn.py
+++ parlai/agents/memnn/memnn.py
@@ -35,7 +35,7 @@
             help='size of token embeddings',
         )
         arg_group.add_argument(
-            '-hops', '--hops', type=int, default=3, help='number of memory hops'
+            '-hops', '--hops', type=int, default=4, help='number of memory hops'
         )
         arg_group.add_argument(
             '--memsize',

Mutant 11

--- parlai/agents/memnn/memnn.py
+++ parlai/agents/memnn/memnn.py
@@ -35,7 +35,7 @@
             help='size of token embeddings',
         )
         arg_group.add_argument(
-            '-hops', '--hops', type=int, default=3, help='number of memory hops'
+            '-hops', '--hops', type=int, default=3, help='XXnumber of memory hopsXX'
         )
         arg_group.add_argument(
             '--memsize',

Mutant 13

--- parlai/agents/memnn/memnn.py
+++ parlai/agents/memnn/memnn.py
@@ -40,7 +40,7 @@
         arg_group.add_argument(
             '--memsize',
             type=int,
-            default=32,
+            default=33,
             help='size of memory, set to 0 for "nomemnn" model which just '
             'embeds query and candidates and picks most similar candidate',
         )

Mutant 14

--- parlai/agents/memnn/memnn.py
+++ parlai/agents/memnn/memnn.py
@@ -41,7 +41,7 @@
             '--memsize',
             type=int,
             default=32,
-            help='size of memory, set to 0 for "nomemnn" model which just '
+            help='XXsize of memory, set to 0 for "nomemnn" model which just XX'
             'embeds query and candidates and picks most similar candidate',
         )
         arg_group.add_argument(

Mutant 18

--- parlai/agents/memnn/memnn.py
+++ parlai/agents/memnn/memnn.py
@@ -48,7 +48,7 @@
             '-tf',
             '--time-features',
             type='bool',
-            default=True,
+            default=False,
             help='use time features for memory embeddings',
         )
         arg_group.add_argument(

Mutant 19

--- parlai/agents/memnn/memnn.py
+++ parlai/agents/memnn/memnn.py
@@ -49,7 +49,7 @@
             '--time-features',
             type='bool',
             default=True,
-            help='use time features for memory embeddings',
+            help='XXuse time features for memory embeddingsXX',
         )
         arg_group.add_argument(
             '-pe',

Mutant 23

--- parlai/agents/memnn/memnn.py
+++ parlai/agents/memnn/memnn.py
@@ -55,7 +55,7 @@
             '-pe',
             '--position-encoding',
             type='bool',
-            default=False,
+            default=True,
             help='use position encoding instead of bag of words embedding',
         )
         argparser.set_defaults(

Mutant 24

--- parlai/agents/memnn/memnn.py
+++ parlai/agents/memnn/memnn.py
@@ -56,7 +56,7 @@
             '--position-encoding',
             type='bool',
             default=False,
-            help='use position encoding instead of bag of words embedding',
+            help='XXuse position encoding instead of bag of words embeddingXX',
         )
         argparser.set_defaults(
             split_lines=True, add_p1_after_newln=True, encode_candidate_vecs=True

Mutant 25

--- parlai/agents/memnn/memnn.py
+++ parlai/agents/memnn/memnn.py
@@ -59,7 +59,7 @@
             help='use position encoding instead of bag of words embedding',
         )
         argparser.set_defaults(
-            split_lines=True, add_p1_after_newln=True, encode_candidate_vecs=True
+            split_lines=False, add_p1_after_newln=True, encode_candidate_vecs=True
         )
         TorchRankerAgent.add_cmdline_args(argparser)
         MemnnAgent.dictionary_class().add_cmdline_args(argparser)

Mutant 26

--- parlai/agents/memnn/memnn.py
+++ parlai/agents/memnn/memnn.py
@@ -59,7 +59,7 @@
             help='use position encoding instead of bag of words embedding',
         )
         argparser.set_defaults(
-            split_lines=True, add_p1_after_newln=True, encode_candidate_vecs=True
+            split_lines=True, add_p1_after_newln=False, encode_candidate_vecs=True
         )
         TorchRankerAgent.add_cmdline_args(argparser)
         MemnnAgent.dictionary_class().add_cmdline_args(argparser)

Mutant 27

--- parlai/agents/memnn/memnn.py
+++ parlai/agents/memnn/memnn.py
@@ -59,7 +59,7 @@
             help='use position encoding instead of bag of words embedding',
         )
         argparser.set_defaults(
-            split_lines=True, add_p1_after_newln=True, encode_candidate_vecs=True
+            split_lines=True, add_p1_after_newln=True, encode_candidate_vecs=False
         )
         TorchRankerAgent.add_cmdline_args(argparser)
         MemnnAgent.dictionary_class().add_cmdline_args(argparser)

Mutant 28

--- parlai/agents/memnn/memnn.py
+++ parlai/agents/memnn/memnn.py
@@ -66,7 +66,7 @@
         return arg_group
 
     def __init__(self, opt, shared=None):
-        self.id = 'MemNN'
+        self.id = 'XXMemNNXX'
         self.memsize = opt['memsize']
         if self.memsize < 0:
             self.memsize = 0

Mutant 29

--- parlai/agents/memnn/memnn.py
+++ parlai/agents/memnn/memnn.py
@@ -66,7 +66,7 @@
         return arg_group
 
     def __init__(self, opt, shared=None):
-        self.id = 'MemNN'
+        self.id = None
         self.memsize = opt['memsize']
         if self.memsize < 0:
             self.memsize = 0

Mutant 33

--- parlai/agents/memnn/memnn.py
+++ parlai/agents/memnn/memnn.py
@@ -68,7 +68,7 @@
     def __init__(self, opt, shared=None):
         self.id = 'MemNN'
         self.memsize = opt['memsize']
-        if self.memsize < 0:
+        if self.memsize < 1:
             self.memsize = 0
         self.use_time_features = opt['time_features']
         super().__init__(opt, shared)

Mutant 35

--- parlai/agents/memnn/memnn.py
+++ parlai/agents/memnn/memnn.py
@@ -70,7 +70,7 @@
         self.memsize = opt['memsize']
         if self.memsize < 0:
             self.memsize = 0
-        self.use_time_features = opt['time_features']
+        self.use_time_features = None
         super().__init__(opt, shared)
 
     def build_dictionary(self):

Mutant 37

--- parlai/agents/memnn/memnn.py
+++ parlai/agents/memnn/memnn.py
@@ -81,7 +81,7 @@
         if self.use_time_features:
             # add time features to dictionary before building the model
             for i in range(self.memsize):
-                d[self._time_feature(i)] = 100_000_000 + i
+                d[self._time_feature(i)] = 100000001 + i
         return d
 
     def build_model(self):

Mutant 38

--- parlai/agents/memnn/memnn.py
+++ parlai/agents/memnn/memnn.py
@@ -81,7 +81,7 @@
         if self.use_time_features:
             # add time features to dictionary before building the model
             for i in range(self.memsize):
-                d[self._time_feature(i)] = 100_000_000 + i
+                d[self._time_feature(i)] = 100_000_000 - i
         return d
 
     def build_model(self):

Mutant 51

--- parlai/agents/memnn/memnn.py
+++ parlai/agents/memnn/memnn.py
@@ -112,7 +112,7 @@
     def score_candidates(self, batch, cand_vecs, cand_encs=None):
         mems = self._build_mems(batch.memory_vecs)
         # Check for rows that have no non-null tokens
-        pad_mask = None
+        pad_mask = ""
         if mems is not None:
             pad_mask = (mems != self.NULL_IDX).sum(dim=-1) == 0
 

Mutant 57

--- parlai/agents/memnn/memnn.py
+++ parlai/agents/memnn/memnn.py
@@ -123,8 +123,7 @@
         scores = self._score(state, cand_encs)
 
         return scores
-
-    @lru_cache(maxsize=None)  # bounded by opt['memsize'], cache string concats
+  # bounded by opt['memsize'], cache string concats
     def _time_feature(self, i):
         """
         Return time feature token at specified index.

Mutant 58

--- parlai/agents/memnn/memnn.py
+++ parlai/agents/memnn/memnn.py
@@ -129,7 +129,7 @@
         """
         Return time feature token at specified index.
         """
-        return '__tf{}__'.format(i)
+        return 'XX__tf{}__XX'.format(i)
 
     def vectorize(self, *args, **kwargs):
         """

Mutant 61

--- parlai/agents/memnn/memnn.py
+++ parlai/agents/memnn/memnn.py
@@ -135,7 +135,7 @@
         """
         Override options in vectorize from parent.
         """
-        kwargs['add_start'] = False
+        kwargs['add_start'] = None
         kwargs['add_end'] = False
         return super().vectorize(*args, **kwargs)
 

Mutant 63

--- parlai/agents/memnn/memnn.py
+++ parlai/agents/memnn/memnn.py
@@ -136,7 +136,7 @@
         Override options in vectorize from parent.
         """
         kwargs['add_start'] = False
-        kwargs['add_end'] = False
+        kwargs['add_end'] = True
         return super().vectorize(*args, **kwargs)
 
     def batchify(self, obs_batch, sort=False):

Mutant 64

--- parlai/agents/memnn/memnn.py
+++ parlai/agents/memnn/memnn.py
@@ -136,7 +136,7 @@
         Override options in vectorize from parent.
         """
         kwargs['add_start'] = False
-        kwargs['add_end'] = False
+        kwargs['add_end'] = None
         return super().vectorize(*args, **kwargs)
 
     def batchify(self, obs_batch, sort=False):

Mutant 65

--- parlai/agents/memnn/memnn.py
+++ parlai/agents/memnn/memnn.py
@@ -139,7 +139,7 @@
         kwargs['add_end'] = False
         return super().vectorize(*args, **kwargs)
 
-    def batchify(self, obs_batch, sort=False):
+    def batchify(self, obs_batch, sort=True):
         """
         Override so that we can add memories to the Batch object.
         """

Mutant 69

--- parlai/agents/memnn/memnn.py
+++ parlai/agents/memnn/memnn.py
@@ -148,7 +148,7 @@
         # get valid observations
         valid_obs = [(i, ex) for i, ex in enumerate(obs_batch) if self.is_valid(ex)]
 
-        if len(valid_obs) == 0:
+        if len(valid_obs) == 1:
             return batch
 
         valid_inds, exs = zip(*valid_obs)

Mutant 71

--- parlai/agents/memnn/memnn.py
+++ parlai/agents/memnn/memnn.py
@@ -154,7 +154,7 @@
         valid_inds, exs = zip(*valid_obs)
 
         # get memories for the valid observations
-        mems = None
+        mems = ""
         if any('memory_vecs' in ex for ex in exs):
             mems = [ex.get('memory_vecs', None) for ex in exs]
         batch.memory_vecs = mems

Mutant 72

--- parlai/agents/memnn/memnn.py
+++ parlai/agents/memnn/memnn.py
@@ -155,7 +155,7 @@
 
         # get memories for the valid observations
         mems = None
-        if any('memory_vecs' in ex for ex in exs):
+        if any('XXmemory_vecsXX' in ex for ex in exs):
             mems = [ex.get('memory_vecs', None) for ex in exs]
         batch.memory_vecs = mems
         return batch

Mutant 73

--- parlai/agents/memnn/memnn.py
+++ parlai/agents/memnn/memnn.py
@@ -155,7 +155,7 @@
 
         # get memories for the valid observations
         mems = None
-        if any('memory_vecs' in ex for ex in exs):
+        if any('memory_vecs' not in ex for ex in exs):
             mems = [ex.get('memory_vecs', None) for ex in exs]
         batch.memory_vecs = mems
         return batch

Mutant 75

--- parlai/agents/memnn/memnn.py
+++ parlai/agents/memnn/memnn.py
@@ -156,7 +156,7 @@
         # get memories for the valid observations
         mems = None
         if any('memory_vecs' in ex for ex in exs):
-            mems = [ex.get('memory_vecs', None) for ex in exs]
+            mems = None
         batch.memory_vecs = mems
         return batch
 

Mutant 76

--- parlai/agents/memnn/memnn.py
+++ parlai/agents/memnn/memnn.py
@@ -157,7 +157,7 @@
         mems = None
         if any('memory_vecs' in ex for ex in exs):
             mems = [ex.get('memory_vecs', None) for ex in exs]
-        batch.memory_vecs = mems
+        batch.memory_vecs = None
         return batch
 
     def _set_text_vec(self, obs, history, truncate):

Mutant 79

--- parlai/agents/memnn/memnn.py
+++ parlai/agents/memnn/memnn.py
@@ -167,7 +167,7 @@
         if 'text' not in obs:
             return obs
 
-        if 'text_vec' not in obs:
+        if 'XXtext_vecXX' not in obs:
             # text vec is not precomputed, so we set it using the history
             obs['full_text'] = history.get_history_str()
             history_vecs = history.get_history_vec_list()

Mutant 81

--- parlai/agents/memnn/memnn.py
+++ parlai/agents/memnn/memnn.py
@@ -169,7 +169,7 @@
 
         if 'text_vec' not in obs:
             # text vec is not precomputed, so we set it using the history
-            obs['full_text'] = history.get_history_str()
+            obs['XXfull_textXX'] = history.get_history_str()
             history_vecs = history.get_history_vec_list()
             if len(history_vecs) > 0:
                 obs['memory_vecs'] = history_vecs[:-1]

Mutant 82

--- parlai/agents/memnn/memnn.py
+++ parlai/agents/memnn/memnn.py
@@ -169,7 +169,7 @@
 
         if 'text_vec' not in obs:
             # text vec is not precomputed, so we set it using the history
-            obs['full_text'] = history.get_history_str()
+            obs['full_text'] = None
             history_vecs = history.get_history_vec_list()
             if len(history_vecs) > 0:
                 obs['memory_vecs'] = history_vecs[:-1]

Mutant 84

--- parlai/agents/memnn/memnn.py
+++ parlai/agents/memnn/memnn.py
@@ -171,7 +171,7 @@
             # text vec is not precomputed, so we set it using the history
             obs['full_text'] = history.get_history_str()
             history_vecs = history.get_history_vec_list()
-            if len(history_vecs) > 0:
+            if len(history_vecs) >= 0:
                 obs['memory_vecs'] = history_vecs[:-1]
                 obs['text_vec'] = history_vecs[-1]
             else:

Mutant 85

--- parlai/agents/memnn/memnn.py
+++ parlai/agents/memnn/memnn.py
@@ -171,7 +171,7 @@
             # text vec is not precomputed, so we set it using the history
             obs['full_text'] = history.get_history_str()
             history_vecs = history.get_history_vec_list()
-            if len(history_vecs) > 0:
+            if len(history_vecs) > 1:
                 obs['memory_vecs'] = history_vecs[:-1]
                 obs['text_vec'] = history_vecs[-1]
             else:

Mutant 86

--- parlai/agents/memnn/memnn.py
+++ parlai/agents/memnn/memnn.py
@@ -172,7 +172,7 @@
             obs['full_text'] = history.get_history_str()
             history_vecs = history.get_history_vec_list()
             if len(history_vecs) > 0:
-                obs['memory_vecs'] = history_vecs[:-1]
+                obs['XXmemory_vecsXX'] = history_vecs[:-1]
                 obs['text_vec'] = history_vecs[-1]
             else:
                 obs['memory_vecs'] = []

Mutant 87

--- parlai/agents/memnn/memnn.py
+++ parlai/agents/memnn/memnn.py
@@ -172,7 +172,7 @@
             obs['full_text'] = history.get_history_str()
             history_vecs = history.get_history_vec_list()
             if len(history_vecs) > 0:
-                obs['memory_vecs'] = history_vecs[:-1]
+                obs['memory_vecs'] = history_vecs[:+1]
                 obs['text_vec'] = history_vecs[-1]
             else:
                 obs['memory_vecs'] = []

Mutant 88

--- parlai/agents/memnn/memnn.py
+++ parlai/agents/memnn/memnn.py
@@ -172,7 +172,7 @@
             obs['full_text'] = history.get_history_str()
             history_vecs = history.get_history_vec_list()
             if len(history_vecs) > 0:
-                obs['memory_vecs'] = history_vecs[:-1]
+                obs['memory_vecs'] = history_vecs[:-2]
                 obs['text_vec'] = history_vecs[-1]
             else:
                 obs['memory_vecs'] = []

Mutant 94

--- parlai/agents/memnn/memnn.py
+++ parlai/agents/memnn/memnn.py
@@ -179,7 +179,7 @@
                 obs['text_vec'] = []
 
         # check truncation
-        if 'text_vec' in obs:
+        if 'XXtext_vecXX' in obs:
             truncated_vec = self._check_truncate(obs['text_vec'], truncate, True)
             obs.force_set('text_vec', torch.LongTensor(truncated_vec))
 

Mutant 95

--- parlai/agents/memnn/memnn.py
+++ parlai/agents/memnn/memnn.py
@@ -179,7 +179,7 @@
                 obs['text_vec'] = []
 
         # check truncation
-        if 'text_vec' in obs:
+        if 'text_vec' not in obs:
             truncated_vec = self._check_truncate(obs['text_vec'], truncate, True)
             obs.force_set('text_vec', torch.LongTensor(truncated_vec))
 

Mutant 97

--- parlai/agents/memnn/memnn.py
+++ parlai/agents/memnn/memnn.py
@@ -180,7 +180,7 @@
 
         # check truncation
         if 'text_vec' in obs:
-            truncated_vec = self._check_truncate(obs['text_vec'], truncate, True)
+            truncated_vec = self._check_truncate(obs['text_vec'], truncate, False)
             obs.force_set('text_vec', torch.LongTensor(truncated_vec))
 
         if 'memory_vecs' in obs:

Mutant 99

--- parlai/agents/memnn/memnn.py
+++ parlai/agents/memnn/memnn.py
@@ -181,7 +181,7 @@
         # check truncation
         if 'text_vec' in obs:
             truncated_vec = self._check_truncate(obs['text_vec'], truncate, True)
-            obs.force_set('text_vec', torch.LongTensor(truncated_vec))
+            obs.force_set('XXtext_vecXX', torch.LongTensor(truncated_vec))
 
         if 'memory_vecs' in obs:
             obs.force_set(

Mutant 100

--- parlai/agents/memnn/memnn.py
+++ parlai/agents/memnn/memnn.py
@@ -183,7 +183,7 @@
             truncated_vec = self._check_truncate(obs['text_vec'], truncate, True)
             obs.force_set('text_vec', torch.LongTensor(truncated_vec))
 
-        if 'memory_vecs' in obs:
+        if 'XXmemory_vecsXX' in obs:
             obs.force_set(
                 'memory_vecs',
                 [

Mutant 101

--- parlai/agents/memnn/memnn.py
+++ parlai/agents/memnn/memnn.py
@@ -183,7 +183,7 @@
             truncated_vec = self._check_truncate(obs['text_vec'], truncate, True)
             obs.force_set('text_vec', torch.LongTensor(truncated_vec))
 
-        if 'memory_vecs' in obs:
+        if 'memory_vecs' not in obs:
             obs.force_set(
                 'memory_vecs',
                 [

Mutant 102

--- parlai/agents/memnn/memnn.py
+++ parlai/agents/memnn/memnn.py
@@ -185,7 +185,7 @@
 
         if 'memory_vecs' in obs:
             obs.force_set(
-                'memory_vecs',
+                'XXmemory_vecsXX',
                 [
                     torch.LongTensor(self._check_truncate(m, truncate, True))
                     for m in obs['memory_vecs']

Mutant 103

--- parlai/agents/memnn/memnn.py
+++ parlai/agents/memnn/memnn.py
@@ -187,7 +187,7 @@
             obs.force_set(
                 'memory_vecs',
                 [
-                    torch.LongTensor(self._check_truncate(m, truncate, True))
+                    torch.LongTensor(self._check_truncate(m, truncate, False))
                     for m in obs['memory_vecs']
                 ],
             )

Mutant 105

--- parlai/agents/memnn/memnn.py
+++ parlai/agents/memnn/memnn.py
@@ -207,7 +207,7 @@
         :returns:
             3d padded tensor of memories (bsz x num_mems x seqlen)
         """
-        if mems is None:
+        if mems is not None:
             return None
         bsz = len(mems)
         if bsz == 0:

Mutant 106

--- parlai/agents/memnn/memnn.py
+++ parlai/agents/memnn/memnn.py
@@ -209,7 +209,7 @@
         """
         if mems is None:
             return None
-        bsz = len(mems)
+        bsz = None
         if bsz == 0:
             return None
 

Mutant 107

--- parlai/agents/memnn/memnn.py
+++ parlai/agents/memnn/memnn.py
@@ -210,7 +210,7 @@
         if mems is None:
             return None
         bsz = len(mems)
-        if bsz == 0:
+        if bsz != 0:
             return None
 
         num_mems = max(len(mem) for mem in mems)

Mutant 108

--- parlai/agents/memnn/memnn.py
+++ parlai/agents/memnn/memnn.py
@@ -210,7 +210,7 @@
         if mems is None:
             return None
         bsz = len(mems)
-        if bsz == 0:
+        if bsz == 1:
             return None
 
         num_mems = max(len(mem) for mem in mems)

Mutant 110

--- parlai/agents/memnn/memnn.py
+++ parlai/agents/memnn/memnn.py
@@ -214,7 +214,7 @@
             return None
 
         num_mems = max(len(mem) for mem in mems)
-        if num_mems == 0 or self.memsize <= 0:
+        if num_mems != 0 or self.memsize <= 0:
             return None
         elif num_mems > self.memsize:
             # truncate to memsize most recent memories

Mutant 111

--- parlai/agents/memnn/memnn.py
+++ parlai/agents/memnn/memnn.py
@@ -214,7 +214,7 @@
             return None
 
         num_mems = max(len(mem) for mem in mems)
-        if num_mems == 0 or self.memsize <= 0:
+        if num_mems == 1 or self.memsize <= 0:
             return None
         elif num_mems > self.memsize:
             # truncate to memsize most recent memories

Mutant 112

--- parlai/agents/memnn/memnn.py
+++ parlai/agents/memnn/memnn.py
@@ -214,7 +214,7 @@
             return None
 
         num_mems = max(len(mem) for mem in mems)
-        if num_mems == 0 or self.memsize <= 0:
+        if num_mems == 0 or self.memsize < 0:
             return None
         elif num_mems > self.memsize:
             # truncate to memsize most recent memories

Mutant 114

--- parlai/agents/memnn/memnn.py
+++ parlai/agents/memnn/memnn.py
@@ -214,7 +214,7 @@
             return None
 
         num_mems = max(len(mem) for mem in mems)
-        if num_mems == 0 or self.memsize <= 0:
+        if num_mems == 0 and self.memsize <= 0:
             return None
         elif num_mems > self.memsize:
             # truncate to memsize most recent memories