如果使用元素值满足条件,则替换python 1D数组中的元素

时间:2020-03-08 09:26:07

标签: python arrays numpy

所以我试图编写一个ELU激活函数,并且该函数的输入将是形状为(20,1)的一维数组,而输出应该是一个相似的数组,并且对该数组中的每个元素都应用了激活。问题是,尽管我已经使用S形或tanh进行了此类操作,但是对于ELU,我们有条件地检查给定索引处的值。

def elu(x): 
    d=np.zeros_like(x, dtype=float)  
    d[x<=0]=alpha * (np.exp(x) - 1)
    d[x>0]=x
    return d

到目前为止,这是我所拥有的,但是它不起作用,因为我在数组本身上调用了np.exp函数,所以输出将是一个数组,但是我试图分配将该数组值合并为单个元素。问题是,我将如何访问满足该条件的元素并将其替换为该表达式的值,即alpha*(np.exp(x)-1)

另一种方法是使for循环逐个循环遍历每个元素以更新数组或使方法在单个标量上工作,然后在调用激活时循环遍历输入并每次分别调用激活每个元素(然后在调用其派生元素时执行相同操作)。

1 个答案:

答案 0 :(得分:1)

由于尝试分配不同维度的数组,因此出现维度不匹配的情况。您还需要过滤x,即:

def elu(x): 
    d=np.zeros_like(x, dtype=float)  
    d[x<=0]=alpha * (np.exp(x[x<=0]) - 1)
    d[x>0]=x[x>0]
    return d
相关问题