# Generated by the protocol buffer compiler.  DO NOT EDIT!
# source: tensorflow/contrib/decision_trees/proto/generic_tree_model.proto

import sys
_b=sys.version_info[0]<3 and (lambda x:x) or (lambda x:x.encode('latin1'))
from google.protobuf import descriptor as _descriptor
from google.protobuf import message as _message
from google.protobuf import reflection as _reflection
from google.protobuf import symbol_database as _symbol_database
from google.protobuf import descriptor_pb2
# @@protoc_insertion_point(imports)

_sym_db = _symbol_database.Default()


from google.protobuf import any_pb2 as google_dot_protobuf_dot_any__pb2
from google.protobuf import wrappers_pb2 as google_dot_protobuf_dot_wrappers__pb2


DESCRIPTOR = _descriptor.FileDescriptor(
  name='tensorflow/contrib/decision_trees/proto/generic_tree_model.proto',
  package='tensorflow.decision_trees',
  syntax='proto3',
  serialized_pb=_b('\n@tensorflow/contrib/decision_trees/proto/generic_tree_model.proto\x12\x19tensorflow.decision_trees\x1a\x19google/protobuf/any.proto\x1a\x1egoogle/protobuf/wrappers.proto\"\xe8\x01\n\x05Model\x12@\n\rdecision_tree\x18\x01 \x01(\x0b\x32\'.tensorflow.decision_trees.DecisionTreeH\x00\x12\x37\n\x08\x65nsemble\x18\x02 \x01(\x0b\x32#.tensorflow.decision_trees.EnsembleH\x00\x12,\n\x0c\x63ustom_model\x18\x03 \x01(\x0b\x32\x14.google.protobuf.AnyH\x00\x12-\n\x0f\x61\x64\x64itional_data\x18\x04 \x03(\x0b\x32\x14.google.protobuf.AnyB\x07\n\x05model\"\x9d\x03\n\x10ModelAndFeatures\x12K\n\x08\x66\x65\x61tures\x18\x01 \x03(\x0b\x32\x39.tensorflow.decision_trees.ModelAndFeatures.FeaturesEntry\x12/\n\x05model\x18\x02 \x01(\x0b\x32 .tensorflow.decision_trees.Model\x12-\n\x0f\x61\x64\x64itional_data\x18\x03 \x03(\x0b\x32\x14.google.protobuf.Any\x1av\n\x07\x46\x65\x61ture\x12<\n\nfeature_id\x18\x01 \x01(\x0b\x32$.tensorflow.decision_trees.FeatureIdB\x02\x18\x01\x12-\n\x0f\x61\x64\x64itional_data\x18\x02 \x03(\x0b\x32\x14.google.protobuf.Any\x1a\x64\n\rFeaturesEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\x42\n\x05value\x18\x02 \x01(\x0b\x32\x33.tensorflow.decision_trees.ModelAndFeatures.Feature:\x02\x38\x01\"\x8f\x04\n\x08\x45nsemble\x12;\n\x07members\x18\x64 \x03(\x0b\x32*.tensorflow.decision_trees.Ensemble.Member\x12O\n\x1fsummation_combination_technique\x18\x01 \x01(\x0b\x32$.tensorflow.decision_trees.SummationH\x00\x12O\n\x1f\x61veraging_combination_technique\x18\x02 \x01(\x0b\x32$.tensorflow.decision_trees.AveragingH\x00\x12<\n\x1c\x63ustom_combination_technique\x18\x03 \x01(\x0b\x32\x14.google.protobuf.AnyH\x00\x12-\n\x0f\x61\x64\x64itional_data\x18\x04 \x03(\x0b\x32\x14.google.protobuf.Any\x1a\x9d\x01\n\x06Member\x12\x32\n\x08submodel\x18\x01 \x01(\x0b\x32 .tensorflow.decision_trees.Model\x12\x30\n\x0bsubmodel_id\x18\x02 \x01(\x0b\x32\x1b.google.protobuf.Int32Value\x12-\n\x0f\x61\x64\x64itional_data\x18\x03 \x03(\x0b\x32\x14.google.protobuf.AnyB\x17\n\x15\x63ombination_technique\":\n\tSummation\x12-\n\x0f\x61\x64\x64itional_data\x18\x01 \x03(\x0b\x32\x14.google.protobuf.Any\":\n\tAveraging\x12-\n\x0f\x61\x64\x64itional_data\x18\x01 \x03(\x0b\x32\x14.google.protobuf.Any\"q\n\x0c\x44\x65\x63isionTree\x12\x32\n\x05nodes\x18\x01 \x03(\x0b\x32#.tensorflow.decision_trees.TreeNode\x12-\n\x0f\x61\x64\x64itional_data\x18\x02 \x03(\x0b\x32\x14.google.protobuf.Any\"\xf4\x02\n\x08TreeNode\x12,\n\x07node_id\x18\x01 \x01(\x0b\x32\x1b.google.protobuf.Int32Value\x12*\n\x05\x64\x65pth\x18\x02 \x01(\x0b\x32\x1b.google.protobuf.Int32Value\x12\x31\n\x0csubtree_size\x18\x03 \x01(\x0b\x32\x1b.google.protobuf.Int32Value\x12<\n\x0b\x62inary_node\x18\x04 \x01(\x0b\x32%.tensorflow.decision_trees.BinaryNodeH\x00\x12/\n\x04leaf\x18\x05 \x01(\x0b\x32\x1f.tensorflow.decision_trees.LeafH\x00\x12\x30\n\x10\x63ustom_node_type\x18\x06 \x01(\x0b\x32\x14.google.protobuf.AnyH\x00\x12-\n\x0f\x61\x64\x64itional_data\x18\x07 \x03(\x0b\x32\x14.google.protobuf.AnyB\x0b\n\tnode_type\"\xff\x02\n\nBinaryNode\x12\x32\n\rleft_child_id\x18\x01 \x01(\x0b\x32\x1b.google.protobuf.Int32Value\x12\x33\n\x0eright_child_id\x18\x02 \x01(\x0b\x32\x1b.google.protobuf.Int32Value\x12J\n\x11\x64\x65\x66\x61ult_direction\x18\x03 \x01(\x0e\x32/.tensorflow.decision_trees.BinaryNode.Direction\x12O\n\x1ainequality_left_child_test\x18\x04 \x01(\x0b\x32).tensorflow.decision_trees.InequalityTestH\x00\x12\x36\n\x16\x63ustom_left_child_test\x18\x05 \x01(\x0b\x32\x14.google.protobuf.AnyH\x00\" \n\tDirection\x12\x08\n\x04LEFT\x10\x00\x12\t\n\x05RIGHT\x10\x01\x42\x11\n\x0fleft_child_test\"\xb4\x01\n\x0cSparseVector\x12N\n\x0csparse_value\x18\x01 \x03(\x0b\x32\x38.tensorflow.decision_trees.SparseVector.SparseValueEntry\x1aT\n\x10SparseValueEntry\x12\x0b\n\x03key\x18\x01 \x01(\x03\x12/\n\x05value\x18\x02 \x01(\x0b\x32 .tensorflow.decision_trees.Value:\x02\x38\x01\"9\n\x06Vector\x12/\n\x05value\x18\x01 \x03(\x0b\x32 .tensorflow.decision_trees.Value\"\xb4\x01\n\x04Leaf\x12\x33\n\x06vector\x18\x01 \x01(\x0b\x32!.tensorflow.decision_trees.VectorH\x00\x12@\n\rsparse_vector\x18\x02 \x01(\x0b\x32\'.tensorflow.decision_trees.SparseVectorH\x00\x12-\n\x0f\x61\x64\x64itional_data\x18\x03 \x03(\x0b\x32\x14.google.protobuf.AnyB\x06\n\x04leaf\"d\n\tFeatureId\x12(\n\x02id\x18\x01 \x01(\x0b\x32\x1c.google.protobuf.StringValue\x12-\n\x0f\x61\x64\x64itional_data\x18\x02 \x03(\x0b\x32\x14.google.protobuf.Any\"Z\n\x0fObliqueFeatures\x12\x36\n\x08\x66\x65\x61tures\x18\x01 \x03(\x0b\x32$.tensorflow.decision_trees.FeatureId\x12\x0f\n\x07weights\x18\x02 \x03(\x02\"\xde\x02\n\x0eInequalityTest\x12:\n\nfeature_id\x18\x01 \x01(\x0b\x32$.tensorflow.decision_trees.FeatureIdH\x00\x12=\n\x07oblique\x18\x04 \x01(\x0b\x32*.tensorflow.decision_trees.ObliqueFeaturesH\x00\x12<\n\x04type\x18\x02 \x01(\x0e\x32..tensorflow.decision_trees.InequalityTest.Type\x12\x33\n\tthreshold\x18\x03 \x01(\x0b\x32 .tensorflow.decision_trees.Value\"P\n\x04Type\x12\x11\n\rLESS_OR_EQUAL\x10\x00\x12\r\n\tLESS_THAN\x10\x01\x12\x14\n\x10GREATER_OR_EQUAL\x10\x02\x12\x10\n\x0cGREATER_THAN\x10\x03\x42\x0c\n\nFeatureSum\"\x9b\x01\n\x05Value\x12\x15\n\x0b\x66loat_value\x18\x01 \x01(\x02H\x00\x12\x16\n\x0c\x64ouble_value\x18\x02 \x01(\x01H\x00\x12\x15\n\x0bint32_value\x18\x03 \x01(\x05H\x00\x12\x15\n\x0bint64_value\x18\x04 \x01(\x03H\x00\x12,\n\x0c\x63ustom_value\x18\x05 \x01(\x0b\x32\x14.google.protobuf.AnyH\x00\x42\x07\n\x05valueB\x03\xf8\x01\x01\x62\x06proto3')
  ,
  dependencies=[google_dot_protobuf_dot_any__pb2.DESCRIPTOR,google_dot_protobuf_dot_wrappers__pb2.DESCRIPTOR,])



_BINARYNODE_DIRECTION = _descriptor.EnumDescriptor(
  name='Direction',
  full_name='tensorflow.decision_trees.BinaryNode.Direction',
  filename=None,
  file=DESCRIPTOR,
  values=[
    _descriptor.EnumValueDescriptor(
      name='LEFT', index=0, number=0,
      options=None,
      type=None),
    _descriptor.EnumValueDescriptor(
      name='RIGHT', index=1, number=1,
      options=None,
      type=None),
  ],
  containing_type=None,
  options=None,
  serialized_start=2278,
  serialized_end=2310,
)
_sym_db.RegisterEnumDescriptor(_BINARYNODE_DIRECTION)

_INEQUALITYTEST_TYPE = _descriptor.EnumDescriptor(
  name='Type',
  full_name='tensorflow.decision_trees.InequalityTest.Type',
  filename=None,
  file=DESCRIPTOR,
  values=[
    _descriptor.EnumValueDescriptor(
      name='LESS_OR_EQUAL', index=0, number=0,
      options=None,
      type=None),
    _descriptor.EnumValueDescriptor(
      name='LESS_THAN', index=1, number=1,
      options=None,
      type=None),
    _descriptor.EnumValueDescriptor(
      name='GREATER_OR_EQUAL', index=2, number=2,
      options=None,
      type=None),
    _descriptor.EnumValueDescriptor(
      name='GREATER_THAN', index=3, number=3,
      options=None,
      type=None),
  ],
  containing_type=None,
  options=None,
  serialized_start=3207,
  serialized_end=3287,
)
_sym_db.RegisterEnumDescriptor(_INEQUALITYTEST_TYPE)


_MODEL = _descriptor.Descriptor(
  name='Model',
  full_name='tensorflow.decision_trees.Model',
  filename=None,
  file=DESCRIPTOR,
  containing_type=None,
  fields=[
    _descriptor.FieldDescriptor(
      name='decision_tree', full_name='tensorflow.decision_trees.Model.decision_tree', index=0,
      number=1, type=11, cpp_type=10, label=1,
      has_default_value=False, default_value=None,
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=None),
    _descriptor.FieldDescriptor(
      name='ensemble', full_name='tensorflow.decision_trees.Model.ensemble', index=1,
      number=2, type=11, cpp_type=10, label=1,
      has_default_value=False, default_value=None,
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=None),
    _descriptor.FieldDescriptor(
      name='custom_model', full_name='tensorflow.decision_trees.Model.custom_model', index=2,
      number=3, type=11, cpp_type=10, label=1,
      has_default_value=False, default_value=None,
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=None),
    _descriptor.FieldDescriptor(
      name='additional_data', full_name='tensorflow.decision_trees.Model.additional_data', index=3,
      number=4, type=11, cpp_type=10, label=3,
      has_default_value=False, default_value=[],
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=None),
  ],
  extensions=[
  ],
  nested_types=[],
  enum_types=[
  ],
  options=None,
  is_extendable=False,
  syntax='proto3',
  extension_ranges=[],
  oneofs=[
    _descriptor.OneofDescriptor(
      name='model', full_name='tensorflow.decision_trees.Model.model',
      index=0, containing_type=None, fields=[]),
  ],
  serialized_start=155,
  serialized_end=387,
)


_MODELANDFEATURES_FEATURE = _descriptor.Descriptor(
  name='Feature',
  full_name='tensorflow.decision_trees.ModelAndFeatures.Feature',
  filename=None,
  file=DESCRIPTOR,
  containing_type=None,
  fields=[
    _descriptor.FieldDescriptor(
      name='feature_id', full_name='tensorflow.decision_trees.ModelAndFeatures.Feature.feature_id', index=0,
      number=1, type=11, cpp_type=10, label=1,
      has_default_value=False, default_value=None,
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=_descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\030\001'))),
    _descriptor.FieldDescriptor(
      name='additional_data', full_name='tensorflow.decision_trees.ModelAndFeatures.Feature.additional_data', index=1,
      number=2, type=11, cpp_type=10, label=3,
      has_default_value=False, default_value=[],
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=None),
  ],
  extensions=[
  ],
  nested_types=[],
  enum_types=[
  ],
  options=None,
  is_extendable=False,
  syntax='proto3',
  extension_ranges=[],
  oneofs=[
  ],
  serialized_start=583,
  serialized_end=701,
)

_MODELANDFEATURES_FEATURESENTRY = _descriptor.Descriptor(
  name='FeaturesEntry',
  full_name='tensorflow.decision_trees.ModelAndFeatures.FeaturesEntry',
  filename=None,
  file=DESCRIPTOR,
  containing_type=None,
  fields=[
    _descriptor.FieldDescriptor(
      name='key', full_name='tensorflow.decision_trees.ModelAndFeatures.FeaturesEntry.key', index=0,
      number=1, type=9, cpp_type=9, label=1,
      has_default_value=False, default_value=_b("").decode('utf-8'),
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=None),
    _descriptor.FieldDescriptor(
      name='value', full_name='tensorflow.decision_trees.ModelAndFeatures.FeaturesEntry.value', index=1,
      number=2, type=11, cpp_type=10, label=1,
      has_default_value=False, default_value=None,
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=None),
  ],
  extensions=[
  ],
  nested_types=[],
  enum_types=[
  ],
  options=_descriptor._ParseOptions(descriptor_pb2.MessageOptions(), _b('8\001')),
  is_extendable=False,
  syntax='proto3',
  extension_ranges=[],
  oneofs=[
  ],
  serialized_start=703,
  serialized_end=803,
)

_MODELANDFEATURES = _descriptor.Descriptor(
  name='ModelAndFeatures',
  full_name='tensorflow.decision_trees.ModelAndFeatures',
  filename=None,
  file=DESCRIPTOR,
  containing_type=None,
  fields=[
    _descriptor.FieldDescriptor(
      name='features', full_name='tensorflow.decision_trees.ModelAndFeatures.features', index=0,
      number=1, type=11, cpp_type=10, label=3,
      has_default_value=False, default_value=[],
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=None),
    _descriptor.FieldDescriptor(
      name='model', full_name='tensorflow.decision_trees.ModelAndFeatures.model', index=1,
      number=2, type=11, cpp_type=10, label=1,
      has_default_value=False, default_value=None,
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=None),
    _descriptor.FieldDescriptor(
      name='additional_data', full_name='tensorflow.decision_trees.ModelAndFeatures.additional_data', index=2,
      number=3, type=11, cpp_type=10, label=3,
      has_default_value=False, default_value=[],
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=None),
  ],
  extensions=[
  ],
  nested_types=[_MODELANDFEATURES_FEATURE, _MODELANDFEATURES_FEATURESENTRY, ],
  enum_types=[
  ],
  options=None,
  is_extendable=False,
  syntax='proto3',
  extension_ranges=[],
  oneofs=[
  ],
  serialized_start=390,
  serialized_end=803,
)


_ENSEMBLE_MEMBER = _descriptor.Descriptor(
  name='Member',
  full_name='tensorflow.decision_trees.Ensemble.Member',
  filename=None,
  file=DESCRIPTOR,
  containing_type=None,
  fields=[
    _descriptor.FieldDescriptor(
      name='submodel', full_name='tensorflow.decision_trees.Ensemble.Member.submodel', index=0,
      number=1, type=11, cpp_type=10, label=1,
      has_default_value=False, default_value=None,
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=None),
    _descriptor.FieldDescriptor(
      name='submodel_id', full_name='tensorflow.decision_trees.Ensemble.Member.submodel_id', index=1,
      number=2, type=11, cpp_type=10, label=1,
      has_default_value=False, default_value=None,
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=None),
    _descriptor.FieldDescriptor(
      name='additional_data', full_name='tensorflow.decision_trees.Ensemble.Member.additional_data', index=2,
      number=3, type=11, cpp_type=10, label=3,
      has_default_value=False, default_value=[],
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=None),
  ],
  extensions=[
  ],
  nested_types=[],
  enum_types=[
  ],
  options=None,
  is_extendable=False,
  syntax='proto3',
  extension_ranges=[],
  oneofs=[
  ],
  serialized_start=1151,
  serialized_end=1308,
)

_ENSEMBLE = _descriptor.Descriptor(
  name='Ensemble',
  full_name='tensorflow.decision_trees.Ensemble',
  filename=None,
  file=DESCRIPTOR,
  containing_type=None,
  fields=[
    _descriptor.FieldDescriptor(
      name='members', full_name='tensorflow.decision_trees.Ensemble.members', index=0,
      number=100, type=11, cpp_type=10, label=3,
      has_default_value=False, default_value=[],
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=None),
    _descriptor.FieldDescriptor(
      name='summation_combination_technique', full_name='tensorflow.decision_trees.Ensemble.summation_combination_technique', index=1,
      number=1, type=11, cpp_type=10, label=1,
      has_default_value=False, default_value=None,
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=None),
    _descriptor.FieldDescriptor(
      name='averaging_combination_technique', full_name='tensorflow.decision_trees.Ensemble.averaging_combination_technique', index=2,
      number=2, type=11, cpp_type=10, label=1,
      has_default_value=False, default_value=None,
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=None),
    _descriptor.FieldDescriptor(
      name='custom_combination_technique', full_name='tensorflow.decision_trees.Ensemble.custom_combination_technique', index=3,
      number=3, type=11, cpp_type=10, label=1,
      has_default_value=False, default_value=None,
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=None),
    _descriptor.FieldDescriptor(
      name='additional_data', full_name='tensorflow.decision_trees.Ensemble.additional_data', index=4,
      number=4, type=11, cpp_type=10, label=3,
      has_default_value=False, default_value=[],
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=None),
  ],
  extensions=[
  ],
  nested_types=[_ENSEMBLE_MEMBER, ],
  enum_types=[
  ],
  options=None,
  is_extendable=False,
  syntax='proto3',
  extension_ranges=[],
  oneofs=[
    _descriptor.OneofDescriptor(
      name='combination_technique', full_name='tensorflow.decision_trees.Ensemble.combination_technique',
      index=0, containing_type=None, fields=[]),
  ],
  serialized_start=806,
  serialized_end=1333,
)


_SUMMATION = _descriptor.Descriptor(
  name='Summation',
  full_name='tensorflow.decision_trees.Summation',
  filename=None,
  file=DESCRIPTOR,
  containing_type=None,
  fields=[
    _descriptor.FieldDescriptor(
      name='additional_data', full_name='tensorflow.decision_trees.Summation.additional_data', index=0,
      number=1, type=11, cpp_type=10, label=3,
      has_default_value=False, default_value=[],
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=None),
  ],
  extensions=[
  ],
  nested_types=[],
  enum_types=[
  ],
  options=None,
  is_extendable=False,
  syntax='proto3',
  extension_ranges=[],
  oneofs=[
  ],
  serialized_start=1335,
  serialized_end=1393,
)


_AVERAGING = _descriptor.Descriptor(
  name='Averaging',
  full_name='tensorflow.decision_trees.Averaging',
  filename=None,
  file=DESCRIPTOR,
  containing_type=None,
  fields=[
    _descriptor.FieldDescriptor(
      name='additional_data', full_name='tensorflow.decision_trees.Averaging.additional_data', index=0,
      number=1, type=11, cpp_type=10, label=3,
      has_default_value=False, default_value=[],
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=None),
  ],
  extensions=[
  ],
  nested_types=[],
  enum_types=[
  ],
  options=None,
  is_extendable=False,
  syntax='proto3',
  extension_ranges=[],
  oneofs=[
  ],
  serialized_start=1395,
  serialized_end=1453,
)


_DECISIONTREE = _descriptor.Descriptor(
  name='DecisionTree',
  full_name='tensorflow.decision_trees.DecisionTree',
  filename=None,
  file=DESCRIPTOR,
  containing_type=None,
  fields=[
    _descriptor.FieldDescriptor(
      name='nodes', full_name='tensorflow.decision_trees.DecisionTree.nodes', index=0,
      number=1, type=11, cpp_type=10, label=3,
      has_default_value=False, default_value=[],
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=None),
    _descriptor.FieldDescriptor(
      name='additional_data', full_name='tensorflow.decision_trees.DecisionTree.additional_data', index=1,
      number=2, type=11, cpp_type=10, label=3,
      has_default_value=False, default_value=[],
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=None),
  ],
  extensions=[
  ],
  nested_types=[],
  enum_types=[
  ],
  options=None,
  is_extendable=False,
  syntax='proto3',
  extension_ranges=[],
  oneofs=[
  ],
  serialized_start=1455,
  serialized_end=1568,
)


_TREENODE = _descriptor.Descriptor(
  name='TreeNode',
  full_name='tensorflow.decision_trees.TreeNode',
  filename=None,
  file=DESCRIPTOR,
  containing_type=None,
  fields=[
    _descriptor.FieldDescriptor(
      name='node_id', full_name='tensorflow.decision_trees.TreeNode.node_id', index=0,
      number=1, type=11, cpp_type=10, label=1,
      has_default_value=False, default_value=None,
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=None),
    _descriptor.FieldDescriptor(
      name='depth', full_name='tensorflow.decision_trees.TreeNode.depth', index=1,
      number=2, type=11, cpp_type=10, label=1,
      has_default_value=False, default_value=None,
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=None),
    _descriptor.FieldDescriptor(
      name='subtree_size', full_name='tensorflow.decision_trees.TreeNode.subtree_size', index=2,
      number=3, type=11, cpp_type=10, label=1,
      has_default_value=False, default_value=None,
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=None),
    _descriptor.FieldDescriptor(
      name='binary_node', full_name='tensorflow.decision_trees.TreeNode.binary_node', index=3,
      number=4, type=11, cpp_type=10, label=1,
      has_default_value=False, default_value=None,
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=None),
    _descriptor.FieldDescriptor(
      name='leaf', full_name='tensorflow.decision_trees.TreeNode.leaf', index=4,
      number=5, type=11, cpp_type=10, label=1,
      has_default_value=False, default_value=None,
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=None),
    _descriptor.FieldDescriptor(
      name='custom_node_type', full_name='tensorflow.decision_trees.TreeNode.custom_node_type', index=5,
      number=6, type=11, cpp_type=10, label=1,
      has_default_value=False, default_value=None,
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=None),
    _descriptor.FieldDescriptor(
      name='additional_data', full_name='tensorflow.decision_trees.TreeNode.additional_data', index=6,
      number=7, type=11, cpp_type=10, label=3,
      has_default_value=False, default_value=[],
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=None),
  ],
  extensions=[
  ],
  nested_types=[],
  enum_types=[
  ],
  options=None,
  is_extendable=False,
  syntax='proto3',
  extension_ranges=[],
  oneofs=[
    _descriptor.OneofDescriptor(
      name='node_type', full_name='tensorflow.decision_trees.TreeNode.node_type',
      index=0, containing_type=None, fields=[]),
  ],
  serialized_start=1571,
  serialized_end=1943,
)


_BINARYNODE = _descriptor.Descriptor(
  name='BinaryNode',
  full_name='tensorflow.decision_trees.BinaryNode',
  filename=None,
  file=DESCRIPTOR,
  containing_type=None,
  fields=[
    _descriptor.FieldDescriptor(
      name='left_child_id', full_name='tensorflow.decision_trees.BinaryNode.left_child_id', index=0,
      number=1, type=11, cpp_type=10, label=1,
      has_default_value=False, default_value=None,
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=None),
    _descriptor.FieldDescriptor(
      name='right_child_id', full_name='tensorflow.decision_trees.BinaryNode.right_child_id', index=1,
      number=2, type=11, cpp_type=10, label=1,
      has_default_value=False, default_value=None,
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=None),
    _descriptor.FieldDescriptor(
      name='default_direction', full_name='tensorflow.decision_trees.BinaryNode.default_direction', index=2,
      number=3, type=14, cpp_type=8, label=1,
      has_default_value=False, default_value=0,
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=None),
    _descriptor.FieldDescriptor(
      name='inequality_left_child_test', full_name='tensorflow.decision_trees.BinaryNode.inequality_left_child_test', index=3,
      number=4, type=11, cpp_type=10, label=1,
      has_default_value=False, default_value=None,
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=None),
    _descriptor.FieldDescriptor(
      name='custom_left_child_test', full_name='tensorflow.decision_trees.BinaryNode.custom_left_child_test', index=4,
      number=5, type=11, cpp_type=10, label=1,
      has_default_value=False, default_value=None,
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=None),
  ],
  extensions=[
  ],
  nested_types=[],
  enum_types=[
    _BINARYNODE_DIRECTION,
  ],
  options=None,
  is_extendable=False,
  syntax='proto3',
  extension_ranges=[],
  oneofs=[
    _descriptor.OneofDescriptor(
      name='left_child_test', full_name='tensorflow.decision_trees.BinaryNode.left_child_test',
      index=0, containing_type=None, fields=[]),
  ],
  serialized_start=1946,
  serialized_end=2329,
)


_SPARSEVECTOR_SPARSEVALUEENTRY = _descriptor.Descriptor(
  name='SparseValueEntry',
  full_name='tensorflow.decision_trees.SparseVector.SparseValueEntry',
  filename=None,
  file=DESCRIPTOR,
  containing_type=None,
  fields=[
    _descriptor.FieldDescriptor(
      name='key', full_name='tensorflow.decision_trees.SparseVector.SparseValueEntry.key', index=0,
      number=1, type=3, cpp_type=2, label=1,
      has_default_value=False, default_value=0,
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=None),
    _descriptor.FieldDescriptor(
      name='value', full_name='tensorflow.decision_trees.SparseVector.SparseValueEntry.value', index=1,
      number=2, type=11, cpp_type=10, label=1,
      has_default_value=False, default_value=None,
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=None),
  ],
  extensions=[
  ],
  nested_types=[],
  enum_types=[
  ],
  options=_descriptor._ParseOptions(descriptor_pb2.MessageOptions(), _b('8\001')),
  is_extendable=False,
  syntax='proto3',
  extension_ranges=[],
  oneofs=[
  ],
  serialized_start=2428,
  serialized_end=2512,
)

_SPARSEVECTOR = _descriptor.Descriptor(
  name='SparseVector',
  full_name='tensorflow.decision_trees.SparseVector',
  filename=None,
  file=DESCRIPTOR,
  containing_type=None,
  fields=[
    _descriptor.FieldDescriptor(
      name='sparse_value', full_name='tensorflow.decision_trees.SparseVector.sparse_value', index=0,
      number=1, type=11, cpp_type=10, label=3,
      has_default_value=False, default_value=[],
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=None),
  ],
  extensions=[
  ],
  nested_types=[_SPARSEVECTOR_SPARSEVALUEENTRY, ],
  enum_types=[
  ],
  options=None,
  is_extendable=False,
  syntax='proto3',
  extension_ranges=[],
  oneofs=[
  ],
  serialized_start=2332,
  serialized_end=2512,
)


_VECTOR = _descriptor.Descriptor(
  name='Vector',
  full_name='tensorflow.decision_trees.Vector',
  filename=None,
  file=DESCRIPTOR,
  containing_type=None,
  fields=[
    _descriptor.FieldDescriptor(
      name='value', full_name='tensorflow.decision_trees.Vector.value', index=0,
      number=1, type=11, cpp_type=10, label=3,
      has_default_value=False, default_value=[],
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=None),
  ],
  extensions=[
  ],
  nested_types=[],
  enum_types=[
  ],
  options=None,
  is_extendable=False,
  syntax='proto3',
  extension_ranges=[],
  oneofs=[
  ],
  serialized_start=2514,
  serialized_end=2571,
)


_LEAF = _descriptor.Descriptor(
  name='Leaf',
  full_name='tensorflow.decision_trees.Leaf',
  filename=None,
  file=DESCRIPTOR,
  containing_type=None,
  fields=[
    _descriptor.FieldDescriptor(
      name='vector', full_name='tensorflow.decision_trees.Leaf.vector', index=0,
      number=1, type=11, cpp_type=10, label=1,
      has_default_value=False, default_value=None,
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=None),
    _descriptor.FieldDescriptor(
      name='sparse_vector', full_name='tensorflow.decision_trees.Leaf.sparse_vector', index=1,
      number=2, type=11, cpp_type=10, label=1,
      has_default_value=False, default_value=None,
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=None),
    _descriptor.FieldDescriptor(
      name='additional_data', full_name='tensorflow.decision_trees.Leaf.additional_data', index=2,
      number=3, type=11, cpp_type=10, label=3,
      has_default_value=False, default_value=[],
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=None),
  ],
  extensions=[
  ],
  nested_types=[],
  enum_types=[
  ],
  options=None,
  is_extendable=False,
  syntax='proto3',
  extension_ranges=[],
  oneofs=[
    _descriptor.OneofDescriptor(
      name='leaf', full_name='tensorflow.decision_trees.Leaf.leaf',
      index=0, containing_type=None, fields=[]),
  ],
  serialized_start=2574,
  serialized_end=2754,
)


_FEATUREID = _descriptor.Descriptor(
  name='FeatureId',
  full_name='tensorflow.decision_trees.FeatureId',
  filename=None,
  file=DESCRIPTOR,
  containing_type=None,
  fields=[
    _descriptor.FieldDescriptor(
      name='id', full_name='tensorflow.decision_trees.FeatureId.id', index=0,
      number=1, type=11, cpp_type=10, label=1,
      has_default_value=False, default_value=None,
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=None),
    _descriptor.FieldDescriptor(
      name='additional_data', full_name='tensorflow.decision_trees.FeatureId.additional_data', index=1,
      number=2, type=11, cpp_type=10, label=3,
      has_default_value=False, default_value=[],
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=None),
  ],
  extensions=[
  ],
  nested_types=[],
  enum_types=[
  ],
  options=None,
  is_extendable=False,
  syntax='proto3',
  extension_ranges=[],
  oneofs=[
  ],
  serialized_start=2756,
  serialized_end=2856,
)


_OBLIQUEFEATURES = _descriptor.Descriptor(
  name='ObliqueFeatures',
  full_name='tensorflow.decision_trees.ObliqueFeatures',
  filename=None,
  file=DESCRIPTOR,
  containing_type=None,
  fields=[
    _descriptor.FieldDescriptor(
      name='features', full_name='tensorflow.decision_trees.ObliqueFeatures.features', index=0,
      number=1, type=11, cpp_type=10, label=3,
      has_default_value=False, default_value=[],
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=None),
    _descriptor.FieldDescriptor(
      name='weights', full_name='tensorflow.decision_trees.ObliqueFeatures.weights', index=1,
      number=2, type=2, cpp_type=6, label=3,
      has_default_value=False, default_value=[],
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=None),
  ],
  extensions=[
  ],
  nested_types=[],
  enum_types=[
  ],
  options=None,
  is_extendable=False,
  syntax='proto3',
  extension_ranges=[],
  oneofs=[
  ],
  serialized_start=2858,
  serialized_end=2948,
)


_INEQUALITYTEST = _descriptor.Descriptor(
  name='InequalityTest',
  full_name='tensorflow.decision_trees.InequalityTest',
  filename=None,
  file=DESCRIPTOR,
  containing_type=None,
  fields=[
    _descriptor.FieldDescriptor(
      name='feature_id', full_name='tensorflow.decision_trees.InequalityTest.feature_id', index=0,
      number=1, type=11, cpp_type=10, label=1,
      has_default_value=False, default_value=None,
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=None),
    _descriptor.FieldDescriptor(
      name='oblique', full_name='tensorflow.decision_trees.InequalityTest.oblique', index=1,
      number=4, type=11, cpp_type=10, label=1,
      has_default_value=False, default_value=None,
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=None),
    _descriptor.FieldDescriptor(
      name='type', full_name='tensorflow.decision_trees.InequalityTest.type', index=2,
      number=2, type=14, cpp_type=8, label=1,
      has_default_value=False, default_value=0,
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=None),
    _descriptor.FieldDescriptor(
      name='threshold', full_name='tensorflow.decision_trees.InequalityTest.threshold', index=3,
      number=3, type=11, cpp_type=10, label=1,
      has_default_value=False, default_value=None,
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=None),
  ],
  extensions=[
  ],
  nested_types=[],
  enum_types=[
    _INEQUALITYTEST_TYPE,
  ],
  options=None,
  is_extendable=False,
  syntax='proto3',
  extension_ranges=[],
  oneofs=[
    _descriptor.OneofDescriptor(
      name='FeatureSum', full_name='tensorflow.decision_trees.InequalityTest.FeatureSum',
      index=0, containing_type=None, fields=[]),
  ],
  serialized_start=2951,
  serialized_end=3301,
)


_VALUE = _descriptor.Descriptor(
  name='Value',
  full_name='tensorflow.decision_trees.Value',
  filename=None,
  file=DESCRIPTOR,
  containing_type=None,
  fields=[
    _descriptor.FieldDescriptor(
      name='float_value', full_name='tensorflow.decision_trees.Value.float_value', index=0,
      number=1, type=2, cpp_type=6, label=1,
      has_default_value=False, default_value=float(0),
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=None),
    _descriptor.FieldDescriptor(
      name='double_value', full_name='tensorflow.decision_trees.Value.double_value', index=1,
      number=2, type=1, cpp_type=5, label=1,
      has_default_value=False, default_value=float(0),
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=None),
    _descriptor.FieldDescriptor(
      name='int32_value', full_name='tensorflow.decision_trees.Value.int32_value', index=2,
      number=3, type=5, cpp_type=1, label=1,
      has_default_value=False, default_value=0,
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=None),
    _descriptor.FieldDescriptor(
      name='int64_value', full_name='tensorflow.decision_trees.Value.int64_value', index=3,
      number=4, type=3, cpp_type=2, label=1,
      has_default_value=False, default_value=0,
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=None),
    _descriptor.FieldDescriptor(
      name='custom_value', full_name='tensorflow.decision_trees.Value.custom_value', index=4,
      number=5, type=11, cpp_type=10, label=1,
      has_default_value=False, default_value=None,
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=None),
  ],
  extensions=[
  ],
  nested_types=[],
  enum_types=[
  ],
  options=None,
  is_extendable=False,
  syntax='proto3',
  extension_ranges=[],
  oneofs=[
    _descriptor.OneofDescriptor(
      name='value', full_name='tensorflow.decision_trees.Value.value',
      index=0, containing_type=None, fields=[]),
  ],
  serialized_start=3304,
  serialized_end=3459,
)

_MODEL.fields_by_name['decision_tree'].message_type = _DECISIONTREE
_MODEL.fields_by_name['ensemble'].message_type = _ENSEMBLE
_MODEL.fields_by_name['custom_model'].message_type = google_dot_protobuf_dot_any__pb2._ANY
_MODEL.fields_by_name['additional_data'].message_type = google_dot_protobuf_dot_any__pb2._ANY
_MODEL.oneofs_by_name['model'].fields.append(
  _MODEL.fields_by_name['decision_tree'])
_MODEL.fields_by_name['decision_tree'].containing_oneof = _MODEL.oneofs_by_name['model']
_MODEL.oneofs_by_name['model'].fields.append(
  _MODEL.fields_by_name['ensemble'])
_MODEL.fields_by_name['ensemble'].containing_oneof = _MODEL.oneofs_by_name['model']
_MODEL.oneofs_by_name['model'].fields.append(
  _MODEL.fields_by_name['custom_model'])
_MODEL.fields_by_name['custom_model'].containing_oneof = _MODEL.oneofs_by_name['model']
_MODELANDFEATURES_FEATURE.fields_by_name['feature_id'].message_type = _FEATUREID
_MODELANDFEATURES_FEATURE.fields_by_name['additional_data'].message_type = google_dot_protobuf_dot_any__pb2._ANY
_MODELANDFEATURES_FEATURE.containing_type = _MODELANDFEATURES
_MODELANDFEATURES_FEATURESENTRY.fields_by_name['value'].message_type = _MODELANDFEATURES_FEATURE
_MODELANDFEATURES_FEATURESENTRY.containing_type = _MODELANDFEATURES
_MODELANDFEATURES.fields_by_name['features'].message_type = _MODELANDFEATURES_FEATURESENTRY
_MODELANDFEATURES.fields_by_name['model'].message_type = _MODEL
_MODELANDFEATURES.fields_by_name['additional_data'].message_type = google_dot_protobuf_dot_any__pb2._ANY
_ENSEMBLE_MEMBER.fields_by_name['submodel'].message_type = _MODEL
_ENSEMBLE_MEMBER.fields_by_name['submodel_id'].message_type = google_dot_protobuf_dot_wrappers__pb2._INT32VALUE
_ENSEMBLE_MEMBER.fields_by_name['additional_data'].message_type = google_dot_protobuf_dot_any__pb2._ANY
_ENSEMBLE_MEMBER.containing_type = _ENSEMBLE
_ENSEMBLE.fields_by_name['members'].message_type = _ENSEMBLE_MEMBER
_ENSEMBLE.fields_by_name['summation_combination_technique'].message_type = _SUMMATION
_ENSEMBLE.fields_by_name['averaging_combination_technique'].message_type = _AVERAGING
_ENSEMBLE.fields_by_name['custom_combination_technique'].message_type = google_dot_protobuf_dot_any__pb2._ANY
_ENSEMBLE.fields_by_name['additional_data'].message_type = google_dot_protobuf_dot_any__pb2._ANY
_ENSEMBLE.oneofs_by_name['combination_technique'].fields.append(
  _ENSEMBLE.fields_by_name['summation_combination_technique'])
_ENSEMBLE.fields_by_name['summation_combination_technique'].containing_oneof = _ENSEMBLE.oneofs_by_name['combination_technique']
_ENSEMBLE.oneofs_by_name['combination_technique'].fields.append(
  _ENSEMBLE.fields_by_name['averaging_combination_technique'])
_ENSEMBLE.fields_by_name['averaging_combination_technique'].containing_oneof = _ENSEMBLE.oneofs_by_name['combination_technique']
_ENSEMBLE.oneofs_by_name['combination_technique'].fields.append(
  _ENSEMBLE.fields_by_name['custom_combination_technique'])
_ENSEMBLE.fields_by_name['custom_combination_technique'].containing_oneof = _ENSEMBLE.oneofs_by_name['combination_technique']
_SUMMATION.fields_by_name['additional_data'].message_type = google_dot_protobuf_dot_any__pb2._ANY
_AVERAGING.fields_by_name['additional_data'].message_type = google_dot_protobuf_dot_any__pb2._ANY
_DECISIONTREE.fields_by_name['nodes'].message_type = _TREENODE
_DECISIONTREE.fields_by_name['additional_data'].message_type = google_dot_protobuf_dot_any__pb2._ANY
_TREENODE.fields_by_name['node_id'].message_type = google_dot_protobuf_dot_wrappers__pb2._INT32VALUE
_TREENODE.fields_by_name['depth'].message_type = google_dot_protobuf_dot_wrappers__pb2._INT32VALUE
_TREENODE.fields_by_name['subtree_size'].message_type = google_dot_protobuf_dot_wrappers__pb2._INT32VALUE
_TREENODE.fields_by_name['binary_node'].message_type = _BINARYNODE
_TREENODE.fields_by_name['leaf'].message_type = _LEAF
_TREENODE.fields_by_name['custom_node_type'].message_type = google_dot_protobuf_dot_any__pb2._ANY
_TREENODE.fields_by_name['additional_data'].message_type = google_dot_protobuf_dot_any__pb2._ANY
_TREENODE.oneofs_by_name['node_type'].fields.append(
  _TREENODE.fields_by_name['binary_node'])
_TREENODE.fields_by_name['binary_node'].containing_oneof = _TREENODE.oneofs_by_name['node_type']
_TREENODE.oneofs_by_name['node_type'].fields.append(
  _TREENODE.fields_by_name['leaf'])
_TREENODE.fields_by_name['leaf'].containing_oneof = _TREENODE.oneofs_by_name['node_type']
_TREENODE.oneofs_by_name['node_type'].fields.append(
  _TREENODE.fields_by_name['custom_node_type'])
_TREENODE.fields_by_name['custom_node_type'].containing_oneof = _TREENODE.oneofs_by_name['node_type']
_BINARYNODE.fields_by_name['left_child_id'].message_type = google_dot_protobuf_dot_wrappers__pb2._INT32VALUE
_BINARYNODE.fields_by_name['right_child_id'].message_type = google_dot_protobuf_dot_wrappers__pb2._INT32VALUE
_BINARYNODE.fields_by_name['default_direction'].enum_type = _BINARYNODE_DIRECTION
_BINARYNODE.fields_by_name['inequality_left_child_test'].message_type = _INEQUALITYTEST
_BINARYNODE.fields_by_name['custom_left_child_test'].message_type = google_dot_protobuf_dot_any__pb2._ANY
_BINARYNODE_DIRECTION.containing_type = _BINARYNODE
_BINARYNODE.oneofs_by_name['left_child_test'].fields.append(
  _BINARYNODE.fields_by_name['inequality_left_child_test'])
_BINARYNODE.fields_by_name['inequality_left_child_test'].containing_oneof = _BINARYNODE.oneofs_by_name['left_child_test']
_BINARYNODE.oneofs_by_name['left_child_test'].fields.append(
  _BINARYNODE.fields_by_name['custom_left_child_test'])
_BINARYNODE.fields_by_name['custom_left_child_test'].containing_oneof = _BINARYNODE.oneofs_by_name['left_child_test']
_SPARSEVECTOR_SPARSEVALUEENTRY.fields_by_name['value'].message_type = _VALUE
_SPARSEVECTOR_SPARSEVALUEENTRY.containing_type = _SPARSEVECTOR
_SPARSEVECTOR.fields_by_name['sparse_value'].message_type = _SPARSEVECTOR_SPARSEVALUEENTRY
_VECTOR.fields_by_name['value'].message_type = _VALUE
_LEAF.fields_by_name['vector'].message_type = _VECTOR
_LEAF.fields_by_name['sparse_vector'].message_type = _SPARSEVECTOR
_LEAF.fields_by_name['additional_data'].message_type = google_dot_protobuf_dot_any__pb2._ANY
_LEAF.oneofs_by_name['leaf'].fields.append(
  _LEAF.fields_by_name['vector'])
_LEAF.fields_by_name['vector'].containing_oneof = _LEAF.oneofs_by_name['leaf']
_LEAF.oneofs_by_name['leaf'].fields.append(
  _LEAF.fields_by_name['sparse_vector'])
_LEAF.fields_by_name['sparse_vector'].containing_oneof = _LEAF.oneofs_by_name['leaf']
_FEATUREID.fields_by_name['id'].message_type = google_dot_protobuf_dot_wrappers__pb2._STRINGVALUE
_FEATUREID.fields_by_name['additional_data'].message_type = google_dot_protobuf_dot_any__pb2._ANY
_OBLIQUEFEATURES.fields_by_name['features'].message_type = _FEATUREID
_INEQUALITYTEST.fields_by_name['feature_id'].message_type = _FEATUREID
_INEQUALITYTEST.fields_by_name['oblique'].message_type = _OBLIQUEFEATURES
_INEQUALITYTEST.fields_by_name['type'].enum_type = _INEQUALITYTEST_TYPE
_INEQUALITYTEST.fields_by_name['threshold'].message_type = _VALUE
_INEQUALITYTEST_TYPE.containing_type = _INEQUALITYTEST
_INEQUALITYTEST.oneofs_by_name['FeatureSum'].fields.append(
  _INEQUALITYTEST.fields_by_name['feature_id'])
_INEQUALITYTEST.fields_by_name['feature_id'].containing_oneof = _INEQUALITYTEST.oneofs_by_name['FeatureSum']
_INEQUALITYTEST.oneofs_by_name['FeatureSum'].fields.append(
  _INEQUALITYTEST.fields_by_name['oblique'])
_INEQUALITYTEST.fields_by_name['oblique'].containing_oneof = _INEQUALITYTEST.oneofs_by_name['FeatureSum']
_VALUE.fields_by_name['custom_value'].message_type = google_dot_protobuf_dot_any__pb2._ANY
_VALUE.oneofs_by_name['value'].fields.append(
  _VALUE.fields_by_name['float_value'])
_VALUE.fields_by_name['float_value'].containing_oneof = _VALUE.oneofs_by_name['value']
_VALUE.oneofs_by_name['value'].fields.append(
  _VALUE.fields_by_name['double_value'])
_VALUE.fields_by_name['double_value'].containing_oneof = _VALUE.oneofs_by_name['value']
_VALUE.oneofs_by_name['value'].fields.append(
  _VALUE.fields_by_name['int32_value'])
_VALUE.fields_by_name['int32_value'].containing_oneof = _VALUE.oneofs_by_name['value']
_VALUE.oneofs_by_name['value'].fields.append(
  _VALUE.fields_by_name['int64_value'])
_VALUE.fields_by_name['int64_value'].containing_oneof = _VALUE.oneofs_by_name['value']
_VALUE.oneofs_by_name['value'].fields.append(
  _VALUE.fields_by_name['custom_value'])
_VALUE.fields_by_name['custom_value'].containing_oneof = _VALUE.oneofs_by_name['value']
DESCRIPTOR.message_types_by_name['Model'] = _MODEL
DESCRIPTOR.message_types_by_name['ModelAndFeatures'] = _MODELANDFEATURES
DESCRIPTOR.message_types_by_name['Ensemble'] = _ENSEMBLE
DESCRIPTOR.message_types_by_name['Summation'] = _SUMMATION
DESCRIPTOR.message_types_by_name['Averaging'] = _AVERAGING
DESCRIPTOR.message_types_by_name['DecisionTree'] = _DECISIONTREE
DESCRIPTOR.message_types_by_name['TreeNode'] = _TREENODE
DESCRIPTOR.message_types_by_name['BinaryNode'] = _BINARYNODE
DESCRIPTOR.message_types_by_name['SparseVector'] = _SPARSEVECTOR
DESCRIPTOR.message_types_by_name['Vector'] = _VECTOR
DESCRIPTOR.message_types_by_name['Leaf'] = _LEAF
DESCRIPTOR.message_types_by_name['FeatureId'] = _FEATUREID
DESCRIPTOR.message_types_by_name['ObliqueFeatures'] = _OBLIQUEFEATURES
DESCRIPTOR.message_types_by_name['InequalityTest'] = _INEQUALITYTEST
DESCRIPTOR.message_types_by_name['Value'] = _VALUE
_sym_db.RegisterFileDescriptor(DESCRIPTOR)

Model = _reflection.GeneratedProtocolMessageType('Model', (_message.Message,), dict(
  DESCRIPTOR = _MODEL,
  __module__ = 'tensorflow.contrib.decision_trees.proto.generic_tree_model_pb2'
  # @@protoc_insertion_point(class_scope:tensorflow.decision_trees.Model)
  ))
_sym_db.RegisterMessage(Model)

ModelAndFeatures = _reflection.GeneratedProtocolMessageType('ModelAndFeatures', (_message.Message,), dict(

  Feature = _reflection.GeneratedProtocolMessageType('Feature', (_message.Message,), dict(
    DESCRIPTOR = _MODELANDFEATURES_FEATURE,
    __module__ = 'tensorflow.contrib.decision_trees.proto.generic_tree_model_pb2'
    # @@protoc_insertion_point(class_scope:tensorflow.decision_trees.ModelAndFeatures.Feature)
    ))
  ,

  FeaturesEntry = _reflection.GeneratedProtocolMessageType('FeaturesEntry', (_message.Message,), dict(
    DESCRIPTOR = _MODELANDFEATURES_FEATURESENTRY,
    __module__ = 'tensorflow.contrib.decision_trees.proto.generic_tree_model_pb2'
    # @@protoc_insertion_point(class_scope:tensorflow.decision_trees.ModelAndFeatures.FeaturesEntry)
    ))
  ,
  DESCRIPTOR = _MODELANDFEATURES,
  __module__ = 'tensorflow.contrib.decision_trees.proto.generic_tree_model_pb2'
  # @@protoc_insertion_point(class_scope:tensorflow.decision_trees.ModelAndFeatures)
  ))
_sym_db.RegisterMessage(ModelAndFeatures)
_sym_db.RegisterMessage(ModelAndFeatures.Feature)
_sym_db.RegisterMessage(ModelAndFeatures.FeaturesEntry)

Ensemble = _reflection.GeneratedProtocolMessageType('Ensemble', (_message.Message,), dict(

  Member = _reflection.GeneratedProtocolMessageType('Member', (_message.Message,), dict(
    DESCRIPTOR = _ENSEMBLE_MEMBER,
    __module__ = 'tensorflow.contrib.decision_trees.proto.generic_tree_model_pb2'
    # @@protoc_insertion_point(class_scope:tensorflow.decision_trees.Ensemble.Member)
    ))
  ,
  DESCRIPTOR = _ENSEMBLE,
  __module__ = 'tensorflow.contrib.decision_trees.proto.generic_tree_model_pb2'
  # @@protoc_insertion_point(class_scope:tensorflow.decision_trees.Ensemble)
  ))
_sym_db.RegisterMessage(Ensemble)
_sym_db.RegisterMessage(Ensemble.Member)

Summation = _reflection.GeneratedProtocolMessageType('Summation', (_message.Message,), dict(
  DESCRIPTOR = _SUMMATION,
  __module__ = 'tensorflow.contrib.decision_trees.proto.generic_tree_model_pb2'
  # @@protoc_insertion_point(class_scope:tensorflow.decision_trees.Summation)
  ))
_sym_db.RegisterMessage(Summation)

Averaging = _reflection.GeneratedProtocolMessageType('Averaging', (_message.Message,), dict(
  DESCRIPTOR = _AVERAGING,
  __module__ = 'tensorflow.contrib.decision_trees.proto.generic_tree_model_pb2'
  # @@protoc_insertion_point(class_scope:tensorflow.decision_trees.Averaging)
  ))
_sym_db.RegisterMessage(Averaging)

DecisionTree = _reflection.GeneratedProtocolMessageType('DecisionTree', (_message.Message,), dict(
  DESCRIPTOR = _DECISIONTREE,
  __module__ = 'tensorflow.contrib.decision_trees.proto.generic_tree_model_pb2'
  # @@protoc_insertion_point(class_scope:tensorflow.decision_trees.DecisionTree)
  ))
_sym_db.RegisterMessage(DecisionTree)

TreeNode = _reflection.GeneratedProtocolMessageType('TreeNode', (_message.Message,), dict(
  DESCRIPTOR = _TREENODE,
  __module__ = 'tensorflow.contrib.decision_trees.proto.generic_tree_model_pb2'
  # @@protoc_insertion_point(class_scope:tensorflow.decision_trees.TreeNode)
  ))
_sym_db.RegisterMessage(TreeNode)

BinaryNode = _reflection.GeneratedProtocolMessageType('BinaryNode', (_message.Message,), dict(
  DESCRIPTOR = _BINARYNODE,
  __module__ = 'tensorflow.contrib.decision_trees.proto.generic_tree_model_pb2'
  # @@protoc_insertion_point(class_scope:tensorflow.decision_trees.BinaryNode)
  ))
_sym_db.RegisterMessage(BinaryNode)

SparseVector = _reflection.GeneratedProtocolMessageType('SparseVector', (_message.Message,), dict(

  SparseValueEntry = _reflection.GeneratedProtocolMessageType('SparseValueEntry', (_message.Message,), dict(
    DESCRIPTOR = _SPARSEVECTOR_SPARSEVALUEENTRY,
    __module__ = 'tensorflow.contrib.decision_trees.proto.generic_tree_model_pb2'
    # @@protoc_insertion_point(class_scope:tensorflow.decision_trees.SparseVector.SparseValueEntry)
    ))
  ,
  DESCRIPTOR = _SPARSEVECTOR,
  __module__ = 'tensorflow.contrib.decision_trees.proto.generic_tree_model_pb2'
  # @@protoc_insertion_point(class_scope:tensorflow.decision_trees.SparseVector)
  ))
_sym_db.RegisterMessage(SparseVector)
_sym_db.RegisterMessage(SparseVector.SparseValueEntry)

Vector = _reflection.GeneratedProtocolMessageType('Vector', (_message.Message,), dict(
  DESCRIPTOR = _VECTOR,
  __module__ = 'tensorflow.contrib.decision_trees.proto.generic_tree_model_pb2'
  # @@protoc_insertion_point(class_scope:tensorflow.decision_trees.Vector)
  ))
_sym_db.RegisterMessage(Vector)

Leaf = _reflection.GeneratedProtocolMessageType('Leaf', (_message.Message,), dict(
  DESCRIPTOR = _LEAF,
  __module__ = 'tensorflow.contrib.decision_trees.proto.generic_tree_model_pb2'
  # @@protoc_insertion_point(class_scope:tensorflow.decision_trees.Leaf)
  ))
_sym_db.RegisterMessage(Leaf)

FeatureId = _reflection.GeneratedProtocolMessageType('FeatureId', (_message.Message,), dict(
  DESCRIPTOR = _FEATUREID,
  __module__ = 'tensorflow.contrib.decision_trees.proto.generic_tree_model_pb2'
  # @@protoc_insertion_point(class_scope:tensorflow.decision_trees.FeatureId)
  ))
_sym_db.RegisterMessage(FeatureId)

ObliqueFeatures = _reflection.GeneratedProtocolMessageType('ObliqueFeatures', (_message.Message,), dict(
  DESCRIPTOR = _OBLIQUEFEATURES,
  __module__ = 'tensorflow.contrib.decision_trees.proto.generic_tree_model_pb2'
  # @@protoc_insertion_point(class_scope:tensorflow.decision_trees.ObliqueFeatures)
  ))
_sym_db.RegisterMessage(ObliqueFeatures)

InequalityTest = _reflection.GeneratedProtocolMessageType('InequalityTest', (_message.Message,), dict(
  DESCRIPTOR = _INEQUALITYTEST,
  __module__ = 'tensorflow.contrib.decision_trees.proto.generic_tree_model_pb2'
  # @@protoc_insertion_point(class_scope:tensorflow.decision_trees.InequalityTest)
  ))
_sym_db.RegisterMessage(InequalityTest)

Value = _reflection.GeneratedProtocolMessageType('Value', (_message.Message,), dict(
  DESCRIPTOR = _VALUE,
  __module__ = 'tensorflow.contrib.decision_trees.proto.generic_tree_model_pb2'
  # @@protoc_insertion_point(class_scope:tensorflow.decision_trees.Value)
  ))
_sym_db.RegisterMessage(Value)


DESCRIPTOR.has_options = True
DESCRIPTOR._options = _descriptor._ParseOptions(descriptor_pb2.FileOptions(), _b('\370\001\001'))
_MODELANDFEATURES_FEATURE.fields_by_name['feature_id'].has_options = True
_MODELANDFEATURES_FEATURE.fields_by_name['feature_id']._options = _descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\030\001'))
_MODELANDFEATURES_FEATURESENTRY.has_options = True
_MODELANDFEATURES_FEATURESENTRY._options = _descriptor._ParseOptions(descriptor_pb2.MessageOptions(), _b('8\001'))
_SPARSEVECTOR_SPARSEVALUEENTRY.has_options = True
_SPARSEVECTOR_SPARSEVALUEENTRY._options = _descriptor._ParseOptions(descriptor_pb2.MessageOptions(), _b('8\001'))
# @@protoc_insertion_point(module_scope)
