Search code examples
pythontensorflowkerasdeep-learning

AttributeError: 'function' object has no attribute 'compile'


I've been facing this attribute error, any ideas how I can solve it?

def model(input_shape):
   model = keras.Sequential()
   model.add(keras.layers.LSTM(64, input_shape=(1,9), return_sequences=True))
   model.add(keras.layers.LSTM(64))
   model.add(keras.layers.Dense(64, activation='relu'))
   model.add(keras.layers.Dropout(0.3))
   model.add(keras.layers.Dense(10, activation='softmax'))
   return model

model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])

model.summary()
AttributeError                            Traceback (most recent call last)
Input In [67], in <cell line: 1>()
----> 1 model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])
      2 model.summary()

AttributeError: 'function' object has no attribute 'compile'

Solution

  • The function and variable have the same name, causing the issue. You can either rename the variable or the function.

    def model(input_shape):
       model = keras.Sequential()
       model.add(keras.layers.LSTM(64, input_shape=(1,9), return_sequences=True))
       model.add(keras.layers.LSTM(64))
    
       model.add(keras.layers.Dense(64, activation='relu'))
       model.add(keras.layers.Dropout(0.3))
       
       model.add(keras.layers.Dense(10, activation='softmax'))
    
       return model
    
    my_model = model() # your initializer
    my_model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])
    my_model.summary()