2017-09-11 10 views
0

3層のLSTMをtf.nn.dynamic_rnn関数に渡しています。具体的な方法でdynamic_rnn関数の出力を処理したいと思います。すなわち、dynamic_rnnの出力フローを完全に接続されたレイヤーにしたいと思います。 dynamic_rnnからの出力はrank-3テンソルであり、形状は[batch_size, sequence_length, hidden_dim]です。Tensorflowのtf.nn.dynamic_rnnからの出力の処理

私はdynamic_rnnの最後の出力を使用するために使用されるので、FC層に、その形状[batch_size, hidden_dim]あるoutput[:, -1]を渡すために使用されます。

しかし今回は、シーケンス全体の出力を使用したいと思います。これは3次元テンソルであるoutput[:]ですが、FCレイヤーへの接続の重みは2-dテンソルWで表されます。

答えて

1

層内で階級テンソル(最深の奥行き寸法を持つ)をどのように扱うかの例については、tf.layers.denseのコードを見てください。すなわち:出力の形状が[b,t,e]です:A[b,t,d]Wを形作っている

tf.matmul(A,W)[d,e]は、内側寸法に沿って内積をとる形作られている:tf.matmulは、適切な放送で3-tensorに行列乗算を適用する方法を知っています。 [e]という形のバイアスベクトルを追加することも同様に正しく放送されます。

関連する問題