Является ли DNNClassifier нестабильным по сравнению с TensorFlowDNNClassifier?
Я строю модель с прогнозом DNN (0 или 1) на основе skflow с TF v0.9. Мой код с TensorFlowDNNClassifier
это так. Я обучаю около 26 000 записей и тестирую 6 500.
classifier = learn.TensorFlowDNNClassifier(hidden_units=[64, 128, 64], n_classes=2)
classifier.fit(features, labels, steps=50000)
test_pred = classifier.predict(test_features)
print(classification_report(test_labels, test_pred))
Это занимает около 1 минуты и дает результат.
precision recall f1-score support
0 0.77 0.92 0.84 4265
1 0.75 0.47 0.58 2231
avg / total 0.76 0.76 0.75 6496
Но я получил
WARNING:tensorflow:TensorFlowDNNClassifier class is deprecated.
Please consider using DNNClassifier as an alternative.
Поэтому я обновил свой код с DNNClassifier
просто.
classifier = learn.DNNClassifier(hidden_units=[64, 128, 64], n_classes=2)
classifier.fit(features, labels, steps=50000)
Это также хорошо работает. Но результат не был тем же самым.
precision recall f1-score support
0 0.77 0.96 0.86 4265
1 0.86 0.45 0.59 2231
avg / total 0.80 0.79 0.76 6496
1
Точность улучшена. Конечно, это хорошо для меня, но почему это улучшилось? И это занимает около 2 часов. Это примерно в 120 раз медленнее, чем в предыдущем примере.
У меня что-то не так? или пропустить некоторые параметры? Или DNNClassifier
нестабильно с TF v0.9?
1 ответ
Я даю тот же ответ, что и здесь. Это может произойти, потому что вы использовали параметр steps вместо max_steps. Это были просто шаги на TensorFlowDNNClassifier, которые в действительности сделали max_steps. Теперь вы можете решить, действительно ли вы хотите, чтобы в вашем случае было 50000 шагов или автоматическая отмена ранее.