def testModelSaveAndLoad(self):
    # Keywords model uses the base class implementations of save/load methods.
    self.modelDir = "poke_model"
    model = ClassificationModelKeywords(modelDir=self.modelDir, verbosity=0)
    
    samples = {0: (["Pickachu"], numpy.array([0, 2, 2])),
               1: (["Eevee"], numpy.array([2])),
               2: (["Charmander"], numpy.array([0, 1, 1])),
               3: (["Abra"], numpy.array([1])),
               4: (["Squirtle"], numpy.array([1, 0, 1]))}

    patterns = model.encodeSamples(samples)
    for i in xrange(len(samples)):
      model.trainModel(i)

    output = [model.testModel(i) for i in xrange(len(patterns))]

    model.saveModel()

    loadedModel = ClassificationModel(verbosity=0).loadModel(self.modelDir)
    loadedModelOutput = [loadedModel.testModel(i)
                         for i in xrange(len(patterns))]
    
    for mClasses, lClasses in zip(output, loadedModelOutput):
      self.assertSequenceEqual(mClasses.tolist(), lClasses.tolist(), "Output "
          "classifcations from loaded model don't match original model's.")
    def testModelSaveAndLoad(self):
        # Keywords model uses the base class implementations of save/load methods.
        self.modelDir = "poke_model"
        model = ClassificationModelKeywords(modelDir=self.modelDir,
                                            verbosity=0)

        samples = {
            0: (["Pickachu"], numpy.array([0, 2, 2])),
            1: (["Eevee"], numpy.array([2])),
            2: (["Charmander"], numpy.array([0, 1, 1])),
            3: (["Abra"], numpy.array([1])),
            4: (["Squirtle"], numpy.array([1, 0, 1]))
        }

        patterns = model.encodeSamples(samples)
        for i in xrange(len(samples)):
            model.trainModel(i)

        output = [model.testModel(i) for i in xrange(len(patterns))]

        model.saveModel()

        loadedModel = ClassificationModel(verbosity=0).loadModel(self.modelDir)
        loadedModelOutput = [
            loadedModel.testModel(i) for i in xrange(len(patterns))
        ]

        for mClasses, lClasses in zip(output, loadedModelOutput):
            self.assertSequenceEqual(
                mClasses.tolist(), lClasses.tolist(), "Output "
                "classifcations from loaded model don't match original model's."
            )