diff --git a/tensorflow/python/keras/__init__.py b/tensorflow/python/keras/__init__.py
index 36ff3ca..7df3c2b 100644
--- a/tensorflow/python/keras/__init__.py
+++ b/tensorflow/python/keras/__init__.py
@@ -23,10 +23,7 @@
 
 from tensorflow.python import tf2
 
-from tensorflow.python.keras import estimator
 from tensorflow.python.keras import layers
-from tensorflow.python.keras import premade
-from tensorflow.python.keras import preprocessing
 from tensorflow.python.keras.layers import Input
 from tensorflow.python.keras.models import Model
 from tensorflow.python.keras.models import Sequential
diff --git a/tensorflow/python/keras/api/BUILD b/tensorflow/python/keras/api/BUILD
index ca1b13a..3c9e57b 100644
--- a/tensorflow/python/keras/api/BUILD
+++ b/tensorflow/python/keras/api/BUILD
@@ -37,12 +37,18 @@
     "tensorflow.python.keras.datasets.imdb",
     "tensorflow.python.keras.datasets.mnist",
     "tensorflow.python.keras.datasets.reuters",
+    "tensorflow.python.keras.estimator",
     "tensorflow.python.keras.initializers",
     "tensorflow.python.keras.losses",
     "tensorflow.python.keras.metrics",
     "tensorflow.python.keras.models",
     "tensorflow.python.keras.ops",
     "tensorflow.python.keras.optimizers",
+    "tensorflow.python.keras.premade.linear",
+    "tensorflow.python.keras.premade.wide_deep",
+    "tensorflow.python.keras.preprocessing.image",
+    "tensorflow.python.keras.preprocessing.sequence",
+    "tensorflow.python.keras.preprocessing.text",
     "tensorflow.python.keras.regularizers",
     "tensorflow.python.keras.saving.model_config",
     "tensorflow.python.keras.saving.save",
diff --git a/tensorflow/python/keras/distribute/keras_correctness_test_base.py b/tensorflow/python/keras/distribute/keras_correctness_test_base.py
index 73b899b..e8428c9 100644
--- a/tensorflow/python/keras/distribute/keras_correctness_test_base.py
+++ b/tensorflow/python/keras/distribute/keras_correctness_test_base.py
@@ -32,6 +32,7 @@
 from tensorflow.python.eager import test
 from tensorflow.python.framework import random_seed
 from tensorflow.python.keras.distribute import distributed_training_utils
+from tensorflow.python.keras.preprocessing import sequence
 from tensorflow.python.util import nest
 
 _RANDOM_SEED = 1337
@@ -619,7 +620,7 @@
       labels.append(label)
       features.append(word_ids)
 
-    features = keras.preprocessing.sequence.pad_sequences(
+    features = sequence.pad_sequences(
         features, maxlen=max_words)
     x_train = np.asarray(features, dtype=np.float32)
     y_train = np.asarray(labels, dtype=np.int32).reshape((count, 1))
diff --git a/tensorflow/python/keras/preprocessing/__init__.py b/tensorflow/python/keras/preprocessing/__init__.py
index 0842a84..58b670d 100644
--- a/tensorflow/python/keras/preprocessing/__init__.py
+++ b/tensorflow/python/keras/preprocessing/__init__.py
@@ -29,10 +29,6 @@
 keras_preprocessing.set_keras_submodules(backend=backend, utils=utils)
 
 
-from tensorflow.python.keras.preprocessing import image
-from tensorflow.python.keras.preprocessing import sequence
-from tensorflow.python.keras.preprocessing import text
-
 del absolute_import
 del division
 del print_function
diff --git a/tensorflow/python/keras/preprocessing/image_test.py b/tensorflow/python/keras/preprocessing/image_test.py
index f7cbb58..1245c1e 100644
--- a/tensorflow/python/keras/preprocessing/image_test.py
+++ b/tensorflow/python/keras/preprocessing/image_test.py
@@ -24,7 +24,7 @@
 
 import numpy as np
 
-from tensorflow.python import keras
+from tensorflow.python.keras.preprocessing import image as preprocessing_image
 from tensorflow.python.platform import test
 
 try:
@@ -41,11 +41,11 @@
     bias = np.random.rand(img_w, img_h, 1) * 64
     variance = np.random.rand(img_w, img_h, 1) * (255 - 64)
     imarray = np.random.rand(img_w, img_h, 3) * variance + bias
-    im = keras.preprocessing.image.array_to_img(imarray, scale=False)
+    im = preprocessing_image.array_to_img(imarray, scale=False)
     rgb_images.append(im)
 
     imarray = np.random.rand(img_w, img_h, 1) * variance + bias
-    im = keras.preprocessing.image.array_to_img(imarray, scale=False)
+    im = preprocessing_image.array_to_img(imarray, scale=False)
     gray_images.append(im)
 
   return [rgb_images, gray_images]
@@ -60,10 +60,10 @@
     for test_images in _generate_test_images():
       img_list = []
       for im in test_images:
-        img_list.append(keras.preprocessing.image.img_to_array(im)[None, ...])
+        img_list.append(preprocessing_image.img_to_array(im)[None, ...])
 
       images = np.vstack(img_list)
-      generator = keras.preprocessing.image.ImageDataGenerator(
+      generator = preprocessing_image.ImageDataGenerator(
           featurewise_center=True,
           samplewise_center=True,
           featurewise_std_normalization=True,
@@ -96,10 +96,10 @@
 
   def test_image_data_generator_with_split_value_error(self):
     with self.assertRaises(ValueError):
-      keras.preprocessing.image.ImageDataGenerator(validation_split=5)
+      preprocessing_image.ImageDataGenerator(validation_split=5)
 
   def test_image_data_generator_invalid_data(self):
-    generator = keras.preprocessing.image.ImageDataGenerator(
+    generator = preprocessing_image.ImageDataGenerator(
         featurewise_center=True,
         samplewise_center=True,
         featurewise_std_normalization=True,
@@ -119,14 +119,14 @@
     generator.flow(x)
 
     with self.assertRaises(ValueError):
-      generator = keras.preprocessing.image.ImageDataGenerator(
+      generator = preprocessing_image.ImageDataGenerator(
           data_format='unknown')
 
-    generator = keras.preprocessing.image.ImageDataGenerator(
+    generator = preprocessing_image.ImageDataGenerator(
         zoom_range=(2, 2))
 
   def test_image_data_generator_fit(self):
-    generator = keras.preprocessing.image.ImageDataGenerator(
+    generator = preprocessing_image.ImageDataGenerator(
         featurewise_center=True,
         samplewise_center=True,
         featurewise_std_normalization=True,
@@ -139,7 +139,7 @@
     # Test RBG
     x = np.random.random((32, 10, 10, 3))
     generator.fit(x)
-    generator = keras.preprocessing.image.ImageDataGenerator(
+    generator = preprocessing_image.ImageDataGenerator(
         featurewise_center=True,
         samplewise_center=True,
         featurewise_std_normalization=True,
@@ -192,14 +192,14 @@
 
     # Test image loading util
     fname = os.path.join(temp_dir, filenames[0])
-    _ = keras.preprocessing.image.load_img(fname)
-    _ = keras.preprocessing.image.load_img(fname, grayscale=True)
-    _ = keras.preprocessing.image.load_img(fname, target_size=(10, 10))
-    _ = keras.preprocessing.image.load_img(fname, target_size=(10, 10),
-                                           interpolation='bilinear')
+    _ = preprocessing_image.load_img(fname)
+    _ = preprocessing_image.load_img(fname, grayscale=True)
+    _ = preprocessing_image.load_img(fname, target_size=(10, 10))
+    _ = preprocessing_image.load_img(fname, target_size=(10, 10),
+                                     interpolation='bilinear')
 
     # create iterator
-    generator = keras.preprocessing.image.ImageDataGenerator()
+    generator = preprocessing_image.ImageDataGenerator()
     dir_iterator = generator.flow_from_directory(temp_dir)
 
     # check number of classes and images
@@ -223,7 +223,7 @@
       return np.zeros_like(x)
 
     # Test usage as Sequence
-    generator = keras.preprocessing.image.ImageDataGenerator(
+    generator = preprocessing_image.ImageDataGenerator(
         preprocessing_function=preprocessing_function)
     dir_seq = generator.flow_from_directory(
         str(temp_dir),
@@ -276,7 +276,7 @@
         count += 1
 
     # create iterator
-    generator = keras.preprocessing.image.ImageDataGenerator(
+    generator = preprocessing_image.ImageDataGenerator(
         validation_split=validation_split)
 
     with self.assertRaises(ValueError):
@@ -317,32 +317,32 @@
 
     # Test channels_first data format
     x = np.random.random((3, height, width))
-    img = keras.preprocessing.image.array_to_img(
+    img = preprocessing_image.array_to_img(
         x, data_format='channels_first')
     self.assertEqual(img.size, (width, height))
-    x = keras.preprocessing.image.img_to_array(
+    x = preprocessing_image.img_to_array(
         img, data_format='channels_first')
     self.assertEqual(x.shape, (3, height, width))
     # Test 2D
     x = np.random.random((1, height, width))
-    img = keras.preprocessing.image.array_to_img(
+    img = preprocessing_image.array_to_img(
         x, data_format='channels_first')
     self.assertEqual(img.size, (width, height))
-    x = keras.preprocessing.image.img_to_array(
+    x = preprocessing_image.img_to_array(
         img, data_format='channels_first')
     self.assertEqual(x.shape, (1, height, width))
 
     # Test channels_last data format
     x = np.random.random((height, width, 3))
-    img = keras.preprocessing.image.array_to_img(x, data_format='channels_last')
+    img = preprocessing_image.array_to_img(x, data_format='channels_last')
     self.assertEqual(img.size, (width, height))
-    x = keras.preprocessing.image.img_to_array(img, data_format='channels_last')
+    x = preprocessing_image.img_to_array(img, data_format='channels_last')
     self.assertEqual(x.shape, (height, width, 3))
     # Test 2D
     x = np.random.random((height, width, 1))
-    img = keras.preprocessing.image.array_to_img(x, data_format='channels_last')
+    img = preprocessing_image.array_to_img(x, data_format='channels_last')
     self.assertEqual(img.size, (width, height))
-    x = keras.preprocessing.image.img_to_array(img, data_format='channels_last')
+    x = preprocessing_image.img_to_array(img, data_format='channels_last')
     self.assertEqual(x.shape, (height, width, 1))
 
   def test_batch_standardize(self):
@@ -353,10 +353,10 @@
     for test_images in _generate_test_images():
       img_list = []
       for im in test_images:
-        img_list.append(keras.preprocessing.image.img_to_array(im)[None, ...])
+        img_list.append(preprocessing_image.img_to_array(im)[None, ...])
 
       images = np.vstack(img_list)
-      generator = keras.preprocessing.image.ImageDataGenerator(
+      generator = preprocessing_image.ImageDataGenerator(
           featurewise_center=True,
           samplewise_center=True,
           featurewise_std_normalization=True,
@@ -382,15 +382,15 @@
 
   def test_img_transforms(self):
     x = np.random.random((3, 200, 200))
-    _ = keras.preprocessing.image.random_rotation(x, 20)
-    _ = keras.preprocessing.image.random_shift(x, 0.2, 0.2)
-    _ = keras.preprocessing.image.random_shear(x, 2.)
-    _ = keras.preprocessing.image.random_zoom(x, (0.5, 0.5))
-    _ = keras.preprocessing.image.apply_channel_shift(x, 2, 2)
-    _ = keras.preprocessing.image.apply_affine_transform(x, 2)
+    _ = preprocessing_image.random_rotation(x, 20)
+    _ = preprocessing_image.random_shift(x, 0.2, 0.2)
+    _ = preprocessing_image.random_shear(x, 2.)
+    _ = preprocessing_image.random_zoom(x, (0.5, 0.5))
+    _ = preprocessing_image.apply_channel_shift(x, 2, 2)
+    _ = preprocessing_image.apply_affine_transform(x, 2)
     with self.assertRaises(ValueError):
-      keras.preprocessing.image.random_zoom(x, (0, 0, 0))
-    _ = keras.preprocessing.image.random_channel_shift(x, 2.)
+      preprocessing_image.random_zoom(x, (0, 0, 0))
+    _ = preprocessing_image.random_channel_shift(x, 2.)
 
 
 if __name__ == '__main__':
diff --git a/tensorflow/python/keras/preprocessing/sequence_test.py b/tensorflow/python/keras/preprocessing/sequence_test.py
index ce26b20..cb75b6e 100644
--- a/tensorflow/python/keras/preprocessing/sequence_test.py
+++ b/tensorflow/python/keras/preprocessing/sequence_test.py
@@ -22,7 +22,7 @@
 
 import numpy as np
 
-from tensorflow.python import keras
+from tensorflow.python.keras.preprocessing import sequence as preprocessing_sequence
 from tensorflow.python.platform import test
 
 
@@ -32,65 +32,65 @@
     a = [[1], [1, 2], [1, 2, 3]]
 
     # test padding
-    b = keras.preprocessing.sequence.pad_sequences(a, maxlen=3, padding='pre')
+    b = preprocessing_sequence.pad_sequences(a, maxlen=3, padding='pre')
     self.assertAllClose(b, [[0, 0, 1], [0, 1, 2], [1, 2, 3]])
-    b = keras.preprocessing.sequence.pad_sequences(a, maxlen=3, padding='post')
+    b = preprocessing_sequence.pad_sequences(a, maxlen=3, padding='post')
     self.assertAllClose(b, [[1, 0, 0], [1, 2, 0], [1, 2, 3]])
 
     # test truncating
-    b = keras.preprocessing.sequence.pad_sequences(
+    b = preprocessing_sequence.pad_sequences(
         a, maxlen=2, truncating='pre')
     self.assertAllClose(b, [[0, 1], [1, 2], [2, 3]])
-    b = keras.preprocessing.sequence.pad_sequences(
+    b = preprocessing_sequence.pad_sequences(
         a, maxlen=2, truncating='post')
     self.assertAllClose(b, [[0, 1], [1, 2], [1, 2]])
 
     # test value
-    b = keras.preprocessing.sequence.pad_sequences(a, maxlen=3, value=1)
+    b = preprocessing_sequence.pad_sequences(a, maxlen=3, value=1)
     self.assertAllClose(b, [[1, 1, 1], [1, 1, 2], [1, 2, 3]])
 
   def test_pad_sequences_vector(self):
     a = [[[1, 1]], [[2, 1], [2, 2]], [[3, 1], [3, 2], [3, 3]]]
 
     # test padding
-    b = keras.preprocessing.sequence.pad_sequences(a, maxlen=3, padding='pre')
+    b = preprocessing_sequence.pad_sequences(a, maxlen=3, padding='pre')
     self.assertAllClose(b, [[[0, 0], [0, 0], [1, 1]], [[0, 0], [2, 1], [2, 2]],
                             [[3, 1], [3, 2], [3, 3]]])
-    b = keras.preprocessing.sequence.pad_sequences(a, maxlen=3, padding='post')
+    b = preprocessing_sequence.pad_sequences(a, maxlen=3, padding='post')
     self.assertAllClose(b, [[[1, 1], [0, 0], [0, 0]], [[2, 1], [2, 2], [0, 0]],
                             [[3, 1], [3, 2], [3, 3]]])
 
     # test truncating
-    b = keras.preprocessing.sequence.pad_sequences(
+    b = preprocessing_sequence.pad_sequences(
         a, maxlen=2, truncating='pre')
     self.assertAllClose(b, [[[0, 0], [1, 1]], [[2, 1], [2, 2]], [[3, 2], [3,
                                                                           3]]])
 
-    b = keras.preprocessing.sequence.pad_sequences(
+    b = preprocessing_sequence.pad_sequences(
         a, maxlen=2, truncating='post')
     self.assertAllClose(b, [[[0, 0], [1, 1]], [[2, 1], [2, 2]], [[3, 1], [3,
                                                                           2]]])
 
     # test value
-    b = keras.preprocessing.sequence.pad_sequences(a, maxlen=3, value=1)
+    b = preprocessing_sequence.pad_sequences(a, maxlen=3, value=1)
     self.assertAllClose(b, [[[1, 1], [1, 1], [1, 1]], [[1, 1], [2, 1], [2, 2]],
                             [[3, 1], [3, 2], [3, 3]]])
 
   def test_make_sampling_table(self):
-    a = keras.preprocessing.sequence.make_sampling_table(3)
+    a = preprocessing_sequence.make_sampling_table(3)
     self.assertAllClose(
         a, np.asarray([0.00315225, 0.00315225, 0.00547597]), rtol=.1)
 
   def test_skipgrams(self):
     # test with no window size and binary labels
-    couples, labels = keras.preprocessing.sequence.skipgrams(
+    couples, labels = preprocessing_sequence.skipgrams(
         np.arange(3), vocabulary_size=3)
     for couple in couples:
       self.assertIn(couple[0], [0, 1, 2])
       self.assertIn(couple[1], [0, 1, 2])
 
     # test window size and categorical labels
-    couples, labels = keras.preprocessing.sequence.skipgrams(
+    couples, labels = preprocessing_sequence.skipgrams(
         np.arange(5), vocabulary_size=5, window_size=1, categorical=True)
     for couple in couples:
       self.assertLessEqual(couple[0] - couple[1], 3)
@@ -100,7 +100,7 @@
   def test_remove_long_seq(self):
     a = [[[1, 1]], [[2, 1], [2, 2]], [[3, 1], [3, 2], [3, 3]]]
 
-    new_seq, new_label = keras.preprocessing.sequence._remove_long_seq(
+    new_seq, new_label = preprocessing_sequence._remove_long_seq(
         maxlen=3, seq=a, label=['a', 'b', ['c', 'd']])
     self.assertEqual(new_seq, [[[1, 1]], [[2, 1], [2, 2]]])
     self.assertEqual(new_label, ['a', 'b'])
@@ -109,7 +109,7 @@
     data = np.array([[i] for i in range(50)])
     targets = np.array([[i] for i in range(50)])
 
-    data_gen = keras.preprocessing.sequence.TimeseriesGenerator(
+    data_gen = preprocessing_sequence.TimeseriesGenerator(
         data, targets, length=10, sampling_rate=2, batch_size=2)
     self.assertEqual(len(data_gen), 20)
     self.assertAllClose(data_gen[0][0],
@@ -121,7 +121,7 @@
                                                                [9], [11]]]))
     self.assertAllClose(data_gen[1][1], np.array([[12], [13]]))
 
-    data_gen = keras.preprocessing.sequence.TimeseriesGenerator(
+    data_gen = preprocessing_sequence.TimeseriesGenerator(
         data, targets, length=10, sampling_rate=2, reverse=True, batch_size=2)
     self.assertEqual(len(data_gen), 20)
     self.assertAllClose(data_gen[0][0],
@@ -129,7 +129,7 @@
                                                               [3], [1]]]))
     self.assertAllClose(data_gen[0][1], np.array([[10], [11]]))
 
-    data_gen = keras.preprocessing.sequence.TimeseriesGenerator(
+    data_gen = preprocessing_sequence.TimeseriesGenerator(
         data, targets, length=10, sampling_rate=2, shuffle=True, batch_size=1)
     batch = data_gen[0]
     r = batch[1][0][0]
@@ -140,7 +140,7 @@
         [r],
     ]))
 
-    data_gen = keras.preprocessing.sequence.TimeseriesGenerator(
+    data_gen = preprocessing_sequence.TimeseriesGenerator(
         data, targets, length=10, sampling_rate=2, stride=2, batch_size=2)
     self.assertEqual(len(data_gen), 10)
     self.assertAllClose(data_gen[1][0],
@@ -148,7 +148,7 @@
                                                                 [12], [14]]]))
     self.assertAllClose(data_gen[1][1], np.array([[14], [16]]))
 
-    data_gen = keras.preprocessing.sequence.TimeseriesGenerator(
+    data_gen = preprocessing_sequence.TimeseriesGenerator(
         data,
         targets,
         length=10,
@@ -164,7 +164,7 @@
 
     data = np.array([np.random.random_sample((1, 2, 3, 4)) for i in range(50)])
     targets = np.array([np.random.random_sample((3, 2, 1)) for i in range(50)])
-    data_gen = keras.preprocessing.sequence.TimeseriesGenerator(
+    data_gen = preprocessing_sequence.TimeseriesGenerator(
         data,
         targets,
         length=10,
@@ -181,7 +181,7 @@
     self.assertAllClose(data_gen[0][1], np.array([targets[20], targets[21]]))
 
     with self.assertRaises(ValueError) as context:
-      keras.preprocessing.sequence.TimeseriesGenerator(data, targets, length=50)
+      preprocessing_sequence.TimeseriesGenerator(data, targets, length=50)
     error = str(context.exception)
     self.assertIn('`start_index+length=50 > end_index=49` is disallowed', error)
 
@@ -189,7 +189,7 @@
     x = np.array([[i] for i in range(10)])
 
     for length in range(3, 10):
-      g = keras.preprocessing.sequence.TimeseriesGenerator(
+      g = preprocessing_sequence.TimeseriesGenerator(
           x, x, length=length, batch_size=1)
       expected = max(0, len(x) - length)
       actual = len(g)
@@ -211,7 +211,7 @@
 
     for stride, length, batch_size, shuffle in zip(strides, lengths,
                                                    batch_sizes, shuffles):
-      g = keras.preprocessing.sequence.TimeseriesGenerator(
+      g = preprocessing_sequence.TimeseriesGenerator(
           x,
           x,
           length=length,
diff --git a/tensorflow/python/keras/preprocessing/text_test.py b/tensorflow/python/keras/preprocessing/text_test.py
index 566fd3b..18bf257 100644
--- a/tensorflow/python/keras/preprocessing/text_test.py
+++ b/tensorflow/python/keras/preprocessing/text_test.py
@@ -21,7 +21,7 @@
 
 import numpy as np
 
-from tensorflow.python import keras
+from tensorflow.python.keras.preprocessing import text as preprocessing_text
 from tensorflow.python.platform import test
 
 
@@ -29,14 +29,14 @@
 
   def test_one_hot(self):
     text = 'The cat sat on the mat.'
-    encoded = keras.preprocessing.text.one_hot(text, 5)
+    encoded = preprocessing_text.one_hot(text, 5)
     self.assertEqual(len(encoded), 6)
     self.assertLessEqual(np.max(encoded), 4)
     self.assertGreaterEqual(np.min(encoded), 0)
 
     # Test on unicode.
     text = u'The cat sat on the mat.'
-    encoded = keras.preprocessing.text.one_hot(text, 5)
+    encoded = preprocessing_text.one_hot(text, 5)
     self.assertEqual(len(encoded), 6)
     self.assertLessEqual(np.max(encoded), 4)
     self.assertGreaterEqual(np.min(encoded), 0)
@@ -47,7 +47,7 @@
         'The dog sat on the log.',
         'Dogs and cats living together.'
     ]
-    tokenizer = keras.preprocessing.text.Tokenizer(num_words=10)
+    tokenizer = preprocessing_text.Tokenizer(num_words=10)
     tokenizer.fit_on_texts(texts)
 
     sequences = []
@@ -64,14 +64,14 @@
 
   def test_hashing_trick_hash(self):
     text = 'The cat sat on the mat.'
-    encoded = keras.preprocessing.text.hashing_trick(text, 5)
+    encoded = preprocessing_text.hashing_trick(text, 5)
     self.assertEqual(len(encoded), 6)
     self.assertLessEqual(np.max(encoded), 4)
     self.assertGreaterEqual(np.min(encoded), 1)
 
   def test_hashing_trick_md5(self):
     text = 'The cat sat on the mat.'
-    encoded = keras.preprocessing.text.hashing_trick(
+    encoded = preprocessing_text.hashing_trick(
         text, 5, hash_function='md5')
     self.assertEqual(len(encoded), 6)
     self.assertLessEqual(np.max(encoded), 4)
@@ -82,13 +82,13 @@
     x_test = ['This text has some unknown words']  # 2 OOVs: some, unknown
 
     # Default, without OOV flag
-    tokenizer = keras.preprocessing.text.Tokenizer()
+    tokenizer = preprocessing_text.Tokenizer()
     tokenizer.fit_on_texts(x_train)
     x_test_seq = tokenizer.texts_to_sequences(x_test)
     self.assertEqual(len(x_test_seq[0]), 4)  # discards 2 OOVs
 
     # With OOV feature
-    tokenizer = keras.preprocessing.text.Tokenizer(oov_token='<unk>')
+    tokenizer = preprocessing_text.Tokenizer(oov_token='<unk>')
     tokenizer.fit_on_texts(x_train)
     x_test_seq = tokenizer.texts_to_sequences(x_test)
     self.assertEqual(len(x_test_seq[0]), 6)  # OOVs marked in place
@@ -100,7 +100,7 @@
     ]
     word_sequences = [['The', 'cat', 'is', 'sitting'],
                       ['The', 'dog', 'is', 'standing']]
-    tokenizer = keras.preprocessing.text.Tokenizer()
+    tokenizer = preprocessing_text.Tokenizer()
     tokenizer.fit_on_texts(texts)
     tokenizer.fit_on_texts(word_sequences)
 
@@ -111,29 +111,29 @@
 
   def test_text_to_word_sequence(self):
     text = 'hello! ? world!'
-    seq = keras.preprocessing.text.text_to_word_sequence(text)
+    seq = preprocessing_text.text_to_word_sequence(text)
     self.assertEqual(seq, ['hello', 'world'])
 
   def test_text_to_word_sequence_multichar_split(self):
     text = 'hello!stop?world!'
-    seq = keras.preprocessing.text.text_to_word_sequence(text, split='stop')
+    seq = preprocessing_text.text_to_word_sequence(text, split='stop')
     self.assertEqual(seq, ['hello', 'world'])
 
   def test_text_to_word_sequence_unicode(self):
     text = u'ali! veli? kırk dokuz elli'
-    seq = keras.preprocessing.text.text_to_word_sequence(text)
+    seq = preprocessing_text.text_to_word_sequence(text)
     self.assertEqual(seq, [u'ali', u'veli', u'kırk', u'dokuz', u'elli'])
 
   def test_text_to_word_sequence_unicode_multichar_split(self):
     text = u'ali!stopveli?stopkırkstopdokuzstopelli'
-    seq = keras.preprocessing.text.text_to_word_sequence(text, split='stop')
+    seq = preprocessing_text.text_to_word_sequence(text, split='stop')
     self.assertEqual(seq, [u'ali', u'veli', u'kırk', u'dokuz', u'elli'])
 
   def test_tokenizer_unicode(self):
     texts = [
         u'ali veli kırk dokuz elli', u'ali veli kırk dokuz elli veli kırk dokuz'
     ]
-    tokenizer = keras.preprocessing.text.Tokenizer(num_words=5)
+    tokenizer = preprocessing_text.Tokenizer(num_words=5)
     tokenizer.fit_on_texts(texts)
 
     self.assertEqual(len(tokenizer.word_counts), 5)
diff --git a/tensorflow/python/tools/api/generator/doc_srcs.py b/tensorflow/python/tools/api/generator/doc_srcs.py
index 28bf0e9..2f34db2 100644
--- a/tensorflow/python/tools/api/generator/doc_srcs.py
+++ b/tensorflow/python/tools/api/generator/doc_srcs.py
@@ -44,7 +44,6 @@
     'gfile': DocSource(docstring_module_name='platform.gfile'),
     'graph_util': DocSource(docstring_module_name='framework.graph_util'),
     'image': DocSource(docstring_module_name='ops.image_ops'),
-    'keras.estimator': DocSource(docstring_module_name='keras.estimator'),
     'linalg': DocSource(docstring_module_name='ops.linalg_ops'),
     'logging': DocSource(docstring_module_name='ops.logging_ops'),
     'losses': DocSource(docstring_module_name='ops.losses.losses'),
