Hironsan / anago

Bidirectional LSTM-CRF and ELMo for Named-Entity Recognition, Part-of-Speech Tagging and so on.
https://anago.herokuapp.com/
MIT License
1.48k stars 371 forks source link

Unable to execute the example given in the documentation #64

Closed fussili closed 6 years ago

fussili commented 6 years ago

Hi! I simply put together the code snippets to execute the example given in the README as follows:

import os

import anago
from anago.utils import download
from anago.reader import load_data_and_labels
#from keras import backend as K

x_train, y_train = load_data_and_labels('train.txt')
x_valid, y_valid = load_data_and_labels('valid.txt')
x_test, y_test = load_data_and_labels('test.txt')

model = anago.Sequence()
model.train(x_train, y_train, x_valid, y_valid)

model.eval(x_test, y_test)
#K.clear_session()

words = 'President Obama is speaking at the White House.'.split()
model.analyze(words)

However, I am getting the following error during Epoch 10 (Apologies for the long message but I thought embedding the entire stack trace would help:: _``` Epoch 10/15 702/703 [============================>.] - ETA: 0s - loss: 59.00882018-05-30 09:42:27.923763: W tensorflow/core/framework/op_kernel.cc:1318] OP_REQUIRES failed at tensor_array_ops.cc:497 : Invalid argument: Tried to read from index -1 but array size is: 0 Traceback (most recent call last): File "/home/fussili/.local/lib/python3.5/site-packages/tensorflow/python/client/session.py", line 1322, in _do_call return fn(*args) File "/home/fussili/.local/lib/python3.5/site-packages/tensorflow/python/client/session.py", line 1307, in _run_fn options, feed_dict, fetch_list, target_list, run_metadata) File "/home/fussili/.local/lib/python3.5/site-packages/tensorflow/python/client/session.py", line 1409, in _call_tf_sessionrun run_metadata) tensorflow.python.framework.errors_impl.UnimplementedError: TensorArray has size zero, but element shape is not fully defined. Currently only static shapes are supported when packing zero-size TensorArrays. [[Node: training/Adam/gradients/loss/chain_crf_1_loss/TensorArrayUnstack/TensorArrayScatter/TensorArrayScatterV3_grad/TensorArrayGatherV3 = TensorArrayGatherV3[_class=["loc:@training/Adam/gradients/loss/chain_crf_1_loss/transpose_grad/transpose"], dtype=DT_FLOAT, element_shape=, _device="/job:localhost/replica:0/task:0/device:CPU:0"](training/Adam/gradients/loss/chain_crf_1_loss/TensorArrayUnstack/TensorArrayScatter/TensorArrayScatterV3_grad/TensorArrayGrad/TensorArrayGradV3, loss/chain_crf_1_loss/TensorArrayUnstack/range, training/Adam/gradients/loss/chain_crf_1_loss/while/TensorArrayReadV3/Enter_1_grad/b_acc_3)]]

During handling of the above exception, another exception occurred:

Traceback (most recent call last): File "download_model.py", line 13, in model.train(x_train, y_train, x_valid, y_valid) File "/home/fussili/.local/lib/python3.5/site-packages/anago/wrapper.py", line 50, in train trainer.train(x_train, y_train, x_valid, y_valid) File "/home/fussili/.local/lib/python3.5/site-packages/anago/trainer.py", line 51, in train callbacks=callbacks) File "/home/fussili/.local/lib/python3.5/site-packages/keras/legacy/interfaces.py", line 91, in wrapper return func(*args, kwargs) File "/home/fussili/.local/lib/python3.5/site-packages/keras/engine/training.py", line 2230, in fit_generator class_weight=class_weight) File "/home/fussili/.local/lib/python3.5/site-packages/keras/engine/training.py", line 1883, in train_on_batch outputs = self.train_function(ins) File "/home/fussili/.local/lib/python3.5/site-packages/keras/backend/tensorflow_backend.py", line 2482, in call self.session_kwargs) File "/home/fussili/.local/lib/python3.5/site-packages/tensorflow/python/client/session.py", line 900, in run run_metadata_ptr) File "/home/fussili/.local/lib/python3.5/site-packages/tensorflow/python/client/session.py", line 1135, in _run feed_dict_tensor, options, run_metadata) File "/home/fussili/.local/lib/python3.5/site-packages/tensorflow/python/client/session.py", line 1316, in _do_run run_metadata) File "/home/fussili/.local/lib/python3.5/site-packages/tensorflow/python/client/session.py", line 1335, in _do_call raise type(e)(node_def, op, message) tensorflow.python.framework.errors_impl.UnimplementedError: TensorArray has size zero, but element shape is not fully defined. Currently only static shapes are supported when packing zero-size TensorArrays. [[Node: training/Adam/gradients/loss/chain_crf_1_loss/TensorArrayUnstack/TensorArrayScatter/TensorArrayScatterV3_grad/TensorArrayGatherV3 = TensorArrayGatherV3[_class=["loc:@training/Adam/gradients/loss/chain_crf_1_loss/transpose_grad/transpose"], dtype=DT_FLOAT, element_shape=, _device="/job:localhost/replica:0/task:0/device:CPU:0"](training/Adam/gradients/loss/chain_crf_1_loss/TensorArrayUnstack/TensorArrayScatter/TensorArrayScatterV3_grad/TensorArrayGrad/TensorArrayGradV3, loss/chain_crf_1_loss/TensorArrayUnstack/range, training/Adam/gradients/loss/chain_crf_1_loss/while/TensorArrayReadV3/Enter_1_grad/b_acc_3)]]

Caused by op 'training/Adam/gradients/loss/chain_crf_1_loss/TensorArrayUnstack/TensorArrayScatter/TensorArrayScatterV3_grad/TensorArrayGatherV3', defined at: File "download_model.py", line 13, in model.train(x_train, y_train, x_valid, y_valid) File "/home/fussili/.local/lib/python3.5/site-packages/anago/wrapper.py", line 50, in train trainer.train(x_train, y_train, x_valid, y_valid) File "/home/fussili/.local/lib/python3.5/site-packages/anago/trainer.py", line 51, in train callbacks=callbacks) File "/home/fussili/.local/lib/python3.5/site-packages/keras/legacy/interfaces.py", line 91, in wrapper return func(*args, *kwargs) File "/home/fussili/.local/lib/python3.5/site-packages/keras/engine/training.py", line 2080, in fit_generator self._make_train_function() File "/home/fussili/.local/lib/python3.5/site-packages/keras/engine/training.py", line 992, in _make_train_function loss=self.total_loss) File "/home/fussili/.local/lib/python3.5/site-packages/keras/legacy/interfaces.py", line 91, in wrapper return func(args, *kwargs) File "/home/fussili/.local/lib/python3.5/site-packages/keras/optimizers.py", line 445, in get_updates grads = self.get_gradients(loss, params) File "/home/fussili/.local/lib/python3.5/site-packages/keras/optimizers.py", line 78, in get_gradients grads = K.gradients(loss, params) File "/home/fussili/.local/lib/python3.5/site-packages/keras/backend/tensorflow_backend.py", line 2519, in gradients return tf.gradients(loss, variables, colocate_gradients_with_ops=True) File "/home/fussili/.local/lib/python3.5/site-packages/tensorflow/python/ops/gradients_impl.py", line 494, in gradients gate_gradients, aggregation_method, stop_gradients) File "/home/fussili/.local/lib/python3.5/site-packages/tensorflow/python/ops/gradients_impl.py", line 636, in _GradientsHelper lambda: grad_fn(op, out_grads)) File "/home/fussili/.local/lib/python3.5/site-packages/tensorflow/python/ops/gradients_impl.py", line 385, in _MaybeCompile return grad_fn() # Exit early File "/home/fussili/.local/lib/python3.5/site-packages/tensorflow/python/ops/gradients_impl.py", line 636, in lambda: grad_fn(op, *out_grads)) File "/home/fussili/.local/lib/python3.5/site-packages/tensorflow/python/ops/tensor_array_grad.py", line 186, in _TensorArrayScatterGrad grad = g.gather(indices) File "/home/fussili/.local/lib/python3.5/site-packages/tensorflow/python/ops/tensor_array_ops.py", line 910, in gather return self._implementation.gather(indices, name=name) File "/home/fussili/.local/lib/python3.5/site-packages/tensorflow/python/ops/tensor_array_ops.py", line 305, in gather element_shape=element_shape) File "/home/fussili/.local/lib/python3.5/site-packages/tensorflow/python/ops/gen_data_flow_ops.py", line 6018, in tensor_array_gather_v3 flow_in=flow_in, dtype=dtype, element_shape=element_shape, name=name) File "/home/fussili/.local/lib/python3.5/site-packages/tensorflow/python/framework/op_def_library.py", line 787, in _apply_op_helper op_def=op_def) File "/home/fussili/.local/lib/python3.5/site-packages/tensorflow/python/framework/ops.py", line 3392, in create_op op_def=op_def) File "/home/fussili/.local/lib/python3.5/site-packages/tensorflow/python/framework/ops.py", line 1718, in init self._traceback = self._graph._extract_stack() # pylint: disable=protected-access

...which was originally created as op 'loss/chain_crf_1_loss/TensorArrayUnstack/TensorArrayScatter/TensorArrayScatterV3', defined at: File "download_model.py", line 13, in model.train(x_train, y_train, x_valid, y_valid) [elided 0 identical lines from previous traceback] File "/home/fussili/.local/lib/python3.5/site-packages/anago/wrapper.py", line 50, in train trainer.train(x_train, y_train, x_valid, y_valid) File "/home/fussili/.local/lib/python3.5/site-packages/anago/trainer.py", line 38, in train optimizer=Adam(lr=self.training_config.learning_rate), File "/home/fussili/.local/lib/python3.5/site-packages/keras/engine/training.py", line 830, in compile sample_weight, mask) File "/home/fussili/.local/lib/python3.5/site-packages/keras/engine/training.py", line 429, in weighted score_array = fn(y_true, y_pred) File "/home/fussili/.local/lib/python3.5/site-packages/anago/layers.py", line 322, in loss return chain_crf_loss(y_true, y_pred, self.U, self.b_start, self.b_end, mask) File "/home/fussili/.local/lib/python3.5/site-packages/anago/layers.py", line 66, in chain_crf_loss return sparse_chain_crf_loss(y_sparse, x, U, b_start, b_end, mask) File "/home/fussili/.local/lib/python3.5/site-packages/anago/layers.py", line 58, in sparse_chain_crf_loss energy -= free_energy0(x, U, mask) File "/home/fussili/.local/lib/python3.5/site-packages/anago/layers.py", line 124, in free_energy0 mask) File "/home/fussili/.local/lib/python3.5/site-packages/anago/layers.py", line 146, in forward last, values, = K.rnn(_forward_step, inputs, initial_states) File "/home/fussili/.local/lib/python3.5/site-packages/keras/backend/tensorflow_backend.py", line 2695, in rnn input_ta = input_ta.unstack(inputs) File "/home/fussili/.local/lib/python3.5/site-packages/tensorflow/python/util/tf_should_use.py", line 118, in wrapped return _add_should_use_warning(fn(*args, kwargs)) File "/home/fussili/.local/lib/python3.5/site-packages/tensorflow/python/ops/tensor_array_ops.py", line 944, in unstack return self._implementation.unstack(value, name=name) File "/home/fussili/.local/lib/python3.5/site-packages/tensorflow/python/util/tf_should_use.py", line 118, in wrapped return _add_should_use_warning(fn(*args, *kwargs)) File "/home/fussili/.local/lib/python3.5/site-packages/tensorflow/python/ops/tensor_array_ops.py", line 333, in unstack indices=math_ops.range(0, num_elements), value=value, name=name) File "/home/fussili/.local/lib/python3.5/site-packages/tensorflow/python/util/tf_should_use.py", line 118, in wrapped return _add_should_use_warning(fn(args, kwargs)) File "/home/fussili/.local/lib/python3.5/site-packages/tensorflow/python/ops/tensor_array_ops.py", line 349, in scatter name=name) File "/home/fussili/.local/lib/python3.5/site-packages/tensorflow/python/ops/gen_data_flow_ops.py", line 6590, in tensor_array_scatter_v3 flow_in=flow_in, name=name) File "/home/fussili/.local/lib/python3.5/site-packages/tensorflow/python/framework/op_def_library.py", line 787, in _apply_op_helper op_def=op_def)

UnimplementedError (see above for traceback): TensorArray has size zero, but element shape is not fully defined. Currently only static shapes are supported when packing zero-size TensorArrays. [[Node: training/Adam/gradients/loss/chain_crf_1_loss/TensorArrayUnstack/TensorArrayScatter/TensorArrayScatterV3_grad/TensorArrayGatherV3 = TensorArrayGatherV3[_class=["loc:@training/Adam/gradients/loss/chain_crf_1_loss/transpose_grad/transpose"], dtype=DT_FLOAT, element_shape=, _device="/job:localhost/replica:0/task:0/device:CPU:0"](training/Adam/gradients/loss/chain_crf_1_loss/TensorArrayUnstack/TensorArrayScatter/TensorArrayScatterV3_grad/TensorArrayGrad/TensorArrayGradV3, loss/chain_crf_1_loss/TensorArrayUnstack/range, training/Adam/gradients/loss/chain_crf_1_loss/while/TensorArrayReadV3/Enter_1_grad/b_acc_3)]]

jannikbertram commented 6 years ago

I just came across this error in another context. It turned out that my validation set was not correct. Can you doublecheck your valid.txt and make sure that it is exactly the same like in the repo?

This might not be an appropriate answer, but maybe it can help.

Best regards

fussili commented 6 years ago

Hi bode94, I checked and can confirm that train, test and valid datasets are exactly as in the repo.

Best regards,

Hironsan commented 6 years ago

I updated anago, try it again.

pip install -U anago