このページは Cloud Translation API によって翻訳されました。
Switch to English

tf.keras.layers.GRU

TensorFlow 1つのバージョン GitHubの上のソースを表示

ゲーテッド再発ユニット - チョーら。 2014。

:から継承GRU

ノートPCで使用されます

ガイドで使用チュートリアルで使用されます

参照してくださいKeras RNNのAPIガイド RNNのAPIの使用方法の詳細については、を。

利用できるランタイムのハードウェアおよび制約に基づいて、この層は、パフォーマンスを最大化するために(cuDNNベースまたは純粋-TensorFlow)異なる実装を選択します。 GPUが利用可能であり、層が出会うCuDNNカーネルの要件のすべての引数場合(詳細は下記参照)、層が速いcuDNN実装を使用します。

cuDNNの実装を使用するための要件は次のとおりです。

  1. activation == tanh
  2. recurrent_activation == sigmoid
  3. recurrent_dropout == 0
  4. unrollあるFalse
  5. use_biasあるTrue
  6. reset_afterあるTrue
  7. 入力は、使用マスキング場合、厳密に右詰めされています。
  8. イーガー実行は、最も外側のコンテキストで有効になっています。

GRUの実装には2種類があります。デフォルトの1はに基づいており、V3とリセットゲートは、行列乗算の前に隠された状態に適用されています。もう一つは、に基づいており、オリジナルと順序が逆転しています。

第二の変形はCuDNNGRUと互換性のある(GPUのみ)とCPU上で推論を可能にします。したがって、それはのために別々の偏見があるkernelrecurrent_kernel 。このバリアントを使用するには、セット'reset_after'=Truerecurrent_activation='sigmoid'

例えば:

inputs = tf.random.normal([32, 10, 8])
gru = tf.keras.layers.GRU(4)
output = gru(inputs)
print(output.shape)
(32, 4)
gru = tf.keras.layers.GRU(4, return_sequences=True, return_state=True)
whole_sequence_output, final_state = gru(inputs)
print(whole_sequence_output.shape)
(32, 10, 4)
print(final_state.shape)
(32, 4)

units 正の整数、出力空間の次元。
activation 使用するアクティベーション機能。デフォルト:双曲線正接( tanh )。あなたは合格しない場合はNone 、何の活性化は適用されません(すなわち活性化"線形": a(x) = x )。
recurrent_activation アクティベーション機能は、再発のステップに使用します。デフォルト:シグモイド( sigmoid )。あなたは合格しない場合はNone 、何の活性化は適用されません(すなわち活性化"線形": a(x) = x )。
use_bias ブールは、(デフォルトTrue )、層は、バイアスベクトルを使用するかどうか。
kernel_initializer 以下のための初期kernelの入力の線形変換のために使用される重み行列、。デフォルト: glorot_uniform
recurrent_initializer 初期化子recurrent_kernel再発状態の線形変換のために使用される重み行列、。デフォルト: orthogonal
bias_initializer バイアスベクトルの初期化子。デフォルト: zeros
kernel_regularizer 正則関数は、に適用されるkernel重み行列。デフォルトなし: None
recurrent_regularizer 正則関数を印加recurrent_kernel重み行列。デフォルトなし: None
bias_regularizer 正則関数は、バイアスベクトルに適用されます。デフォルトなし: None
activity_regularizer 正則関数は、層(その「活性化」)の出力に適用されます。デフォルトなし: None
kernel_constraint 制約関数は、に適用されるkernel重み行列。デフォルトなし: None
recurrent_constraint 制約関数を印加recurrent_kernel重み行列。デフォルトなし: None
bias_constraint 制約関数は、バイアスベクトルに適用されます。デフォルトなし: None
dropout 入力の線形変換のためにドロップする単位の0と1の画分との間のフロート。デフォルト:0。
recurrent_dropout 再発性の状態の線形変換のためにドロップする単位の0と1の画分との間のフロート。デフォルト:0。
implementation 実装モード、1または2のいずれかのモード1は、それらは、より少ない、より大きな操作にモード2意志バッチ一方、小さいドット製品および追加のより大きな数として事業を構築します。これらのモードは、異なるハードウェア上やアプリケーションごとに異なるパフォーマンスプロファイルを持つことになります。デフォルト:2。
return_sequences ブール。かどうかは、出力シーケンスの最後の出力、または全配列を返します。デフォルト: False
return_state ブール。かどうかは、出力に加えて、最後の状態を返します。デフォルト: False
go_backwards ブール(デフォルトFalse )。 Trueの場合、逆方向に入力シーケンスを処理し、逆シーケンスを返します。
stateful ブール(デフォルトはFalse)。 Trueの場合、バッチ内のインデックスで、各サンプルの最後の状態私は、次のバッチのインデックスiのサンプルのための初期状態として使用されます。
unroll ブール(デフォルトはFalse)。 Trueの場合、ネットワークが巻き戻されます、他のシンボリックループが使用されます。展開缶スピードアップRNN、それはより多くのメモリ集約的である傾向があるが。アンロールは短い配列にのみ適しています。
time_major 形状の形式inputsoutputsテンソル。 Trueの場合、入力と出力の形状になり[timesteps, batch, feature] Falseの場合には、それがなるのに対し、 [batch, timesteps, feature] 。使用time_major = TrueそれはRNN計算の最初と最後に転置を避けるので、もう少し効率的です。しかし、ほとんどのTensorFlowデータは、この関数は入力を受け入れ、バッチ主要な形式で出力を発するので、デフォルトでは、バッチ・主要です。
reset_after GRU大会(マトリックス乗算の後または前にリセットゲートを適用するかどうか)。 (デフォルトとCuDNN互換性)「の後に」、真=「の前に」偽=。

引数を呼び出します。

  • inputs :A 3Dテンソル、形状の[batch, timesteps, feature]
  • mask :形状のバイナリテンソル[samples, timesteps]所与のタイムステップは(オプション、デフォルトマスクするかどうかを示すNone )。
  • training :Pythonは層がトレーニングモードまたは推論モードで動作するかどうかを示すブール値。それを呼び出すとき、この引数は、細胞に渡されます。場合にのみ関連しdropoutrecurrent_dropout (オプション、デフォルトで使用されるNone )。
  • initial_state :初期状態のテンソルのリストがセルの最初の呼び出しに渡される(オプション、デフォルトはNoneゼロで満たされた初期状態のテンソルの作成を引き起こします)。

activation

bias_constraint

bias_initializer

bias_regularizer

dropout

implementation

kernel_constraint

kernel_initializer

kernel_regularizer

recurrent_activation

recurrent_constraint

recurrent_dropout

recurrent_initializer

recurrent_regularizer

reset_after

states

units

use_bias

メソッド

get_dropout_mask_for_cell

ソースを表示

RNNセルの入力のためのドロップアウトのマスクを取得します。

既存のキャッシュされたマスクがない場合は、コンテキストに基づいてマスクを作成します。新しいマスクが生成されると、それは細胞内のキャッシュを更新します。

引数
inputs その形状入力テンソルは、ドロップアウトマスクを生成するために使用されるであろう。
training そのトレーニングモードでは、ドロップアウトが非トレーニングモードでは無視されるかどうかをブールテンソル、。
count マスクが生成されますどのように多くのドロップアウトのInt、。これは、一緒に融合内部重みを持つセルに便利です。

戻り値
コンテキストに基づいてマスクを生成したり、キャッシュされたマスクテンソルのリスト、。

get_recurrent_dropout_mask_for_cell

ソースを表示

RNN電池用再発ドロップアウトマスクを取得します。

既存のキャッシュされたマスクがない場合は、コンテキストに基づいてマスクを作成します。新しいマスクが生成されると、それは細胞内のキャッシュを更新します。

引数
inputs その形状入力テンソルは、ドロップアウトマスクを生成するために使用されるであろう。
training そのトレーニングモードでは、ドロップアウトが非トレーニングモードでは無視されるかどうかをブールテンソル、。
count マスクが生成されますどのように多くのドロップアウトのInt、。これは、一緒に融合内部重みを持つセルに便利です。

戻り値
コンテキストに基づいてマスクを生成したり、キャッシュされたマスクテンソルのリスト、。

reset_dropout_mask

ソースを表示

もしあれば、キャッシュされたドロップアウト・マスクをリセットします。

キャッシュされたマスクは、()cell.callを呼び出す前にクリアされるように、RNN層はこのことで呼び出す()メソッドを呼び出すためにため、これは重要です。マスクは、同じバッチ内のタイムステップ間でキャッシュされるべきではなく、バッチ間でキャッシュされるべきではありません。それ以外の場合は、バッチ内のデータの特定のインデックスに対する不当なバイアスをご紹介します。

reset_recurrent_dropout_mask

ソースを表示

もしあれば、キャッシュされた再発ドロップアウト・マスクをリセットします。

キャッシュされたマスクは、()cell.callを呼び出す前にクリアされるように、RNN層はこのことで呼び出す()メソッドを呼び出すためにため、これは重要です。マスクは、同じバッチ内のタイムステップ間でキャッシュされるべきではなく、バッチ間でキャッシュされるべきではありません。それ以外の場合は、バッチ内のデータの特定のインデックスに対する不当なバイアスをご紹介します。

reset_states

ソースを表示

ステートフルRNN層に記録された状態をリセットします。

RNN層を用いて構成されている場合にのみ使用することができstateful = True 。引数:状態:最初の時間ステップでセルに供給される初期状態の値が含まれているnumpyのアレイ。値がNoneの場合、ゼロ充填numpyのアレイは、セル状態のサイズに基づいて作成されます。

発生させます
AttributeError RNN層は、ステートフルない場合。
ValueError RNN層のバッチサイズは不明であるとき。
ValueError 入力numpyのアレイまたは賢明RNN層状態、いずれかのサイズに対応していないとき賢明DTYPE。