Skip to content

Replace tensorflow.python.keras with keras. tensorflow.python.keras is an old copy and is deprecated. #1019

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,6 @@
import numpy as np
import tensorflow as tf

from tensorflow.python.keras import keras_parameterized
from tensorflow_model_optimization.python.core.clustering.keras import cluster
from tensorflow_model_optimization.python.core.clustering.keras import cluster_config
from tensorflow_model_optimization.python.core.clustering.keras.experimental import cluster as experimental_cluster
Expand Down Expand Up @@ -153,7 +152,6 @@ def testDefaultClusteringInit(self):
)["cluster_centroids_init"]
self.assertEqual(init_method, CentroidInitialization.KMEANS_PLUS_PLUS)

@keras_parameterized.run_all_keras_modes
def testValuesRemainClusteredAfterTraining(self):
"""Verifies that training a clustered model does not destroy the clusters."""
original_model = keras.Sequential([
Expand All @@ -175,7 +173,6 @@ def testValuesRemainClusteredAfterTraining(self):
unique_weights = set(weights_as_list)
self.assertLessEqual(len(unique_weights), self.params["number_of_clusters"])

@keras_parameterized.run_all_keras_modes
def testSparsityIsPreservedDuringTraining(self):
"""Set a specific random seed.

Expand Down Expand Up @@ -230,7 +227,6 @@ def testSparsityIsPreservedDuringTraining(self):
nr_of_unique_weights_after,
clustering_params["number_of_clusters"])

@keras_parameterized.run_all_keras_modes(always_skip_v1=True)
def testEndToEndSequential(self):
"""Test End to End clustering - sequential model."""
original_model = keras.Sequential([
Expand All @@ -247,7 +243,6 @@ def clusters_check(stripped_model):

self.end_to_end_testing(original_model, clusters_check)

@keras_parameterized.run_all_keras_modes(always_skip_v1=True)
def testEndToEndConv1DAndConv1DTranspose(self):
"""Test End to End clustering - model with Conv1D and Conv1DTranspose."""
inp = layers.Input(batch_shape=(1, 16))
Expand Down Expand Up @@ -372,7 +367,6 @@ def clusters_check(stripped_model):

self.end_to_end_testing(original_model, clusters_check)

@keras_parameterized.run_all_keras_modes(always_skip_v1=True)
def testEndToEndFunctional(self):
"""Test End to End clustering - functional model."""
inputs = keras.layers.Input(shape=(5,))
Expand All @@ -389,7 +383,6 @@ def clusters_check(stripped_model):

self.end_to_end_testing(original_model, clusters_check)

@keras_parameterized.run_all_keras_modes(always_skip_v1=True)
def testEndToEndDeepLayer(self):
"""Test End to End clustering for the model with deep layer."""
internal_model = tf.keras.Sequential(
Expand All @@ -416,7 +409,6 @@ def clusters_check(stripped_model):

self.end_to_end_testing(original_model, clusters_check)

@keras_parameterized.run_all_keras_modes(always_skip_v1=True)
def testEndToEndDeepLayer2(self):
"""Test End to End clustering for the model with 2 deep layers."""
internal_model = tf.keras.Sequential(
Expand Down Expand Up @@ -454,7 +446,6 @@ def clusters_check(stripped_model):

self.end_to_end_testing(original_model, clusters_check)

@keras_parameterized.run_all_keras_modes
def testWeightsAreLearningDuringClustering(self):
"""Verifies that weights are updated during training a clustered model.

Expand Down Expand Up @@ -541,7 +532,6 @@ def _assertNbUniqueWeights(self, weight, expected_unique_weights):
nr_unique_weights = len(np.unique(weight.numpy().flatten()))
assert nr_unique_weights == expected_unique_weights

@keras_parameterized.run_all_keras_modes
def testClusterSimpleRNN(self):
model = keras.models.Sequential()
model.add(keras.layers.Embedding(self.max_features, 16,
Expand All @@ -564,7 +554,6 @@ def testClusterSimpleRNN(self):

self._train(stripped_model)

@keras_parameterized.run_all_keras_modes
def testClusterLSTM(self):
model = keras.models.Sequential()
model.add(keras.layers.Embedding(self.max_features, 16,
Expand All @@ -587,7 +576,6 @@ def testClusterLSTM(self):

self._train(stripped_model)

@keras_parameterized.run_all_keras_modes
def testClusterGRU(self):
model = keras.models.Sequential()
model.add(keras.layers.Embedding(self.max_features, 16,
Expand All @@ -610,7 +598,6 @@ def testClusterGRU(self):

self._train(stripped_model)

@keras_parameterized.run_all_keras_modes
def testClusterBidirectional(self):
model = keras.models.Sequential()
model.add(
Expand All @@ -634,7 +621,6 @@ def testClusterBidirectional(self):
expected_unique_weights=self.params_clustering["number_of_clusters"],
)

@keras_parameterized.run_all_keras_modes
def testClusterStackedRNNCells(self):
model = keras.models.Sequential()
model.add(
Expand Down Expand Up @@ -685,7 +671,6 @@ def _get_model(self):
model = tf.keras.Model(inputs=inp, outputs=out)
return model

@keras_parameterized.run_all_keras_modes
def testMHA(self):
model = self._get_model()

Expand Down Expand Up @@ -736,7 +721,6 @@ def _get_model(self):
model = tf.keras.Model(inputs=inp, outputs=out)
return model

@keras_parameterized.run_all_keras_modes
def testPerChannel(self):
model = self._get_model()

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,6 @@
from absl.testing import parameterized
import tensorflow as tf

from tensorflow.python.keras import keras_parameterized
from tensorflow_model_optimization.python.core.clustering.keras import cluster
from tensorflow_model_optimization.python.core.clustering.keras import cluster_config
from tensorflow_model_optimization.python.core.clustering.keras import cluster_wrapper
Expand Down Expand Up @@ -162,15 +161,13 @@ def _count_clustered_layers(self, model):
count += 1
return count

@keras_parameterized.run_all_keras_modes
def testClusterKerasClusterableLayer(self):
"""Verifies that a built-in keras layer marked as clusterable is being clustered correctly."""
wrapped_layer = self._build_clustered_layer_model(
self.keras_clusterable_layer)

self._validate_clustered_layer(self.keras_clusterable_layer, wrapped_layer)

@keras_parameterized.run_all_keras_modes
def testClusterKerasClusterableLayerWithSparsityPreservation(self):
"""Verifies that a built-in keras layer marked as clusterable is being clustered correctly when sparsity preservation is enabled."""
preserve_sparsity_params = {'preserve_sparsity': True}
Expand All @@ -180,7 +177,6 @@ def testClusterKerasClusterableLayerWithSparsityPreservation(self):

self._validate_clustered_layer(self.keras_clusterable_layer, wrapped_layer)

@keras_parameterized.run_all_keras_modes
def testClusterKerasNonClusterableLayer(self):
"""Verifies that a built-in keras layer not marked as clusterable is not being clustered."""
wrapped_layer = self._build_clustered_layer_model(
Expand All @@ -190,7 +186,6 @@ def testClusterKerasNonClusterableLayer(self):
wrapped_layer)
self.assertEqual([], wrapped_layer.layer.get_clusterable_weights())

@keras_parameterized.run_all_keras_modes
def testDepthwiseConv2DLayerNonClusterable(self):
"""Verifies that we don't cluster a DepthwiseConv2D layer, because clustering of this type of layer gives big unrecoverable accuracy loss."""
wrapped_layer = self._build_clustered_layer_model(
Expand All @@ -200,7 +195,6 @@ def testDepthwiseConv2DLayerNonClusterable(self):
wrapped_layer)
self.assertEqual([], wrapped_layer.layer.get_clusterable_weights())

@keras_parameterized.run_all_keras_modes
def testDenseLayer(self):
"""Verifies that we can cluster a Dense layer."""
input_shape = (28, 1)
Expand All @@ -214,7 +208,6 @@ def testDenseLayer(self):
self.assertEqual([1, 10],
wrapped_layer.layer.get_clusterable_weights()[0][1].shape)

@keras_parameterized.run_all_keras_modes
def testConv1DLayer(self):
"""Verifies that we can cluster a Conv1D layer."""
input_shape = (28, 1)
Expand All @@ -227,7 +220,6 @@ def testConv1DLayer(self):
self.assertEqual([5, 1, 3],
wrapped_layer.layer.get_clusterable_weights()[0][1].shape)

@keras_parameterized.run_all_keras_modes
def testConv1DTransposeLayer(self):
"""Verifies that we can cluster a Conv1DTranspose layer."""
input_shape = (28, 1)
Expand All @@ -240,7 +232,6 @@ def testConv1DTransposeLayer(self):
self.assertEqual([5, 3, 1],
wrapped_layer.layer.get_clusterable_weights()[0][1].shape)

@keras_parameterized.run_all_keras_modes
def testConv2DLayer(self):
"""Verifies that we can cluster a Conv2D layer."""
input_shape = (28, 28, 1)
Expand All @@ -253,7 +244,6 @@ def testConv2DLayer(self):
self.assertEqual([4, 5, 1, 3],
wrapped_layer.layer.get_clusterable_weights()[0][1].shape)

@keras_parameterized.run_all_keras_modes
def testConv2DTransposeLayer(self):
"""Verifies that we can cluster a Conv2DTranspose layer."""
input_shape = (28, 28, 1)
Expand All @@ -266,7 +256,6 @@ def testConv2DTransposeLayer(self):
self.assertEqual([4, 5, 3, 1],
wrapped_layer.layer.get_clusterable_weights()[0][1].shape)

@keras_parameterized.run_all_keras_modes
def testConv3DLayer(self):
"""Verifies that we can cluster a Conv3D layer."""
input_shape = (28, 28, 28, 1)
Expand All @@ -287,7 +276,6 @@ def testClusterKerasUnsupportedLayer(self):
with self.assertRaises(ValueError):
cluster.cluster_weights(keras_unsupported_layer, **self.params)

@keras_parameterized.run_all_keras_modes
def testClusterCustomClusterableLayer(self):
"""Verifies that a custom clusterable layer is being clustered correctly."""
wrapped_layer = self._build_clustered_layer_model(
Expand All @@ -297,7 +285,6 @@ def testClusterCustomClusterableLayer(self):
self.assertEqual([('kernel', wrapped_layer.layer.kernel)],
wrapped_layer.layer.get_clusterable_weights())

@keras_parameterized.run_all_keras_modes
def testClusterCustomClusterableLayerWithSparsityPreservation(self):
"""Verifies that a custom clusterable layer is being clustered correctly when sparsity preservation is enabled."""
preserve_sparsity_params = {'preserve_sparsity': True}
Expand Down Expand Up @@ -424,7 +411,6 @@ def testStripClusteringSequentialModelWithBiasConstraint(self):
keras_file = os.path.join(tmp_dir_name, 'cluster_test')
stripped_model.save(keras_file, save_traces=True)

@keras_parameterized.run_all_keras_modes
def testClusterSequentialModelSelectively(self):
clustered_model = keras.Sequential()
clustered_model.add(
Expand All @@ -437,7 +423,6 @@ def testClusterSequentialModelSelectively(self):
self.assertNotIsInstance(clustered_model.layers[1],
cluster_wrapper.ClusterWeights)

@keras_parameterized.run_all_keras_modes
def testClusterSequentialModelSelectivelyWithSparsityPreservation(self):
"""Verifies that layers within a sequential model can be clustered selectively when sparsity preservation is enabled."""
preserve_sparsity_params = {'preserve_sparsity': True}
Expand All @@ -454,7 +439,6 @@ def testClusterSequentialModelSelectivelyWithSparsityPreservation(self):
self.assertNotIsInstance(clustered_model.layers[1],
cluster_wrapper.ClusterWeights)

@keras_parameterized.run_all_keras_modes
def testClusterFunctionalModelSelectively(self):
"""Verifies that layers within a functional model can be clustered selectively."""
i1 = keras.Input(shape=(10,))
Expand All @@ -469,7 +453,6 @@ def testClusterFunctionalModelSelectively(self):
self.assertNotIsInstance(clustered_model.layers[3],
cluster_wrapper.ClusterWeights)

@keras_parameterized.run_all_keras_modes
def testClusterFunctionalModelSelectivelyWithSparsityPreservation(self):
"""Verifies that layers within a functional model can be clustered selectively when sparsity preservation is enabled."""
preserve_sparsity_params = {'preserve_sparsity': True}
Expand All @@ -486,7 +469,6 @@ def testClusterFunctionalModelSelectivelyWithSparsityPreservation(self):
self.assertNotIsInstance(clustered_model.layers[3],
cluster_wrapper.ClusterWeights)

@keras_parameterized.run_all_keras_modes
def testClusterModelValidLayersSuccessful(self):
"""Verifies that clustering a sequential model results in all clusterable layers within the model being clustered."""
model = keras.Sequential([
Expand All @@ -500,7 +482,6 @@ def testClusterModelValidLayersSuccessful(self):
for layer, clustered_layer in zip(model.layers, clustered_model.layers):
self._validate_clustered_layer(layer, clustered_layer)

@keras_parameterized.run_all_keras_modes
def testClusterModelValidLayersSuccessfulWithSparsityPreservation(self):
"""Verifies that clustering a sequential model results in all clusterable layers within the model being clustered when sparsity preservation is enabled."""
preserve_sparsity_params = {'preserve_sparsity': True}
Expand Down Expand Up @@ -540,7 +521,6 @@ def testClusterModelCustomNonClusterableLayerRaisesError(self):
self.custom_clusterable_layer, custom_non_clusterable_layer
]), **self.params)

@keras_parameterized.run_all_keras_modes
def testClusterModelDoesNotWrapAlreadyWrappedLayer(self):
"""Verifies that clustering a model that contains an already clustered layer does not result in wrapping the clustered layer into another cluster_wrapper."""
model = keras.Sequential([
Expand Down Expand Up @@ -579,7 +559,6 @@ def testClusterSequentialModelNoInput(self):
clustered_model = cluster.cluster_weights(model, **self.params)
self.assertEqual(self._count_clustered_layers(clustered_model), 2)

@keras_parameterized.run_all_keras_modes
def testClusterSequentialModelWithInput(self):
"""Verifies that a sequential model with an input layer is being clustered correctly."""
# With InputLayer
Expand Down Expand Up @@ -607,7 +586,6 @@ def testClusterSequentialModelPreservesBuiltStateNoInput(self):
json.loads(clustered_model.to_json()))
self.assertEqual(loaded_model.built, False)

@keras_parameterized.run_all_keras_modes
def testClusterSequentialModelPreservesBuiltStateWithInput(self):
"""Verifies that clustering a sequential model with an input layer preserves the built state of the model."""
# With InputLayer
Expand All @@ -625,7 +603,6 @@ def testClusterSequentialModelPreservesBuiltStateWithInput(self):
json.loads(clustered_model.to_json()))
self.assertEqual(loaded_model.built, True)

@keras_parameterized.run_all_keras_modes
def testClusterFunctionalModelPreservesBuiltState(self):
"""Verifies that clustering a functional model preserves the built state of the model."""
i1 = keras.Input(shape=(10,))
Expand All @@ -644,7 +621,6 @@ def testClusterFunctionalModelPreservesBuiltState(self):
json.loads(clustered_model.to_json()))
self.assertEqual(loaded_model.built, True)

@keras_parameterized.run_all_keras_modes
def testClusterFunctionalModel(self):
"""Verifies that a functional model is being clustered correctly."""
i1 = keras.Input(shape=(10,))
Expand All @@ -656,7 +632,6 @@ def testClusterFunctionalModel(self):
clustered_model = cluster.cluster_weights(model, **self.params)
self.assertEqual(self._count_clustered_layers(clustered_model), 3)

@keras_parameterized.run_all_keras_modes
def testClusterFunctionalModelWithLayerReused(self):
"""Verifies that a layer reused within a functional model multiple times is only being clustered once."""
# The model reuses the Dense() layer. Make sure it's only clustered once.
Expand All @@ -668,22 +643,19 @@ def testClusterFunctionalModelWithLayerReused(self):
clustered_model = cluster.cluster_weights(model, **self.params)
self.assertEqual(self._count_clustered_layers(clustered_model), 1)

@keras_parameterized.run_all_keras_modes
def testClusterSubclassModel(self):
"""Verifies that attempting to cluster an instance of a subclass of keras.Model raises an exception."""
model = TestModel()
with self.assertRaises(ValueError):
_ = cluster.cluster_weights(model, **self.params)

@keras_parameterized.run_all_keras_modes
def testClusterSubclassModelAsSubmodel(self):
"""Verifies that attempting to cluster a model with submodel that is a subclass throws an exception."""
model_subclass = TestModel()
model = keras.Sequential([layers.Dense(10), model_subclass])
with self.assertRaisesRegex(ValueError, 'Subclassed models.*'):
_ = cluster.cluster_weights(model, **self.params)

@keras_parameterized.run_all_keras_modes
def testStripClusteringSequentialModel(self):
"""Verifies that stripping the clustering wrappers from a sequential model produces the expected config."""
model = keras.Sequential([
Expand All @@ -697,7 +669,6 @@ def testStripClusteringSequentialModel(self):
self.assertEqual(self._count_clustered_layers(stripped_model), 0)
self.assertEqual(model.get_config(), stripped_model.get_config())

@keras_parameterized.run_all_keras_modes
def testClusterStrippingFunctionalModel(self):
"""Verifies that stripping the clustering wrappers from a functional model produces the expected config."""
i1 = keras.Input(shape=(10,))
Expand All @@ -713,7 +684,6 @@ def testClusterStrippingFunctionalModel(self):
self.assertEqual(self._count_clustered_layers(stripped_model), 0)
self.assertEqual(model.get_config(), stripped_model.get_config())

@keras_parameterized.run_all_keras_modes
def testClusterWeightsStrippedWeights(self):
"""Verifies that stripping the clustering wrappers from a functional model preserves the clustered weights."""
i1 = keras.Input(shape=(10,))
Expand All @@ -728,7 +698,6 @@ def testClusterWeightsStrippedWeights(self):
self.assertEqual(self._count_clustered_layers(stripped_model), 0)
self.assertLen(stripped_model.get_weights(), cluster_weight_length)

@keras_parameterized.run_all_keras_modes
def testStrippedKernel(self):
"""Verifies that stripping the clustering wrappers from a functional model restores the layers kernel and the layers weight array to the new clustered weight value."""
i1 = keras.Input(shape=(1, 1, 1))
Expand All @@ -746,7 +715,6 @@ def testStrippedKernel(self):
self.assertIsNot(stripped_conv2d_layer.kernel, clustered_kernel)
self.assertIn(stripped_conv2d_layer.kernel, stripped_conv2d_layer.weights)

@keras_parameterized.run_all_keras_modes
def testStripSelectivelyClusteredFunctionalModel(self):
"""Verifies that invoking strip_clustering() on a selectively clustered functional model strips the clustering wrappers from the clustered layers."""
i1 = keras.Input(shape=(10,))
Expand All @@ -761,7 +729,6 @@ def testStripSelectivelyClusteredFunctionalModel(self):
self.assertEqual(self._count_clustered_layers(stripped_model), 0)
self.assertIsInstance(stripped_model.layers[2], layers.Dense)

@keras_parameterized.run_all_keras_modes
def testStripSelectivelyClusteredSequentialModel(self):
"""Verifies that invoking strip_clustering() on a selectively clustered sequential model strips the clustering wrappers from the clustered layers."""
clustered_model = keras.Sequential([
Expand All @@ -775,7 +742,6 @@ def testStripSelectivelyClusteredSequentialModel(self):
self.assertEqual(self._count_clustered_layers(stripped_model), 0)
self.assertIsInstance(stripped_model.layers[0], layers.Dense)

@keras_parameterized.run_all_keras_modes
def testStripClusteringAndSetOriginalWeightsBack(self):
"""Verifies that we can set_weights onto the stripped model."""
model = keras.Sequential([
Expand Down
Loading