Tensorflow でフィードフォワード層と再帰層を混在させることができた人はいますか?
例: input->conv->GRU->linear->output
フィードフォワード層を使用して状態を定義せずに自分のセルを定義し、MultiRNNCell 関数を使用して次のようにスタックできると想像できます。
セル = tf.nn.rnn_cell.MultiRNNCell([conv_cell,GRU_cell,linear_cell])
これで生活がぐんと楽になる…
Tensorflow でフィードフォワード層と再帰層を混在させることができた人はいますか?
例: input->conv->GRU->linear->output
フィードフォワード層を使用して状態を定義せずに自分のセルを定義し、MultiRNNCell 関数を使用して次のようにスタックできると想像できます。
セル = tf.nn.rnn_cell.MultiRNNCell([conv_cell,GRU_cell,linear_cell])
これで生活がぐんと楽になる…
このチュートリアルl では、畳み込み層を再帰層と一緒に使用する方法の例を示します。たとえば、次のような最後の畳み込み層があります。
...
l_conv4_a = conv_pre(l_pool3, 16, (5, 5), scope="l_conv4_a")
l_pool4 = pool(l_conv3_a, scope="l_pool4")
l_flatten = flatten(l_pool4, scope="flatten")
そしてRNNセルを定義した:
_, shape_state = tf.nn.dynamic_rnn(cell=shape_cell,
inputs=tf.expand_dims(batch_norm(x_shape_pl), 2), dtype=tf.float32, scope="shape_rnn")
両方の出力を連結して、次のレイヤーへの入力として使用できます。
features = tf.concat(concat_dim=1, values=[x_margin_pl, shape_state, x_texture_pl, l_flatten], name="features")
または、CNN レイヤーの出力を RNN セルへの入力として使用することもできます。
_, shape_state = tf.nn.dynamic_rnn(cell=shape_cell,
inputs=l_flatten, dtype=tf.float32, scope="shape_rnn")