Universal-Neural-Network
164 строки · 5.6 Кб
1import unittest2
3from libUNN.neuralNetwork.neuralNetwork import *4from libUNN.core.functions import *5
6
7class NeuralNetworkTest(unittest.TestCase):8def testCalculate(self):9n = NeuralNetwork()10n.layers.addInputNeural()11n.layers.addInputNeural()12n.layers.addLayers()13
14r1 = sigmoid(n.layers.neural(1, 0).weight(0) + n.layers.neural(1, 0).weight(1) + n.layers.neural(1, 0).weight(2))15result = sigmoid(r1 * n.layers.neural(2, 0).weight(0))16
17self.assertEqual(result, n.calculate([1, 1, 1])[0][0])18
19def testInput(self):20n = NeuralNetwork()21n.layers.addInputNeural()22n.layers.addLayers()23
24self.assertEqual(list(n.calculate(np.array([0, 0]))),25list(n.calculate([[0, 0]])),26"Should be Equal")27
28self.assertEqual(list(n.calculate(np.array([1, 1]))),29list(n.calculate([1, 1])),30"Should be Equal")31
32self.assertEqual(list(n.calculate(np.array([[1, 1]]))),33list(n.calculate([[1, 1]])),34"Should be Equal")35
36self.assertEqual(list(n.calculate(np.array([[1, 1], [0, 0]]))),37list(n.calculate([[1, 1], [0, 0]])),38"Should be Equal")39
40self.assertEqual(n.calculate(np.array([0, 0, 0])), None,41"Should be None")42self.assertEqual(n.calculate([0, 0, 0]), None,43"Should be None")44self.assertEqual(n.calculate(np.array([1])), None,45"Should be None")46self.assertEqual(n.calculate([1]), None,47"Should be None")48self.assertEqual(n.calculate(np.array([[1]])), None,49"Should be None")50self.assertEqual(n.calculate([[1]]), None,51"Should be None")52
53def testCopy(self):54n = NeuralNetwork()55n.layers.addInputNeural()56n.layers.addLayers(2)57n.layers.addNeural(1)58n2 = n.copy()59self.assertEqual(n.structure(), n2.structure())60
61def testAdd(self):62n = NeuralNetwork()63self.assertTrue(n.layers.addLayers())64self.assertTrue(n.layers.addLayers())65self.assertTrue(n.layers.addNeural(0))66self.assertTrue(n.layers.addNeural(1))67self.assertTrue(n.layers.addNeural(2))68self.assertTrue(n.layers.addNeural(3))69self.assertFalse(n.layers.addNeural(4))70
71def testRemove(self):72n = NeuralNetwork()73self.assertTrue(n.layers.addLayers())74self.assertTrue(n.layers.addLayers())75
76self.assertTrue(n.layers.removeLayer(1))77self.assertFalse(n.layers.removeLayer(4))78
79self.assertTrue(n.layers.deleteNeural(1, 0))80self.assertFalse(n.layers.deleteNeural(6, 0))81
82def testSetStructure(self):83n = NeuralNetwork()84structure = [1, 1, 1]85n.createStructure(structure)86self.assertEqual(n.structure(), [1, 1, 1], "Should be [1, 1, 1]")87
88structure = [0, 1, 0]89n.createStructure(structure)90self.assertEqual(n.structure(), [1, 1, 1], "Should be [1, 1, 1]")91
92structure = [0, 1, 0]93n.createStructure(structure)94self.assertEqual(n.structure(), [1, 1, 1], "Should be [1, 1, 1]")95
96structure = [0, 0]97n.createStructure(structure)98self.assertEqual(n.structure(), [1, 1], "Should be [1, 1]")99
100structure = [0, 4, 4, 5, 0]101n.createStructure(structure)102self.assertEqual(n.structure(), [1, 4, 4, 5, 1], "Should be [1, 4, 4, 5, 1]")103
104structure = [0]105self.assertFalse(n.createStructure(structure))106
107structure = [0, 0, 0, 0]108self.assertFalse(n.createStructure(structure))109
110structure = [0, 4, 0, 5, 0]111self.assertFalse(n.createStructure(structure))112
113structure = [0, -1, 4, 5, 0]114self.assertFalse(n.createStructure(structure))115
116def testStructure(self):117n = NeuralNetwork()118self.assertEqual(n.structure(), [1, 1], "Should be Equal [1, 1]")119n.layers.addLayers()120self.assertEqual(n.structure(), [1, 1, 1], "Should be Equal [1, 1, 1]")121n.layers.addNeural(1)122self.assertEqual(n.structure(), [1, 2, 1], "Should be Equal [1, 2, 1]")123n.layers.addNeural(1)124self.assertEqual(n.structure(), [1, 3, 1], "Should be Equal [1, 3, 1]")125n.layers.addInputNeural()126self.assertEqual(n.structure(), [2, 3, 1], "Should be Equal [2, 3, 1]")127n.layers.addOutputNeural()128self.assertEqual(n.structure(), [2, 3, 2], "Should be Equal [2, 3, 2]")129n.layers.addLayers()130self.assertEqual(n.structure(), [2, 3, 1, 2], "Should be Equal [2, 3, 1, 2]")131
132def testSave(self):133n = NeuralNetwork()134n.layers.addInputNeural()135n.layers.addInputNeural()136file = os.getcwd() + '/neural.nn'137self.assertTrue(n.save(file))138
139with open(file) as f:140self.assertEqual(n.weights(), json.load(f))141os.remove(file)142
143failFile2 = 'dont.txt'144self.assertFalse(n.save(failFile2))145
146def testLoad(self):147n = NeuralNetwork()148n.layers.addInputNeural()149n.layers.addInputNeural()150file = os.getcwd() + '/neural.nn'151self.assertTrue(n.save(file))152
153n2 = NeuralNetwork(file)154self.assertEqual(n2.weights(), n.weights())155os.remove(file)156
157failFile = 'dont.nn'158failFile2 = 'dont.txt'159self.assertFalse(n2.load(failFile))160self.assertFalse(n2.load(failFile2))161
162
163if __name__ == '__main__':164unittest.main()165