如何在不使用Tensorflow的情况下在Python中实现Leaky ReLU的派生?
有比这更好的方法吗?我希望函数返回一个numpy数组
def dlrelu(x, alpha=.01):
# return alpha if x < 0 else 1
return np.array ([1 if i >= 0 else alpha for i in x])
提前感谢您的帮助
答案 0 :(得分:3)
您使用的方法有效,但严格来说,您正在计算与损失或较低层相关的导数,因此从下层传递值以计算导数(dl / dx)可能也是明智之举。
无论如何,你可以避免使用对大x
更有效的循环。这是一种方法:
def dlrelu(x, alpha=0.01):
dx = np.ones_like(x)
dx[x < 0] = alpha
return dx
如果您从较低层传递了错误,它看起来像这样:
def dlrelu(dl, x, alpha=0.01):
""" dl and x have same shape. """
dx = np.ones_like(x)
dx[x < 0] = alpha
return dx*dl