機械学習の勉強をするためPython でプログラミングしております。
活性化関数のRelu型関数に関して、条件を変えて色々試したくてプログラムを試みているのですがうまくいきません。
やりたいことは
1 ある以上の値になった場合に0を返す
2ある以上の値になった場合は関数の上限を固定する
3ある以上の値になった場合、値を変更する=例えばランダム性を生じる
などです。某有名書のコードをそのまま使っておりまして,Reluの順向きな発火に関しては、 Self.mask を組み込んでおります。
**
https://github.com/oreilly-japan/deep-learning-from-scratch
こちらの ch05 の二層の実行プログラム
https://github.com/oreilly-japan/deep-learning-from-scratch/blob/master/ch05/two_layer_net.py
の背景にあるコードを編集してみようと思っています。
https://github.com/oreilly-japan/deep-learning-from-scratch/blob/master/common/layers.py
こちらのClass Relu, が該当コードとなります。
**
Python
1def forward(self, x): 2 self.mask = (x <= 0) 3 out = x.copy() 4 out[self.mask] = 0 5
このようなコードで通常のReluの振る舞いを定義しております。
ここで0以下に加えて、500以上の値を取った時に0の値を出力したいのですが、
Python
1def forward(self, x): 2 self.mask = (x <= 0) & (x > 500) 3 out = x.copy() 4 out[self.mask] = 0
もしくは
Python
1def forward(self, x): 2 self.mask = (x <= 0) | (x > 500) 3 out = x.copy() 4 out[self.mask] = 0
で目的の指定ができるかと思っているのですが、これで良いのでしょうか。試していて動かしても正しく動いているように思えません。
正しく設定する方法をご教示いただけましたら大変ありがたいです。
また2はRelu6
ReLU6(x)=min(max(0,x),6)
などがその例かと思うのですが、こちらを上記のfoward の関数の中にどのように取り込めばよいかもアドバイスいただけますと幸いです。
3に関しては具体的なアイデアはまだないのですが、例えばある一定上の値になった場合にはある一定までからゼロのランダムをとる、 というものが記述できないかと思っております。
ぜひお力を頂きたく思います。
回答1件
あなたの回答
tips
プレビュー