0
필자는 내 비용 f (x, y) 및 그래디언트 dx와 dy를 계산할 때 사용하는 특정 분석 그래디언트가 있습니다. 실행되지만 그래디언트 디센트가 손상되었는지 알 수 없습니다. 내 부분 파생 상품 x와 y를 그릴 필요가 있습니까?코드 바닐라 그래디언트 하강
import math
gamma = 0.00001 # learning rate
iterations = 10000 #steps
theta = np.array([0,5]) #starting value
thetas = []
costs = []
# calculate cost of any point
def cost(theta):
x = theta[0]
y = theta[1]
return 100*x*math.exp(-0.5*x*x+0.5*x-0.5*y*y-y+math.pi)
def gradient(theta):
x = theta[0]
y = theta[1]
dx = 100*math.exp(-0.5*x*x+0.5*x-0.0035*y*y-y+math.pi)*(1+x*(-x + 0.5))
dy = 100*x*math.exp(-0.5*x*x+0.5*x-0.05*y*y-y+math.pi)*(-y-1)
gradients = np.array([dx,dy])
return gradients
#for 2 features
for step in range(iterations):
theta = theta - gamma*gradient(theta)
value = cost(theta)
thetas.append(theta)
costs.append(value)
thetas = np.array(thetas)
X = thetas[:,0]
Y = thetas[:,1]
Z = np.array(costs)
iterations = [num for num in range(iterations)]
plt.plot(Z)
plt.xlabel("num. iteration")
plt.ylabel("cost")
최소값을 찾으려는 것처럼 보입니다.하지만이 함수는 x -> neg inf와 같이 모든 행 y = c 아래에서 제한이 없습니다. –