Lors de la différenciation par programmation, la différence centrale est préférable à la différence directe. La raison en est que la différence de centre a moins d'erreur.
import numpy as np
#Différence avant
def numerical_diff_forward(f,x):
h = 1e-4
return (f(x+h) - f(x)) / h
#Différence centrale
def numerical_diff_center(f,x):
h = 1e-4
return (f(x+h) - f(x-h)) / (h*2)
np.float32(1e-3)
def function(x):
return 0.01*x**2+0.1*x
print(abs(0.2 - numerical_diff_forward(function,5)))
print(abs(0.2 - numerical_diff_center(function,5)))
#9.999991725240243e-07
#9.102163467389346e-13
référence [Deep Learning from scratch - la théorie et la mise en œuvre du deep learning appris en Python]
Recommended Posts