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')
Exemplo n.º 3
0
    def test_7(self):
        # Learn some basic functions#
        # Linearly-separable data-sets#
         
        # function 1 (AND function) on 0 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('true') 
        ann = Ann(arrs, labels, n_h=0)
        ann.train()
        ann.validate_train()
        # Check to see if train_accuracy is over 90%
        self.assertTrue(ann.train_accuracy() > 0.9)
        # function 2 on 2 hidden layers
        arrs = []
        arrs.append([1, 1])
        arrs.append([2, 2])
        arrs.append([1, 3])
        arrs.append([2, 10])
        arrs.append([1, -1])
        arrs.append([-2, -2])
        arrs.append([1, -3])
        arrs.append([-2, -10])
        labels = []
        labels.append('false')
        labels.append('false')
        labels.append('false')
        labels.append('false')
        labels.append('true')
        labels.append('true')
        labels.append('true')
        labels.append('true') 
        ann = Ann(arrs, labels, n_h=2)
        ann.train()
        ann.validate_train()
        # Check to see if train_accuracy is over 90%
        self.assertTrue(ann.train_accuracy() > 0.9)
         
         
        # Non-linearly-separable data-sets#
         
        
        # 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)
        ann.train(it=3000)
        ann.validate_train()
        # Check to see if train_accuracy is over 90%
        self.assertTrue(ann.train_accuracy() > 0.9)
         
        # function 1b (XOR function) on 1 hidden layers (with custom architecture)
        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')
        s = [4, 5]  # Custom hidden layer architecture
        ann = Ann(arrs, labels, n_h=len(s), s=s)
        ann.train()
        ann.validate_train()
        # Check to see if train_accuracy is over 90%
        self.assertTrue(ann.train_accuracy() > 0.9)
             
 
        # function 1 (two nested sets) on 2 hidden layers
        arrs = []
        arrs.append([0, 0])
        arrs.append([0, 1])
        arrs.append([1, 1])
        arrs.append([1, 1])
        arrs.append([10, 0])
        arrs.append([0, 10])
        arrs.append([110, 10])
        arrs.append([-10, 10])
        labels = []
        labels.append('false')
        labels.append('false')
        labels.append('false')
        labels.append('false') 
        labels.append('true')
        labels.append('true')
        labels.append('true')
        labels.append('true') 
        ann = Ann(arrs, labels, n_h=0)
        ann.train()
        ann.validate_train()
        # Check to see if train_accuracy is over 90%
        self.assertTrue(ann.train_accuracy() > 0.9)
    def test_7(self):
        # Learn some basic functions#
        # Linearly-separable data-sets#

        # function 1 (AND function) on 0 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('true')
        ann = Ann(arrs, labels, n_h=0)
        ann.train()
        ann.validate_train()
        # Check to see if train_accuracy is over 90%
        self.assertTrue(ann.train_accuracy() > 0.9)
        # function 2 on 2 hidden layers
        arrs = []
        arrs.append([1, 1])
        arrs.append([2, 2])
        arrs.append([1, 3])
        arrs.append([2, 10])
        arrs.append([1, -1])
        arrs.append([-2, -2])
        arrs.append([1, -3])
        arrs.append([-2, -10])
        labels = []
        labels.append('false')
        labels.append('false')
        labels.append('false')
        labels.append('false')
        labels.append('true')
        labels.append('true')
        labels.append('true')
        labels.append('true')
        ann = Ann(arrs, labels, n_h=2)
        ann.train()
        ann.validate_train()
        # Check to see if train_accuracy is over 90%
        self.assertTrue(ann.train_accuracy() > 0.9)

        # Non-linearly-separable data-sets#

        # 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)
        ann.train(it=3000)
        ann.validate_train()
        # Check to see if train_accuracy is over 90%
        self.assertTrue(ann.train_accuracy() > 0.9)

        # function 1b (XOR function) on 1 hidden layers (with custom architecture)
        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')
        s = [4, 5]  # Custom hidden layer architecture
        ann = Ann(arrs, labels, n_h=len(s), s=s)
        ann.train()
        ann.validate_train()
        # Check to see if train_accuracy is over 90%
        self.assertTrue(ann.train_accuracy() > 0.9)

        # function 1 (two nested sets) on 2 hidden layers
        arrs = []
        arrs.append([0, 0])
        arrs.append([0, 1])
        arrs.append([1, 1])
        arrs.append([1, 1])
        arrs.append([10, 0])
        arrs.append([0, 10])
        arrs.append([110, 10])
        arrs.append([-10, 10])
        labels = []
        labels.append('false')
        labels.append('false')
        labels.append('false')
        labels.append('false')
        labels.append('true')
        labels.append('true')
        labels.append('true')
        labels.append('true')
        ann = Ann(arrs, labels, n_h=0)
        ann.train()
        ann.validate_train()
        # Check to see if train_accuracy is over 90%
        self.assertTrue(ann.train_accuracy() > 0.9)