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

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

我一直遇到这个属性错误。请给我解决问题的任何想法。我可以分享整个代码

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()

ttributeError Traceback(最后一次调用) 在 [67] 中输入 () ----> 1 model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy']) 2 model.summary()

AttributeError: 'function' 对象没有属性 'compile'

函数和变量同名,导致问题。您可以重命名变量或函数。

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()

您已将 model 一词用作函数的名称。这是允许的(因为 model 不是 Python 中的保留字),但这意味着当你使用 model.compile() 时,解释器假定你想调用你调用的属性“模型”,那里没有这样的属性。 解决方案:给该函数另一个名称,使“model”一词仅指模型对象,它有一个可以调用的 compile 方法。或者,相反,如果需要,可以使用“model”作为函数,然后给模型另一个名称,然后调用 compile()