python - 使用 DNN 分类进行交叉验证
问题描述
我有一段代码可以使用 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 方法。我怎样才能达到我的目的?
解决方案
基于此,您应该使用model.train
而不是model.fit
. 但是,DNNClassifier
顺序模型或功能 API 更常见,而不是 。你可以model.fit
用这些来做。
例如,
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),
)
或者(我的仓库中的一个快速项目):
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)
推荐阅读
- javascript - 如何使用 React JS 有条件地在对象数组中获取键的长度
- android - React-native 应用程序未显示屏幕
- xml - 使用 Java 将此 xml 文件解析为指定 JSON 的最简单方法是什么?
- flutter - 无法在 Android Studio 中获取或升级 Flutter 的依赖项
- flutter - 颤动 youtube 错误域:ios 上的 XCDYouTubeVideoErrorDomain
- python - 如何使用 re.sub 根据模式字典和 python 中的替换值替换文本的某些部分?
- html - 图像与内容重叠在容器顶部
- python - 在 Python3 中读取压缩 excel 时的 unknown_codepage_21010
- corda - 反序列化错误:无法构造 Dto 的实例(尽管至少存在一个 Creator):无法从 Object 值反序列化
- vue.js - 增加折线图和图例 ChartJS 之间的差距