我正在尝试实现一个函数,用于计算矩阵中每个元素的Relu导数,并将结果返回为一个矩阵。我使用的是Python和Numpy。
根据其他Cross Validation帖子,x的Relu导数在x > 0时为1,在x < 0时为0,当x == 0时为未定义或0。
目前,我已经有了以下代码:
def reluDerivative(self, x): return np.array([self.reluDerivativeSingleElement(xi) for xi in x])def reluDerivativeSingleElement(self, xi): if xi > 0: return 1 elif xi <= 0: return 0
不幸的是,xi是一个数组,因为x是一个矩阵。reluDerivativeSingleElement函数无法在数组上工作。所以我想知道是否有办法使用numpy将矩阵中的值映射到另一个矩阵,就像numpy中的exp函数那样?
非常感谢您的帮助。
回答:
我想这就是您要找的:
>>> def reluDerivative(x):... x[x<=0] = 0... x[x>0] = 1... return x>>> z = np.random.uniform(-1, 1, (3,3))>>> zarray([[ 0.41287266, -0.73082379, 0.78215209], [ 0.76983443, 0.46052273, 0.4283139 ], [-0.18905708, 0.57197116, 0.53226954]])>>> reluDerivative(z)array([[ 1., 0., 1.], [ 1., 1., 1.], [ 0., 1., 1.]])