阅读(5.1k) 书签 (0)

TensorFlow定义attr值

2018-09-07 13:54 更新

syntax = "proto3";

package tensorflow;

option cc_enable_arenas = true;

option java_outer_classname = "AttrValueProtos";

option java_multiple_files = true;

option java_package = "org.tensorflow.framework";

import "tensorflow/core/framework/tensor.proto";

import "tensorflow/core/framework/tensor_shape.proto";

import "tensorflow/core/framework/types.proto";

//表示用于配置Op的attr的值的协议缓冲区.

//注释表示相应的attr类型.只有匹配的字段

//attr类型可能被填充.

message AttrValue {

  // LINT.IfChange

  message ListValue {

    repeated bytes s = 2;                        // "list(string)"

    repeated int64 i = 3 [packed = true];        // "list(int)"

    repeated float f = 4 [packed = true];        // "list(float)"

    repeated bool b = 5 [packed = true];         // "list(bool)"

    repeated DataType type = 6 [packed = true];  // "list(type)"

    repeated TensorShapeProto shape = 7;         // "list(shape)"

    repeated TensorProto tensor = 8;             // "list(tensor)"

    repeated NameAttrList func = 9;              // "list(attr)"

  }

  // LINT.ThenChange(https://www.tensorflow.org/code/tensorflow/c/c_api.cc)

  oneof value {

    bytes s = 2;                 // "string"

    int64 i = 3;                 // "int"

    float f = 4;                 // "float"

    bool b = 5;                  // "bool"

    DataType type = 6;           // "type"

    TensorShapeProto shape = 7;  // "shape"

    TensorProto tensor = 8;      // "tensor"

    ListValue list = 1;          // any "list(...)"

    // "func" represents a function. func.name is a function's name or

    // a primitive op's name. func.attr.first is the name of an attr

    // defined for that function. func.attr.second is the value for

    // that attr in the instantiation.

    NameAttrList func = 10;

    // This is a placeholder only used in nodes defined inside a

    // function.  It indicates the attr value will be supplied when

    // the function is instantiated.  For example, let us suppose a

    // node "N" in function "FN". "N" has an attr "A" with value

    // placeholder = "foo". When FN is instantiated with attr "foo"

    // set to "bar", the instantiated node N's attr A will have been

    // given the value "bar".

    string placeholder = 9;

  }

}

// A list of attr names and their values. The whole list is attached

// with a string name.  E.g., MatMul[T=float].

message NameAttrList {

  string name = 1;

  map<string, AttrValue> attr = 2;

}