HadoopIt / rnn-nlu

A TensorFlow implementation of Recurrent Neural Networks for Sequence Classification and Sequence Labeling
483 stars 171 forks source link

Linear is expecting 2D arguments: [[2, None, 128]] with --bidirectionnal_rnn=True argument #1

Closed pldelisle closed 7 years ago

pldelisle commented 7 years ago

Hi,

When using --bidirectionnal_rnn=True argument, I get the following output :

/usr/bin/python2.7 /home/pldelisl/Downloads/rnn-nlu-master/run_multi-task_rnn.py --data_dir=/home/pldelisl/Downloads/rnn-nlu-master/data/ATIS_samples --max_sequence_length=50 --task=joint --bidirectional_rnn=True --train_dir=model_tmp
Applying Parameters:
word_embedding_size: 128
task: joint
data_dir: /home/pldelisl/Downloads/rnn-nlu-master/data/ATIS_samples
in_vocab_size: 10000
dropout_keep_prob: 0.5
train_dir: model_tmp
num_layers: 1
max_gradient_norm: 5.0
batch_size: 16
out_vocab_size: 10000
use_attention: True
max_sequence_length: 50
bidirectional_rnn: True
steps_per_checkpoint: 300
max_train_data_size: 0
max_training_steps: 10000
max_test_data_size: 0
size: 128
Preparing data in /home/pldelisl/Downloads/rnn-nlu-master/data/ATIS_samples
Max sequence length: 50.
Creating 1 layers of 128 units.
Use the attention RNN model
Traceback (most recent call last):
  File "/home/pldelisl/Downloads/rnn-nlu-master/run_multi-task_rnn.py", line 356, in <module>
    tf.app.run()
  File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/platform/app.py", line 30, in run
    sys.exit(main(sys.argv[:1] + flags_passthrough))
  File "/home/pldelisl/Downloads/rnn-nlu-master/run_multi-task_rnn.py", line 353, in main
    train()
  File "/home/pldelisl/Downloads/rnn-nlu-master/run_multi-task_rnn.py", line 230, in train
    model, model_test = create_model(sess, len(vocab), len(tag_vocab), len(label_vocab))
  File "/home/pldelisl/Downloads/rnn-nlu-master/run_multi-task_rnn.py", line 183, in create_model
    task=task)
  File "/home/pldelisl/Downloads/rnn-nlu-master/multi_task_model.py", line 89, in __init__
    buckets, softmax_loss_function=softmax_loss_function, use_attention=use_attention)
  File "/home/pldelisl/Downloads/rnn-nlu-master/seq_labeling.py", line 269, in generate_sequence_output
    use_attention=use_attention)
  File "/home/pldelisl/Downloads/rnn-nlu-master/seq_labeling.py", line 121, in attention_RNN
    initial_state = rnn_cell._linear(encoder_state, output_size, True)
  File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/ops/rnn_cell.py", line 892, in _linear
    raise ValueError("Linear is expecting 2D arguments: %s" % str(shapes))
ValueError: Linear is expecting 2D arguments: [[2, None, 128]]

But I don't get it when using --bidirectionnal_rnn=False

Is this error normal ?

Thank you very much.

HadoopIt commented 7 years ago

Hi pldelisle, thanks for pointing this out. This error is due to a recent change in BasicLSTMCell API that sets state_is_tuple=True by default. I have pushed a fix accordingly, and it should work now.

pldelisle commented 7 years ago

It now works perfectly. Thanks a lot !!! Will sure try your model for intent extraction !