Является ли 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 шагов или автоматическая отмена ранее.

Другие вопросы по тегам