2016-12-15 63 views
0

計算後我沒有輸出forward。我成功地打印X,print(X)這是不同於None,但是當我把X在Y=[np.transpose(X)]和調用它在sigmoid(np.dot(W[i], Y[i])+B[i])它變成None。 W和B都可以,S形工作。 Y有什麼問題?無:輸出功能正向

def forward(sigmoid,W,B,X): 

    Y,Yp = [np.transpose(X)],[] 
    for i in range(len(W)-1): 
----> F, Fp = sigmoid(np.dot(W[i], Y[i])+B[i]) # problem is here Y is none 
     Y = Y.append(F) 
     Yp= Yp.append(Fp) 

    return Y,Yp 

這是我的函數:

def sigmoid(z): 

    # z is a float 
    y=np.divide(1,1+np.exp(-z)) 
    yp= y*(1-y) 
    return y,yp 

我看不出這裏有什麼問題?

+0

在該行中的表達包括'值Y [i]'和'B [I]'。檢查「Y」或「B」是否爲「無」。 –

+0

錯誤是由於'Y [i]'或'B [i]'造成的,並且與'sigmoid(z)無關' – AlexG

+0

l更新了我的文章 – heisen

回答

1

的問題是在這兩條線:

Y = Y.append(F) 
Yp= Yp.append(Fp) 

兩個YYp是列表,因此.append就地工作,是使這些名單進行更新。但.append本身返回None,因此在循環的第二次迭代中,您不再使用這些列表。

用途:

Y.append(F) 
Yp.append(Fp) 

代替。

這個小片斷顯示的區別:

>>> a = [1] 
>>> b = a.append(2) 

>>> print(a) 
[1, 2] 
>>> print(b) 
None