• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1// Protocol messages for describing features for machine learning model
2// training or inference.
3//
4// There are three base Feature types:
5//   - bytes
6//   - float
7//   - int64
8//
9// A Feature contains Lists which may hold zero or more values.  These
10// lists are the base values BytesList, FloatList, Int64List.
11//
12// Features are organized into categories by name.  The Features message
13// contains the mapping from name to Feature.
14//
15// Example Features for a movie recommendation application:
16//   feature {
17//     key: "age"
18//     value { float_list {
19//       value: 29.0
20//     }}
21//   }
22//   feature {
23//     key: "movie"
24//     value { bytes_list {
25//       value: "The Shawshank Redemption"
26//       value: "Fight Club"
27//     }}
28//   }
29//   feature {
30//     key: "movie_ratings"
31//     value { float_list {
32//       value: 9.0
33//       value: 9.7
34//     }}
35//   }
36//   feature {
37//     key: "suggestion"
38//     value { bytes_list {
39//       value: "Inception"
40//     }}
41//   }
42//   feature {
43//     key: "suggestion_purchased"
44//     value { int64_list {
45//       value: 1
46//     }}
47//   }
48//   feature {
49//     key: "purchase_price"
50//     value { float_list {
51//       value: 9.99
52//     }}
53//   }
54//
55
56syntax = "proto3";
57option cc_enable_arenas = true;
58option java_outer_classname = "FeatureProtos";
59option java_multiple_files = true;
60option java_package = "org.tensorflow.example";
61option go_package = "github.com/tensorflow/tensorflow/tensorflow/go/core/example";
62package tensorflow;
63
64// Containers to hold repeated fundamental values.
65message BytesList {
66  repeated bytes value = 1;
67}
68message FloatList {
69  repeated float value = 1 [packed = true];
70}
71message Int64List {
72  repeated int64 value = 1 [packed = true];
73}
74
75// Containers for non-sequential data.
76message Feature {
77  // Each feature can be exactly one kind.
78  oneof kind {
79    BytesList bytes_list = 1;
80    FloatList float_list = 2;
81    Int64List int64_list = 3;
82  }
83};
84
85message Features {
86  // Map from feature name to feature.
87  map<string, Feature> feature = 1;
88};
89
90// Containers for sequential data.
91//
92// A FeatureList contains lists of Features.  These may hold zero or more
93// Feature values.
94//
95// FeatureLists are organized into categories by name.  The FeatureLists message
96// contains the mapping from name to FeatureList.
97//
98message FeatureList {
99  repeated Feature feature = 1;
100};
101
102message FeatureLists {
103  // Map from feature name to feature list.
104  map<string, FeatureList> feature_list = 1;
105};
106