【问题标题】:Cross validation with DNN classification使用 DNN 分类进行交叉验证
【发布时间】:2021-08-12 19:20:50
【问题描述】:

我有一段代码可以使用 TensorFlow 获得 DNN 分类的准确性,实际上,我有两个类。 train 和 test 的过程由 sklearn.model_selection 中的 train_test_split 完成。 现在我想使用分层交叉验证而不是 train_test_split。我试过的是我用过 sklearn.model_selection 中的 cross_val_score:

model = learn.DNNClassifier(hidden_units=[5],
 n_classes=3,
 feature_columns=feature_columns, )
    scores = cross_val_score(estimator=model,
 X,
 y,
 scoring = 'accuracy',
 cv=5,
 fit_params={'steps': 1000}, verbose=100)

然而,我偶然发现一个错误告诉 tf. estimator.DNNClassifier 没有 fit 方法。 我怎样才能达到我的目的?

【问题讨论】:

    标签: python tensorflow scikit-learn classification cross-validation


    【解决方案1】:

    基于this,您应该使用model.train 而不是model.fit。但是,与DNNClassifier 不同,顺序模型或函数式 API 更为常见。你可以用这些做model.fit

    For example,

    inputs = keras.Input(shape=(784,), name="digits")
    x = layers.Dense(64, activation="relu", name="dense_1")(inputs)
    x = layers.Dense(64, activation="relu", name="dense_2")(x)
    outputs = layers.Dense(10, activation="softmax", name="predictions")(x)
    
    model = keras.Model(inputs=inputs, outputs=outputs)
    history = model.fit(
        x_train,
        y_train,
        batch_size=64,
        epochs=2,
        # We pass some validation for
        # monitoring validation loss and metrics
        # at the end of each epoch
        validation_data=(x_val, y_val),
    )
    

    或者(来自我的仓库的quick project):

    model = Sequential()
    model.add(layers.Embedding(vocab_size, embedding_dim, weights=[embedding_matrix], input_length=maxlen, trainable=True))
    model.add(layers.Conv1D(256, 3, activation='relu'))
    model.add(Dropout(0.2))
    model.add(layers.GlobalMaxPooling1D())
    model.add(layers.Dense(28, activation='sigmoid'))
    model.compile(optimizer=optimizers.Adam(lr=0.0002), loss='binary_crossentropy', 
                  metrics=["accuracy", metrics.Precision(name="precision"), metrics.Recall(name="recall") ])
    model.summary()
    
    callbacks = [EarlyStopping(monitor='val_loss', patience=2),
             ModelCheckpoint(filepath='best_model.h5', monitor='val_loss', save_best_only=True)]
    fit = model.fit(X_train, y_train, epochs=15, verbose=True, callbacks=callbacks, validation_data=(X_test, y_test), batch_size=100)
    

    【讨论】:

      猜你喜欢
      • 2019-04-20
      • 2014-10-02
      • 2015-06-11
      • 2020-07-13
      • 2019-09-06
      • 2017-04-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多