keras 属性错误:“function”对象没有属性“compile”

x8diyxa7  于 2023-10-19  发布在  其他
关注(0)|答案(2)|浏览(176)

我一直在面对这个属性错误,有什么想法我可以解决它吗?

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'
dldeef67

dldeef671#

函数和变量具有相同的名称,导致问题。您可以重命名变量或函数。

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

zpjtge222#

您已经使用单词model作为函数的名称。这是允许的(因为model在Python中不是保留字),但这意味着当你使用model.compile()时,解释器假设你想调用你所谓的“model”的属性,而那里没有这样的属性。解决方案:给予函数另一个名字,这样“model”这个词就只指模型对象,它有一个可以调用的compile方法。或者,反过来,如果您愿意,可以使用“model”作为函数,但随后给予模型另一个名称,并在其上调用compile()

相关问题