aboutsummaryrefslogtreecommitdiffhomepage
path: root/tensorflow/contrib
diff options
context:
space:
mode:
authorGravatar A. Unique TensorFlower <gardener@tensorflow.org>2016-07-01 08:21:31 -0800
committerGravatar TensorFlower Gardener <gardener@tensorflow.org>2016-07-01 09:32:54 -0700
commit487252db6b5a06f05efa0c5d851d95eda233f87e (patch)
tree48522c3f6156f36194c5f40ef5cd56df1d5a31ef /tensorflow/contrib
parent242fe922e43440bab0098a208e3ca73e8e042014 (diff)
Improve error messages in feature_column_ops.
Change: 126416482
Diffstat (limited to 'tensorflow/contrib')
-rw-r--r--tensorflow/contrib/layers/python/layers/feature_column_ops.py29
-rw-r--r--tensorflow/contrib/layers/python/layers/feature_column_ops_test.py36
2 files changed, 43 insertions, 22 deletions
diff --git a/tensorflow/contrib/layers/python/layers/feature_column_ops.py b/tensorflow/contrib/layers/python/layers/feature_column_ops.py
index 823a38f30d..f343b68f7c 100644
--- a/tensorflow/contrib/layers/python/layers/feature_column_ops.py
+++ b/tensorflow/contrib/layers/python/layers/feature_column_ops.py
@@ -98,9 +98,13 @@ def input_from_feature_columns(columns_to_tensors,
[ops.GraphKeys.VARIABLES]))
for column in sorted(set(feature_columns), key=lambda x: x.key):
- transformed_tensor = transformer.transform(column)
- output_tensors.append(column.to_dnn_input_layer(
- transformed_tensor, weight_collections, trainable))
+ try:
+ transformed_tensor = transformer.transform(column)
+ output_tensors.append(column.to_dnn_input_layer(
+ transformed_tensor, weight_collections, trainable))
+ except ValueError as e:
+ raise ValueError('Error creating input layer for column: {}.\n'
+ '{}'.format(column.name, e))
return array_ops.concat(1, output_tensors)
@@ -174,11 +178,15 @@ def weighted_sum_from_feature_columns(columns_to_tensors,
column_to_variable = dict()
transformer = _Transformer(columns_to_tensors)
for column in sorted(set(feature_columns), key=lambda x: x.key):
- transformed_tensor = transformer.transform(column)
- predictions, variable = column.to_weighted_sum(transformed_tensor,
- num_outputs,
- weight_collections,
- trainable)
+ try:
+ transformed_tensor = transformer.transform(column)
+ predictions, variable = column.to_weighted_sum(transformed_tensor,
+ num_outputs,
+ weight_collections,
+ trainable)
+ except ValueError as e:
+ raise ValueError('Error creating weighted sum for column: {}.\n'
+ '{}'.format(column.name, e))
output_tensors.append(predictions)
column_to_variable[column] = variable
_log_variable(variable)
@@ -305,7 +313,10 @@ def check_feature_columns(feature_columns):
for f in feature_columns:
key = f.key
if key in seen_keys:
- raise ValueError('Duplicate feature column key found: %s' % key)
+ raise ValueError('Duplicate feature column key found for column: {}. '
+ 'This usually means that the column is almost identical '
+ 'to another column, and one must be discarded.'.format(
+ f.name))
seen_keys.add(key)
diff --git a/tensorflow/contrib/layers/python/layers/feature_column_ops_test.py b/tensorflow/contrib/layers/python/layers/feature_column_ops_test.py
index 1d0f45357e..33aa3c8b09 100644
--- a/tensorflow/contrib/layers/python/layers/feature_column_ops_test.py
+++ b/tensorflow/contrib/layers/python/layers/feature_column_ops_test.py
@@ -341,9 +341,12 @@ class InputLayerTest(tf.test.TestCase):
# Makes sure that trying to use different initializers with the same
# embedding column explicitly fails.
- with self.assertRaises(ValueError):
- tf.contrib.layers.input_from_feature_columns(
- features, [embedded_sparse, embedded_sparse_alternate])
+ with self.test_session():
+ with self.assertRaisesRegexp(
+ ValueError,
+ "Duplicate feature column key found for column: wire_embedding"):
+ tf.contrib.layers.input_from_feature_columns(
+ features, [embedded_sparse, embedded_sparse_alternate])
def testSparseColumn(self):
hashed_sparse = tf.contrib.layers.sparse_column_with_hash_bucket("wire", 10)
@@ -351,9 +354,11 @@ class InputLayerTest(tf.test.TestCase):
indices=[[0, 0], [1, 0], [1, 1]],
shape=[2, 2])
features = {"wire": wire_tensor}
- with self.assertRaises(ValueError):
- tf.initialize_all_variables().run()
- tf.contrib.layers.input_layer(features, [hashed_sparse])
+ with self.test_session():
+ with self.assertRaisesRegexp(
+ ValueError, "Error creating input layer for column: wire"):
+ tf.initialize_all_variables().run()
+ tf.contrib.layers.input_from_feature_columns(features, [hashed_sparse])
def testCrossedColumn(self):
a = tf.contrib.layers.sparse_column_with_hash_bucket("aaa",
@@ -366,9 +371,11 @@ class InputLayerTest(tf.test.TestCase):
indices=[[0, 0], [1, 0], [1, 1]],
shape=[2, 2])
features = {"aaa": wire_tensor, "bbb": wire_tensor}
- with self.assertRaises(ValueError):
- tf.initialize_all_variables().run()
- tf.contrib.layers.input_layer(features, [crossed])
+ with self.test_session():
+ with self.assertRaisesRegexp(
+ ValueError, "Error creating input layer for column: aaa_X_bbb"):
+ tf.initialize_all_variables().run()
+ tf.contrib.layers.input_from_feature_columns(features, [crossed])
def testAllColumns(self):
real_valued = tf.contrib.layers.real_valued_column("income", 3)
@@ -477,10 +484,13 @@ class WeightedSumTest(tf.test.TestCase):
shape=[2, 2])
features = {"wire": wire_tensor}
embeded_sparse = tf.contrib.layers.embedding_column(hashed_sparse, 10)
- with self.assertRaises(ValueError):
- tf.initialize_all_variables().run()
- tf.contrib.layers.weighted_sum_from_feature_columns(features,
- [embeded_sparse])
+ with self.test_session():
+ with self.assertRaisesRegexp(
+ ValueError, "Error creating weighted sum for column: wire_embedding"):
+ tf.initialize_all_variables().run()
+ tf.contrib.layers.weighted_sum_from_feature_columns(features,
+ [embeded_sparse],
+ num_outputs=5)
def testRealValuedColumnWithMultiDimensions(self):
real_valued = tf.contrib.layers.real_valued_column("price", 2)