def think_should_have_correct_premise_values(self): brain = Brain(["a"], [[[0.1]],[[0.1]],[[0.1]]]) with self.assertRaises(TypeError): brain.think(0.1) with self.assertRaises(TypeError): brain.think(["a"]) with self.assertRaises(TypeError): brain.think([0.1,"a"]) with self.assertRaises(ValueError): brain.think([0.1,0.2])
def think_should_return_output(self): brain = Brain(["a"], [[[0.1]],[[0.1]],[[0.1]]]) value = brain.think([0.1]) self.assertTrue(type(value) is float) self.assertTrue(value < 1) self.assertTrue(value > 0) brain = Brain(["a"], [[[1.0]],[[0.5]],[[1.0]]]) value = brain.think([1.0]) self.assertTrue(round(value,2) == 0.35) brain = Brain(["a"], [[[0.5],[0.5]],[[0.5,0.5],[0.5,0.5]],[[0.5,0.5]]]) value = brain.think([1.0]) self.assertTrue(round(value,2) == 0.41) # Only one input but 2 weights for inputs brain = Brain(["a"], [[[0.5,0.5]]]) with self.assertRaises(ValueError): value = brain.think([1.0]) # One level network with 4 inputs values = [ [list(float(random.uniform(0,1)) for x in range(4)), list(float(random.uniform(0,1)) for x in range(4)), list(float(random.uniform(0,1)) for x in range(4)), list(float(random.uniform(0,1)) for x in range(4))], [list(float(random.uniform(0,1)) for x in range(4))] ] brain = Brain(["a","b","c","d"], values) value = brain.think(list(float(random.uniform(0,1)) for x in range(4))) # Two level network with 4 inputs values = [ [list(float(random.uniform(0,1)) for x in range(4)), list(float(random.uniform(0,1)) for x in range(4)), list(float(random.uniform(0,1)) for x in range(4)), list(float(random.uniform(0,1)) for x in range(4))], [list(float(random.uniform(0,1)) for x in range(4)), list(float(random.uniform(0,1)) for x in range(4)), list(float(random.uniform(0,1)) for x in range(4)), list(float(random.uniform(0,1)) for x in range(4))], [list(float(random.uniform(0,1)) for x in range(4))] ] brain = Brain(["a","b","c","d"], values) value = brain.think(list(float(random.uniform(0,1)) for x in range(4))) print(value)