0

私は、入力でRNNを実行し、その出力に対して別のRNNを繰り返し実行する方が効率的かどうかを判断しようとしています。または、一度に1つのタイムステップをすべてのレイヤー(一度に1つの垂直レイヤー)で実行することもできます。TensorFlowで多層RNNを実装する最も効率的な方法は何ですか?

私はテンソルのMultiCellRNNクラスが後者を行うことを知っています。なぜこの方法は前者よりも選択されていますか?前者は同等に効率的ですか?一度に1つのタイムステップですべてのレイヤーが優先されるケースがありますか?

マルチレイヤRNNの参照については、http://karpathy.github.io/2015/05/21/rnn-effectiveness/を参照してください。

答えて

2

1:どのように簡単にRNN がLSTMセルを使用して実装するために、彼らは一般的に、より良い(無消失グラデーションの問題)だとtensorflowは、それらを通じ実施することが非常に簡単です:

tensorflow.python.opsからBasicLSTMCell ... セル= BasicLSTMCell(state_dim) stacked_lstm = tf.nn.rnn_cell.MultiRNNCellインポート.rnn_cell([セル]を* num_layers、state_is_tuple =真)

がよりtensorflowのウェブサイト上で見つける:https://www.tensorflow.org/tutorials/recurrent/

2:水平または深い? 複数のレイヤーのニューラルネットワークを持つように、マルチレイヤーのRNNを作成することもできます。 RNNセルは、ニューラルネットワーク内のレイヤーと考えることができます。これは、入力を覚えておくための特別なレイヤーです。私の経験から、あなたのネットワーク内では線形変換(または深度)がありますが、lstmセルの複数のレイヤーを持つ質問は、ネットワークのトポロジー、プリファレンス、および計算能力によって決まります。 (仲良くなればなるほど)入力と出力の量はあなたの問題に依存し、覚えている限り、複数の水平RNNセル、深さだけはありません。 すべての計算は、一度に1つずつ深さごとに実行されます。 あなたが参照したマルチレイヤーの機能は素晴らしいです、それはあなたのためにすべての計算を処理します。

幸運

関連する問題