'顺序'对象没有属性'损失'-当我使用GridSearchCV调整Keras模型时

时间:2019-03-25 07:03:40

标签: python tensorflow keras

我正在使用tensorflowkeras建立一个简单的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)

谢谢!

1 个答案:

答案 0 :(得分:1)

上面的php -S localhost:8090 -t public 函数未配置您的build_model进行培训。您已经添加了model和其他参数。

您可以使用keras顺序方法loss进行操作。 https://keras.io/models/sequential/

所以您的build_model功能应该是:

compile