drelu[z ?<= ?0?] ?= ?0 是什么意思?

Shi*_*ngh -1 python artificial-intelligence

我目前正在阅读 Harrison Kinsley 的 nnfs 书,在描述反向传播中 ReLU 函数的导数时,他使用了这段代码

\n
drelu \xe2\x80\x8b= \xe2\x80\x8bdvalues.copy()\ndrelu[z \xe2\x80\x8b<= \xe2\x80\x8b0\xe2\x80\x8b] \xe2\x80\x8b= \xe2\x80\x8b0\n
Run Code Online (Sandbox Code Playgroud)\n

他实质上是用零替换 drelu 的所有值,其中 z 中的相应元素小于或等于 0。第二行的含义/作用是什么,发生了什么特定的事情(只是询问以便我能理解什么)正在进行中并将其用于未来的项目)。

\n

顺便说一句,Python

\n

我得到了一个与 z 数组等效的 np 数组,但每个 <=0 的值都是 0 (预期输出)

\n

Fra*_*lin 5

z <= 0z创建一个布尔数组,其大小与这些位置中的 True和其他位置中的 False完全相同z <= 0

drelu[a_boolean_array] = 0 drelu仅在布尔数组为 True 的位置设置为 0。如果两个数组的大小不同,则会发生各种广播,但这不是问题。

结合这两者,您可以看到在小于或等于 0 的位置drelu[z <= 0] = 0设置为 0;dreluz