无:函数转发中的输出

时间:2016-12-15 18:25:47

标签: python python-2.7 numpy

计算forward后我没有输出。我成功地打印了与print(X)不同的X None,但是当我将{X}放入Y=[np.transpose(X)]并在sigmoid(np.dot(W[i], Y[i])+B[i])中调用它时,它变为None。 W和B都可以,sigmoid有效。 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

我看不出这里有什么问题?

1 个答案:

答案 0 :(得分: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