我想在矩阵的所有行上应用一种方法,然后获得结果的平均值。
具体来说,我有一个方法:
import numpy as np
def relu(x, grad=False):
numpy_x= np.array(x)
if grad:
return np.where(numpy_x <= 0, 0, 1)
return np.maximum(0, numpy_x)
我有一个numpy数组:
a=np.array([[1,2,3],[2,3,4]])
我想将relu应用于数组的所有行并将它们汇总。因此,我尝试执行以下操作以首先将relu应用于所有行:
np.apply_along_axis(relu, 1,a)
但是,有一个问题,我们可以将param grad = False的relu应用于所有行。如果我们想将relu(,grad = True)应用于a的所有行怎么办?
答案 0 :(得分:1)
我不完全了解您的问题。与默认参数有关吗?如果是这样,请尝试
np.apply_along_axis(lambda x: relu(x, grad=True), 1, a)
如果要平均结果,我相信以下代码就足够了:
avg_relu = np.mean(relu(a, False), axis=1)
avg_relu_grad = np.mean(relu(a, True), axis=1)