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