aboutsummaryrefslogtreecommitdiffhomepage
path: root/tensorflow/python/estimator/canned/linear.py
diff options
context:
space:
mode:
Diffstat (limited to 'tensorflow/python/estimator/canned/linear.py')
-rw-r--r--tensorflow/python/estimator/canned/linear.py34
1 files changed, 27 insertions, 7 deletions
diff --git a/tensorflow/python/estimator/canned/linear.py b/tensorflow/python/estimator/canned/linear.py
index e22df849e5..58a7160348 100644
--- a/tensorflow/python/estimator/canned/linear.py
+++ b/tensorflow/python/estimator/canned/linear.py
@@ -66,13 +66,15 @@ def _compute_fraction_of_zero(cols_to_vars):
return nn.zero_fraction(array_ops.concat(all_weight_vars, axis=0))
-def _linear_logit_fn_builder(units, feature_columns):
+def _linear_logit_fn_builder(units, feature_columns, sparse_combiner='sum'):
"""Function builder for a linear logit_fn.
Args:
units: An int indicating the dimension of the logit layer.
feature_columns: An iterable containing all the feature columns used by
the model.
+ sparse_combiner: A string specifying how to reduce if a categorical column
+ is multivalent. One of "mean", "sqrtn", and "sum".
Returns:
A logit_fn (see below).
@@ -95,6 +97,7 @@ def _linear_logit_fn_builder(units, feature_columns):
features=features,
feature_columns=feature_columns,
units=units,
+ sparse_combiner=sparse_combiner,
cols_to_vars=cols_to_vars)
bias = cols_to_vars.pop('bias')
if units > 1:
@@ -111,7 +114,7 @@ def _linear_logit_fn_builder(units, feature_columns):
def _linear_model_fn(features, labels, mode, head, feature_columns, optimizer,
- partitioner, config):
+ partitioner, config, sparse_combiner='sum'):
"""A model_fn for linear models that use a gradient-based optimizer.
Args:
@@ -126,6 +129,8 @@ def _linear_model_fn(features, labels, mode, head, feature_columns, optimizer,
optimizer to use for training. If `None`, will use a FTRL optimizer.
partitioner: Partitioner for variables.
config: `RunConfig` object to configure the runtime settings.
+ sparse_combiner: A string specifying how to reduce if a categorical column
+ is multivalent. One of "mean", "sqrtn", and "sum".
Returns:
An `EstimatorSpec` instance.
@@ -153,7 +158,8 @@ def _linear_model_fn(features, labels, mode, head, feature_columns, optimizer,
partitioner=partitioner):
logit_fn = _linear_logit_fn_builder(
- units=head.logits_dimension, feature_columns=feature_columns)
+ units=head.logits_dimension, feature_columns=feature_columns,
+ sparse_combiner=sparse_combiner)
logits = logit_fn(features=features)
return head.create_estimator_spec(
@@ -255,7 +261,8 @@ class LinearClassifier(estimator.Estimator):
config=None,
partitioner=None,
warm_start_from=None,
- loss_reduction=losses.Reduction.SUM):
+ loss_reduction=losses.Reduction.SUM,
+ sparse_combiner='sum'):
"""Construct a `LinearClassifier` estimator object.
Args:
@@ -295,6 +302,11 @@ class LinearClassifier(estimator.Estimator):
and Tensor names are unchanged.
loss_reduction: One of `tf.losses.Reduction` except `NONE`. Describes how
to reduce training loss over batch. Defaults to `SUM`.
+ sparse_combiner: A string specifying how to reduce if a categorical column
+ is multivalent. One of "mean", "sqrtn", and "sum" -- these are
+ effectively different ways to do example-level normalization, which can
+ be useful for bag-of-words features. for more details, see
+ @{tf.feature_column.linear_model$linear_model}.
Returns:
A `LinearClassifier` estimator.
@@ -323,7 +335,8 @@ class LinearClassifier(estimator.Estimator):
feature_columns=tuple(feature_columns or []),
optimizer=optimizer,
partitioner=partitioner,
- config=config)
+ config=config,
+ sparse_combiner=sparse_combiner)
super(LinearClassifier, self).__init__(
model_fn=_model_fn,
@@ -422,7 +435,8 @@ class LinearRegressor(estimator.Estimator):
config=None,
partitioner=None,
warm_start_from=None,
- loss_reduction=losses.Reduction.SUM):
+ loss_reduction=losses.Reduction.SUM,
+ sparse_combiner='sum'):
"""Initializes a `LinearRegressor` instance.
Args:
@@ -454,6 +468,11 @@ class LinearRegressor(estimator.Estimator):
and Tensor names are unchanged.
loss_reduction: One of `tf.losses.Reduction` except `NONE`. Describes how
to reduce training loss over batch. Defaults to `SUM`.
+ sparse_combiner: A string specifying how to reduce if a categorical column
+ is multivalent. One of "mean", "sqrtn", and "sum" -- these are
+ effectively different ways to do example-level normalization, which can
+ be useful for bag-of-words features. for more details, see
+ @{tf.feature_column.linear_model$linear_model}.
"""
head = head_lib._regression_head( # pylint: disable=protected-access
label_dimension=label_dimension, weight_column=weight_column,
@@ -469,7 +488,8 @@ class LinearRegressor(estimator.Estimator):
feature_columns=tuple(feature_columns or []),
optimizer=optimizer,
partitioner=partitioner,
- config=config)
+ config=config,
+ sparse_combiner=sparse_combiner)
super(LinearRegressor, self).__init__(
model_fn=_model_fn,