Ryo Katsuma
Ryo Katsuma

Reputation: 11

Is DNNClassifier unstable compared with TensorFlowDNNClassifier?

I'm building a DNN predicted (0 or 1) model based on skflow with TF v0.9. My code with TensorFlowDNNClassifier is like this. I train about 26,000 records and test 6,500 one.

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))

It takes about 1 minute and gets a result.

             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

But I got

WARNING:tensorflow:TensorFlowDNNClassifier class is deprecated. 
Please consider using DNNClassifier as an alternative.

So I updated my code with DNNClassifier simply.

classifier = learn.DNNClassifier(hidden_units=[64, 128, 64], n_classes=2)
classifier.fit(features, labels, steps=50000)

It also works well. But result was not the same.

             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 's precision is improved. Of course this is a good for me, but why it is improved? And It takes about 2 hours. This is about 120 times slower than previous example.

Do I have something wrong? or miss some parameters? Or is DNNClassifier unstable with TF v0.9?

Upvotes: 1

Views: 905

Answers (1)

CodingYourLife
CodingYourLife

Reputation: 8596

I give the same answer as here. You might experience that because you used the steps parameter instead of max_steps. It was just steps on TensorFlowDNNClassifier that in reality did max_steps. Now you can decide if you really want that in your case 50000 steps or auto abort earlier.

Upvotes: 0

Related Questions