在做吴恩达深度学习中的编程正则化里面有一个block,我想要用循环解决问题。
这是有关的代码片段
m = Y.shape[1]
W1 = parameters["W1"]
W2 = parameters["W2"]
W3 = parameters["W3"]
我想用循环得出正则化的值,但是结果总是有问题。
for l in range(1,4):
L2_regularization_cost += (1./mlambd/2) * np.sum(np.square(Wl))
这是结果:
local variable 'L2_regularization_cost' referenced before assignment
这是答案提供的写法:
L2_regularization_cost = (1./mlambd/2)*(np.sum(np.square(W1)) + np.sum(np.square(W2)) + np.sum(np.square(W3)))
我的循环代码里面哪里出错了呢?
代码中直接引起的错误是循环内的L2_regularization_cost没有赋值前引用,要实现变量值累加,变量需先初始化。另外直接用WI也不对,要么写成eval(f'W{I}'),要么直接遍历几个W值列表。
L2_regularization_cost=0
for w in [W1,W2,W3]:
L2_regularization_cost += (1./m*lambd/2) * np.sum(np.square(w))