ReLUレイヤを実装
class ReLU:
    def __init__(self):
        self.mask = None
    def forward(self, x):
        self.mask = (x <= 0)
        y = x.copy()
        y[self.mask] = 0
        return y
    def backward(self, dy):
        dy[self.mask] = 0
        dx = dy
        return dx
maskの使い方が面白いです。
ReLUはforwardではxが0以下の時は0を返し、0より大きいときは恒等関数になります。
通常はif文を使って書けばよいような気がしますが、maskを使うと上記のように書けます。
x<=0の時maskはtrueになって、それ以外の時はfalseになるので、yにxをいれておいて、maskがtrueの部分だけ0にすればよいわけですね。
... if文で良いのでは ...?
ところでReLUってどう読むんでしょうか?
スペルアウトはRectified Linear Unitなのだそうです。
言葉を作るのは勝手ですが、読み方までしっかり決めておいてほしいですよね。