计算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
我看不出这里有什么问题?
答案 0 :(得分:1)
问题在于以下两行:
Y = Y.append(F)
Yp= Yp.append(Fp)
Y
和Yp
都是列表,因此.append
就地工作,因此会更新这些列表。但是.append
本身会返回None
,因此在循环的第二次迭代中,您不再使用列表了。
使用:
Y.append(F)
Yp.append(Fp)
代替。
这个小片段显示了不同之处:
>>> a = [1]
>>> b = a.append(2)
>>> print(a)
[1, 2]
>>> print(b)
None