Что не так с этим градиентно-вычислительным кодом? - PullRequest
0 голосов
/ 10 июня 2019

Я пытаюсь вычислить градиент функции в определенной точке двумя способами: один раз путем анализа аналитического значения градиента и его вычисления, а другой с помощью af (x + h) -f (x) /ч оценка.Затем я могу сравнить их и посмотреть, что является более эффективным.

Я написал код для обоих.Код, который я написал для первого метода, я уверен, работает нормально.К сожалению, код для второго метода дает неправильный ответ.

def cost_gradient_theta1(t,m,x,y):
    c=cost(x,y,t,m)
    grad=[0]*240
    for i in range(240):
        t1=t
        t1[i]=t[i]+0.000001
        grad[i]=(cost(x,y,t1,m)-c)/0.000001
    return grad

В приведенном выше описании стоимость - это функция, которую я определил ранее, x и y - константы (фактически списки списков 0 и 1)и t и m - переменные, которые я заинтересован в дифференцировании.Они предназначены для представления списков с плавающей запятой длиной 240 каждый.

Когда я проверил это и сравнил его с «реальным» ответом, 0-я координата оказалась в порядке.Но начиная с 1-й координаты, эти частные производные неверны.

Видите ли вы что-то не так с приведенным выше кодом?

...