package framework

import proto "github.com/golang/protobuf/proto"
import fmt "fmt"
import math "math"

var _ = proto.Marshal
var _ = fmt.Errorf
var _ = math.Inf

type OpDef struct {

	Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`

	InputArg []*OpDef_ArgDef `protobuf:"bytes,2,rep,name=input_arg,json=inputArg" json:"input_arg,omitempty"`

	OutputArg []*OpDef_ArgDef  `protobuf:"bytes,3,rep,name=output_arg,json=outputArg" json:"output_arg,omitempty"`
	Attr      []*OpDef_AttrDef `protobuf:"bytes,4,rep,name=attr" json:"attr,omitempty"`

	Deprecation *OpDeprecation `protobuf:"bytes,8,opt,name=deprecation" json:"deprecation,omitempty"`

	Summary string `protobuf:"bytes,5,opt,name=summary" json:"summary,omitempty"`

	Description string `protobuf:"bytes,6,opt,name=description" json:"description,omitempty"`

	IsCommutative bool `protobuf:"varint,18,opt,name=is_commutative,json=isCommutative" json:"is_commutative,omitempty"`

	IsAggregate bool `protobuf:"varint,16,opt,name=is_aggregate,json=isAggregate" json:"is_aggregate,omitempty"`

	IsStateful bool `protobuf:"varint,17,opt,name=is_stateful,json=isStateful" json:"is_stateful,omitempty"`

	AllowsUninitializedInput bool `protobuf:"varint,19,opt,name=allows_uninitialized_input,json=allowsUninitializedInput" json:"allows_uninitialized_input,omitempty"`
}

func (m *OpDef) Reset()                    { *m = OpDef{} }
func (m *OpDef) String() string            { return proto.CompactTextString(m) }
func (*OpDef) ProtoMessage()               {}
func (*OpDef) Descriptor() ([]byte, []int) { return fileDescriptor10, []int{0} }

func (m *OpDef) GetName() string {
	if m != nil {
		return m.Name
	}
	return ""
}

func (m *OpDef) GetInputArg() []*OpDef_ArgDef {
	if m != nil {
		return m.InputArg
	}
	return nil
}

func (m *OpDef) GetOutputArg() []*OpDef_ArgDef {
	if m != nil {
		return m.OutputArg
	}
	return nil
}

func (m *OpDef) GetAttr() []*OpDef_AttrDef {
	if m != nil {
		return m.Attr
	}
	return nil
}

func (m *OpDef) GetDeprecation() *OpDeprecation {
	if m != nil {
		return m.Deprecation
	}
	return nil
}

func (m *OpDef) GetSummary() string {
	if m != nil {
		return m.Summary
	}
	return ""
}

func (m *OpDef) GetDescription() string {
	if m != nil {
		return m.Description
	}
	return ""
}

func (m *OpDef) GetIsCommutative() bool {
	if m != nil {
		return m.IsCommutative
	}
	return false
}

func (m *OpDef) GetIsAggregate() bool {
	if m != nil {
		return m.IsAggregate
	}
	return false
}

func (m *OpDef) GetIsStateful() bool {
	if m != nil {
		return m.IsStateful
	}
	return false
}

func (m *OpDef) GetAllowsUninitializedInput() bool {
	if m != nil {
		return m.AllowsUninitializedInput
	}
	return false
}

type OpDef_ArgDef struct {

	Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`

	Description string `protobuf:"bytes,2,opt,name=description" json:"description,omitempty"`

	Type       DataType `protobuf:"varint,3,opt,name=type,enum=tensorflow.DataType" json:"type,omitempty"`
	TypeAttr   string   `protobuf:"bytes,4,opt,name=type_attr,json=typeAttr" json:"type_attr,omitempty"`
	NumberAttr string   `protobuf:"bytes,5,opt,name=number_attr,json=numberAttr" json:"number_attr,omitempty"`

	TypeListAttr string `protobuf:"bytes,6,opt,name=type_list_attr,json=typeListAttr" json:"type_list_attr,omitempty"`

	IsRef bool `protobuf:"varint,16,opt,name=is_ref,json=isRef" json:"is_ref,omitempty"`
}

func (m *OpDef_ArgDef) Reset()                    { *m = OpDef_ArgDef{} }
func (m *OpDef_ArgDef) String() string            { return proto.CompactTextString(m) }
func (*OpDef_ArgDef) ProtoMessage()               {}
func (*OpDef_ArgDef) Descriptor() ([]byte, []int) { return fileDescriptor10, []int{0, 0} }

func (m *OpDef_ArgDef) GetName() string {
	if m != nil {
		return m.Name
	}
	return ""
}

func (m *OpDef_ArgDef) GetDescription() string {
	if m != nil {
		return m.Description
	}
	return ""
}

func (m *OpDef_ArgDef) GetType() DataType {
	if m != nil {
		return m.Type
	}
	return DataType_DT_INVALID
}

func (m *OpDef_ArgDef) GetTypeAttr() string {
	if m != nil {
		return m.TypeAttr
	}
	return ""
}

func (m *OpDef_ArgDef) GetNumberAttr() string {
	if m != nil {
		return m.NumberAttr
	}
	return ""
}

func (m *OpDef_ArgDef) GetTypeListAttr() string {
	if m != nil {
		return m.TypeListAttr
	}
	return ""
}

func (m *OpDef_ArgDef) GetIsRef() bool {
	if m != nil {
		return m.IsRef
	}
	return false
}

type OpDef_AttrDef struct {

	Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`

	Type string `protobuf:"bytes,2,opt,name=type" json:"type,omitempty"`

	DefaultValue *AttrValue `protobuf:"bytes,3,opt,name=default_value,json=defaultValue" json:"default_value,omitempty"`

	Description string `protobuf:"bytes,4,opt,name=description" json:"description,omitempty"`

	HasMinimum bool  `protobuf:"varint,5,opt,name=has_minimum,json=hasMinimum" json:"has_minimum,omitempty"`
	Minimum    int64 `protobuf:"varint,6,opt,name=minimum" json:"minimum,omitempty"`

	AllowedValues *AttrValue `protobuf:"bytes,7,opt,name=allowed_values,json=allowedValues" json:"allowed_values,omitempty"`
}

func (m *OpDef_AttrDef) Reset()                    { *m = OpDef_AttrDef{} }
func (m *OpDef_AttrDef) String() string            { return proto.CompactTextString(m) }
func (*OpDef_AttrDef) ProtoMessage()               {}
func (*OpDef_AttrDef) Descriptor() ([]byte, []int) { return fileDescriptor10, []int{0, 1} }

func (m *OpDef_AttrDef) GetName() string {
	if m != nil {
		return m.Name
	}
	return ""
}

func (m *OpDef_AttrDef) GetType() string {
	if m != nil {
		return m.Type
	}
	return ""
}

func (m *OpDef_AttrDef) GetDefaultValue() *AttrValue {
	if m != nil {
		return m.DefaultValue
	}
	return nil
}

func (m *OpDef_AttrDef) GetDescription() string {
	if m != nil {
		return m.Description
	}
	return ""
}

func (m *OpDef_AttrDef) GetHasMinimum() bool {
	if m != nil {
		return m.HasMinimum
	}
	return false
}

func (m *OpDef_AttrDef) GetMinimum() int64 {
	if m != nil {
		return m.Minimum
	}
	return 0
}

func (m *OpDef_AttrDef) GetAllowedValues() *AttrValue {
	if m != nil {
		return m.AllowedValues
	}
	return nil
}

type OpDeprecation struct {

	Version int32 `protobuf:"varint,1,opt,name=version" json:"version,omitempty"`

	Explanation string `protobuf:"bytes,2,opt,name=explanation" json:"explanation,omitempty"`
}

func (m *OpDeprecation) Reset()                    { *m = OpDeprecation{} }
func (m *OpDeprecation) String() string            { return proto.CompactTextString(m) }
func (*OpDeprecation) ProtoMessage()               {}
func (*OpDeprecation) Descriptor() ([]byte, []int) { return fileDescriptor10, []int{1} }

func (m *OpDeprecation) GetVersion() int32 {
	if m != nil {
		return m.Version
	}
	return 0
}

func (m *OpDeprecation) GetExplanation() string {
	if m != nil {
		return m.Explanation
	}
	return ""
}

type OpList struct {
	Op []*OpDef `protobuf:"bytes,1,rep,name=op" json:"op,omitempty"`
}

func (m *OpList) Reset()                    { *m = OpList{} }
func (m *OpList) String() string            { return proto.CompactTextString(m) }
func (*OpList) ProtoMessage()               {}
func (*OpList) Descriptor() ([]byte, []int) { return fileDescriptor10, []int{2} }

func (m *OpList) GetOp() []*OpDef {
	if m != nil {
		return m.Op
	}
	return nil
}

func init() {
	proto.RegisterType((*OpDef)(nil), "tensorflow.OpDef")
	proto.RegisterType((*OpDef_ArgDef)(nil), "tensorflow.OpDef.ArgDef")
	proto.RegisterType((*OpDef_AttrDef)(nil), "tensorflow.OpDef.AttrDef")
	proto.RegisterType((*OpDeprecation)(nil), "tensorflow.OpDeprecation")
	proto.RegisterType((*OpList)(nil), "tensorflow.OpList")
}

func init() { proto.RegisterFile("tensorflow/core/framework/op_def.proto", fileDescriptor10) }

var fileDescriptor10 = []byte{

	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x84, 0x94, 0xdd, 0x6e, 0xd3, 0x30,
	0x18, 0x86, 0x95, 0xfe, 0xf7, 0xcb, 0x5a, 0x31, 0xc3, 0x24, 0x53, 0x0e, 0xd6, 0x4d, 0x0c, 0x55,
	0xa0, 0x35, 0xd2, 0x10, 0x42, 0x82, 0x9d, 0x6c, 0xf4, 0x04, 0x01, 0xda, 0x14, 0x7e, 0x0e, 0x38,
	0x89, 0xbc, 0xd6, 0xc9, 0xac, 0x25, 0xb1, 0x65, 0x3b, 0x1d, 0xe5, 0x0a, 0xb8, 0x39, 0xae, 0x82,
	0x9b, 0xe0, 0x10, 0xd9, 0x4e, 0xd7, 0xb0, 0xb5, 0x70, 0xd4, 0xfa, 0xfb, 0x9e, 0xd7, 0xf1, 0xfb,
	0xfa, 0x07, 0x9e, 0x68, 0x9a, 0x2b, 0x2e, 0xe3, 0x94, 0x5f, 0x07, 0x53, 0x2e, 0x69, 0x10, 0x4b,
	0x92, 0xd1, 0x6b, 0x2e, 0xaf, 0x02, 0x2e, 0xa2, 0x19, 0x8d, 0xc7, 0x42, 0x72, 0xcd, 0x11, 0xac,
	0xb8, 0xc1, 0xd3, 0xcd, 0x1a, 0xa2, 0xb5, 0x8c, 0xe6, 0x24, 0x2d, 0xa8, 0xd3, 0x0d, 0x0e, 0x36,
	0xb3, 0x7a, 0x21, 0xa8, 0x72, 0xd8, 0xfe, 0xcf, 0x36, 0x34, 0xcf, 0xc4, 0x84, 0xc6, 0x08, 0x41,
	0x23, 0x27, 0x19, 0xc5, 0xde, 0xd0, 0x1b, 0x75, 0x43, 0xfb, 0x1f, 0xbd, 0x80, 0x2e, 0xcb, 0x45,
	0xa1, 0x23, 0x22, 0x13, 0x5c, 0x1b, 0xd6, 0x47, 0xfe, 0x11, 0x1e, 0xaf, 0x26, 0x1e, 0x5b, 0xe5,
	0xf8, 0x44, 0x26, 0x13, 0x1a, 0x87, 0x1d, 0x8b, 0x9e, 0xc8, 0x04, 0xbd, 0x04, 0xe0, 0x85, 0x5e,
	0xea, 0xea, 0xff, 0xd1, 0x75, 0x1d, 0x6b, 0x84, 0x87, 0xd0, 0x30, 0x46, 0x70, 0xc3, 0x4a, 0x1e,
	0xae, 0x91, 0x68, 0x2d, 0x8d, 0xc6, 0x62, 0xe8, 0x35, 0xf8, 0x33, 0x2a, 0x24, 0x9d, 0x12, 0xcd,
	0x78, 0x8e, 0x3b, 0x43, 0x6f, 0x9d, 0xea, 0x06, 0x08, 0xab, 0x34, 0xc2, 0xd0, 0x56, 0x45, 0x96,
	0x11, 0xb9, 0xc0, 0x4d, 0x6b, 0x79, 0x39, 0x44, 0x43, 0x33, 0xad, 0x9a, 0x4a, 0x26, 0xec, 0xb4,
	0x2d, 0xdb, 0xad, 0x96, 0xd0, 0x01, 0xf4, 0x99, 0x8a, 0xa6, 0x3c, 0xcb, 0x0a, 0x4d, 0x34, 0x9b,
	0x53, 0x8c, 0x86, 0xde, 0xa8, 0x13, 0xf6, 0x98, 0x7a, 0xb3, 0x2a, 0xa2, 0x3d, 0xd8, 0x62, 0x2a,
	0x22, 0x49, 0x22, 0x69, 0x42, 0x34, 0xc5, 0xf7, 0x2c, 0xe4, 0x33, 0x75, 0xb2, 0x2c, 0xa1, 0x5d,
	0xf0, 0x99, 0x8a, 0x94, 0x26, 0x9a, 0xc6, 0x45, 0x8a, 0xb7, 0x2d, 0x01, 0x4c, 0x7d, 0x2c, 0x2b,
	0xe8, 0x18, 0x06, 0x24, 0x4d, 0xf9, 0xb5, 0x8a, 0x8a, 0x9c, 0xe5, 0x4c, 0x33, 0x92, 0xb2, 0xef,
	0x74, 0x16, 0xd9, 0xb0, 0xf1, 0x7d, 0xcb, 0x63, 0x47, 0x7c, 0xae, 0x02, 0x6f, 0x4d, 0x7f, 0xf0,
	0xcb, 0x83, 0x96, 0x8b, 0x79, 0xed, 0xfe, 0xde, 0x72, 0x5a, 0xbb, 0xeb, 0x74, 0x04, 0x0d, 0x73,
	0x5c, 0x70, 0x7d, 0xe8, 0x8d, 0xfa, 0x47, 0x0f, 0xaa, 0xd9, 0x4e, 0x88, 0x26, 0x9f, 0x16, 0x82,
	0x86, 0x96, 0x40, 0x8f, 0xa0, 0x6b, 0x7e, 0xa3, 0x72, 0x03, 0xcd, 0x4c, 0x1d, 0x53, 0x30, 0x5b,
	0x66, 0x6c, 0xe6, 0x45, 0x76, 0x41, 0xa5, 0x6b, 0xbb, 0xc0, 0xc1, 0x95, 0x2c, 0xf0, 0x18, 0xfa,
	0x56, 0x9d, 0x32, 0xa5, 0x1d, 0xe3, 0x62, 0xdf, 0x32, 0xd5, 0xf7, 0x4c, 0x69, 0x4b, 0xed, 0x40,
	0x8b, 0xa9, 0x48, 0xd2, 0xb8, 0x8c, 0xb2, 0xc9, 0x54, 0x48, 0xe3, 0xc1, 0x8f, 0x1a, 0xb4, 0xcb,
	0x93, 0xb1, 0xd6, 0x26, 0x2a, 0x4d, 0x38, 0x7f, 0x6e, 0xb9, 0xaf, 0xa0, 0x37, 0xa3, 0x31, 0x29,
	0x52, 0xed, 0xae, 0x8d, 0x75, 0xe8, 0x1f, 0xed, 0x54, 0x1d, 0x9a, 0x39, 0xbf, 0x98, 0x66, 0xb8,
	0x55, 0xb2, 0x76, 0x74, 0x3b, 0xb6, 0xc6, 0xdd, 0xd8, 0x76, 0xc1, 0xbf, 0x24, 0x2a, 0xca, 0x58,
	0xce, 0xb2, 0x22, 0xb3, 0x7e, 0x3b, 0x21, 0x5c, 0x12, 0xf5, 0xc1, 0x55, 0xcc, 0xe9, 0x5b, 0x36,
	0x8d, 0xd1, 0x7a, 0xb8, 0x1c, 0xa2, 0x63, 0xe8, 0xdb, 0xed, 0xa4, 0x33, 0xb7, 0x30, 0x85, 0xdb,
	0xff, 0x5a, 0x59, 0xaf, 0x84, 0xed, 0x48, 0xed, 0xbf, 0x83, 0xde, 0x5f, 0x67, 0xde, 0x7c, 0x68,
	0x4e, 0xa5, 0x32, 0xeb, 0x34, 0x91, 0x34, 0xc3, 0xe5, 0xd0, 0xb8, 0xa0, 0xdf, 0x44, 0x4a, 0x72,
	0x52, 0xdd, 0xfc, 0x4a, 0x69, 0xff, 0x19, 0xb4, 0xce, 0x84, 0x09, 0x1f, 0xed, 0x41, 0x8d, 0x0b,
	0xec, 0xd9, 0x6b, 0xb9, 0x7d, 0xe7, 0x5a, 0x86, 0x35, 0x2e, 0x4e, 0x25, 0x60, 0x2e, 0x93, 0x6a,
	0xef, 0xe6, 0xc5, 0x39, 0xf5, 0x2d, 0x76, 0x6e, 0x5e, 0x1c, 0x75, 0xee, 0x7d, 0x9d, 0x24, 0x4c,
	0x5f, 0x16, 0x17, 0xe3, 0x29, 0xcf, 0x82, 0x99, 0xa4, 0x8b, 0xab, 0x60, 0xa5, 0x3a, 0x54, 0x54,
	0xce, 0x59, 0x9e, 0x1c, 0x26, 0x3c, 0x10, 0x57, 0x49, 0xb0, 0xf1, 0x19, 0xfb, 0xed, 0x79, 0x17,
	0x2d, 0xfb, 0x88, 0x3d, 0xff, 0x13, 0x00, 0x00, 0xff, 0xff, 0x1f, 0xae, 0x25, 0x86, 0x4d, 0x05,
	0x00, 0x00,
}
// Code generated by protoc-gen-go. DO NOT EDIT.
// source: tensorflow/core/framework/op_def.proto

package framework

import proto "github.com/golang/protobuf/proto"
import fmt "fmt"
import math "math"

// Reference imports to suppress errors if they are not otherwise used.
var _ = proto.Marshal
var _ = fmt.Errorf
var _ = math.Inf

// Defines an operation. A NodeDef in a GraphDef specifies an Op by
// using the "op" field which should match the name of a OpDef.
type OpDef struct {
	// Op names starting with an underscore are reserved for internal use.
	// Names should be CamelCase and match the regexp "[A-Z][a-zA-Z0-9_]*".
	Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
	// Description of the input(s).
	InputArg []*OpDef_ArgDef `protobuf:"bytes,2,rep,name=input_arg,json=inputArg" json:"input_arg,omitempty"`
	// Description of the output(s).
	OutputArg []*OpDef_ArgDef  `protobuf:"bytes,3,rep,name=output_arg,json=outputArg" json:"output_arg,omitempty"`
	Attr      []*OpDef_AttrDef `protobuf:"bytes,4,rep,name=attr" json:"attr,omitempty"`
	// Optional deprecation based on GraphDef versions.
	Deprecation *OpDeprecation `protobuf:"bytes,8,opt,name=deprecation" json:"deprecation,omitempty"`
	// One-line human-readable description of what the Op does.
	Summary string `protobuf:"bytes,5,opt,name=summary" json:"summary,omitempty"`
	// Additional, longer human-readable description of what the Op does.
	Description string `protobuf:"bytes,6,opt,name=description" json:"description,omitempty"`
	// True if the operation is commutative ("op(a,b) == op(b,a)" for all inputs)
	IsCommutative bool `protobuf:"varint,18,opt,name=is_commutative,json=isCommutative" json:"is_commutative,omitempty"`
	// If is_aggregate is true, then this operation accepts N >= 2
	// inputs and produces 1 output all of the same type.  Should be
	// associative and commutative, and produce output with the same
	// shape as the input.  The optimizer may replace an aggregate op
	// taking input from multiple devices with a tree of aggregate ops
	// that aggregate locally within each device (and possibly within
	// groups of nearby devices) before communicating.
	// TODO(josh11b): Implement that optimization.
	IsAggregate bool `protobuf:"varint,16,opt,name=is_aggregate,json=isAggregate" json:"is_aggregate,omitempty"`
	// By default Ops may be moved between devices.  Stateful ops should
	// either not be moved, or should only be moved if that state can also
	// be moved (e.g. via some sort of save / restore).
	// Stateful ops are guaranteed to never be optimized away by Common
	// Subexpression Elimination (CSE).
	IsStateful bool `protobuf:"varint,17,opt,name=is_stateful,json=isStateful" json:"is_stateful,omitempty"`
	// By default, all inputs to an Op must be initialized Tensors.  Ops
	// that may initialize tensors for the first time should set this
	// field to true, to allow the Op to take an uninitialized Tensor as
	// input.
	AllowsUninitializedInput bool `protobuf:"varint,19,opt,name=allows_uninitialized_input,json=allowsUninitializedInput" json:"allows_uninitialized_input,omitempty"`
}

func (m *OpDef) Reset()                    { *m = OpDef{} }
func (m *OpDef) String() string            { return proto.CompactTextString(m) }
func (*OpDef) ProtoMessage()               {}
func (*OpDef) Descriptor() ([]byte, []int) { return fileDescriptor10, []int{0} }

func (m *OpDef) GetName() string {
	if m != nil {
		return m.Name
	}
	return ""
}

func (m *OpDef) GetInputArg() []*OpDef_ArgDef {
	if m != nil {
		return m.InputArg
	}
	return nil
}

func (m *OpDef) GetOutputArg() []*OpDef_ArgDef {
	if m != nil {
		return m.OutputArg
	}
	return nil
}

func (m *OpDef) GetAttr() []*OpDef_AttrDef {
	if m != nil {
		return m.Attr
	}
	return nil
}

func (m *OpDef) GetDeprecation() *OpDeprecation {
	if m != nil {
		return m.Deprecation
	}
	return nil
}

func (m *OpDef) GetSummary() string {
	if m != nil {
		return m.Summary
	}
	return ""
}

func (m *OpDef) GetDescription() string {
	if m != nil {
		return m.Description
	}
	return ""
}

func (m *OpDef) GetIsCommutative() bool {
	if m != nil {
		return m.IsCommutative
	}
	return false
}

func (m *OpDef) GetIsAggregate() bool {
	if m != nil {
		return m.IsAggregate
	}
	return false
}

func (m *OpDef) GetIsStateful() bool {
	if m != nil {
		return m.IsStateful
	}
	return false
}

func (m *OpDef) GetAllowsUninitializedInput() bool {
	if m != nil {
		return m.AllowsUninitializedInput
	}
	return false
}

// For describing inputs and outputs.
type OpDef_ArgDef struct {
	// Name for the input/output.  Should match the regexp "[a-z][a-z0-9_]*".
	Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
	// Human readable description.
	Description string `protobuf:"bytes,2,opt,name=description" json:"description,omitempty"`
	// Describes the type of one or more tensors that are accepted/produced
	// by this input/output arg.  The only legal combinations are:
	// * For a single tensor: either the "type" field is set or the
	//   "type_attr" field is set to the name of an attr with type "type".
	// * For a sequence of tensors with the same type: the "number_attr"
	//   field will be set to the name of an attr with type "int", and
	//   either the "type" or "type_attr" field will be set as for
	//   single tensors.
	// * For a sequence of tensors, the "type_list_attr" field will be set
	//   to the name of an attr with type "list(type)".
	Type       DataType `protobuf:"varint,3,opt,name=type,enum=tensorflow.DataType" json:"type,omitempty"`
	TypeAttr   string   `protobuf:"bytes,4,opt,name=type_attr,json=typeAttr" json:"type_attr,omitempty"`
	NumberAttr string   `protobuf:"bytes,5,opt,name=number_attr,json=numberAttr" json:"number_attr,omitempty"`
	// If specified, attr must have type "list(type)", and none of
	// type, type_attr, and number_attr may be specified.
	TypeListAttr string `protobuf:"bytes,6,opt,name=type_list_attr,json=typeListAttr" json:"type_list_attr,omitempty"`
	// For inputs: if true, the inputs are required to be refs.
	//   By default, inputs can be either refs or non-refs.
	// For outputs: if true, outputs are refs, otherwise they are not.
	IsRef bool `protobuf:"varint,16,opt,name=is_ref,json=isRef" json:"is_ref,omitempty"`
}

func (m *OpDef_ArgDef) Reset()                    { *m = OpDef_ArgDef{} }
func (m *OpDef_ArgDef) String() string            { return proto.CompactTextString(m) }
func (*OpDef_ArgDef) ProtoMessage()               {}
func (*OpDef_ArgDef) Descriptor() ([]byte, []int) { return fileDescriptor10, []int{0, 0} }

func (m *OpDef_ArgDef) GetName() string {
	if m != nil {
		return m.Name
	}
	return ""
}

func (m *OpDef_ArgDef) GetDescription() string {
	if m != nil {
		return m.Description
	}
	return ""
}

func (m *OpDef_ArgDef) GetType() DataType {
	if m != nil {
		return m.Type
	}
	return DataType_DT_INVALID
}

func (m *OpDef_ArgDef) GetTypeAttr() string {
	if m != nil {
		return m.TypeAttr
	}
	return ""
}

func (m *OpDef_ArgDef) GetNumberAttr() string {
	if m != nil {
		return m.NumberAttr
	}
	return ""
}

func (m *OpDef_ArgDef) GetTypeListAttr() string {
	if m != nil {
		return m.TypeListAttr
	}
	return ""
}

func (m *OpDef_ArgDef) GetIsRef() bool {
	if m != nil {
		return m.IsRef
	}
	return false
}

// Description of the graph-construction-time configuration of this
// Op.  That is to say, this describes the attr fields that will
// be specified in the NodeDef.
type OpDef_AttrDef struct {
	// A descriptive name for the argument.  May be used, e.g. by the
	// Python client, as a keyword argument name, and so should match
	// the regexp "[a-z][a-z0-9_]+".
	Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
	// One of the type names from attr_value.proto ("string", "list(string)",
	// "int", etc.).
	Type string `protobuf:"bytes,2,opt,name=type" json:"type,omitempty"`
	// A reasonable default for this attribute if the user does not supply
	// a value.  If not specified, the user must supply a value.
	DefaultValue *AttrValue `protobuf:"bytes,3,opt,name=default_value,json=defaultValue" json:"default_value,omitempty"`
	// Human-readable description.
	Description string `protobuf:"bytes,4,opt,name=description" json:"description,omitempty"`
	// For type == "int", this is a minimum value.  For "list(___)"
	// types, this is the minimum length.
	HasMinimum bool  `protobuf:"varint,5,opt,name=has_minimum,json=hasMinimum" json:"has_minimum,omitempty"`
	Minimum    int64 `protobuf:"varint,6,opt,name=minimum" json:"minimum,omitempty"`
	// The set of allowed values.  Has type that is the "list" version
	// of the "type" field above (uses the "list" field of AttrValue).
	// If type == "type" or "list(type)" above, then the "type" field
	// of "allowed_values.list" has the set of allowed DataTypes.
	// If type == "string" or "list(string)", then the "s" field of
	// "allowed_values.list" has the set of allowed strings.
	AllowedValues *AttrValue `protobuf:"bytes,7,opt,name=allowed_values,json=allowedValues" json:"allowed_values,omitempty"`
}

func (m *OpDef_AttrDef) Reset()                    { *m = OpDef_AttrDef{} }
func (m *OpDef_AttrDef) String() string            { return proto.CompactTextString(m) }
func (*OpDef_AttrDef) ProtoMessage()               {}
func (*OpDef_AttrDef) Descriptor() ([]byte, []int) { return fileDescriptor10, []int{0, 1} }

func (m *OpDef_AttrDef) GetName() string {
	if m != nil {
		return m.Name
	}
	return ""
}

func (m *OpDef_AttrDef) GetType() string {
	if m != nil {
		return m.Type
	}
	return ""
}

func (m *OpDef_AttrDef) GetDefaultValue() *AttrValue {
	if m != nil {
		return m.DefaultValue
	}
	return nil
}

func (m *OpDef_AttrDef) GetDescription() string {
	if m != nil {
		return m.Description
	}
	return ""
}

func (m *OpDef_AttrDef) GetHasMinimum() bool {
	if m != nil {
		return m.HasMinimum
	}
	return false
}

func (m *OpDef_AttrDef) GetMinimum() int64 {
	if m != nil {
		return m.Minimum
	}
	return 0
}

func (m *OpDef_AttrDef) GetAllowedValues() *AttrValue {
	if m != nil {
		return m.AllowedValues
	}
	return nil
}

// Information about version-dependent deprecation of an op
type OpDeprecation struct {
	// First GraphDef version at which the op is disallowed.
	Version int32 `protobuf:"varint,1,opt,name=version" json:"version,omitempty"`
	// Explanation of why it was deprecated and what to use instead.
	Explanation string `protobuf:"bytes,2,opt,name=explanation" json:"explanation,omitempty"`
}

func (m *OpDeprecation) Reset()                    { *m = OpDeprecation{} }
func (m *OpDeprecation) String() string            { return proto.CompactTextString(m) }
func (*OpDeprecation) ProtoMessage()               {}
func (*OpDeprecation) Descriptor() ([]byte, []int) { return fileDescriptor10, []int{1} }

func (m *OpDeprecation) GetVersion() int32 {
	if m != nil {
		return m.Version
	}
	return 0
}

func (m *OpDeprecation) GetExplanation() string {
	if m != nil {
		return m.Explanation
	}
	return ""
}

// A collection of OpDefs
type OpList struct {
	Op []*OpDef `protobuf:"bytes,1,rep,name=op" json:"op,omitempty"`
}

func (m *OpList) Reset()                    { *m = OpList{} }
func (m *OpList) String() string            { return proto.CompactTextString(m) }
func (*OpList) ProtoMessage()               {}
func (*OpList) Descriptor() ([]byte, []int) { return fileDescriptor10, []int{2} }

func (m *OpList) GetOp() []*OpDef {
	if m != nil {
		return m.Op
	}
	return nil
}

func init() {
	proto.RegisterType((*OpDef)(nil), "tensorflow.OpDef")
	proto.RegisterType((*OpDef_ArgDef)(nil), "tensorflow.OpDef.ArgDef")
	proto.RegisterType((*OpDef_AttrDef)(nil), "tensorflow.OpDef.AttrDef")
	proto.RegisterType((*OpDeprecation)(nil), "tensorflow.OpDeprecation")
	proto.RegisterType((*OpList)(nil), "tensorflow.OpList")
}

func init() { proto.RegisterFile("tensorflow/core/framework/op_def.proto", fileDescriptor10) }

var fileDescriptor10 = []byte{
	// 658 bytes of a gzipped FileDescriptorProto
	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x84, 0x94, 0xdd, 0x6e, 0xd3, 0x30,
	0x18, 0x86, 0x95, 0xfe, 0xf7, 0xcb, 0x5a, 0x31, 0xc3, 0x24, 0x53, 0x0e, 0xd6, 0x4d, 0x0c, 0x55,
	0xa0, 0x35, 0xd2, 0x10, 0x42, 0x82, 0x9d, 0x6c, 0xf4, 0x04, 0x01, 0xda, 0x14, 0x7e, 0x0e, 0x38,
	0x89, 0xbc, 0xd6, 0xc9, 0xac, 0x25, 0xb1, 0x65, 0x3b, 0x1d, 0xe5, 0x0a, 0xb8, 0x39, 0xae, 0x82,
	0x9b, 0xe0, 0x10, 0xd9, 0x4e, 0xd7, 0xb0, 0xb5, 0x70, 0xd4, 0xfa, 0xfb, 0x9e, 0xd7, 0xf1, 0xfb,
	0xfa, 0x07, 0x9e, 0x68, 0x9a, 0x2b, 0x2e, 0xe3, 0x94, 0x5f, 0x07, 0x53, 0x2e, 0x69, 0x10, 0x4b,
	0x92, 0xd1, 0x6b, 0x2e, 0xaf, 0x02, 0x2e, 0xa2, 0x19, 0x8d, 0xc7, 0x42, 0x72, 0xcd, 0x11, 0xac,
	0xb8, 0xc1, 0xd3, 0xcd, 0x1a, 0xa2, 0xb5, 0x8c, 0xe6, 0x24, 0x2d, 0xa8, 0xd3, 0x0d, 0x0e, 0x36,
	0xb3, 0x7a, 0x21, 0xa8, 0x72, 0xd8, 0xfe, 0xcf, 0x36, 0x34, 0xcf, 0xc4, 0x84, 0xc6, 0x08, 0x41,
	0x23, 0x27, 0x19, 0xc5, 0xde, 0xd0, 0x1b, 0x75, 0x43, 0xfb, 0x1f, 0xbd, 0x80, 0x2e, 0xcb, 0x45,
	0xa1, 0x23, 0x22, 0x13, 0x5c, 0x1b, 0xd6, 0x47, 0xfe, 0x11, 0x1e, 0xaf, 0x26, 0x1e, 0x5b, 0xe5,
	0xf8, 0x44, 0x26, 0x13, 0x1a, 0x87, 0x1d, 0x8b, 0x9e, 0xc8, 0x04, 0xbd, 0x04, 0xe0, 0x85, 0x5e,
	0xea, 0xea, 0xff, 0xd1, 0x75, 0x1d, 0x6b, 0x84, 0x87, 0xd0, 0x30, 0x46, 0x70, 0xc3, 0x4a, 0x1e,
	0xae, 0x91, 0x68, 0x2d, 0x8d, 0xc6, 0x62, 0xe8, 0x35, 0xf8, 0x33, 0x2a, 0x24, 0x9d, 0x12, 0xcd,
	0x78, 0x8e, 0x3b, 0x43, 0x6f, 0x9d, 0xea, 0x06, 0x08, 0xab, 0x34, 0xc2, 0xd0, 0x56, 0x45, 0x96,
	0x11, 0xb9, 0xc0, 0x4d, 0x6b, 0x79, 0x39, 0x44, 0x43, 0x33, 0xad, 0x9a, 0x4a, 0x26, 0xec, 0xb4,
	0x2d, 0xdb, 0xad, 0x96, 0xd0, 0x01, 0xf4, 0x99, 0x8a, 0xa6, 0x3c, 0xcb, 0x0a, 0x4d, 0x34, 0x9b,
	0x53, 0x8c, 0x86, 0xde, 0xa8, 0x13, 0xf6, 0x98, 0x7a, 0xb3, 0x2a, 0xa2, 0x3d, 0xd8, 0x62, 0x2a,
	0x22, 0x49, 0x22, 0x69, 0x42, 0x34, 0xc5, 0xf7, 0x2c, 0xe4, 0x33, 0x75, 0xb2, 0x2c, 0xa1, 0x5d,
	0xf0, 0x99, 0x8a, 0x94, 0x26, 0x9a, 0xc6, 0x45, 0x8a, 0xb7, 0x2d, 0x01, 0x4c, 0x7d, 0x2c, 0x2b,
	0xe8, 0x18, 0x06, 0x24, 0x4d, 0xf9, 0xb5, 0x8a, 0x8a, 0x9c, 0xe5, 0x4c, 0x33, 0x92, 0xb2, 0xef,
	0x74, 0x16, 0xd9, 0xb0, 0xf1, 0x7d, 0xcb, 0x63, 0x47, 0x7c, 0xae, 0x02, 0x6f, 0x4d, 0x7f, 0xf0,
	0xcb, 0x83, 0x96, 0x8b, 0x79, 0xed, 0xfe, 0xde, 0x72, 0x5a, 0xbb, 0xeb, 0x74, 0x04, 0x0d, 0x73,
	0x5c, 0x70, 0x7d, 0xe8, 0x8d, 0xfa, 0x47, 0x0f, 0xaa, 0xd9, 0x4e, 0x88, 0x26, 0x9f, 0x16, 0x82,
	0x86, 0x96, 0x40, 0x8f, 0xa0, 0x6b, 0x7e, 0xa3, 0x72, 0x03, 0xcd, 0x4c, 0x1d, 0x53, 0x30, 0x5b,
	0x66, 0x6c, 0xe6, 0x45, 0x76, 0x41, 0xa5, 0x6b, 0xbb, 0xc0, 0xc1, 0x95, 0x2c, 0xf0, 0x18, 0xfa,
	0x56, 0x9d, 0x32, 0xa5, 0x1d, 0xe3, 0x62, 0xdf, 0x32, 0xd5, 0xf7, 0x4c, 0x69, 0x4b, 0xed, 0x40,
	0x8b, 0xa9, 0x48, 0xd2, 0xb8, 0x8c, 0xb2, 0xc9, 0x54, 0x48, 0xe3, 0xc1, 0x8f, 0x1a, 0xb4, 0xcb,
	0x93, 0xb1, 0xd6, 0x26, 0x2a, 0x4d, 0x38, 0x7f, 0x6e, 0xb9, 0xaf, 0xa0, 0x37, 0xa3, 0x31, 0x29,
	0x52, 0xed, 0xae, 0x8d, 0x75, 0xe8, 0x1f, 0xed, 0x54, 0x1d, 0x9a, 0x39, 0xbf, 0x98, 0x66, 0xb8,
	0x55, 0xb2, 0x76, 0x74, 0x3b, 0xb6, 0xc6, 0xdd, 0xd8, 0x76, 0xc1, 0xbf, 0x24, 0x2a, 0xca, 0x58,
	0xce, 0xb2, 0x22, 0xb3, 0x7e, 0x3b, 0x21, 0x5c, 0x12, 0xf5, 0xc1, 0x55, 0xcc, 0xe9, 0x5b, 0x36,
	0x8d, 0xd1, 0x7a, 0xb8, 0x1c, 0xa2, 0x63, 0xe8, 0xdb, 0xed, 0xa4, 0x33, 0xb7, 0x30, 0x85, 0xdb,
	0xff, 0x5a, 0x59, 0xaf, 0x84, 0xed, 0x48, 0xed, 0xbf, 0x83, 0xde, 0x5f, 0x67, 0xde, 0x7c, 0x68,
	0x4e, 0xa5, 0x32, 0xeb, 0x34, 0x91, 0x34, 0xc3, 0xe5, 0xd0, 0xb8, 0xa0, 0xdf, 0x44, 0x4a, 0x72,
	0x52, 0xdd, 0xfc, 0x4a, 0x69, 0xff, 0x19, 0xb4, 0xce, 0x84, 0x09, 0x1f, 0xed, 0x41, 0x8d, 0x0b,
	0xec, 0xd9, 0x6b, 0xb9, 0x7d, 0xe7, 0x5a, 0x86, 0x35, 0x2e, 0x4e, 0x25, 0x60, 0x2e, 0x93, 0x6a,
	0xef, 0xe6, 0xc5, 0x39, 0xf5, 0x2d, 0x76, 0x6e, 0x5e, 0x1c, 0x75, 0xee, 0x7d, 0x9d, 0x24, 0x4c,
	0x5f, 0x16, 0x17, 0xe3, 0x29, 0xcf, 0x82, 0x99, 0xa4, 0x8b, 0xab, 0x60, 0xa5, 0x3a, 0x54, 0x54,
	0xce, 0x59, 0x9e, 0x1c, 0x26, 0x3c, 0x10, 0x57, 0x49, 0xb0, 0xf1, 0x19, 0xfb, 0xed, 0x79, 0x17,
	0x2d, 0xfb, 0x88, 0x3d, 0xff, 0x13, 0x00, 0x00, 0xff, 0xff, 0x1f, 0xae, 0x25, 0x86, 0x4d, 0x05,
	0x00, 0x00,
}
