cbaziotis / datastories-semeval2017-task4

Deep-learning model presented in "DataStories at SemEval-2017 Task 4: Deep LSTM with Attention for Message-level and Topic-based Sentiment Analysis".
MIT License
196 stars 63 forks source link

Error running model_target.py #5

Open hithisisdhara opened 6 years ago

hithisisdhara commented 6 years ago

Hello, I am trying to recreate the results of subtask B, 2 way classification of the tweets, and I have taken the following steps: change the TASK = 'BD' in model_target.py

When I try running model_target.py, I am through until the model being trained, and then I get an error TypeError: Using a tf.Tensor as a Python bool is not allowed. Use if t is not None: instead of if t: to test if a tensor is defined, and use TensorFlow ops such as tf.cond to execute subgraphs conditioned on the value of a tensor.

I have tried installing an older version of Tensorflow, but still get the same result.

Here is the full error:--------- TypeError Traceback (most recent call last)

in () 101 attention="context", 102 clipnorm=.1, --> 103 classes=len(classes)) 104 105 plot(nn_model, show_layer_names=True, show_shapes=True, to_file="model_task4_sub{}.png".format(TASK)) /models/neural/keras_models.py in target_RNN(wv, tweet_max_length, aspect_max_length, classes, **kwargs) 175 h_aspects = shared_RNN(aspects_emb) 176 h_aspects = Dropout(drop_target_rnn)(h_aspects) --> 177 h_aspects = MeanOverTime()(h_aspects) 178 h_aspects = RepeatVector(tweet_max_length)(h_aspects) 179 ~/anaconda2/envs/py35/lib/python3.5/site-packages/keras/engine/topology.py in __call__(self, x, mask) 570 if inbound_layers: 571 # This will call layer.build() if necessary. --> 572 self.add_inbound_node(inbound_layers, node_indices, tensor_indices) 573 # Outputs were already computed when calling self.add_inbound_node. 574 outputs = self.inbound_nodes[-1].output_tensors ~/anaconda2/envs/py35/lib/python3.5/site-packages/keras/engine/topology.py in add_inbound_node(self, inbound_layers, node_indices, tensor_indices) 633 # creating the node automatically updates self.inbound_nodes 634 # as well as outbound_nodes on inbound layers. --> 635 Node.create_node(self, inbound_layers, node_indices, tensor_indices) 636 637 def get_output_shape_for(self, input_shape): ~/anaconda2/envs/py35/lib/python3.5/site-packages/keras/engine/topology.py in create_node(cls, outbound_layer, inbound_layers, node_indices, tensor_indices) 164 165 if len(input_tensors) == 1: --> 166 output_tensors = to_list(outbound_layer.call(input_tensors[0], mask=input_masks[0])) 167 output_masks = to_list(outbound_layer.compute_mask(input_tensors[0], input_masks[0])) 168 # TODO: try to auto-infer shape ~/anaconda2/envs/py35/lib/python3.5/site-packages/kutilities/layers.py in call(self, x, mask) 21 if mask is not None: 22 mask = K.cast(mask, 'float32') ---> 23 if not K.any(mask): 24 return K.mean(x, axis=1) 25 else: ~/anaconda2/envs/py35/lib/python3.5/site-packages/tensorflow/python/framework/ops.py in __bool__(self) 612 `TypeError`. 613 """ --> 614 raise TypeError("Using a `tf.Tensor` as a Python `bool` is not allowed. " 615 "Use `if t is not None:` instead of `if t:` to test if a " 616 "tensor is defined, and use TensorFlow ops such as " TypeError: Using a `tf.Tensor` as a Python `bool` is not allowed. Use `if t is not None:` instead of `if t:` to test if a tensor is defined, and use TensorFlow ops such as tf.cond to execute subgraphs conditioned on the value of a tensor.
sherrylilmj commented 6 years ago

Did you solve this problem? I have the same problem also.

hithisisdhara commented 6 years ago

Nope :(

cbaziotis commented 6 years ago

Please tell me what version of keras are you using and with what backend, in order to be able to reproduce the problem. I don't use Keras for my projects anymore and i don't remember facing such problem in the past, but i will look into it.

sherrylilmj commented 6 years ago

I use keras==1.2.2 with tensorflow backend. Thanks for your reply.

cbaziotis commented 6 years ago

Unfortunately, i have updated the repo in order to work with keras 2.x. There are some breaking changes from keras 1.X to 2.x. Also, this may be a TF issue. Note though, that the model initially was implemented in keras 1.2.2 with theano backend and i never tested it with TF.

Anyway, tell me also what is your version of TF and i will try to see what causes the problem when i get the time.

hithisisdhara commented 6 years ago

Thank you so much for responding to this issue. I have tried TensorFlow versions 1.4 upto 1.7, but the problem persisted. Thank you for letting me know about Keras version, I also used 1.2.x for Keras with TensorFlow backend.

cbaziotis commented 6 years ago

Hi guys, sorry for taking so long to update the repository. I just updated the codebase. It now works with the latest versions of Keras (2.2.0) and Tensorflow (1.8.0). Please pull from the master and upgrade your packages from the requirements.

Please let me know if the updated code resolves your issues.