ケラスのシーケンスDNNでアクティベーション関数としてLeakyReluを使用するにはどうすればよいですか?


14

ケラスのシーケンスDNNでアクティベーション関数としてLeakyReluをどのように使用しますか?次のようなものを書きたい場合:

 model = Sequential()
    model.add(Dense(90, activation='LeakyRelu'))

解決策は何ですか?LeakyReluをReluと同じように配置しますか?

2番目の質問は、LeakyReluのパラメーターを調整するための最も一般的な設定は何ですか?Reluよりパフォーマンスが大幅に向上するのはいつですか?

回答:


15

例のように文字列名を指定するだけでなく、PythonクラスのようにLeakyRelu レイヤーを使用できます。通常のレイヤーと同様に機能します。

LeakyReLUをインポートしてモデルをインスタンス化する

from keras.layers import LeakyReLU
model = Sequential()

# here change your line to leave out an activation 
model.add(Dense(90))

# now add a ReLU layer explicitly:
model.add(LeakyReLU(alpha=0.05))

たとえばactivation='relu'、ソースコードで作成された単純なエイリアスにより、たとえば簡単に記述できるようになりました。


2番目の質問:

LeakyReluのパラメーターを調整するための最も一般的な設定は何ですか?そして、そのパフォーマンスがReluよりも大幅に優れている場合はどうでしょうか。

LeakyReLUの最適な設定を提供することはできません。恐らく、モデル/データによって異なります。

ReLUとLeakyReLUの違いは、それに流入する負の値をある程度保持する後者の能力ですが、前者は単に0未満のすべての値を0に設定します。理論的には、この拡張出力範囲は、それを使用するモデルにわずかに高い柔軟性。発明者はそれが有用であると考え、おそらくいくつかのベンチマークの場合であることを証明したと確信しています。ただし、実際には、一般的にReLUのみを使用します。これは、LeachyReLUの利点が一貫しておらず、ReLUの方が計算コストが低いため、モデルのトレーニングがわずかに速くなるためです。


1

問題は、Keras Functional API内でLeayReLUを使用することに関するものだったと思います。これは次のようになります。

from keras.layers import LeakyReLU
...
x = Dense(128)(x)
x = LeakyReLU(alpha=0.3)(x)

```

0

LeakyReluは、ユニットがアクティブでない場合(負の場合)に小さな勾配を許可します。

f(x)=alphaxforx<0,
f(x)=xforx>=0.

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.