梯度下降更新参数时Python字典报错‘dict不可调用’的解决方法
解决梯度下降代码中的‘dict' object is not callable错误
嘿,这个错误其实挺常见的,问题就出在你访问字典grads的方式上!
你写的代码里用了**括号()**来获取grads里的梯度值:
grads("dW" + str(l+1)) grads("db" + str(l+1))
但在Python里,字典是用**方括号[]**来访问键对应元素的,括号是用来调用函数的,所以Python会误以为grads是个可调用的函数,可它本质是个字典,自然就抛出这个错误了。
修正后的代码应该是这样的:
for l in range(L): parameters["W" + str(l+1)] = parameters["W" + str(l+1)] - learning_rate * grads["dW" + str(l+1)] parameters["b" + str(l+1)] = parameters["b" + str(l+1)] - learning_rate * grads["db" + str(l+1)]
另外给你个小建议,用Python的f-string来拼接字符串会让代码更简洁易读,比如改成这样:
for l in range(L): layer = l + 1 parameters[f"W{layer}"] = parameters[f"W{layer}"] - learning_rate * grads[f"dW{layer}"] parameters[f"b{layer}"] = parameters[f"b{layer}"] - learning_rate * grads[f"db{layer}"]
这样看起来是不是清爽多啦?
内容的提问来源于stack exchange,提问作者Aditya Kumar
相关产品推荐
相关产品推荐

