Как реализовать утечку с помощью функций Numpy
Я пытаюсь реализовать утечку Relu, проблема в том, что мне нужно сделать 4 цикла для 4-х мерного массива ввода.
Есть ли способ, которым я могу сделать течь, только с помощью функций Numpy?
5 ответов
Вот два подхода к реализации leaky_relu
:
import numpy as np
x = np.random.normal(size=[1, 5])
# first approach
leaky_way1 = np.where(x > 0, x, x * 0.01)
# second approach
y1 = ((x > 0) * x)
y2 = ((x <= 0) * x * 0.01)
leaky_way2 = y1 + y2
import numpy as np
def leaky_relu(arr):
alpha = 0.1
return np.maximum(alpha*arr, arr)
Выходя из статьи в Википедии для просачивающегося релея, вы сможете сделать это с помощью простой маскирующей функции.
output = np.where(arr > 0, arr, arr * 0.01)
Где бы вы ни находились выше 0, вы сохраняете значение, где-то еще вы заменяете его на arr * 0.01.
Просто добавлю, этот подход:
def leaky_relu(x):
return np.maximum(0.01*x, x)
в 2 раза быстрее, чем этот:
leaky_way1 = np.where(x > 0, x, x * 0.01)
def leaky_relu_forward(x, alpha):
out = x
out[out <= 0]=out[out <= 0]* alpha
return out