diff options
Diffstat (limited to 'tensorflow/contrib/factorization/python/ops/kmeans_test.py')
-rw-r--r-- | tensorflow/contrib/factorization/python/ops/kmeans_test.py | 68 |
1 files changed, 29 insertions, 39 deletions
diff --git a/tensorflow/contrib/factorization/python/ops/kmeans_test.py b/tensorflow/contrib/factorization/python/ops/kmeans_test.py index 1b9c533f58..bc706453c1 100644 --- a/tensorflow/contrib/factorization/python/ops/kmeans_test.py +++ b/tensorflow/contrib/factorization/python/ops/kmeans_test.py @@ -53,13 +53,14 @@ class KMeansTest(tf.test.TestCase): self.kmeans = KMeans(self.num_centers, initial_clusters=kmeans_ops.RANDOM_INIT, - batch_size=self.batch_size, use_mini_batch=self.use_mini_batch, - steps=30, - continue_training=True, - config=run_config.RunConfig(tf_random_seed=14), + config=self.config(14), random_seed=12) + @staticmethod + def config(tf_random_seed): + return run_config.RunConfig(tf_random_seed=tf_random_seed) + @property def batch_size(self): return self.num_points @@ -86,7 +87,7 @@ class KMeansTest(tf.test.TestCase): def test_clusters(self): kmeans = self.kmeans - kmeans.fit(x=self.points, steps=0) + kmeans.fit(x=self.points, steps=1, batch_size=8) clusters = kmeans.clusters() self.assertAllEqual(list(clusters.shape), [self.num_centers, self.num_dims]) @@ -97,10 +98,11 @@ class KMeansTest(tf.test.TestCase): return kmeans = self.kmeans kmeans.fit(x=self.points, - steps=1) + steps=1, batch_size=self.batch_size) score1 = kmeans.score(x=self.points) kmeans.fit(x=self.points, - steps=15 * self.num_points // self.batch_size) + steps=15 * self.num_points // self.batch_size, + batch_size=self.batch_size) score2 = kmeans.score(x=self.points) self.assertTrue(score1 > score2) self.assertNear(self.true_score, score2, self.true_score * 0.05) @@ -111,39 +113,36 @@ class KMeansTest(tf.test.TestCase): return kmeans = KMeans(self.num_centers, initial_clusters=kmeans_ops.RANDOM_INIT, - batch_size=self.batch_size, use_mini_batch=self.use_mini_batch, - # Force it to train forever until the monitor stops it. - steps=None, - continue_training=True, config=run_config.RunConfig(tf_random_seed=14), random_seed=12) kmeans.fit(x=self.points, # Force it to train forever until the monitor stops it. steps=None, + batch_size=self.batch_size, relative_tolerance=1e-4) score = kmeans.score(x=self.points) self.assertNear(self.true_score, score, self.true_score * 0.005) def test_infer(self): kmeans = self.kmeans - kmeans.fit(x=self.points) + kmeans.fit(x=self.points, steps=10, batch_size=128) clusters = kmeans.clusters() # Make a small test set points, true_assignments, true_offsets = self.make_random_points(clusters, 10) # Test predict - assignments = kmeans.predict(points) + assignments = kmeans.predict(points, batch_size=self.batch_size) self.assertAllEqual(assignments, true_assignments) # Test score - score = kmeans.score(points) + score = kmeans.score(points, batch_size=128) self.assertNear(score, np.sum(true_offsets), 0.01 * score) # Test transform - transform = kmeans.transform(points) + transform = kmeans.transform(points, batch_size=128) true_transform = np.maximum( 0, np.sum(np.square(points), axis=1, keepdims=True) - @@ -161,12 +160,9 @@ class KMeansTest(tf.test.TestCase): initial_clusters=kmeans_ops.RANDOM_INIT, distance_metric=kmeans_ops.COSINE_DISTANCE, use_mini_batch=self.use_mini_batch, - batch_size=4, - steps=30, - continue_training=True, - config=run_config.RunConfig(tf_random_seed=2), + config=self.config(2), random_seed=12) - kmeans.fit(x=points) + kmeans.fit(x=points, steps=10, batch_size=4) centers = normalize(kmeans.clusters()) self.assertAllClose(np.sort(centers, axis=0), np.sort(true_centers, axis=0)) @@ -184,10 +180,8 @@ class KMeansTest(tf.test.TestCase): initial_clusters=kmeans_ops.RANDOM_INIT, distance_metric=kmeans_ops.COSINE_DISTANCE, use_mini_batch=self.use_mini_batch, - batch_size=8, - continue_training=True, - config=run_config.RunConfig(tf_random_seed=3)) - kmeans.fit(x=points, steps=30) + config=self.config(3)) + kmeans.fit(x=points, steps=30, batch_size=8) centers = normalize(kmeans.clusters()) self.assertAllClose(np.sort(centers, axis=0), @@ -195,7 +189,7 @@ class KMeansTest(tf.test.TestCase): atol=1e-2) true_transform = 1 - cosine_similarity(points, centers) - transform = kmeans.transform(points) + transform = kmeans.transform(points, batch_size=8) self.assertAllClose(transform, true_transform, atol=1e-3) def test_predict_with_cosine_distance(self): @@ -217,20 +211,18 @@ class KMeansTest(tf.test.TestCase): initial_clusters=kmeans_ops.RANDOM_INIT, distance_metric=kmeans_ops.COSINE_DISTANCE, use_mini_batch=self.use_mini_batch, - batch_size=8, - continue_training=True, - config=run_config.RunConfig(tf_random_seed=3)) - kmeans.fit(x=points, steps=30) + config=self.config(3)) + kmeans.fit(x=points, steps=30, batch_size=8) centers = normalize(kmeans.clusters()) self.assertAllClose(np.sort(centers, axis=0), np.sort(true_centers, axis=0), atol=1e-2) - assignments = kmeans.predict(points) + assignments = kmeans.predict(points, batch_size=8) self.assertAllClose(centers[assignments], true_centers[true_assignments], atol=1e-2) - score = kmeans.score(points) + score = kmeans.score(points, batch_size=8) self.assertAllClose(score, true_score, atol=1e-2) def test_predict_with_cosine_distance_and_kmeans_plus_plus(self): @@ -254,21 +246,19 @@ class KMeansTest(tf.test.TestCase): initial_clusters=kmeans_ops.KMEANS_PLUS_PLUS_INIT, distance_metric=kmeans_ops.COSINE_DISTANCE, use_mini_batch=self.use_mini_batch, - batch_size=12, - continue_training=True, - config=run_config.RunConfig(tf_random_seed=3)) - kmeans.fit(x=points, steps=30) + config=self.config(3)) + kmeans.fit(x=points, steps=30, batch_size=12) centers = normalize(kmeans.clusters()) self.assertAllClose(sorted(centers.tolist()), sorted(true_centers.tolist()), atol=1e-2) - assignments = kmeans.predict(points) + assignments = kmeans.predict(points, batch_size=12) self.assertAllClose(centers[assignments], true_centers[true_assignments], atol=1e-2) - score = kmeans.score(points) + score = kmeans.score(points, batch_size=12) self.assertAllClose(score, true_score, atol=1e-2) def test_fit_raise_if_num_clusters_larger_than_num_points_random_init(self): @@ -276,7 +266,7 @@ class KMeansTest(tf.test.TestCase): with self.assertRaisesOpError('less'): kmeans = KMeans(num_clusters=3, initial_clusters=kmeans_ops.RANDOM_INIT) - kmeans.fit(x=points) + kmeans.fit(x=points, steps=10, batch_size=8) def test_fit_raise_if_num_clusters_larger_than_num_points_kmeans_plus_plus( self): @@ -285,7 +275,7 @@ class KMeansTest(tf.test.TestCase): with self.assertRaisesOpError(AssertionError): kmeans = KMeans(num_clusters=3, initial_clusters=kmeans_ops.KMEANS_PLUS_PLUS_INIT) - kmeans.fit(x=points) + kmeans.fit(x=points, steps=10, batch_size=8) class MiniBatchKMeansTest(KMeansTest): |