Итак, я пытаюсь написать функцию активации ELU, и вход в функцию будет представлять собой одномерный массив формы (20,1), а на выходе должен быть аналогичный массив с активацией, применяемой для каждого элемента в массиве. , Проблема в том, что, хотя я сделал это с сигмоидом или 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)
.
В качестве альтернативы было бы сделать для l oop циклическое переключение каждого элемента по одному для обновления массива или заставить метод работать в одном скаляре, а затем при вызове активации циклически переключаться между входами и каждый раз вызывать активацию отдельно для каждого элемента (а затем делать то же самое при вызове его производной).