我目前正在阅读 Harrison Kinsley 的 nnfs 书,在描述反向传播中 ReLU 函数的导数时,他使用了这段代码
drelu = dvalues.copy()
drelu[z <= 0] = 0 <--------
他基本上用零替换了 drelu 的所有值,其中 z 中的相应元素小于或等于 0。第二行是什么意思/做什么,具体发生了什么(只是问一下,以便我能理解发生了什么并将其用于未来的项目)。
Python 顺便说一句
我得到了一个 np 数组,它等效于 z 数组,但每个值都是 <=0 was 0 (expected output)
z <= 0
创建一个与 z
大小完全相同的布尔数组,在这些位置为 True 为 z <= 0
,在其他地方为 False。
drelu[a_boolean_array] = 0
仅在布尔数组为 True 的那些位置将 drelu
设置为 0。如果两个数组的大小不同,则会发生各种广播,但这不是问题。
结合这两个,可以看到
drelu[z <= 0] = 0
在drelu
小于等于0的位置将z
设置为0;