Delete deprecated TensorFlowDNN(Regressor|Classifier). Also add tf_random_seed to fix flakiness for the affected tests.
Change: 132347779
This commit is contained in:
parent
7946b8481f
commit
7bad05cb75
@ -25,8 +25,6 @@ Train and evaluate TensorFlow models.
|
||||
@@ModeKeys
|
||||
@@DNNClassifier
|
||||
@@DNNRegressor
|
||||
@@TensorFlowDNNClassifier
|
||||
@@TensorFlowDNNRegressor
|
||||
@@TensorFlowEstimator
|
||||
@@LinearClassifier
|
||||
@@LinearRegressor
|
||||
|
@ -26,8 +26,6 @@ from tensorflow.contrib.learn.python.learn.estimators.base import TensorFlowEsti
|
||||
from tensorflow.contrib.learn.python.learn.estimators.classifier import Classifier
|
||||
from tensorflow.contrib.learn.python.learn.estimators.dnn import DNNClassifier
|
||||
from tensorflow.contrib.learn.python.learn.estimators.dnn import DNNRegressor
|
||||
from tensorflow.contrib.learn.python.learn.estimators.dnn import TensorFlowDNNClassifier
|
||||
from tensorflow.contrib.learn.python.learn.estimators.dnn import TensorFlowDNNRegressor
|
||||
from tensorflow.contrib.learn.python.learn.estimators.dnn_linear_combined import DNNLinearCombinedClassifier
|
||||
from tensorflow.contrib.learn.python.learn.estimators.dnn_linear_combined import DNNLinearCombinedRegressor
|
||||
from tensorflow.contrib.learn.python.learn.estimators.estimator import BaseEstimator
|
||||
|
@ -19,9 +19,7 @@ from __future__ import absolute_import
|
||||
from __future__ import division
|
||||
from __future__ import print_function
|
||||
|
||||
from tensorflow.contrib.learn.python.learn.estimators import _sklearn
|
||||
from tensorflow.contrib.learn.python.learn.estimators import dnn_linear_combined
|
||||
from tensorflow.contrib.learn.python.learn.estimators.base import DeprecatedMixin
|
||||
from tensorflow.python.ops import nn
|
||||
|
||||
|
||||
@ -279,14 +277,3 @@ class DNNRegressor(dnn_linear_combined.DNNLinearCombinedRegressor):
|
||||
@property
|
||||
def bias_(self):
|
||||
return self.dnn_bias_
|
||||
|
||||
|
||||
# TensorFlowDNNClassifier and TensorFlowDNNRegressor are deprecated.
|
||||
class TensorFlowDNNClassifier(DeprecatedMixin, DNNClassifier,
|
||||
_sklearn.ClassifierMixin):
|
||||
pass
|
||||
|
||||
|
||||
class TensorFlowDNNRegressor(DeprecatedMixin, DNNRegressor,
|
||||
_sklearn.RegressorMixin):
|
||||
pass
|
||||
|
@ -47,26 +47,29 @@ class EarlyStoppingTest(tf.test.TestCase):
|
||||
x_train, y_train, test_size=0.2, random_state=42)
|
||||
val_monitor = learn.monitors.ValidationMonitor(
|
||||
x_val, y_val, every_n_steps=50, early_stopping_rounds=100,
|
||||
early_stopping_metric='accuracy', early_stopping_metric_minimize=False)
|
||||
early_stopping_metric='loss', early_stopping_metric_minimize=False)
|
||||
|
||||
feature_columns = learn.infer_real_valued_columns_from_input(iris.data)
|
||||
|
||||
# classifier without early stopping - overfitting
|
||||
classifier1 = learn.TensorFlowDNNClassifier(
|
||||
hidden_units=[10, 20, 10], n_classes=3, steps=1000)
|
||||
classifier1.fit(x_train, y_train)
|
||||
classifier1 = learn.DNNClassifier(
|
||||
feature_columns=feature_columns, hidden_units=[10, 20, 10], n_classes=3)
|
||||
classifier1.fit(x_train, y_train, steps=1000)
|
||||
_ = accuracy_score(y_test, classifier1.predict(x_test))
|
||||
|
||||
# Full 1000 steps, 12 summaries and no evaluation summary.
|
||||
# 12 summaries = global_step + first + every 100 out of 1000 steps.
|
||||
self.assertEqual(12, len(_get_summary_events(classifier1.model_dir)))
|
||||
# Full 1000 steps, 19 summaries and no evaluation summary:
|
||||
# 1 summary of net at step 1
|
||||
# 9 x (1 summary of net and 1 summary of global step) for steps 101, 201,...
|
||||
self.assertEqual(19, len(_get_summary_events(classifier1.model_dir)))
|
||||
with self.assertRaises(ValueError):
|
||||
_get_summary_events(classifier1.model_dir + '/eval')
|
||||
|
||||
# classifier with early stopping - improved accuracy on testing set
|
||||
classifier2 = learn.TensorFlowDNNClassifier(
|
||||
hidden_units=[10, 20, 10], n_classes=3, steps=2000,
|
||||
classifier2 = learn.DNNClassifier(
|
||||
hidden_units=[10, 20, 10], feature_columns=feature_columns, n_classes=3,
|
||||
config=tf.contrib.learn.RunConfig(save_checkpoints_secs=1))
|
||||
|
||||
classifier2.fit(x_train, y_train, monitors=[val_monitor])
|
||||
classifier2.fit(x_train, y_train, monitors=[val_monitor], steps=2000)
|
||||
_ = accuracy_score(y_val, classifier2.predict(x_val))
|
||||
_ = accuracy_score(y_test, classifier2.predict(x_test))
|
||||
|
||||
|
@ -41,19 +41,18 @@ class InferredfeatureColumnTest(tf.test.TestCase):
|
||||
test_size=0.2,
|
||||
random_state=42)
|
||||
|
||||
def custom_optimizer(learning_rate):
|
||||
return tf.train.MomentumOptimizer(learning_rate, 0.9)
|
||||
def custom_optimizer():
|
||||
return tf.train.MomentumOptimizer(learning_rate=0.01, momentum=0.9)
|
||||
|
||||
cont_features = [
|
||||
tf.contrib.layers.real_valued_column("", dimension=4)]
|
||||
classifier = learn.TensorFlowDNNClassifier(
|
||||
classifier = learn.DNNClassifier(
|
||||
feature_columns=cont_features,
|
||||
hidden_units=[10, 20, 10],
|
||||
n_classes=3,
|
||||
steps=400,
|
||||
learning_rate=0.01,
|
||||
optimizer=custom_optimizer)
|
||||
classifier.fit(x_train, y_train)
|
||||
optimizer=custom_optimizer,
|
||||
config=learn.RunConfig(tf_random_seed=1))
|
||||
classifier.fit(x_train, y_train, steps=400)
|
||||
score = accuracy_score(y_test, classifier.predict(x_test))
|
||||
|
||||
self.assertGreater(score, 0.65, "Failed with score = {0}".format(score))
|
||||
@ -71,17 +70,16 @@ class CustomOptimizer(tf.test.TestCase):
|
||||
test_size=0.2,
|
||||
random_state=42)
|
||||
|
||||
def custom_optimizer(learning_rate):
|
||||
return tf.train.MomentumOptimizer(learning_rate, 0.9)
|
||||
def custom_optimizer():
|
||||
return tf.train.MomentumOptimizer(learning_rate=0.01, momentum=0.9)
|
||||
|
||||
classifier = learn.TensorFlowDNNClassifier(
|
||||
classifier = learn.DNNClassifier(
|
||||
hidden_units=[10, 20, 10],
|
||||
feature_columns=learn.infer_real_valued_columns_from_input(x_train),
|
||||
n_classes=3,
|
||||
steps=400,
|
||||
learning_rate=0.01,
|
||||
optimizer=custom_optimizer)
|
||||
classifier.fit(x_train, y_train)
|
||||
optimizer=custom_optimizer,
|
||||
config=learn.RunConfig(tf_random_seed=1))
|
||||
classifier.fit(x_train, y_train, steps=400)
|
||||
score = accuracy_score(y_test, classifier.predict(x_test))
|
||||
|
||||
self.assertGreater(score, 0.65, "Failed with score = {0}".format(score))
|
||||
|
@ -43,12 +43,14 @@ class GridSearchTest(tf.test.TestCase):
|
||||
if HAS_SKLEARN:
|
||||
random.seed(42)
|
||||
iris = datasets.load_iris()
|
||||
classifier = learn.TensorFlowDNNClassifier(hidden_units=[10, 20, 10],
|
||||
n_classes=3,
|
||||
steps=50)
|
||||
feature_columns = learn.infer_real_valued_columns_from_input(iris.data)
|
||||
classifier = learn.DNNClassifier(
|
||||
feature_columns=feature_columns, hidden_units=[10, 20, 10],
|
||||
n_classes=3)
|
||||
grid_search = GridSearchCV(classifier,
|
||||
{'hidden_units': [[5, 5], [10, 10]],
|
||||
'learning_rate': [0.1, 0.01]})
|
||||
{'hidden_units': [[5, 5], [10, 10]]},
|
||||
scoring='accuracy',
|
||||
fit_params={'steps': [50]})
|
||||
grid_search.fit(iris.data, iris.target)
|
||||
score = accuracy_score(iris.target, grid_search.predict(iris.data))
|
||||
self.assertGreater(score, 0.5, 'Failed with score = {0}'.format(score))
|
||||
|
@ -37,9 +37,10 @@ class NonLinearTest(tf.test.TestCase):
|
||||
def testIrisDNN(self):
|
||||
iris = tf.contrib.learn.datasets.load_iris()
|
||||
feature_columns = [tf.contrib.layers.real_valued_column("", dimension=4)]
|
||||
classifier = tf.contrib.learn.TensorFlowDNNClassifier(
|
||||
feature_columns=feature_columns, hidden_units=[10, 20, 10], n_classes=3)
|
||||
classifier.fit(iris.data, iris.target)
|
||||
classifier = tf.contrib.learn.DNNClassifier(
|
||||
feature_columns=feature_columns, hidden_units=[10, 20, 10], n_classes=3,
|
||||
config=tf.contrib.learn.RunConfig(tf_random_seed=1))
|
||||
classifier.fit(iris.data, iris.target, max_steps=200)
|
||||
score = accuracy_score(iris.target, classifier.predict(iris.data))
|
||||
self.assertGreater(score, 0.9, "Failed with score = {0}".format(score))
|
||||
weights = classifier.weights_
|
||||
@ -53,10 +54,11 @@ class NonLinearTest(tf.test.TestCase):
|
||||
def testBostonDNN(self):
|
||||
boston = tf.contrib.learn.datasets.load_boston()
|
||||
feature_columns = [tf.contrib.layers.real_valued_column("", dimension=13)]
|
||||
regressor = tf.contrib.learn.TensorFlowDNNRegressor(
|
||||
feature_columns=feature_columns, hidden_units=[10, 20, 10], n_classes=0,
|
||||
batch_size=boston.data.shape[0], steps=300, learning_rate=0.01)
|
||||
regressor.fit(boston.data, boston.target)
|
||||
regressor = tf.contrib.learn.DNNRegressor(
|
||||
feature_columns=feature_columns, hidden_units=[10, 20, 10],
|
||||
config=tf.contrib.learn.RunConfig(tf_random_seed=1))
|
||||
regressor.fit(
|
||||
boston.data, boston.target, steps=300, batch_size=boston.data.shape[0])
|
||||
score = mean_squared_error(boston.target, regressor.predict(boston.data))
|
||||
self.assertLess(score, 110, "Failed with score = {0}".format(score))
|
||||
weights = regressor.weights_
|
||||
@ -71,10 +73,10 @@ class NonLinearTest(tf.test.TestCase):
|
||||
# Dropout prob == 0.
|
||||
iris = tf.contrib.learn.datasets.load_iris()
|
||||
feature_columns = [tf.contrib.layers.real_valued_column("", dimension=4)]
|
||||
classifier = tf.contrib.learn.TensorFlowDNNClassifier(
|
||||
classifier = tf.contrib.learn.DNNClassifier(
|
||||
feature_columns=feature_columns, hidden_units=[10, 20, 10], n_classes=3,
|
||||
dropout=0.0)
|
||||
classifier.fit(iris.data, iris.target)
|
||||
dropout=0.0, config=tf.contrib.learn.RunConfig(tf_random_seed=1))
|
||||
classifier.fit(iris.data, iris.target, max_steps=200)
|
||||
score = accuracy_score(iris.target, classifier.predict(iris.data))
|
||||
self.assertGreater(score, 0.9, "Failed with score = {0}".format(score))
|
||||
|
||||
@ -82,10 +84,10 @@ class NonLinearTest(tf.test.TestCase):
|
||||
# Dropping only a little.
|
||||
iris = tf.contrib.learn.datasets.load_iris()
|
||||
feature_columns = [tf.contrib.layers.real_valued_column("", dimension=4)]
|
||||
classifier = tf.contrib.learn.TensorFlowDNNClassifier(
|
||||
classifier = tf.contrib.learn.DNNClassifier(
|
||||
feature_columns=feature_columns, hidden_units=[10, 20, 10], n_classes=3,
|
||||
dropout=0.1)
|
||||
classifier.fit(iris.data, iris.target)
|
||||
dropout=0.1, config=tf.contrib.learn.RunConfig(tf_random_seed=1))
|
||||
classifier.fit(iris.data, iris.target, max_steps=200)
|
||||
score = accuracy_score(iris.target, classifier.predict(iris.data))
|
||||
# If the quality is lower - dropout is not working.
|
||||
self.assertGreater(score, 0.9, "Failed with score = {0}".format(score))
|
||||
@ -94,10 +96,10 @@ class NonLinearTest(tf.test.TestCase):
|
||||
# Dropping out most of it.
|
||||
iris = tf.contrib.learn.datasets.load_iris()
|
||||
feature_columns = [tf.contrib.layers.real_valued_column("", dimension=4)]
|
||||
classifier = tf.contrib.learn.TensorFlowDNNClassifier(
|
||||
classifier = tf.contrib.learn.DNNClassifier(
|
||||
feature_columns=feature_columns, hidden_units=[10, 20, 10], n_classes=3,
|
||||
dropout=0.9)
|
||||
classifier.fit(iris.data, iris.target)
|
||||
dropout=0.9, config=tf.contrib.learn.RunConfig(tf_random_seed=1))
|
||||
classifier.fit(iris.data, iris.target, max_steps=200)
|
||||
score = accuracy_score(iris.target, classifier.predict(iris.data))
|
||||
self.assertGreater(score, 0.3, "Failed with score = {0}".format(score))
|
||||
# If the quality is higher - dropout is not working.
|
||||
|
@ -62,17 +62,17 @@ class SaverTest(tf.test.TestCase):
|
||||
# self.assertGreater(score, 0.5, 'Failed with score = {0}'.format(score))
|
||||
|
||||
def testDNN(self):
|
||||
path = tf.test.get_temp_dir() + '/tmp_saver3'
|
||||
random.seed(42)
|
||||
iris = datasets.load_iris()
|
||||
cont_features = [
|
||||
tf.contrib.layers.real_valued_column('', dimension=4)]
|
||||
classifier = learn.TensorFlowDNNClassifier(feature_columns=cont_features,
|
||||
classifier = learn.DNNClassifier(feature_columns=cont_features,
|
||||
hidden_units=[10, 20, 10],
|
||||
n_classes=3)
|
||||
classifier.fit(iris.data, iris.target)
|
||||
classifier.save(path)
|
||||
classifier.fit(iris.data, iris.target, max_steps=100)
|
||||
# TODO(ipolosukhin): Remove or restore.
|
||||
# path = tf.test.get_temp_dir() + '/tmp_saver3'
|
||||
# classifier.save(path)
|
||||
# new_classifier = learn.TensorFlowEstimator.restore(path)
|
||||
# self.assertEqual(type(new_classifier), type(classifier))
|
||||
# score = accuracy_score(iris.target, new_classifier.predict(iris.data))
|
||||
@ -83,17 +83,17 @@ class SaverTest(tf.test.TestCase):
|
||||
learn.TensorFlowEstimator.restore('no_model_path')
|
||||
|
||||
def testNoCheckpoints(self):
|
||||
path = tf.test.get_temp_dir() + '/tmp/tmp.saver4'
|
||||
random.seed(42)
|
||||
iris = datasets.load_iris()
|
||||
cont_features = [
|
||||
tf.contrib.layers.real_valued_column('', dimension=4)]
|
||||
classifier = learn.TensorFlowDNNClassifier(feature_columns=cont_features,
|
||||
classifier = learn.DNNClassifier(feature_columns=cont_features,
|
||||
hidden_units=[10, 20, 10],
|
||||
n_classes=3)
|
||||
classifier.fit(iris.data, iris.target)
|
||||
classifier.save(path)
|
||||
classifier.fit(iris.data, iris.target, max_steps=100)
|
||||
# TODO(ipolosukhin): Remove or restore.
|
||||
# path = tf.test.get_temp_dir() + '/tmp/tmp.saver4'
|
||||
# classifier.save(path)
|
||||
# os.remove(os.path.join(path, 'checkpoint'))
|
||||
# with self.assertRaises(NotImplementedError):
|
||||
# learn.TensorFlowEstimator.restore(path)
|
||||
|
@ -45,12 +45,11 @@ y_test = h5f['y_test']
|
||||
|
||||
# Build 3 layer DNN with 10, 20, 10 units respectively.
|
||||
feature_columns = learn.infer_real_valued_columns_from_input(x_train)
|
||||
classifier = learn.TensorFlowDNNClassifier(
|
||||
feature_columns=feature_columns, hidden_units=[10, 20, 10], n_classes=3,
|
||||
steps=200)
|
||||
classifier = learn.DNNClassifier(
|
||||
feature_columns=feature_columns, hidden_units=[10, 20, 10], n_classes=3)
|
||||
|
||||
# Fit and predict.
|
||||
classifier.fit(x_train, y_train)
|
||||
classifier.fit(x_train, y_train, steps=200)
|
||||
score = metrics.accuracy_score(y_test, classifier.predict(x_test))
|
||||
print('Accuracy: {0:f}'.format(score))
|
||||
|
||||
|
@ -44,8 +44,10 @@ Example of 3 layer network with 10, 20 and 10 hidden units respectively:
|
||||
from sklearn import datasets, metrics
|
||||
|
||||
iris = datasets.load_iris()
|
||||
classifier = learn.TensorFlowDNNClassifier(hidden_units=[10, 20, 10], n_classes=3)
|
||||
classifier.fit(iris.data, iris.target)
|
||||
feature_columns = learn.infer_real_valued_columns_from_input(iris.data)
|
||||
classifier = learn.DNNClassifier(
|
||||
feature_columns=feature_columns, hidden_units=[10, 20, 10], n_classes=3)
|
||||
classifier.fit(iris.data, iris.target, steps=100)
|
||||
score = metrics.accuracy_score(iris.target, classifier.predict(iris.data))
|
||||
print("Accuracy: %f" % score)
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user