Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Unable to construct simple LSTM layer #10270

Closed
dipanjannag opened this issue May 23, 2018 · 6 comments
Closed

Unable to construct simple LSTM layer #10270

dipanjannag opened this issue May 23, 2018 · 6 comments

Comments

@dipanjannag
Copy link

dipanjannag commented May 23, 2018

Using latest Keras. Code used:

import keras.backend as K
from keras.layers.core import Dense
from keras.layers.recurrent import LSTM
from keras.models import Sequential

model = Sequential()
model.add(LSTM(10, input_shape=(2,3)))
model.add(Dense(1, activation='relu'))

Getting the following error, Although I'm able to put any non-recurrent layer as input layer.

---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-3-611aef6e5d2e> in <module>()
      1 model = Sequential()
----> 2 model.add(LSTM(10, input_shape=(2,3)))
      3 model.add(Dense(1, activation='relu'))

/home/user/anaconda2/lib/python2.7/site-packages/Keras-2.1.6-py2.7.egg/keras/engine/sequential.pyc in add(self, layer)
    164                     # and create the node connecting the current layer
    165                     # to the input layer we just created.
--> 166                     layer(x)
    167                     set_inputs = True
    168                 else:

/home/user/anaconda2/lib/python2.7/site-packages/Keras-2.1.6-py2.7.egg/keras/layers/recurrent.pyc in __call__(self, inputs, initial_state, constants, **kwargs)
    498 
    499         if initial_state is None and constants is None:
--> 500             return super(RNN, self).__call__(inputs, **kwargs)
    501 
    502         # If any of `initial_state` or `constants` are specified and are Keras

/home/user/anaconda2/lib/python2.7/site-packages/Keras-2.1.6-py2.7.egg/keras/engine/base_layer.pyc in __call__(self, inputs, **kwargs)
    452             # Actually call the layer,
    453             # collecting output(s), mask(s), and shape(s).
--> 454             output = self.call(inputs, **kwargs)
    455             output_mask = self.compute_mask(inputs, previous_mask)
    456 

/home/user/anaconda2/lib/python2.7/site-packages/Keras-2.1.6-py2.7.egg/keras/layers/recurrent.pyc in call(self, inputs, mask, training, initial_state)
   2110                                       mask=mask,
   2111                                       training=training,
-> 2112                                       initial_state=initial_state)
   2113 
   2114     @property

/home/user/anaconda2/lib/python2.7/site-packages/Keras-2.1.6-py2.7.egg/keras/layers/recurrent.pyc in call(self, inputs, mask, training, initial_state, constants)
    607                                              mask=mask,
    608                                              unroll=self.unroll,
--> 609                                              input_length=timesteps)
    610         if self.stateful:
    611             updates = []

/home/user/anaconda2/lib/python2.7/site-packages/Keras-2.1.6-py2.7.egg/keras/backend/tensorflow_backend.pyc in rnn(step_function, inputs, initial_states, go_backwards, mask, constants, unroll, input_length)
   2927             parallel_iterations=32,
   2928             swap_memory=True,
-> 2929             maximum_iterations=input_length)
   2930         last_time = final_outputs[0]
   2931         output_ta = final_outputs[1]

TypeError: while_loop() got an unexpected keyword argument 'maximum_iterations'

EDIT: It seems keras master branch does not work with tensorflow 1.4.1. Is that an expected behaviour?
https://travis-ci.org/deeiip/keras/jobs/382610473#L1917

@ryubidragonfire
Copy link

I have the same issue. Hope that can get help soon.

@izuro
Copy link

izuro commented Jun 12, 2018

Had the same issue with Keras 2.2.0 & tensorflow-gpu 1.8.0 . Reverted back to 2.1.6 and model fits without error.
pip uninstall keras
pip install keras==2.1.6

@dipanjannag
Copy link
Author

dipanjannag commented Jul 11, 2018

@izuro seems to be working. But the it seems version 2.2.0 is not compaitable with tensorflow 1.4.1

@romass12
Copy link

romass12 commented Sep 20, 2018

I am getting this error : if isinstance(identifier, tf.train.Optimizer):
NameError: name 'tf' is not defined
TF : 1.4.0
Keras : 2.1.6

MODEL

import os
import importlib
import warnings
import tensorflow as tf
import keras
warnings.filterwarnings(action='ignore', category=DeprecationWarning)
def set_keras_backend(backend):
    from keras import backend as K

    if K.backend() != backend:
        os.environ['KERAS_BACKEND'] = backend
        importlib.reload(K)
        assert K.backend() == backend
set_keras_backend("tensorflow")

from keras.models import load_model
def model(embedding_matrix,embed,len_distinct,len_label,epochs,batch_size,weight,vector_size):
    import tensorflow as tf
    model = Sequential()
    model.add(Embedding(len_distinct, vector_size, input_length=maxlen,weights=[embedding_matrix],trainable=True))
    model.add(Bidirectional(LSTM(100,return_sequences=False,dropout=0.2))) # was false
    model.add(Dense(len_label, activation=tf.nn.softmax))
    adam=tf.train.AdamOptimizer(learning_rate=0.0001)
    model.compile(loss='categorical_crossentropy', optimizer=adam, metrics=['accuracy',f1score,sensitivity,precision])

@praveenraghuvanshi1512
Copy link

I am getting this error : if isinstance(identifier, tf.train.Optimizer):
NameError: name 'tf' is not defined
TF : 1.4.0
Keras : 2.1.6

MODEL

import os
import importlib
import warnings
import tensorflow as tf
import keras
warnings.filterwarnings(action='ignore', category=DeprecationWarning)
def set_keras_backend(backend):
    from keras import backend as K

    if K.backend() != backend:
        os.environ['KERAS_BACKEND'] = backend
        importlib.reload(K)
        assert K.backend() == backend
set_keras_backend("tensorflow")

from keras.models import load_model
def model(embedding_matrix,embed,len_distinct,len_label,epochs,batch_size,weight,vector_size):
    import tensorflow as tf
    model = Sequential()
    model.add(Embedding(len_distinct, vector_size, input_length=maxlen,weights=[embedding_matrix],trainable=True))
    model.add(Bidirectional(LSTM(100,return_sequences=False,dropout=0.2))) # was false
    model.add(Dense(len_label, activation=tf.nn.softmax))
    adam=tf.train.AdamOptimizer(learning_rate=0.0001)
    model.compile(loss='categorical_crossentropy', optimizer=adam, metrics=['accuracy',f1score,sensitivity,precision])

I am also getting the same error "name 'tf' is not defined" for a simple network.
Tried 'import tensorflow as tf' without success.
TF: 1.8.0
Keras: 2.1.6

@praveenraghuvanshi1512
Copy link

I am getting this error : if isinstance(identifier, tf.train.Optimizer):
NameError: name 'tf' is not defined
TF : 1.4.0
Keras : 2.1.6
MODEL

import os
import importlib
import warnings
import tensorflow as tf
import keras
warnings.filterwarnings(action='ignore', category=DeprecationWarning)
def set_keras_backend(backend):
    from keras import backend as K

    if K.backend() != backend:
        os.environ['KERAS_BACKEND'] = backend
        importlib.reload(K)
        assert K.backend() == backend
set_keras_backend("tensorflow")

from keras.models import load_model
def model(embedding_matrix,embed,len_distinct,len_label,epochs,batch_size,weight,vector_size):
    import tensorflow as tf
    model = Sequential()
    model.add(Embedding(len_distinct, vector_size, input_length=maxlen,weights=[embedding_matrix],trainable=True))
    model.add(Bidirectional(LSTM(100,return_sequences=False,dropout=0.2))) # was false
    model.add(Dense(len_label, activation=tf.nn.softmax))
    adam=tf.train.AdamOptimizer(learning_rate=0.0001)
    model.compile(loss='categorical_crossentropy', optimizer=adam, metrics=['accuracy',f1score,sensitivity,precision])

I am also getting the same error "name 'tf' is not defined" for a simple network.
Tried 'import tensorflow as tf' without success.
TF: 1.8.0
Keras: 2.1.6

Upgraded tensforflow to latest(2.0.0) and replaced import statement from 'from keras.models import Sequential' to 'from tensorflow.keras.models import Sequential' with tensorlfow prefix and everything worked... 😊

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

6 participants