-1
dynamic_rnn()
に送信する前に入力をarray_ops.reverse_sequence()
に逆引きしようとしていますが、推論グラフは問題なくビルドできますが、トレーニンググラフを作成するときには次のエラーが発生します:dynamic_rnn()とarray_ops.reverse_sequence()の問題
Traceback (most recent call last):
File "bin/trainer.py", line 158, in <module>
kmer_len=args.kmer_len)
File "/home/ubuntu/GIT/IvyMike/ivymike/base_model.py", line 193, in run_training
train_op = model.training(loss, learning_rate)
File "/home/ubuntu/GIT/IvyMike/ivymike/base_model.py", line 100, in training
train_op = optimizer.minimize(loss, global_step=global_step)
File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/training/optimizer.py", line 190, in minimize
colocate_gradients_with_ops=colocate_gradients_with_ops)
File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/training/optimizer.py", line 241, in compute_gradients
colocate_gradients_with_ops=colocate_gradients_with_ops)
File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/ops/gradients.py", line 481, in gradients
in_grads = _AsList(grad_fn(op, *out_grads))
File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/ops/array_grad.py", line 307, in _ReverseSequenceGrad
seq_lengths=seq_lengths),
File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/ops/gen_array_ops.py", line 1143, in reverse_sequence
batch_dim=batch_dim, name=name)
File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/ops/op_def_library.py", line 655, in apply_op
op_def=op_def)
File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/framework/ops.py", line 2119, in create_op
set_shapes_for_outputs(ret)
File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/framework/ops.py", line 1586, in set_shapes_for_outputs
shapes = shape_func(op)
File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/ops/array_ops.py", line 1257, in _ReverseSequenceShape
(batch_dim, input_shape.ndims))
TypeError: %d format: a number is required, not NoneType
何が問題になりましたか?
ようこそStackOverflow!コードのデバッグを支援するために、質問を編集し、エラーを生成したソースコードを投稿してください。 – gariepy
これは 'tf.reverse_sequence()'実装のバグです!私は[GitHubの問題](http://stackoverflow.com/questions/36480456/dynamic-rnn-and-array-ops-reverse-sequence-problems)を提出し、修正に取り組んでいます。 – mrry
いくつかの理由で私はここに自分のコードを投稿することはできませんが、 'dynamic_rnn()'を使ってBLSTMの複数のレイヤーをスタックしようとするとこのバグが発生します(この関連リクエストを参照してください:https://github.com/tensorflow/tensorflow/issues/1779)。後方パスでは、最初に 'array_ops.reverse_sequence()'を使用して入力を反転してから、同じ関数を使用して出力を反転させました。また、BLSTMの間にフィードフォワードレイヤーを使用しました。 しかし、1つのBLSTMレイヤーではすべて問題ありません。 ありがとうございました! –