Как реализовать утечку с помощью функций 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
Другие вопросы по тегам