2

tensorflow は、双方向 RNN の可変バッチ サイズをサポートしていないようです。この例では、 は Python 整数である にsequence_length関連付けられています。batch_size

  _seq_len = tf.fill([batch_size], tf.constant(n_steps, dtype=tf.int64))
  outputs, state1,state2 = rnn.bidirectional_rnn(rnn_fw_cell, rnn_bw_cell, input,
                                    dtype="float",
                                    sequence_length=_seq_len)

トレーニングとテストに異なるバッチ サイズを使用するにはどうすればよいですか?

4

1 に答える 1

5

双方向コードは可変バッチ サイズで動作します。たとえば、このテスト コードtf.placeholder(..., shape=(None, input_size))を見てみましょう。これは、 (Noneバッチ サイズが可変であることを意味します)を作成します。

少し変更するだけで、コード スニペットを変換して可変バッチ サイズで動作させることができます。

# Compute the batch size based on the shape of the (presumably fed-in) `input`
# tensor. (Assumes that `input = tf.placeholder(..., shape=[None, input_size])`.)
batch_size = tf.shape(input)[0]

_seq_len = tf.fill(tf.expand_dims(batch_size, 0),
                   tf.constant(n_steps, dtype=tf.int64))
outputs, state1, state2 = rnn.bidirectional_rnn(rnn_fw_cell, rnn_bw_cell, input,
                                                dtype=tf.float32,
                                                sequence_length=_seq_len)
于 2016-03-23T21:42:21.713 に答える