为了快速计算,我必须用Numpy实现我的Sigmoid函数。这是下面的代码
def sigmoid(Z):
"""
Implements the sigmoid activation in bumpy
Arguments:
Z -- numpy array of any shape
Returns:
A -- output of sigmoid(z), same shape as Z
cache -- returns Z, useful during backpropagation
"""
cache=Z
print(type(Z))
print(Z)
A=1/(1+(np.exp((-Z))))
return A, cache
还有一些相关信息:
Z=(np.matmul(W,A)+b)
Z的类型是:
<class 'numpy.ndarray'>
遗憾的是,我得到了一个:“一元操作数类型不正确--‘tuple’”我已经尝试过解决这个问题,但没有成功。我非常感谢您的建议。最好的
3条答案
按热度按时间kulphzqa1#
**这对我很有效。**我认为不需要使用缓存,因为您已经初始化了它。尝试下面的代码。
g6ll5ycj2#
虽然实现Sigmoid函数非常简单,但有时传递到函数中的参数可能会导致错误。
代码片段
以下是要紧记的几点要点:
Sigmoid函数用于将值范围压缩到范围(0,1)。有许多其他函数可以做到这一点,但提高它的受欢迎程度的一个非常重要的点是,它可以简单地表示其导数,这在反向传播中很方便
Sigmoid导数的实现
Sigmoid的导数可以用Sigmoid表示!!
plicqrtu3#
您之所以看到这个错误,很可能是因为您的
Z
类型为numpy.ndarray
,但它包含一个元组。例如,考虑Z
的定义。如果在
Z
上运行sigmoid
函数,它将输出Z
是numpy.ndarray
,但会生成您得到的TypeError
,因为Numpy在Z
的所有成员之间广播一元求反,其中一个是元组,而元组不实现一元求反。