NameError: name 'x' is not defined for a gradient descent function already defined. self.function() also not working

NameError: name 'x' is not defined for a gradient descent function already defined. self.function() also not working

我定义了一个梯度下降函数,它工作得很好,所有参数也包括在内。这是下面相同的代码。

def gradient_descent(init_m,init_c,x,t,learning_rate,iterations,error_threshold):
    m=init_m
    c=init_c
    error_values=list()
    mc_values=list()
    for i in range(iterations):
            e=error(m,x,c,t)
            if e<error_threshold:
                    print('Error less than the threshold. Stopping gradient descent')
                    break
        error_values.append(e)
        m,c=update(m,x,c,t,learning_rate)
        mc_values.append((m,c))
    return m,c,error_values,mc_values

但是当我移动到下一个单元格并尝试 运行 这个函数时,它会生成一个回溯。我什至尝试使用 self.gradient_descent 但效果不佳。这是下面的代码。

init_m=0.9
init_c=0
learning_rate=0.001
iterations=250
error_threshold=0.001
m,c,error_values,mc_values= gradient_descent(init_m,init_c,x,t,learning_rate,iterations,error_threshold)

如果有人可以提供一些意见,那将是巨大的帮助。我得到这个输出。

NameError                                 Traceback (most recent call last)
<ipython-input-18-ea467e4f9ae1> in <module>()
  4 iterations=250
  5 error_threshold=0.001
 ----> 6 m,c,error_values,mc_values= 
  gradient_descent(init_m,init_c,x,t,learning_rate,iterations,error_threshold)

   NameError: name 'x' is not defined

错误消息说明了一切。这是因为你没有定义x。在调用 gradient_descent 函数之前,您必须为 x 分配一个值。实际上你也应该为 t.

做同样的事情

当我们在后续单元格中再次定义函数时,这会起作用。变量是先前定义的。