def hentenes_stiefel(old_g, new_g, delta_w, epsilon=1e-7): gradient_delta = new_g - old_g return safe_division( dot(gradient_delta, new_g), dot(delta_w, gradient_delta), epsilon, )
def test_safe_division(self): value = self.eval(qn.safe_division(2.0, 4.0, epsilon=1e-7)) self.assertAlmostEqual(0.5, value) value = self.eval(qn.safe_division(1.0, 1e-8, epsilon=1e-7)) self.assertAlmostEqual(1e7, value)
def dai_yuan(old_g, new_g, delta_w, epsilon=1e-7): return safe_division( dot(new_g, new_g), dot(new_g - old_g, delta_w), epsilon, )
def liu_storey(old_g, new_g, delta_w, epsilon=1e-7): return -safe_division( dot(new_g, new_g - old_g), dot(delta_w, old_g), epsilon, )
def polak_ribiere(old_g, new_g, delta_w, epsilon=1e-7): return safe_division( dot(new_g, new_g - old_g), dot(old_g, old_g), epsilon, )
def fletcher_reeves(old_g, new_g, delta_w, epsilon=1e-7): return safe_division( dot(new_g, new_g), dot(old_g, old_g), epsilon, )