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なのだそうです。
言葉を作るのは勝手ですが、読み方までしっかり決めておいてほしいですよね。