我正在使用tensorflow
和keras
建立一个简单的MNIST分类模型,并且我想微调模型,所以我选择sklearn.model_selection.GridSearchCV
。
但是,当我调用fit
函数时,它说:
AttributeError: 'Sequential' object has no attribute 'loss'
我将自己的代码与其他代码进行了比较,但仍然不知道为什么。唯一的区别是我使用tensorflow.keras
而不是keras
。
这是我的代码:
from tensorflow.keras.models import Sequential, Model from tensorflow.keras.layers import Input, Dense, Activation, Dropout, BatchNormalization from tensorflow.keras.datasets import mnist from tensorflow.keras.wrappers.scikit_learn import KerasClassifier from sklearn.model_selection import GridSearchCV ... ... ... def get_model(dropout_rate=0.2, hidden_units=512): model = Sequential() model.add(Dropout(dropout_rate, input_shape=(28*28,))) model.add(Dense(hidden_units, activation='relu')) model.add(BatchNormalization()) model.add(Dropout(dropout_rate)) model.add(Dense(hidden_units, activation='relu')) model.add(BatchNormalization()) model.add(Dropout(dropout_rate)) model.add(Dense(hidden_units, activation='relu')) model.add(BatchNormalization()) model.add(Dropout(dropout_rate)) model.add(Dense(10, activation='softmax')) return model model = KerasClassifier(build_fn=get_model, batch_size=128, epochs=10) para_dict = {'dropout_rate':[0.2,0.5,0.8], 'hidden_units':[128,256,512,1024]} clf = GridSearchCV(model, para_dict, cv=5, scoring='accuracy') clf.fit(x_train, y_train)
谢谢!
答案 0 :(得分:1)
上面的php -S localhost:8090 -t public
函数未配置您的build_model
进行培训。您已经添加了model
和其他参数。
您可以使用keras顺序方法loss
进行操作。 https://keras.io/models/sequential/
所以您的build_model功能应该是:
compile