def boosted_trees_make_stats_summary(node_ids, gradients, hessians, bucketized_features_list, max_splits, num_buckets, name=None):
    'Makes the summary of accumulated stats for the batch.\n\n  The summary stats contains gradients and hessians accumulated into the corresponding node and bucket for each example.\n\n  Args:\n    node_ids: A `Tensor` of type `int32`.\n      int32 Rank 1 Tensor containing node ids, which each example falls into for the requested layer.\n    gradients: A `Tensor` of type `float32`.\n      float32; Rank 2 Tensor (shape=[#examples, 1]) for gradients.\n    hessians: A `Tensor` of type `float32`.\n      float32; Rank 2 Tensor (shape=[#examples, 1]) for hessians.\n    bucketized_features_list: A list of at least 1 `Tensor` objects with type `int32`.\n      int32 list of Rank 1 Tensors, each containing the bucketized feature (for each feature column).\n    max_splits: An `int` that is `>= 1`.\n      int; the maximum number of splits possible in the whole tree.\n    num_buckets: An `int` that is `>= 1`.\n      int; equals to the maximum possible value of bucketized feature.\n    name: A name for the operation (optional).\n\n  Returns:\n    A `Tensor` of type `float32`.\n  '
    _ctx = _context._context
    if ((_ctx is None) or (not _ctx._eager_context.is_eager)):
        if (not isinstance(bucketized_features_list, (list, tuple))):
            raise TypeError(("Expected list for 'bucketized_features_list' argument to 'boosted_trees_make_stats_summary' Op, not %r." % bucketized_features_list))
        _attr_num_features = len(bucketized_features_list)
        max_splits = _execute.make_int(max_splits, 'max_splits')
        num_buckets = _execute.make_int(num_buckets, 'num_buckets')
        (_, _, _op) = _op_def_lib._apply_op_helper('BoostedTreesMakeStatsSummary', node_ids=node_ids, gradients=gradients, hessians=hessians, bucketized_features_list=bucketized_features_list, max_splits=max_splits, num_buckets=num_buckets, name=name)
        _result = _op.outputs[:]
        _inputs_flat = _op.inputs
        _attrs = ('max_splits', _op.get_attr('max_splits'), 'num_buckets', _op.get_attr('num_buckets'), 'num_features', _op.get_attr('num_features'))
        _execute.record_gradient('BoostedTreesMakeStatsSummary', _inputs_flat, _attrs, _result, name)
        (_result,) = _result
        return _result
    else:
        try:
            _result = _pywrap_tensorflow.TFE_Py_FastPathExecute(_ctx._context_handle, _ctx._eager_context.device_name, 'BoostedTreesMakeStatsSummary', name, _ctx._post_execution_callbacks, node_ids, gradients, hessians, bucketized_features_list, 'max_splits', max_splits, 'num_buckets', num_buckets)
            return _result
        except _core._FallbackException:
            return boosted_trees_make_stats_summary_eager_fallback(node_ids, gradients, hessians, bucketized_features_list, max_splits=max_splits, num_buckets=num_buckets, name=name, ctx=_ctx)
        except _core._NotOkStatusException as e:
            if (name is not None):
                message = ((e.message + ' name: ') + name)
            else:
                message = e.message
            _six.raise_from(_core._status_to_exception(e.code, message), None)
Makes the summary of accumulated stats for the batch.

The summary stats contains gradients and hessians accumulated into the corresponding node and bucket for each example.

Args:
  node_ids: A `Tensor` of type `int32`.
    int32 Rank 1 Tensor containing node ids, which each example falls into for the requested layer.
  gradients: A `Tensor` of type `float32`.
    float32; Rank 2 Tensor (shape=[#examples, 1]) for gradients.
  hessians: A `Tensor` of type `float32`.
    float32; Rank 2 Tensor (shape=[#examples, 1]) for hessians.
  bucketized_features_list: A list of at least 1 `Tensor` objects with type `int32`.
    int32 list of Rank 1 Tensors, each containing the bucketized feature (for each feature column).
  max_splits: An `int` that is `>= 1`.
    int; the maximum number of splits possible in the whole tree.
  num_buckets: An `int` that is `>= 1`.
    int; equals to the maximum possible value of bucketized feature.
  name: A name for the operation (optional).

Returns:
  A `Tensor` of type `float32`.
def boosted_trees_make_stats_summary(node_ids, gradients, hessians, bucketized_features_list, max_splits, num_buckets, name=None):
    'Makes the summary of accumulated stats for the batch.\n\n  The summary stats contains gradients and hessians accumulated into the corresponding node and bucket for each example.\n\n  Args:\n    node_ids: A `Tensor` of type `int32`.\n      int32 Rank 1 Tensor containing node ids, which each example falls into for the requested layer.\n    gradients: A `Tensor` of type `float32`.\n      float32; Rank 2 Tensor (shape=[#examples, 1]) for gradients.\n    hessians: A `Tensor` of type `float32`.\n      float32; Rank 2 Tensor (shape=[#examples, 1]) for hessians.\n    bucketized_features_list: A list of at least 1 `Tensor` objects with type `int32`.\n      int32 list of Rank 1 Tensors, each containing the bucketized feature (for each feature column).\n    max_splits: An `int` that is `>= 1`.\n      int; the maximum number of splits possible in the whole tree.\n    num_buckets: An `int` that is `>= 1`.\n      int; equals to the maximum possible value of bucketized feature.\n    name: A name for the operation (optional).\n\n  Returns:\n    A `Tensor` of type `float32`.\n  '
    _ctx = _context._context
    if ((_ctx is None) or (not _ctx._eager_context.is_eager)):
        if (not isinstance(bucketized_features_list, (list, tuple))):
            raise TypeError(("Expected list for 'bucketized_features_list' argument to 'boosted_trees_make_stats_summary' Op, not %r." % bucketized_features_list))
        _attr_num_features = len(bucketized_features_list)
        max_splits = _execute.make_int(max_splits, 'max_splits')
        num_buckets = _execute.make_int(num_buckets, 'num_buckets')
        (_, _, _op) = _op_def_lib._apply_op_helper('BoostedTreesMakeStatsSummary', node_ids=node_ids, gradients=gradients, hessians=hessians, bucketized_features_list=bucketized_features_list, max_splits=max_splits, num_buckets=num_buckets, name=name)
        _result = _op.outputs[:]
        _inputs_flat = _op.inputs
        _attrs = ('max_splits', _op.get_attr('max_splits'), 'num_buckets', _op.get_attr('num_buckets'), 'num_features', _op.get_attr('num_features'))
        _execute.record_gradient('BoostedTreesMakeStatsSummary', _inputs_flat, _attrs, _result, name)
        (_result,) = _result
        return _result
    else:
        try:
            _result = _pywrap_tensorflow.TFE_Py_FastPathExecute(_ctx._context_handle, _ctx._eager_context.device_name, 'BoostedTreesMakeStatsSummary', name, _ctx._post_execution_callbacks, node_ids, gradients, hessians, bucketized_features_list, 'max_splits', max_splits, 'num_buckets', num_buckets)
            return _result
        except _core._FallbackException:
            return boosted_trees_make_stats_summary_eager_fallback(node_ids, gradients, hessians, bucketized_features_list, max_splits=max_splits, num_buckets=num_buckets, name=name, ctx=_ctx)
        except _core._NotOkStatusException as e:
            if (name is not None):
                message = ((e.message + ' name: ') + name)
            else:
                message = e.message
            _six.raise_from(_core._status_to_exception(e.code, message), None)