活性化の使用
活性化は、Activation
レイヤー、またはすべてのフォワードレイヤーでサポートされているactivation
引数を介して使用することができます:
model.add(layers.Dense(64, activation=activations.relu))
これは、同等です。
すべての組み込み活性化は、その文字列識別子を通じて渡すこともできます:
model.add(layers.Dense(64, activation='relu'))
利用できる活性化
relu function
tf.keras.activations.relu(x, alpha=0.0, max_value=None, threshold=0)
rectified linear unit activate functionを適用します。
デフォルト値では、標準的なReLU活性化関数:max(x, 0)
、0と入力テンソルの要素ごとの最大値が返されます。
デフォルトのパラメータを変更すると、ゼロでない閾値を使用したり、活性化の最大値を変更したり、閾値以下の値に対してゼロでない入力の倍数を使用したりすることができます。 入力 tensor
または variable
.
float
閾値より低い値に対する傾きを制御する。float
。Returns
relu活性化関数によって変換された入力テンソルを表すTensor
。テンソルは入力 x
.
シグモイド関数
tf.keras.activations.sigmoid(x)
シグモイド活性化関数、 sigmoid(x) = 1 / (1 + exp(-x))
.
シグモイド活性化関数を適用する。 小さい値(<-5)ではsigmoid
は0に近い値を返し、大きい値(>5)では関数結果は1に近くなる。
シグモイドは2要素のソフトマックスと同等で、第2要素は0であると仮定される。 シグモイド関数は常に0と1の間の値を返します。
例:
引数
- x: 入力テンソル。
戻り値
- シグモイド活性を持つテンソル。
1 / (1 + exp(-x))
.
softmax function
tf.keras.activations.softmax(x, axis=-1)
実数ベクトルをカテゴリ確率のベクトルに変換する。
出力ベクトルの要素は範囲 (0, 1) で合計が 1 になる。
それぞれのベクトルが独立して処理される。 axis
引数は関数が入力のどの軸に沿って適用されるかを設定する。
ソフトマックスは結果が確率分布として解釈できるため、分類ネットワークの最終層の活性化としてよく使われる。
各ベクトルxのソフトマックスはexp(x) / tf.reduce_sum(exp(x))
のように計算される。
入力値inは結果の確率の対数オッズである。
引数
- x : 入力テンソル
- axis.Softmax.Softmax.SoftMax.SoftMax.SoftMax.SoftMaxはソフトマックスを入力テンソルに適用する。 整数, ソフトマックス正規化が適用される軸.
戻り値
テンソル, ソフトマックス変換の出力 (すべての値は非負で和が 1).
Raises
- ValueError.を返す:
dim(x) == 1
.
softplus function
tf.keras.activations.softplus(x)
Softplus activation function, softplus(x) = log(exp(x) + 1)
.
使用例:
Arguments
- x.を使用する場合、 を使用する。 入力テンソル.
戻り値
- softplus活性化.softplus活性化.softplus活性化.softplus活性化:
log(exp(x) + 1)
.
softsign function
tf.keras.activations.softsign(x)
Softsign activation function, softsign(x) = x / (abs(x) + 1)
.
使用例:
>>> a = tf.constant(, dtype = tf.float32)>>> b = tf.keras.activations.softsign(a)>>> b.numpy()array(, dtype=float32)
Arguments<1265><4296>
- を返す。 入力テンソル.
Returns
- ソフトサイン活性化:
x / (abs(x) + 1)
.
tanh function
tf.keras.activations.tanh(x)
双曲正接活性化関数
例えば:
アーギュメント
- x.を入力する。 入力テンソル。
戻り値
- 入力
x
と同じ形状でd型のテンソル、tanh活性化:tanh(x) = sinh(x)/cosh(x) = ((exp(x) - exp(-x))/(exp(x) + exp(-x)))
.
selu function
tf.keras.activations.selu(x)
拡張指数線形ユニット(SELU).
Scaled Exponential Linear Unit (SELU) activation functionは次のように定義されます:
if x > 0: return scale * x
if x < 0: return scale * alpha * (exp(x) - 1)
ここでalpha
とscale
はあらかじめ定義された定数(alpha=1.67326324
とscale=1.05070098
)であります。
基本的にSELU活性化関数はtf.keras.activations.elu
関数の出力にscale
(> 1) を掛け、正の入力に対して1より大きな傾きを確保する。
重みが正しく初期化され(tf.keras.initializers.LecunNormal
初期化子参照)、入力ユニットの数が「十分大きい」(詳細は参考文献参照)限り、連続する2つの層間で入力の平均と分散が保存されるようにalpha
とscale
の値が選ばれている。
使用例:
引数
- x:
Returns
- Scaled Exponential Unit Activation。
scale * elu(x, alpha)
.
Notes: – tf.keras.initializers.LecunNormal
イニシャライザーと一緒に使用する。 – ドロップアウトバリアントtf.keras.layers.AlphaDropout
と一緒に使うこと(通常のドロップアウトではない)
参考文献。 – Klambauer et al., 2017
elu function
tf.keras.activations.elu(x, alpha=1.0)
Exponential Linear Unit.
alpha > 0
による指数線形ユニット(ELU)は:x
if x > 0
andalpha * (exp(x) - 1)
if x < 0
The ELU hyperparameter alpha
controls the value to which anELU saturates for negative net inputs.となる。 ELUは消失勾配効果を弱める。
ELUは負の値を持ち、活性度の平均を0に近づける。0に近い平均活性度は勾配を自然勾配に近づけるため、より速い学習が可能になる。ELUは引数が小さくなると負の値に飽和する。飽和するということは、微分が小さくなり、次の層に伝搬されるバリエーションと情報が減少する。
使用例:
引数
- x: 入力テンソル
- alpha: スカラー、負のセクションのスロープ。
Returns
- ELU (Exponential Linear Unit) activation function:
x > 0
ならx
、x < 0
ならalpha * (exp(x) - 1)
。
参考になります。 Fast and Accurate Deep Network Learning by Exponential Linear Units (ELUs) (Clevert et al, 2016)
exponential function
tf.keras.activations.exponential(x)
Exponential activation function.
例:
Arguments
- x.を使用する場合は、
-
Exponential Linear Units (ELUs) by Exponential Units (ELUs) (Clevert et al, 2016) 入力テンソル。
戻り値
- 指数的活性化を持つテンソル。
exp(x)
.
カスタムアクティベーションの作成
アクティベーションとしてTensorFlow callableを使うこともできる(この場合、テンソルを受け取り、同じ形とd型のテンソルを返す):
model.add(layers.Dense(64, activation=tf.nn.tanh))
「高度アクティベーション」層について
Activity is more complex than a simple TensorFlow function (eg.s.. 学習可能な活性化、状態を維持する活性化など)、Advanced Activationレイヤーとして、モジュール
tf.keras.layers.advanced_activations
にある。 状態を必要とするカスタムアクティベーションが必要な場合は、カスタムレイヤーとして実装する必要があります。Note that you should not apply activation layers instances as the
activation
argument of a layer.They meant to be just like regular layers, e.g.x = layers.Dense(10)(x)x = layers.LeakyReLU()(x)
-