2016-07-06 15 views
0

次のコマンドは、クロスエントロピー関数5_convolutional_net.pyです。 このコスト関数にL1またはL2正規化を追加したいと思います。 TypeError: bad operand type for abs(): 'list'がなぜ登場するのか分かりませんか?一度使用crossentropy()関数にl1またはl2正則化を追加

def RMSprop(cost, params, lr=0.001, rho=0.9, epsilon=1e-6): 
grads = T.grad(cost=cost, wrt=params) 
updates = [] 
for p, g in zip(params, grads): 
    acc = theano.shared(p.get_value() * 0.) 
    acc_new = rho * acc + (1 - rho) * g ** 2 
    gradient_scaling = T.sqrt(acc_new + epsilon) 
    g = g/gradient_scaling 
    updates.append((acc, acc_new)) 
    updates.append((p, p - lr * g)) 
return updates 

cost = T.mean(T.nnet.categorical_crossentropy(noise_py_x, Y)) params = [w, w2, w3, w4, w_o] updates = RMSprop(cost, params, lr=0.001)

cost+=T.sum(abs(params)) それは私に与えTypeError: bad operand type for abs(): 'list'

答えて

0

あなたがリストになく、リストの各要素に、ABS()を適用することはできません。

cost+=T.sum([abs(p) for p in params]) 
+0

'*** AsTensorError:( '[Elemwise {abs_、no_inplace} .0、Elemwise {abs_、no_inplace} .0、Elemwise {abs_、no_inplace} .0、Ele mwise {abs_、no_inplace} .0、Elemwise {abs_、no_inplace} .0] to TensorType '、) ' –

関連する問題