ゼロから作るDeep Learning
「ゼロから作るDeep Learning」でP.104の勾配を求める関数 numerical_gradient
に関してです。
def f2(x):
return x[0]**2 + x[1]**2
def numerical_gradient(f, x):
h = 1e-4
grad = np.zeros_like(x)
for idx in range(x.size):
tmp_val = x[idx]
x[idx] = tmp_val + h
fxh1 = f(x)
x[idx] = tmp_val - h
fxh2 = f(x)
grad[idx] = (fxh1 - fxh2)/(2*h)
x[idx] = tmp_val
return grad
f2の勾配をnumerical_gradientで求めたいのですが、
numerical_gradient(f2, np.array([3.0, 4.0]))
numerical_gradient(f2, np.array([3, 4]))
この2つで結果が変わる理由がわかりません。
なぜ下の方法だとうまくいかないのか、どなたかわかる方がいらっしゃれば教えてください。
よろしくおねがいします。