Exemplo n.º 1
0
    def test_9(self):
        # function 1 (XOR function) on 1 hidden layers
        arrs = []
        arrs.append([0, 0])
        arrs.append([0, 1])
        arrs.append([1, 0])
        arrs.append([1, 1])
        labels = []
        labels.append('false')
        labels.append('true')
        labels.append('true')
        labels.append('false') 
        ann = Ann(arrs, labels, n_h=1)
        # Train and save model
        model = ann.train()[0][0]  # Take the first model from the list of models in the tuple
        ann.validate_train()
        # Check to see if train_accuracy is over 90%
        self.assertTrue(ann.train_accuracy() > 0.9)
         
        # Load the trained model into a new neural network
        ann_from_model = Ann(model)
        # Evaluate some vectors using this neural network initialized only with a model
        self.assertEqual(ann_from_model.h_by_class(arrs[0]), 'false')
        self.assertEqual(ann_from_model.h_by_class(arrs[1]), 'true')
        x = [1.1, 0.9]
        self.assertEqual(ann_from_model.h_by_class(x), 'false')
 
        # function 2 on 2 hidden layers
        arrs2 = []
        arrs2.append([1, 1])
        arrs2.append([2, 2])
        arrs2.append([1, 3])
        arrs2.append([2, 10])
        arrs2.append([1, -1])
        arrs2.append([-2, -2])
        arrs2.append([1, -3])
        arrs2.append([-2, -10])
        labels2 = []
        labels2.append('false')
        labels2.append('false')
        labels2.append('false')
        labels2.append('false')
        labels2.append('true')
        labels2.append('true')
        labels2.append('true')
        labels2.append('true') 
        ann = Ann(arrs2, labels2, n_h=2)
        model2 = ann.train()[0][0]
        ann.validate_train()
         
        # Load the second model
        ann_from_model = Ann(model2)
        # Evaluate some vectors using this neural network initialized only with a model
        self.assertEqual(ann_from_model.h_by_class(arrs2[0]), 'false')
        self.assertEqual(ann_from_model.h_by_class(arrs2[len(arrs2) - 1]), 'true')
        x = [1, -5]
        self.assertEqual(ann_from_model.h_by_class(x), 'true')
         
        # Load the first model again
        ann_from_model = Ann(model)
        # Evaluate some vectors using this neural network initialized only with a model
        self.assertEqual(ann_from_model.h_by_class(arrs[0]), 'false')
        self.assertEqual(ann_from_model.h_by_class(arrs[1]), 'true')
        x = [1.1, 0.9]
        self.assertEqual(ann_from_model.h_by_class(x), 'false')
         
        # Try pickling our model into a sister folder
        model_name = model.name
        directory = '../Ann-models'
        path_to_file = directory + '/' + model_name
        if not os.path.exists(directory):
            os.makedirs(directory)
        pickle.dump(model, open(path_to_file, 'wb'))
         
        # Try unpickling our model
        unpickled_model = pickle.load(open(path_to_file, 'rb'))
        # Load unpickled model and test
        ann_from_pickle = Ann(unpickled_model)
        # Evaluate some vectors using this neural network initialized only with a model
        self.assertEqual(ann_from_pickle.h_by_class(arrs[0]), 'false')
        self.assertEqual(ann_from_pickle.h_by_class(arrs[1]), 'true')
        x = [1.1, 0.9]
        self.assertEqual(ann_from_pickle.h_by_class(x), 'false')
    def test_9(self):
        # function 1 (XOR function) on 1 hidden layers
        arrs = []
        arrs.append([0, 0])
        arrs.append([0, 1])
        arrs.append([1, 0])
        arrs.append([1, 1])
        labels = []
        labels.append('false')
        labels.append('true')
        labels.append('true')
        labels.append('false')
        ann = Ann(arrs, labels, n_h=1)
        # Train and save model
        model = ann.train()[0][
            0]  # Take the first model from the list of models in the tuple
        ann.validate_train()
        # Check to see if train_accuracy is over 90%
        self.assertTrue(ann.train_accuracy() > 0.9)

        # Load the trained model into a new neural network
        ann_from_model = Ann(model)
        # Evaluate some vectors using this neural network initialized only with a model
        self.assertEqual(ann_from_model.h_by_class(arrs[0]), 'false')
        self.assertEqual(ann_from_model.h_by_class(arrs[1]), 'true')
        x = [1.1, 0.9]
        self.assertEqual(ann_from_model.h_by_class(x), 'false')

        # function 2 on 2 hidden layers
        arrs2 = []
        arrs2.append([1, 1])
        arrs2.append([2, 2])
        arrs2.append([1, 3])
        arrs2.append([2, 10])
        arrs2.append([1, -1])
        arrs2.append([-2, -2])
        arrs2.append([1, -3])
        arrs2.append([-2, -10])
        labels2 = []
        labels2.append('false')
        labels2.append('false')
        labels2.append('false')
        labels2.append('false')
        labels2.append('true')
        labels2.append('true')
        labels2.append('true')
        labels2.append('true')
        ann = Ann(arrs2, labels2, n_h=2)
        model2 = ann.train()[0][0]
        ann.validate_train()

        # Load the second model
        ann_from_model = Ann(model2)
        # Evaluate some vectors using this neural network initialized only with a model
        self.assertEqual(ann_from_model.h_by_class(arrs2[0]), 'false')
        self.assertEqual(ann_from_model.h_by_class(arrs2[len(arrs2) - 1]),
                         'true')
        x = [1, -5]
        self.assertEqual(ann_from_model.h_by_class(x), 'true')

        # Load the first model again
        ann_from_model = Ann(model)
        # Evaluate some vectors using this neural network initialized only with a model
        self.assertEqual(ann_from_model.h_by_class(arrs[0]), 'false')
        self.assertEqual(ann_from_model.h_by_class(arrs[1]), 'true')
        x = [1.1, 0.9]
        self.assertEqual(ann_from_model.h_by_class(x), 'false')

        # Try pickling our model into a sister folder
        model_name = model.name
        directory = '../Ann-models'
        path_to_file = directory + '/' + model_name
        if not os.path.exists(directory):
            os.makedirs(directory)
        pickle.dump(model, open(path_to_file, 'wb'))

        # Try unpickling our model
        unpickled_model = pickle.load(open(path_to_file, 'rb'))
        # Load unpickled model and test
        ann_from_pickle = Ann(unpickled_model)
        # Evaluate some vectors using this neural network initialized only with a model
        self.assertEqual(ann_from_pickle.h_by_class(arrs[0]), 'false')
        self.assertEqual(ann_from_pickle.h_by_class(arrs[1]), 'true')
        x = [1.1, 0.9]
        self.assertEqual(ann_from_pickle.h_by_class(x), 'false')