我已经定义了一个梯度下降函数,运行得很好,所有参数也都包含在内。以下是代码。
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.9init_c=0learning_rate=0.001iterations=250error_threshold=0.001m,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
回答:
当我们在后续单元格中重新定义函数时,这会起作用。这些变量之前已经被定义了。