参数传递格式问题

博客探讨了Python中参数传递时是否需要为字符类型值加引号的问题。作者遇到因未加引号导致的UnboundLocalError,指出在调用函数如`linear_activation_forward()`时,参数类型识别的疑惑,并分享了错误排查经历。
摘要由CSDN通过智能技术生成

关于参数传递加引号问题,是不是传字符类型的值必须加引号
那系统是怎么识别是什么类型的呢
比如def info(name,age)是不是调用的时候参数name就需加引号
遇到了下面的问题:

def linear_activation_forward(A_prev,W,b,activation):
    """
    实现LINREAR->ACTIVATION这一层的前向传播
    :param A_prev: 来自前一层的预激活量,维度为(上一层的节点数量,示例数)
    :param W: 权重矩阵,维度为(当前层的节点数量,前一层的节点数量)
    :param b: 偏向量,numpy矩阵,维度为(当前层的节点数量,1)
    :param activation: 选择在此层中使用的激活函数名,字符串类型,【sigmoid|relu】
    :return: A-激活函数的输出,也成为激活后的值
             cache-一个包含"linear_cache"和"activation_cache"的字典,我们需要存储它以有效计算后向传播
    """
    if activation=="sigmoid":
        Z,linear_cache=linear_forward(A_prev,W,b)
        A,activation_cache=sigmoid(Z)
    elif activation=="relu":
        Z, linear_cache = linear_forward(A_prev, W, b)
        A, activation_cache = relu(Z)
    #assert(AA.shape==(W.shape[0],A_prev.shape[1]))
    cache=(linear_cache,activation_cache)
    return A,cache

def L_model_forward(X,parameters):
    """
    实现[LINEAR->RELU]*(L-1)->LINEAR->SIGMOID计算前向传播,也就是多层网络的前向传播
    :param X:输入数据(输入节点数量,示例数)
    :param parameters:initialize_parameters_deep()的输出
    :return:AL-最后的激活值
            caches-包含以下内容的缓存列表
            linear_relu_forward()的每个cache(有L-1个,所因为从0到L-2)
            linear_sigmoid_forward()的每个cache(只有一个,索引为L-1)
    """
    caches = []
    A = X
    L = len(parameters) // 2

    for l in range(1,L):
        A_prev = A
        A, cache = linear_activation_forward(A_prev, parameters['W' + str(l)], parameters['b' + str(l)], "relu")
        caches.append(cache)

    AL, cache = linear_activation_forward(A, parameters['W' + str(L)], parameters['b' + str(L)], ==***sigmoid***==)
    caches.append(cache)

    assert(AL.shape==(1,X.shape[1]))
    return AL,caches

就是因为调用linear_activation_forward()函数时,第四个参数没有加引号,然后if语句没有识别,也就没有执行,出现了如下报错:UnboundLocalError: local variable ‘linear_cache’ referenced before assignment(本地变量在引用前没有被定义)
真的找了好久这个错误才发现,上面是我的猜测,找了资料也没找到相关解释,先记录一下,学完更多的python,回来再解决。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值