在使用梯度下降法更新参数时,我使用了以下代码:
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))
但是我收到了’dict’对象不可调用的错误。如何解决这个问题?
回答:
访问字典中的值需要使用方括号[]
,而不是圆括号()
(参见这个回答)。从你提供的代码来看,像grads("db" + str(l+1))
这样的代码需要改成grads["db" + str(l+1)]
来修复你的错误。
关于代码风格的一些建议:
- 为了避免与大写字母
I
或数字1
混淆,不应使用小写字母l
作为变量名。 - 可以将
a = a - b
模式替换为a -= b
。 - 由于
str(l+1)
被频繁调用,你可以考虑将这个字符串保存为一个变量。