‘KerasClassifier’ 对象没有属性 ‘summary’ – 尝试从 KerasClassifier 构建的 lstm 模型中获取摘要
tensorflow 197
原文标题 :‘KerasClassifier’ object has no attribute ‘summary’ – try to get summary from KerasClassifier built lstm model
似乎 KerasClassifier 对可定制模型做了一些包装,但我不知道如何把它弄出来……
我想将我的 lstm 模型从几乎没有创建到 keras 包装器,例如KerasClassifier
:
model1 = Sequential()
model1.add(LSTM(units=60, activation='relu', input_shape=(60, 1),
return_sequences=True, recurrent_dropout=0.1))
model1.add(LSTM(units=30))
model1.add(Dense(units=1, activation='sigmoid'))
model1.compile(optimizer='adam', loss='binary_crossentropy', metrics=['accuracy'])
到
def create_model():
model = Sequential()
model.add(LSTM(units=60, activation='relu', input_shape=(60, 1),
return_sequences=True, recurrent_dropout=0.1))
model.add(LSTM(units=30))
model.add(Dense(units=1, activation='sigmoid'))
model.compile(optimizer='adam', loss='binary_crossentropy', metrics=['accuracy'])
return model
modelk = KerasClassifier(build_fn=create_model,
epochs=10,
batch_size=30,
verbose=0)
如果我这样做model1.summary()
usingmodel1
返回第一种方法,我会得到类似的东西:
Model: "sequential"
_________________________________________________________________
Layer (type) Output Shape Param #
=================================================================
lstm (LSTM) (None, 60, 60) 14880
lstm_1 (LSTM) (None, 30) 10920
dense (Dense) (None, 1) 31
=================================================================
Total params: 25,831
Trainable params: 25,831
Non-trainable params: 0
但是如果我使用从第二种方法返回的 ‘modelk.summary()’,我会得到如下错误:
'KerasClassifier' object has no attribute 'summary'
回复
我来回复-
AloneTogether 评论
该回答已被采纳!
试试
modelk.build_fn().summary()
:from keras.models import Sequential from keras.layers import Dense, LSTM from keras.wrappers.scikit_learn import KerasClassifier def create_model(): model = Sequential() model.add(LSTM(units=60, activation='relu', input_shape=(60, 1), return_sequences=True, recurrent_dropout=0.1)) model.add(LSTM(units=30)) model.add(Dense(units=1, activation='sigmoid')) model.compile(optimizer='adam', loss='binary_crossentropy', metrics=['accuracy']) return model modelk = KerasClassifier(build_fn=create_model, epochs=10, batch_size=30, verbose=0) print(modelk.build_fn().summary())
Model: "sequential_2" _________________________________________________________________ Layer (type) Output Shape Param # ================================================================= lstm_4 (LSTM) (None, 60, 60) 14880 lstm_5 (LSTM) (None, 30) 10920 dense_2 (Dense) (None, 1) 31 ================================================================= Total params: 25,831 Trainable params: 25,831 Non-trainable params: 0 _________________________________________________________________ None
您还可以做的是使用
model.summary
insidecreate_model
,并且在内部调用model.fit
时会打印摘要:from keras.models import Sequential from keras.layers import Dense, LSTM from keras.wrappers.scikit_learn import KerasClassifier from sklearn.model_selection import GridSearchCV import numpy as np def create_model(optimizer='rmsprop'): model = Sequential() model.add(LSTM(units=60, activation='relu', input_shape=(60, 1), return_sequences=True, recurrent_dropout=0.1)) model.add(LSTM(units=30)) model.add(Dense(units=1, activation='sigmoid')) model.compile(optimizer=optimizer, loss='binary_crossentropy', metrics=['accuracy']) print(model.summary()) return model modelk = KerasClassifier(build_fn=create_model, epochs=10, batch_size=25, verbose=0) optimizers = ['rmsprop', 'adam'] param_grid = dict(optimizer=optimizers) grid = GridSearchCV(estimator=modelk, param_grid=param_grid) X = np.random.random((50, 60, 1)) Y = np.random.random((50,)) grid_result = grid.fit(X, Y)
2年前