import numpy as np
from scipy import optimize as opt
import time
def grad_d():
weight = [0, 0]
learnrate = 0.01
tol = 1.e-5
itmax = 1000
for i in range(itmax):
deltaweight = - learnrate * opt.rosen_der(weight)
weight = weight + deltaweight
if abs(deltaweight) < learnrate:
break
return weight, i
print('Weight: ', weight)
print('Iterations: ', i)
运行代码后,我收到错误消息:
“文件”c:/Users/Desfios 5/Desktop/Python/gradientdescent.py”,第19行,在 打印('重量:',重量) NameError:未定义名称“权重”
我是Python新手,我不明白为什么它说变量“weight”是未定义的,而它显然是在grad_d()下定义的
你只是忘了调用你的函数 尝试:
weight
是在函数grad_d()
的范围内定义的。外面的任何代码都看不到它。请务必研究作用域是如何工作的这是因为中的“weight”变量不在全局范围内,只在函数内部工作
您可以在全局级别上定义它以进行解析
将
weight = [0, 0]
移到def grad_d()
之外可以解决问题相关问题 更多 >
编程相关推荐