Python错误:名称错误:未定义名称

2024-04-26 19:14:06 发布

您现在位置:Python中文网/ 问答频道 /正文

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()下定义的


Tags: fromimportnumpyasnpscipyprintopt
3条回答

你只是忘了调用你的函数 尝试:

weight, i = grad_d()
print('Weight: ', weight)
print('Iterations: ', i)

weight是在函数grad_d()的范围内定义的。外面的任何代码都看不到它。请务必研究作用域是如何工作的

这是因为中的“weight”变量不在全局范围内,只在函数内部工作

您可以在全局级别上定义它以进行解析

weight = [0, 0]移到def grad_d()之外可以解决问题

相关问题 更多 >