From 710dbe6c0f12001727292af87ed325923b712725 Mon Sep 17 00:00:00 2001 From: SUZUKI Amane Date: Thu, 24 Nov 2016 13:27:18 +0900 Subject: [PATCH] Modify RNN (#55) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Fix spelling inconsistency - "リカレントレイヤー" and "RNNs" to "Recurrentレイヤー" * Use natural japanese --- sources/layers/recurrent.md | 46 ++++++++++++++++++------------------- 1 file changed, 23 insertions(+), 23 deletions(-) diff --git a/sources/layers/recurrent.md b/sources/layers/recurrent.md index 21d8768..46ca3b1 100644 --- a/sources/layers/recurrent.md +++ b/sources/layers/recurrent.md @@ -5,11 +5,11 @@ keras.layers.recurrent.Recurrent(weights=None, return_sequences=False, go_backwards=False, stateful=False, unroll=False, consume_less='cpu', input_dim=None, input_length=None) ``` -リカレントレイヤーに対する抽象的な基底クラス. -モデルの中では利用しないでください -- これは妥当なレイヤーではありません! -代わりにその子クラス`LSTM`, `GRU`, `SimpleRNN`を利用してください. +Recurrentレイヤーに対する抽象的な基底クラス. +モデルの中では利用しないでください -- これは直接利用可能なレイヤーではありません! +代わりに子クラスである`LSTM`, `GRU`, `SimpleRNN`を利用してください. -すべてのリカレントレイヤー (`LSTM`, `GRU`, `SimpleRNN`) もこのクラスの仕様に従い,下に列挙したキーワードの引数を許容します. +すべてのRecurrentレイヤー (`LSTM`, `GRU`, `SimpleRNN`) はこのクラスの仕様に従い,下に列挙したキーワード引数が使用可能です. __例__ @@ -21,18 +21,18 @@ model.add(LSTM(32, input_shape=(10, 64))) # ここで model.output_shape == (None, 32) # 注: `None`はバッチ次元.note: `None` is the batch dimension. -# 次は同じことです: +# 以下は同様の意味です: model = Sequential() model.add(LSTM(32, input_dim=64, input_length=10)) -# 続くレイヤーに対して,入力サイズを特定する必要はありません: +# 2層目以降のレイヤーに対しては,入力サイズを指定する必要はありません: model.add(LSTM(16)) ``` __引数__ - __weights__: 重みの初期値として設定するnumpy arrayのリスト. - リストは次のshapeを持つ三つの要素からなります: + リストは次のshapeを持つ3つの要素からなります: `[(input_dim, output_dim), (output_dim, output_dim), (output_dim,)]`. - __return_sequences__: 論理型.出力シーケンスの最後の出力を返すか, 完全なシーケンスを返すか. @@ -45,17 +45,17 @@ __引数__ 常に展開されるので,この引数は何もしません. 展開はよりメモリ集中傾向になりますが,RNNをスピードアップできます. 展開は短いシーケンスにのみ適しています. -- __consume_less__: "cpu", "mem", "gpu"の一つ (LSTM/GRUのみ). - "cpu"に設定すれば,RNNはより僅かでより大きい行列積を用いた実装を利用するので, - CPUではより速く動作しますがより多くのメモリを消費します. - "mem"に設定すれば,RNNはより多くの行列積を利用しますが,より小さい行列積を利用します. - よってより遅く動作する一方(実際にはGPUではより高速になるかもしれない) - より少ないメモリを消費します. +- __consume_less__: "cpu", "mem", "gpu"(LSTM/GRUのみ)のいずれか. + "cpu"に設定すれば,RNNは少ない代わりに大きい行列積を用いた実装を利用します. + CPUでは速く動作する一方,多くのメモリを消費します. + "mem"に設定すれば,RNNは多い代わりに小さい行列積を用いた実装を利用します. + CPUでは遅く動作する一方(GPUではむしろ高速になるかもしれません), + メモリの消費は少なくなります. "gpu"に設定すれば(LSTM/GRUのみ),RNNは入力ゲート, - 忘却ゲート,出力ゲートを一つの行列に結び付け, - GPU上でもっと計算時間の効率の良い並列化を可能にします. + 忘却ゲート,出力ゲートを1つの行列に結び付け, + GPUにおいてより計算時間の効率の良い並列化を可能にします. 注意: RNNのドロップアウトはすべてのゲートに対して共有化されている必要があり, - 結果として僅かに正則化の効果を低減することになります. + 結果として僅かに正則化の効果が低減します. - __input_dim__: 入力の次元(整数) この引数(または代わりのキーワード引数`input_shape`)は @@ -64,7 +64,7 @@ __引数__ - __input_length__: 入力シーケンスの長さ. この引数は`Flatten`ひいては`Dense`なレイヤーを上流に結びつけるときに必要となります. (これなしでは,密な出力のshapeを計算できません). - 注意: リカレントレイヤーがあなたのモデルの最初のレイヤーでなければ, + 注意: Recurrentレイヤーがあなたのモデルの最初のレイヤーでなければ, 最初のレイヤーのレベルで入力の長さを指定する必要があります (例えば`input_shape`引数を通じて). @@ -86,12 +86,12 @@ __マスキング__ __パフォーマンスの注意点__ RNNのパフォーマンスはTensorFlowよりもTheanoのほうが遥かに優れています. -加えて,TensorFlowを使う際は,`unroll=True`がよりパフォーマンスにとっては好ましいです. +加えて,TensorFlowを使う際は,`unroll=True`がよりパフォーマンスが良いです. -__RNNsで状態管理性を利用するときの注意__ +__Recurrentレイヤーで状態管理を利用するときの注意点__ -RNNレイヤーが状態管理されるように設定できます. -これは一つのバッチのサンプルに対して計算される状態が +Recurrentレイヤーが状態管理されるように設定できます. +これは1つのバッチのサンプルに対して計算される状態が 次のバッチのサンプルに対する初期状態として再利用されることを意味します. これは異なる連続したバッチのサンプル間の1対1対応を仮定します. @@ -110,7 +110,7 @@ RNNレイヤーが状態管理されるように設定できます. __TensorFlowでドロップアウトを利用するときの注意__ -TensorFlowバックエンドを利用するとき,状態管理RNNsについての注意に従って, +TensorFlowバックエンドを利用するとき,状態管理されたRecurrentレイヤーについての注意に従って, あなたのモデルに対する固定されたバッチサイズを指定してください. ---- @@ -122,7 +122,7 @@ TensorFlowバックエンドを利用するとき,状態管理RNNsについて keras.layers.recurrent.SimpleRNN(output_dim, init='glorot_uniform', inner_init='orthogonal', activation='tanh', W_regularizer=None, U_regularizer=None, b_regularizer=None, dropout_W=0.0, dropout_U=0.0) ``` -出力が入力にフィードバックされる完全連結RNN. +出力が入力にフィードバックされる全結合RNN. __引数__