np.maximum(X, 0) β€” это вСкторная поэлСмСнтная опСрация, которая для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ элСмСнта массива X Π²Ρ‹Π±ΠΈΡ€Π°Π΅Ρ‚ максимум ΠΌΠ΅ΠΆΠ΄Ρƒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΈ 0.

Π€ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎ:

result[i] = max(X[i], 0)

ΠŸΡ€ΠΈΠΌΠ΅Ρ€:

import numpy as np
 
X = np.array([[ 1, -2,  3],
              [-4,  5, -6]])
 
Y = np.maximum(X, 0)
print(Y)

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚:

[[1 0 3]
 [0 5 0]]

Π§Ρ‚ΠΎ Π²Π°ΠΆΠ½ΠΎ:

– опСрация выполняСтся Π±Π΅Π· Ρ†ΠΈΠΊΠ»ΠΎΠ², ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ Π²Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠ·ΠΎΠ²Π°Π½Π½ΠΎ
– Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΏΠΎ ΠΏΡ€Π°Π²ΠΈΠ»Π°ΠΌ broadcasting (Π²Ρ‚ΠΎΡ€ΠΎΠΉ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ β€” скаляр)
– Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π½ΠΎΠ²Ρ‹ΠΉ массив
– ΠΏΠΎ смыслу эквивалСнтно ΡƒΡΠ»ΠΎΠ²ΠΈΡŽ X[X < 0] = 0, Π½ΠΎ Π±Π΅Π· индСксации ΠΈ масок

Π’ΠΈΠΏΠΈΡ‡Π½ΠΎΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅:

– ΠΎΠ±Ρ€Π΅Π·ΠΊΠ° ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ (clipping снизу)
– ReLU Π² машинном ΠΎΠ±ΡƒΡ‡Π΅Π½ΠΈΠΈ
– очистка ΡˆΡƒΠΌΠΎΠ² ΠΈ Π°Ρ€Ρ‚Π΅Ρ„Π°ΠΊΡ‚ΠΎΠ²

Π‘Ρ€Π°Π²Π½Π΅Π½ΠΈΠ΅ с Π±ΡƒΠ»Π΅Π²ΠΎΠΉ маской:

Y = np.maximum(X, 0)

vs

Y = X.copy()
Y[Y < 0] = 0

np.maximum:
– ΠΊΠΎΡ€ΠΎΡ‡Π΅
– ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ быстрСС
– Π²Ρ‹Ρ€Π°ΠΆΠ°Π΅Ρ‚ Π½Π°ΠΌΠ΅Ρ€Π΅Π½ΠΈΠ΅ Π΄Π΅ΠΊΠ»Π°Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎ

ΠšΠΎΡ€ΠΎΡ‚ΠΊΠΎ:
np.maximum(X, 0) β€” это Π²Π΅ΠΊΡ‚ΠΎΡ€Π½Ρ‹ΠΉ способ Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ всС ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ значСния Π² массивС Π½Π° Π½ΡƒΠ»ΠΈ Π±Π΅Π· Ρ†ΠΈΠΊΠ»ΠΎΠ² ΠΈ явных условий.