meta_info_def {
  stripped_op_list {
    op {
      name: "Add"
      input_arg {
        name: "x"
        type_attr: "T"
      }
      input_arg {
        name: "y"
        type_attr: "T"
      }
      output_arg {
        name: "z"
        type_attr: "T"
      }
      attr {
        name: "T"
        type: "type"
        allowed_values {
          list {
            type: DT_BFLOAT16
            type: DT_HALF
            type: DT_FLOAT
            type: DT_DOUBLE
            type: DT_UINT8
            type: DT_INT8
            type: DT_INT16
            type: DT_INT32
            type: DT_INT64
            type: DT_COMPLEX64
            type: DT_COMPLEX128
            type: DT_STRING
          }
        }
      }
    }
    op {
      name: "AddN"
      input_arg {
        name: "inputs"
        type_attr: "T"
        number_attr: "N"
      }
      output_arg {
        name: "sum"
        type_attr: "T"
      }
      attr {
        name: "N"
        type: "int"
        has_minimum: true
        minimum: 1
      }
      attr {
        name: "T"
        type: "type"
        allowed_values {
          list {
            type: DT_FLOAT
            type: DT_DOUBLE
            type: DT_INT32
            type: DT_UINT8
            type: DT_INT16
            type: DT_INT8
            type: DT_COMPLEX64
            type: DT_INT64
            type: DT_QINT8
            type: DT_QUINT8
            type: DT_QINT32
            type: DT_BFLOAT16
            type: DT_UINT16
            type: DT_COMPLEX128
            type: DT_HALF
            type: DT_UINT32
            type: DT_UINT64
            type: DT_VARIANT
          }
        }
      }
      is_aggregate: true
      is_commutative: true
    }
    op {
      name: "ApplyGradientDescent"
      input_arg {
        name: "var"
        type_attr: "T"
        is_ref: true
      }
      input_arg {
        name: "alpha"
        type_attr: "T"
      }
      input_arg {
        name: "delta"
        type_attr: "T"
      }
      output_arg {
        name: "out"
        type_attr: "T"
        is_ref: true
      }
      attr {
        name: "T"
        type: "type"
        allowed_values {
          list {
            type: DT_FLOAT
            type: DT_DOUBLE
            type: DT_INT32
            type: DT_UINT8
            type: DT_INT16
            type: DT_INT8
            type: DT_COMPLEX64
            type: DT_INT64
            type: DT_QINT8
            type: DT_QUINT8
            type: DT_QINT32
            type: DT_BFLOAT16
            type: DT_UINT16
            type: DT_COMPLEX128
            type: DT_HALF
            type: DT_UINT32
            type: DT_UINT64
          }
        }
      }
      attr {
        name: "use_locking"
        type: "bool"
        default_value {
          b: false
        }
      }
    }
    op {
      name: "ArgMax"
      input_arg {
        name: "input"
        type_attr: "T"
      }
      input_arg {
        name: "dimension"
        type_attr: "Tidx"
      }
      output_arg {
        name: "output"
        type_attr: "output_type"
      }
      attr {
        name: "T"
        type: "type"
        allowed_values {
          list {
            type: DT_FLOAT
            type: DT_DOUBLE
            type: DT_INT32
            type: DT_UINT8
            type: DT_INT16
            type: DT_INT8
            type: DT_COMPLEX64
            type: DT_INT64
            type: DT_QINT8
            type: DT_QUINT8
            type: DT_QINT32
            type: DT_BFLOAT16
            type: DT_UINT16
            type: DT_COMPLEX128
            type: DT_HALF
            type: DT_UINT32
            type: DT_UINT64
          }
        }
      }
      attr {
        name: "Tidx"
        type: "type"
        default_value {
          type: DT_INT32
        }
        allowed_values {
          list {
            type: DT_INT32
            type: DT_INT64
          }
        }
      }
      attr {
        name: "output_type"
        type: "type"
        default_value {
          type: DT_INT64
        }
        allowed_values {
          list {
            type: DT_INT32
            type: DT_INT64
          }
        }
      }
    }
    op {
      name: "Assign"
      input_arg {
        name: "ref"
        type_attr: "T"
        is_ref: true
      }
      input_arg {
        name: "value"
        type_attr: "T"
      }
      output_arg {
        name: "output_ref"
        type_attr: "T"
        is_ref: true
      }
      attr {
        name: "T"
        type: "type"
      }
      attr {
        name: "validate_shape"
        type: "bool"
        default_value {
          b: true
        }
      }
      attr {
        name: "use_locking"
        type: "bool"
        default_value {
          b: true
        }
      }
      allows_uninitialized_input: true
    }
    op {
      name: "AssignAdd"
      input_arg {
        name: "ref"
        type_attr: "T"
        is_ref: true
      }
      input_arg {
        name: "value"
        type_attr: "T"
      }
      output_arg {
        name: "output_ref"
        type_attr: "T"
        is_ref: true
      }
      attr {
        name: "T"
        type: "type"
        allowed_values {
          list {
            type: DT_FLOAT
            type: DT_DOUBLE
            type: DT_INT32
            type: DT_UINT8
            type: DT_INT16
            type: DT_INT8
            type: DT_COMPLEX64
            type: DT_INT64
            type: DT_QINT8
            type: DT_QUINT8
            type: DT_QINT32
            type: DT_BFLOAT16
            type: DT_UINT16
            type: DT_COMPLEX128
            type: DT_HALF
            type: DT_UINT32
            type: DT_UINT64
          }
        }
      }
      attr {
        name: "use_locking"
        type: "bool"
        default_value {
          b: false
        }
      }
    }
    op {
      name: "AssignSub"
      input_arg {
        name: "ref"
        type_attr: "T"
        is_ref: true
      }
      input_arg {
        name: "value"
        type_attr: "T"
      }
      output_arg {
        name: "output_ref"
        type_attr: "T"
        is_ref: true
      }
      attr {
        name: "T"
        type: "type"
        allowed_values {
          list {
            type: DT_FLOAT
            type: DT_DOUBLE
            type: DT_INT32
            type: DT_UINT8
            type: DT_INT16
            type: DT_INT8
            type: DT_COMPLEX64
            type: DT_INT64
            type: DT_QINT8
            type: DT_QUINT8
            type: DT_QINT32
            type: DT_BFLOAT16
            type: DT_UINT16
            type: DT_COMPLEX128
            type: DT_HALF
            type: DT_UINT32
            type: DT_UINT64
          }
        }
      }
      attr {
        name: "use_locking"
        type: "bool"
        default_value {
          b: false
        }
      }
    }
    op {
      name: "BroadcastGradientArgs"
      input_arg {
        name: "s0"
        type_attr: "T"
      }
      input_arg {
        name: "s1"
        type_attr: "T"
      }
      output_arg {
        name: "r0"
        type_attr: "T"
      }
      output_arg {
        name: "r1"
        type_attr: "T"
      }
      attr {
        name: "T"
        type: "type"
        default_value {
          type: DT_INT32
        }
        allowed_values {
          list {
            type: DT_INT32
            type: DT_INT64
          }
        }
      }
    }
    op {
      name: "Cast"
      input_arg {
        name: "x"
        type_attr: "SrcT"
      }
      output_arg {
        name: "y"
        type_attr: "DstT"
      }
      attr {
        name: "SrcT"
        type: "type"
      }
      attr {
        name: "DstT"
        type: "type"
      }
    }
    op {
      name: "Const"
      output_arg {
        name: "output"
        type_attr: "dtype"
      }
      attr {
        name: "value"
        type: "tensor"
      }
      attr {
        name: "dtype"
        type: "type"
      }
    }
    op {
      name: "Equal"
      input_arg {
        name: "x"
        type_attr: "T"
      }
      input_arg {
        name: "y"
        type_attr: "T"
      }
      output_arg {
        name: "z"
        type: DT_BOOL
      }
      attr {
        name: "T"
        type: "type"
        allowed_values {
          list {
            type: DT_BFLOAT16
            type: DT_HALF
            type: DT_FLOAT
            type: DT_DOUBLE
            type: DT_UINT8
            type: DT_INT8
            type: DT_INT16
            type: DT_INT32
            type: DT_INT64
            type: DT_COMPLEX64
            type: DT_QUINT8
            type: DT_QINT8
            type: DT_QINT32
            type: DT_STRING
            type: DT_BOOL
            type: DT_COMPLEX128
          }
        }
      }
      is_commutative: true
    }
    op {
      name: "ExpandDims"
      input_arg {
        name: "input"
        type_attr: "T"
      }
      input_arg {
        name: "dim"
        type_attr: "Tdim"
      }
      output_arg {
        name: "output"
        type_attr: "T"
      }
      attr {
        name: "T"
        type: "type"
      }
      attr {
        name: "Tdim"
        type: "type"
        default_value {
          type: DT_INT32
        }
        allowed_values {
          list {
            type: DT_INT32
            type: DT_INT64
          }
        }
      }
    }
    op {
      name: "Fill"
      input_arg {
        name: "dims"
        type_attr: "index_type"
      }
      input_arg {
        name: "value"
        type_attr: "T"
      }
      output_arg {
        name: "output"
        type_attr: "T"
      }
      attr {
        name: "T"
        type: "type"
      }
      attr {
        name: "index_type"
        type: "type"
        default_value {
          type: DT_INT32
        }
        allowed_values {
          list {
            type: DT_INT32
            type: DT_INT64
          }
        }
      }
    }
    op {
      name: "FloorDiv"
      input_arg {
        name: "x"
        type_attr: "T"
      }
      input_arg {
        name: "y"
        type_attr: "T"
      }
      output_arg {
        name: "z"
        type_attr: "T"
      }
      attr {
        name: "T"
        type: "type"
        allowed_values {
          list {
            type: DT_BFLOAT16
            type: DT_HALF
            type: DT_FLOAT
            type: DT_DOUBLE
            type: DT_UINT8
            type: DT_INT8
            type: DT_UINT16
            type: DT_INT16
            type: DT_INT32
            type: DT_INT64
            type: DT_COMPLEX64
            type: DT_COMPLEX128
          }
        }
      }
    }
    op {
      name: "Identity"
      input_arg {
        name: "input"
        type_attr: "T"
      }
      output_arg {
        name: "output"
        type_attr: "T"
      }
      attr {
        name: "T"
        type: "type"
      }
    }
    op {
      name: "IsVariableInitialized"
      input_arg {
        name: "ref"
        type_attr: "dtype"
        is_ref: true
      }
      output_arg {
        name: "is_initialized"
        type: DT_BOOL
      }
      attr {
        name: "dtype"
        type: "type"
      }
      allows_uninitialized_input: true
    }
    op {
      name: "L2Loss"
      input_arg {
        name: "t"
        type_attr: "T"
      }
      output_arg {
        name: "output"
        type_attr: "T"
      }
      attr {
        name: "T"
        type: "type"
        allowed_values {
          list {
            type: DT_HALF
            type: DT_BFLOAT16
            type: DT_FLOAT
            type: DT_DOUBLE
          }
        }
      }
    }
    op {
      name: "MatMul"
      input_arg {
        name: "a"
        type_attr: "T"
      }
      input_arg {
        name: "b"
        type_attr: "T"
      }
      output_arg {
        name: "product"
        type_attr: "T"
      }
      attr {
        name: "transpose_a"
        type: "bool"
        default_value {
          b: false
        }
      }
      attr {
        name: "transpose_b"
        type: "bool"
        default_value {
          b: false
        }
      }
      attr {
        name: "T"
        type: "type"
        allowed_values {
          list {
            type: DT_BFLOAT16
            type: DT_HALF
            type: DT_FLOAT
            type: DT_DOUBLE
            type: DT_INT32
            type: DT_COMPLEX64
            type: DT_COMPLEX128
          }
        }
      }
    }
    op {
      name: "Maximum"
      input_arg {
        name: "x"
        type_attr: "T"
      }
      input_arg {
        name: "y"
        type_attr: "T"
      }
      output_arg {
        name: "z"
        type_attr: "T"
      }
      attr {
        name: "T"
        type: "type"
        allowed_values {
          list {
            type: DT_BFLOAT16
            type: DT_HALF
            type: DT_FLOAT
            type: DT_DOUBLE
            type: DT_INT32
            type: DT_INT64
          }
        }
      }
      is_commutative: true
    }
    op {
      name: "Mean"
      input_arg {
        name: "input"
        type_attr: "T"
      }
      input_arg {
        name: "reduction_indices"
        type_attr: "Tidx"
      }
      output_arg {
        name: "output"
        type_attr: "T"
      }
      attr {
        name: "keep_dims"
        type: "bool"
        default_value {
          b: false
        }
      }
      attr {
        name: "T"
        type: "type"
        allowed_values {
          list {
            type: DT_FLOAT
            type: DT_DOUBLE
            type: DT_INT32
            type: DT_UINT8
            type: DT_INT16
            type: DT_INT8
            type: DT_COMPLEX64
            type: DT_INT64
            type: DT_QINT8
            type: DT_QUINT8
            type: DT_QINT32
            type: DT_BFLOAT16
            type: DT_UINT16
            type: DT_COMPLEX128
            type: DT_HALF
            type: DT_UINT32
            type: DT_UINT64
          }
        }
      }
      attr {
        name: "Tidx"
        type: "type"
        default_value {
          type: DT_INT32
        }
        allowed_values {
          list {
            type: DT_INT32
            type: DT_INT64
          }
        }
      }
    }
    op {
      name: "Merge"
      input_arg {
        name: "inputs"
        type_attr: "T"
        number_attr: "N"
      }
      output_arg {
        name: "output"
        type_attr: "T"
      }
      output_arg {
        name: "value_index"
        type: DT_INT32
      }
      attr {
        name: "T"
        type: "type"
      }
      attr {
        name: "N"
        type: "int"
        has_minimum: true
        minimum: 1
      }
    }
    op {
      name: "Minimum"
      input_arg {
        name: "x"
        type_attr: "T"
      }
      input_arg {
        name: "y"
        type_attr: "T"
      }
      output_arg {
        name: "z"
        type_attr: "T"
      }
      attr {
        name: "T"
        type: "type"
        allowed_values {
          list {
            type: DT_BFLOAT16
            type: DT_HALF
            type: DT_FLOAT
            type: DT_DOUBLE
            type: DT_INT32
            type: DT_INT64
          }
        }
      }
      is_commutative: true
    }
    op {
      name: "Mul"
      input_arg {
        name: "x"
        type_attr: "T"
      }
      input_arg {
        name: "y"
        type_attr: "T"
      }
      output_arg {
        name: "z"
        type_attr: "T"
      }
      attr {
        name: "T"
        type: "type"
        allowed_values {
          list {
            type: DT_BFLOAT16
            type: DT_HALF
            type: DT_FLOAT
            type: DT_DOUBLE
            type: DT_UINT8
            type: DT_INT8
            type: DT_UINT16
            type: DT_INT16
            type: DT_INT32
            type: DT_INT64
            type: DT_COMPLEX64
            type: DT_COMPLEX128
          }
        }
      }
      is_commutative: true
    }
    op {
      name: "NoOp"
    }
    op {
      name: "Placeholder"
      output_arg {
        name: "output"
        type_attr: "dtype"
      }
      attr {
        name: "dtype"
        type: "type"
      }
      attr {
        name: "shape"
        type: "shape"
        default_value {
          shape {
            unknown_rank: true
          }
        }
      }
    }
    op {
      name: "Pow"
      input_arg {
        name: "x"
        type_attr: "T"
      }
      input_arg {
        name: "y"
        type_attr: "T"
      }
      output_arg {
        name: "z"
        type_attr: "T"
      }
      attr {
        name: "T"
        type: "type"
        allowed_values {
          list {
            type: DT_BFLOAT16
            type: DT_FLOAT
            type: DT_HALF
            type: DT_DOUBLE
            type: DT_INT32
            type: DT_INT64
            type: DT_COMPLEX64
            type: DT_COMPLEX128
          }
        }
      }
    }
    op {
      name: "PreventGradient"
      input_arg {
        name: "input"
        type_attr: "T"
      }
      output_arg {
        name: "output"
        type_attr: "T"
      }
      attr {
        name: "T"
        type: "type"
      }
      attr {
        name: "message"
        type: "string"
        default_value {
          s: ""
        }
      }
    }
    op {
      name: "Prod"
      input_arg {
        name: "input"
        type_attr: "T"
      }
      input_arg {
        name: "reduction_indices"
        type_attr: "Tidx"
      }
      output_arg {
        name: "output"
        type_attr: "T"
      }
      attr {
        name: "keep_dims"
        type: "bool"
        default_value {
          b: false
        }
      }
      attr {
        name: "T"
        type: "type"
        allowed_values {
          list {
            type: DT_FLOAT
            type: DT_DOUBLE
            type: DT_INT32
            type: DT_UINT8
            type: DT_INT16
            type: DT_INT8
            type: DT_COMPLEX64
            type: DT_INT64
            type: DT_QINT8
            type: DT_QUINT8
            type: DT_QINT32
            type: DT_BFLOAT16
            type: DT_UINT16
            type: DT_COMPLEX128
            type: DT_HALF
            type: DT_UINT32
            type: DT_UINT64
          }
        }
      }
      attr {
        name: "Tidx"
        type: "type"
        default_value {
          type: DT_INT32
        }
        allowed_values {
          list {
            type: DT_INT32
            type: DT_INT64
          }
        }
      }
    }
    op {
      name: "RealDiv"
      input_arg {
        name: "x"
        type_attr: "T"
      }
      input_arg {
        name: "y"
        type_attr: "T"
      }
      output_arg {
        name: "z"
        type_attr: "T"
      }
      attr {
        name: "T"
        type: "type"
        allowed_values {
          list {
            type: DT_BFLOAT16
            type: DT_HALF
            type: DT_FLOAT
            type: DT_DOUBLE
            type: DT_UINT8
            type: DT_INT8
            type: DT_UINT16
            type: DT_INT16
            type: DT_INT32
            type: DT_INT64
            type: DT_COMPLEX64
            type: DT_COMPLEX128
          }
        }
      }
    }
    op {
      name: "RefSwitch"
      input_arg {
        name: "data"
        type_attr: "T"
        is_ref: true
      }
      input_arg {
        name: "pred"
        type: DT_BOOL
      }
      output_arg {
        name: "output_false"
        type_attr: "T"
        is_ref: true
      }
      output_arg {
        name: "output_true"
        type_attr: "T"
        is_ref: true
      }
      attr {
        name: "T"
        type: "type"
      }
      allows_uninitialized_input: true
    }
    op {
      name: "Relu"
      input_arg {
        name: "features"
        type_attr: "T"
      }
      output_arg {
        name: "activations"
        type_attr: "T"
      }
      attr {
        name: "T"
        type: "type"
        allowed_values {
          list {
            type: DT_FLOAT
            type: DT_DOUBLE
            type: DT_INT32
            type: DT_UINT8
            type: DT_INT16
            type: DT_INT8
            type: DT_INT64
            type: DT_BFLOAT16
            type: DT_UINT16
            type: DT_HALF
            type: DT_UINT32
            type: DT_UINT64
          }
        }
      }
    }
    op {
      name: "ReluGrad"
      input_arg {
        name: "gradients"
        type_attr: "T"
      }
      input_arg {
        name: "features"
        type_attr: "T"
      }
      output_arg {
        name: "backprops"
        type_attr: "T"
      }
      attr {
        name: "T"
        type: "type"
        allowed_values {
          list {
            type: DT_FLOAT
            type: DT_DOUBLE
            type: DT_INT32
            type: DT_UINT8
            type: DT_INT16
            type: DT_INT8
            type: DT_INT64
            type: DT_BFLOAT16
            type: DT_UINT16
            type: DT_HALF
            type: DT_UINT32
            type: DT_UINT64
          }
        }
      }
    }
    op {
      name: "Reshape"
      input_arg {
        name: "tensor"
        type_attr: "T"
      }
      input_arg {
        name: "shape"
        type_attr: "Tshape"
      }
      output_arg {
        name: "output"
        type_attr: "T"
      }
      attr {
        name: "T"
        type: "type"
      }
      attr {
        name: "Tshape"
        type: "type"
        default_value {
          type: DT_INT32
        }
        allowed_values {
          list {
            type: DT_INT32
            type: DT_INT64
          }
        }
      }
    }
    op {
      name: "RestoreV2"
      input_arg {
        name: "prefix"
        type: DT_STRING
      }
      input_arg {
        name: "tensor_names"
        type: DT_STRING
      }
      input_arg {
        name: "shape_and_slices"
        type: DT_STRING
      }
      output_arg {
        name: "tensors"
        type_list_attr: "dtypes"
      }
      attr {
        name: "dtypes"
        type: "list(type)"
        has_minimum: true
        minimum: 1
      }
      is_stateful: true
    }
    op {
      name: "SaveV2"
      input_arg {
        name: "prefix"
        type: DT_STRING
      }
      input_arg {
        name: "tensor_names"
        type: DT_STRING
      }
      input_arg {
        name: "shape_and_slices"
        type: DT_STRING
      }
      input_arg {
        name: "tensors"
        type_list_attr: "dtypes"
      }
      attr {
        name: "dtypes"
        type: "list(type)"
        has_minimum: true
        minimum: 1
      }
      is_stateful: true
    }
    op {
      name: "Shape"
      input_arg {
        name: "input"
        type_attr: "T"
      }
      output_arg {
        name: "output"
        type_attr: "out_type"
      }
      attr {
        name: "T"
        type: "type"
      }
      attr {
        name: "out_type"
        type: "type"
        default_value {
          type: DT_INT32
        }
        allowed_values {
          list {
            type: DT_INT32
            type: DT_INT64
          }
        }
      }
    }
    op {
      name: "SparseSoftmaxCrossEntropyWithLogits"
      input_arg {
        name: "features"
        type_attr: "T"
      }
      input_arg {
        name: "labels"
        type_attr: "Tlabels"
      }
      output_arg {
        name: "loss"
        type_attr: "T"
      }
      output_arg {
        name: "backprop"
        type_attr: "T"
      }
      attr {
        name: "T"
        type: "type"
        allowed_values {
          list {
            type: DT_HALF
            type: DT_BFLOAT16
            type: DT_FLOAT
            type: DT_DOUBLE
          }
        }
      }
      attr {
        name: "Tlabels"
        type: "type"
        default_value {
          type: DT_INT64
        }
        allowed_values {
          list {
            type: DT_INT32
            type: DT_INT64
          }
        }
      }
    }
    op {
      name: "Sub"
      input_arg {
        name: "x"
        type_attr: "T"
      }
      input_arg {
        name: "y"
        type_attr: "T"
      }
      output_arg {
        name: "z"
        type_attr: "T"
      }
      attr {
        name: "T"
        type: "type"
        allowed_values {
          list {
            type: DT_BFLOAT16
            type: DT_HALF
            type: DT_FLOAT
            type: DT_DOUBLE
            type: DT_UINT8
            type: DT_INT8
            type: DT_UINT16
            type: DT_INT16
            type: DT_INT32
            type: DT_INT64
            type: DT_COMPLEX64
            type: DT_COMPLEX128
          }
        }
      }
    }
    op {
      name: "Sum"
      input_arg {
        name: "input"
        type_attr: "T"
      }
      input_arg {
        name: "reduction_indices"
        type_attr: "Tidx"
      }
      output_arg {
        name: "output"
        type_attr: "T"
      }
      attr {
        name: "keep_dims"
        type: "bool"
        default_value {
          b: false
        }
      }
      attr {
        name: "T"
        type: "type"
        allowed_values {
          list {
            type: DT_FLOAT
            type: DT_DOUBLE
            type: DT_INT32
            type: DT_UINT8
            type: DT_INT16
            type: DT_INT8
            type: DT_COMPLEX64
            type: DT_INT64
            type: DT_QINT8
            type: DT_QUINT8
            type: DT_QINT32
            type: DT_BFLOAT16
            type: DT_UINT16
            type: DT_COMPLEX128
            type: DT_HALF
            type: DT_UINT32
            type: DT_UINT64
          }
        }
      }
      attr {
        name: "Tidx"
        type: "type"
        default_value {
          type: DT_INT32
        }
        allowed_values {
          list {
            type: DT_INT32
            type: DT_INT64
          }
        }
      }
    }
    op {
      name: "Switch"
      input_arg {
        name: "data"
        type_attr: "T"
      }
      input_arg {
        name: "pred"
        type: DT_BOOL
      }
      output_arg {
        name: "output_false"
        type_attr: "T"
      }
      output_arg {
        name: "output_true"
        type_attr: "T"
      }
      attr {
        name: "T"
        type: "type"
      }
    }
    op {
      name: "Tile"
      input_arg {
        name: "input"
        type_attr: "T"
      }
      input_arg {
        name: "multiples"
        type_attr: "Tmultiples"
      }
      output_arg {
        name: "output"
        type_attr: "T"
      }
      attr {
        name: "T"
        type: "type"
      }
      attr {
        name: "Tmultiples"
        type: "type"
        default_value {
          type: DT_INT32
        }
        allowed_values {
          list {
            type: DT_INT32
            type: DT_INT64
          }
        }
      }
    }
    op {
      name: "TruncatedNormal"
      input_arg {
        name: "shape"
        type_attr: "T"
      }
      output_arg {
        name: "output"
        type_attr: "dtype"
      }
      attr {
        name: "seed"
        type: "int"
        default_value {
          i: 0
        }
      }
      attr {
        name: "seed2"
        type: "int"
        default_value {
          i: 0
        }
      }
      attr {
        name: "dtype"
        type: "type"
        allowed_values {
          list {
            type: DT_HALF
            type: DT_BFLOAT16
            type: DT_FLOAT
            type: DT_DOUBLE
          }
        }
      }
      attr {
        name: "T"
        type: "type"
        allowed_values {
          list {
            type: DT_INT32
            type: DT_INT64
          }
        }
      }
      is_stateful: true
    }
    op {
      name: "VariableV2"
      output_arg {
        name: "ref"
        type_attr: "dtype"
        is_ref: true
      }
      attr {
        name: "shape"
        type: "shape"
      }
      attr {
        name: "dtype"
        type: "type"
      }
      attr {
        name: "container"
        type: "string"
        default_value {
          s: ""
        }
      }
      attr {
        name: "shared_name"
        type: "string"
        default_value {
          s: ""
        }
      }
      is_stateful: true
    }
    op {
      name: "ZerosLike"
      input_arg {
        name: "x"
        type_attr: "T"
      }
      output_arg {
        name: "y"
        type_attr: "T"
      }
      attr {
        name: "T"
        type: "type"
      }
    }
  }
  tensorflow_version: "1.8.0"
  tensorflow_git_version: "v1.8.0-0-g93bc2e2072"
}
graph_def {
  node {
    name: "x-input"
    op: "Placeholder"
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
            dim {
              size: -1
            }
            dim {
              size: 784
            }
          }
        }
      }
    }
    attr {
      key: "dtype"
      value {
        type: DT_FLOAT
      }
    }
    attr {
      key: "shape"
      value {
        shape {
          dim {
            size: -1
          }
          dim {
            size: 784
          }
        }
      }
    }
  }
  node {
    name: "layer1/weights/Initializer/truncated_normal/shape"
    op: "Const"
    attr {
      key: "_class"
      value {
        list {
          s: "loc:@layer1/weights"
        }
      }
    }
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
            dim {
              size: 2
            }
          }
        }
      }
    }
    attr {
      key: "dtype"
      value {
        type: DT_INT32
      }
    }
    attr {
      key: "value"
      value {
        tensor {
          dtype: DT_INT32
          tensor_shape {
            dim {
              size: 2
            }
          }
          tensor_content: "\020\003\000\000\364\001\000\000"
        }
      }
    }
  }
  node {
    name: "layer1/weights/Initializer/truncated_normal/mean"
    op: "Const"
    attr {
      key: "_class"
      value {
        list {
          s: "loc:@layer1/weights"
        }
      }
    }
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
          }
        }
      }
    }
    attr {
      key: "dtype"
      value {
        type: DT_FLOAT
      }
    }
    attr {
      key: "value"
      value {
        tensor {
          dtype: DT_FLOAT
          tensor_shape {
          }
          float_val: 0.0
        }
      }
    }
  }
  node {
    name: "layer1/weights/Initializer/truncated_normal/stddev"
    op: "Const"
    attr {
      key: "_class"
      value {
        list {
          s: "loc:@layer1/weights"
        }
      }
    }
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
          }
        }
      }
    }
    attr {
      key: "dtype"
      value {
        type: DT_FLOAT
      }
    }
    attr {
      key: "value"
      value {
        tensor {
          dtype: DT_FLOAT
          tensor_shape {
          }
          float_val: 0.10000000149
        }
      }
    }
  }
  node {
    name: "layer1/weights/Initializer/truncated_normal/TruncatedNormal"
    op: "TruncatedNormal"
    input: "layer1/weights/Initializer/truncated_normal/shape"
    attr {
      key: "T"
      value {
        type: DT_INT32
      }
    }
    attr {
      key: "_class"
      value {
        list {
          s: "loc:@layer1/weights"
        }
      }
    }
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
            dim {
              size: 784
            }
            dim {
              size: 500
            }
          }
        }
      }
    }
    attr {
      key: "dtype"
      value {
        type: DT_FLOAT
      }
    }
    attr {
      key: "seed"
      value {
        i: 0
      }
    }
    attr {
      key: "seed2"
      value {
        i: 0
      }
    }
  }
  node {
    name: "layer1/weights/Initializer/truncated_normal/mul"
    op: "Mul"
    input: "layer1/weights/Initializer/truncated_normal/TruncatedNormal"
    input: "layer1/weights/Initializer/truncated_normal/stddev"
    attr {
      key: "T"
      value {
        type: DT_FLOAT
      }
    }
    attr {
      key: "_class"
      value {
        list {
          s: "loc:@layer1/weights"
        }
      }
    }
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
            dim {
              size: 784
            }
            dim {
              size: 500
            }
          }
        }
      }
    }
  }
  node {
    name: "layer1/weights/Initializer/truncated_normal"
    op: "Add"
    input: "layer1/weights/Initializer/truncated_normal/mul"
    input: "layer1/weights/Initializer/truncated_normal/mean"
    attr {
      key: "T"
      value {
        type: DT_FLOAT
      }
    }
    attr {
      key: "_class"
      value {
        list {
          s: "loc:@layer1/weights"
        }
      }
    }
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
            dim {
              size: 784
            }
            dim {
              size: 500
            }
          }
        }
      }
    }
  }
  node {
    name: "layer1/weights"
    op: "VariableV2"
    attr {
      key: "_class"
      value {
        list {
          s: "loc:@layer1/weights"
        }
      }
    }
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
            dim {
              size: 784
            }
            dim {
              size: 500
            }
          }
        }
      }
    }
    attr {
      key: "container"
      value {
        s: ""
      }
    }
    attr {
      key: "dtype"
      value {
        type: DT_FLOAT
      }
    }
    attr {
      key: "shape"
      value {
        shape {
          dim {
            size: 784
          }
          dim {
            size: 500
          }
        }
      }
    }
    attr {
      key: "shared_name"
      value {
        s: ""
      }
    }
  }
  node {
    name: "layer1/weights/Assign"
    op: "Assign"
    input: "layer1/weights"
    input: "layer1/weights/Initializer/truncated_normal"
    attr {
      key: "T"
      value {
        type: DT_FLOAT
      }
    }
    attr {
      key: "_class"
      value {
        list {
          s: "loc:@layer1/weights"
        }
      }
    }
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
            dim {
              size: 784
            }
            dim {
              size: 500
            }
          }
        }
      }
    }
    attr {
      key: "use_locking"
      value {
        b: true
      }
    }
    attr {
      key: "validate_shape"
      value {
        b: true
      }
    }
  }
  node {
    name: "layer1/weights/read"
    op: "Identity"
    input: "layer1/weights"
    attr {
      key: "T"
      value {
        type: DT_FLOAT
      }
    }
    attr {
      key: "_class"
      value {
        list {
          s: "loc:@layer1/weights"
        }
      }
    }
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
            dim {
              size: 784
            }
            dim {
              size: 500
            }
          }
        }
      }
    }
  }
  node {
    name: "layer1/biases/Initializer/Const"
    op: "Const"
    attr {
      key: "_class"
      value {
        list {
          s: "loc:@layer1/biases"
        }
      }
    }
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
            dim {
              size: 500
            }
          }
        }
      }
    }
    attr {
      key: "dtype"
      value {
        type: DT_FLOAT
      }
    }
    attr {
      key: "value"
      value {
        tensor {
          dtype: DT_FLOAT
          tensor_shape {
            dim {
              size: 500
            }
          }
          float_val: 0.10000000149
        }
      }
    }
  }
  node {
    name: "layer1/biases"
    op: "VariableV2"
    attr {
      key: "_class"
      value {
        list {
          s: "loc:@layer1/biases"
        }
      }
    }
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
            dim {
              size: 500
            }
          }
        }
      }
    }
    attr {
      key: "container"
      value {
        s: ""
      }
    }
    attr {
      key: "dtype"
      value {
        type: DT_FLOAT
      }
    }
    attr {
      key: "shape"
      value {
        shape {
          dim {
            size: 500
          }
        }
      }
    }
    attr {
      key: "shared_name"
      value {
        s: ""
      }
    }
  }
  node {
    name: "layer1/biases/Assign"
    op: "Assign"
    input: "layer1/biases"
    input: "layer1/biases/Initializer/Const"
    attr {
      key: "T"
      value {
        type: DT_FLOAT
      }
    }
    attr {
      key: "_class"
      value {
        list {
          s: "loc:@layer1/biases"
        }
      }
    }
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
            dim {
              size: 500
            }
          }
        }
      }
    }
    attr {
      key: "use_locking"
      value {
        b: true
      }
    }
    attr {
      key: "validate_shape"
      value {
        b: true
      }
    }
  }
  node {
    name: "layer1/biases/read"
    op: "Identity"
    input: "layer1/biases"
    attr {
      key: "T"
      value {
        type: DT_FLOAT
      }
    }
    attr {
      key: "_class"
      value {
        list {
          s: "loc:@layer1/biases"
        }
      }
    }
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
            dim {
              size: 500
            }
          }
        }
      }
    }
  }
  node {
    name: "layer1/MatMul"
    op: "MatMul"
    input: "x-input"
    input: "layer1/weights/read"
    attr {
      key: "T"
      value {
        type: DT_FLOAT
      }
    }
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
            dim {
              size: -1
            }
            dim {
              size: 500
            }
          }
        }
      }
    }
    attr {
      key: "transpose_a"
      value {
        b: false
      }
    }
    attr {
      key: "transpose_b"
      value {
        b: false
      }
    }
  }
  node {
    name: "layer1/add"
    op: "Add"
    input: "layer1/MatMul"
    input: "layer1/biases/read"
    attr {
      key: "T"
      value {
        type: DT_FLOAT
      }
    }
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
            dim {
              size: -1
            }
            dim {
              size: 500
            }
          }
        }
      }
    }
  }
  node {
    name: "layer1/Relu"
    op: "Relu"
    input: "layer1/add"
    attr {
      key: "T"
      value {
        type: DT_FLOAT
      }
    }
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
            dim {
              size: -1
            }
            dim {
              size: 500
            }
          }
        }
      }
    }
  }
  node {
    name: "layer2/weights/Initializer/truncated_normal/shape"
    op: "Const"
    attr {
      key: "_class"
      value {
        list {
          s: "loc:@layer2/weights"
        }
      }
    }
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
            dim {
              size: 2
            }
          }
        }
      }
    }
    attr {
      key: "dtype"
      value {
        type: DT_INT32
      }
    }
    attr {
      key: "value"
      value {
        tensor {
          dtype: DT_INT32
          tensor_shape {
            dim {
              size: 2
            }
          }
          tensor_content: "\364\001\000\000\n\000\000\000"
        }
      }
    }
  }
  node {
    name: "layer2/weights/Initializer/truncated_normal/mean"
    op: "Const"
    attr {
      key: "_class"
      value {
        list {
          s: "loc:@layer2/weights"
        }
      }
    }
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
          }
        }
      }
    }
    attr {
      key: "dtype"
      value {
        type: DT_FLOAT
      }
    }
    attr {
      key: "value"
      value {
        tensor {
          dtype: DT_FLOAT
          tensor_shape {
          }
          float_val: 0.0
        }
      }
    }
  }
  node {
    name: "layer2/weights/Initializer/truncated_normal/stddev"
    op: "Const"
    attr {
      key: "_class"
      value {
        list {
          s: "loc:@layer2/weights"
        }
      }
    }
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
          }
        }
      }
    }
    attr {
      key: "dtype"
      value {
        type: DT_FLOAT
      }
    }
    attr {
      key: "value"
      value {
        tensor {
          dtype: DT_FLOAT
          tensor_shape {
          }
          float_val: 0.10000000149
        }
      }
    }
  }
  node {
    name: "layer2/weights/Initializer/truncated_normal/TruncatedNormal"
    op: "TruncatedNormal"
    input: "layer2/weights/Initializer/truncated_normal/shape"
    attr {
      key: "T"
      value {
        type: DT_INT32
      }
    }
    attr {
      key: "_class"
      value {
        list {
          s: "loc:@layer2/weights"
        }
      }
    }
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
            dim {
              size: 500
            }
            dim {
              size: 10
            }
          }
        }
      }
    }
    attr {
      key: "dtype"
      value {
        type: DT_FLOAT
      }
    }
    attr {
      key: "seed"
      value {
        i: 0
      }
    }
    attr {
      key: "seed2"
      value {
        i: 0
      }
    }
  }
  node {
    name: "layer2/weights/Initializer/truncated_normal/mul"
    op: "Mul"
    input: "layer2/weights/Initializer/truncated_normal/TruncatedNormal"
    input: "layer2/weights/Initializer/truncated_normal/stddev"
    attr {
      key: "T"
      value {
        type: DT_FLOAT
      }
    }
    attr {
      key: "_class"
      value {
        list {
          s: "loc:@layer2/weights"
        }
      }
    }
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
            dim {
              size: 500
            }
            dim {
              size: 10
            }
          }
        }
      }
    }
  }
  node {
    name: "layer2/weights/Initializer/truncated_normal"
    op: "Add"
    input: "layer2/weights/Initializer/truncated_normal/mul"
    input: "layer2/weights/Initializer/truncated_normal/mean"
    attr {
      key: "T"
      value {
        type: DT_FLOAT
      }
    }
    attr {
      key: "_class"
      value {
        list {
          s: "loc:@layer2/weights"
        }
      }
    }
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
            dim {
              size: 500
            }
            dim {
              size: 10
            }
          }
        }
      }
    }
  }
  node {
    name: "layer2/weights"
    op: "VariableV2"
    attr {
      key: "_class"
      value {
        list {
          s: "loc:@layer2/weights"
        }
      }
    }
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
            dim {
              size: 500
            }
            dim {
              size: 10
            }
          }
        }
      }
    }
    attr {
      key: "container"
      value {
        s: ""
      }
    }
    attr {
      key: "dtype"
      value {
        type: DT_FLOAT
      }
    }
    attr {
      key: "shape"
      value {
        shape {
          dim {
            size: 500
          }
          dim {
            size: 10
          }
        }
      }
    }
    attr {
      key: "shared_name"
      value {
        s: ""
      }
    }
  }
  node {
    name: "layer2/weights/Assign"
    op: "Assign"
    input: "layer2/weights"
    input: "layer2/weights/Initializer/truncated_normal"
    attr {
      key: "T"
      value {
        type: DT_FLOAT
      }
    }
    attr {
      key: "_class"
      value {
        list {
          s: "loc:@layer2/weights"
        }
      }
    }
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
            dim {
              size: 500
            }
            dim {
              size: 10
            }
          }
        }
      }
    }
    attr {
      key: "use_locking"
      value {
        b: true
      }
    }
    attr {
      key: "validate_shape"
      value {
        b: true
      }
    }
  }
  node {
    name: "layer2/weights/read"
    op: "Identity"
    input: "layer2/weights"
    attr {
      key: "T"
      value {
        type: DT_FLOAT
      }
    }
    attr {
      key: "_class"
      value {
        list {
          s: "loc:@layer2/weights"
        }
      }
    }
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
            dim {
              size: 500
            }
            dim {
              size: 10
            }
          }
        }
      }
    }
  }
  node {
    name: "layer2/biases/Initializer/Const"
    op: "Const"
    attr {
      key: "_class"
      value {
        list {
          s: "loc:@layer2/biases"
        }
      }
    }
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
            dim {
              size: 10
            }
          }
        }
      }
    }
    attr {
      key: "dtype"
      value {
        type: DT_FLOAT
      }
    }
    attr {
      key: "value"
      value {
        tensor {
          dtype: DT_FLOAT
          tensor_shape {
            dim {
              size: 10
            }
          }
          float_val: 0.10000000149
        }
      }
    }
  }
  node {
    name: "layer2/biases"
    op: "VariableV2"
    attr {
      key: "_class"
      value {
        list {
          s: "loc:@layer2/biases"
        }
      }
    }
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
            dim {
              size: 10
            }
          }
        }
      }
    }
    attr {
      key: "container"
      value {
        s: ""
      }
    }
    attr {
      key: "dtype"
      value {
        type: DT_FLOAT
      }
    }
    attr {
      key: "shape"
      value {
        shape {
          dim {
            size: 10
          }
        }
      }
    }
    attr {
      key: "shared_name"
      value {
        s: ""
      }
    }
  }
  node {
    name: "layer2/biases/Assign"
    op: "Assign"
    input: "layer2/biases"
    input: "layer2/biases/Initializer/Const"
    attr {
      key: "T"
      value {
        type: DT_FLOAT
      }
    }
    attr {
      key: "_class"
      value {
        list {
          s: "loc:@layer2/biases"
        }
      }
    }
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
            dim {
              size: 10
            }
          }
        }
      }
    }
    attr {
      key: "use_locking"
      value {
        b: true
      }
    }
    attr {
      key: "validate_shape"
      value {
        b: true
      }
    }
  }
  node {
    name: "layer2/biases/read"
    op: "Identity"
    input: "layer2/biases"
    attr {
      key: "T"
      value {
        type: DT_FLOAT
      }
    }
    attr {
      key: "_class"
      value {
        list {
          s: "loc:@layer2/biases"
        }
      }
    }
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
            dim {
              size: 10
            }
          }
        }
      }
    }
  }
  node {
    name: "layer2/MatMul"
    op: "MatMul"
    input: "layer1/Relu"
    input: "layer2/weights/read"
    attr {
      key: "T"
      value {
        type: DT_FLOAT
      }
    }
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
            dim {
              size: -1
            }
            dim {
              size: 10
            }
          }
        }
      }
    }
    attr {
      key: "transpose_a"
      value {
        b: false
      }
    }
    attr {
      key: "transpose_b"
      value {
        b: false
      }
    }
  }
  node {
    name: "layer2/add"
    op: "Add"
    input: "layer2/MatMul"
    input: "layer2/biases/read"
    attr {
      key: "T"
      value {
        type: DT_FLOAT
      }
    }
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
            dim {
              size: -1
            }
            dim {
              size: 10
            }
          }
        }
      }
    }
  }
  node {
    name: "layer1_1/MatMul"
    op: "MatMul"
    input: "x-input"
    input: "layer1/weights/read"
    attr {
      key: "T"
      value {
        type: DT_FLOAT
      }
    }
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
            dim {
              size: -1
            }
            dim {
              size: 500
            }
          }
        }
      }
    }
    attr {
      key: "transpose_a"
      value {
        b: false
      }
    }
    attr {
      key: "transpose_b"
      value {
        b: false
      }
    }
  }
  node {
    name: "layer1_1/add"
    op: "Add"
    input: "layer1_1/MatMul"
    input: "layer1/biases/read"
    attr {
      key: "T"
      value {
        type: DT_FLOAT
      }
    }
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
            dim {
              size: -1
            }
            dim {
              size: 500
            }
          }
        }
      }
    }
  }
  node {
    name: "layer1_1/Relu"
    op: "Relu"
    input: "layer1_1/add"
    attr {
      key: "T"
      value {
        type: DT_FLOAT
      }
    }
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
            dim {
              size: -1
            }
            dim {
              size: 500
            }
          }
        }
      }
    }
  }
  node {
    name: "layer2_1/MatMul"
    op: "MatMul"
    input: "layer1_1/Relu"
    input: "layer2/weights/read"
    attr {
      key: "T"
      value {
        type: DT_FLOAT
      }
    }
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
            dim {
              size: -1
            }
            dim {
              size: 10
            }
          }
        }
      }
    }
    attr {
      key: "transpose_a"
      value {
        b: false
      }
    }
    attr {
      key: "transpose_b"
      value {
        b: false
      }
    }
  }
  node {
    name: "layer2_1/add"
    op: "Add"
    input: "layer2_1/MatMul"
    input: "layer2/biases/read"
    attr {
      key: "T"
      value {
        type: DT_FLOAT
      }
    }
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
            dim {
              size: -1
            }
            dim {
              size: 10
            }
          }
        }
      }
    }
  }
  node {
    name: "Variable/initial_value"
    op: "Const"
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
          }
        }
      }
    }
    attr {
      key: "dtype"
      value {
        type: DT_INT32
      }
    }
    attr {
      key: "value"
      value {
        tensor {
          dtype: DT_INT32
          tensor_shape {
          }
          int_val: 0
        }
      }
    }
  }
  node {
    name: "Variable"
    op: "VariableV2"
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
          }
        }
      }
    }
    attr {
      key: "container"
      value {
        s: ""
      }
    }
    attr {
      key: "dtype"
      value {
        type: DT_INT32
      }
    }
    attr {
      key: "shape"
      value {
        shape {
        }
      }
    }
    attr {
      key: "shared_name"
      value {
        s: ""
      }
    }
  }
  node {
    name: "Variable/Assign"
    op: "Assign"
    input: "Variable"
    input: "Variable/initial_value"
    attr {
      key: "T"
      value {
        type: DT_INT32
      }
    }
    attr {
      key: "_class"
      value {
        list {
          s: "loc:@Variable"
        }
      }
    }
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
          }
        }
      }
    }
    attr {
      key: "use_locking"
      value {
        b: true
      }
    }
    attr {
      key: "validate_shape"
      value {
        b: true
      }
    }
  }
  node {
    name: "Variable/read"
    op: "Identity"
    input: "Variable"
    attr {
      key: "T"
      value {
        type: DT_INT32
      }
    }
    attr {
      key: "_class"
      value {
        list {
          s: "loc:@Variable"
        }
      }
    }
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
          }
        }
      }
    }
  }
  node {
    name: "IsVariableInitialized"
    op: "IsVariableInitialized"
    input: "layer1/weights"
    attr {
      key: "_class"
      value {
        list {
          s: "loc:@layer1/weights"
        }
      }
    }
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
          }
        }
      }
    }
    attr {
      key: "dtype"
      value {
        type: DT_FLOAT
      }
    }
  }
  node {
    name: "cond/Switch"
    op: "Switch"
    input: "IsVariableInitialized"
    input: "IsVariableInitialized"
    attr {
      key: "T"
      value {
        type: DT_BOOL
      }
    }
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
          }
          shape {
          }
        }
      }
    }
  }
  node {
    name: "cond/switch_t"
    op: "Identity"
    input: "cond/Switch:1"
    attr {
      key: "T"
      value {
        type: DT_BOOL
      }
    }
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
          }
        }
      }
    }
  }
  node {
    name: "cond/switch_f"
    op: "Identity"
    input: "cond/Switch"
    attr {
      key: "T"
      value {
        type: DT_BOOL
      }
    }
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
          }
        }
      }
    }
  }
  node {
    name: "cond/pred_id"
    op: "Identity"
    input: "IsVariableInitialized"
    attr {
      key: "T"
      value {
        type: DT_BOOL
      }
    }
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
          }
        }
      }
    }
  }
  node {
    name: "cond/read"
    op: "Identity"
    input: "cond/read/Switch:1"
    attr {
      key: "T"
      value {
        type: DT_FLOAT
      }
    }
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
            dim {
              size: 784
            }
            dim {
              size: 500
            }
          }
        }
      }
    }
  }
  node {
    name: "cond/read/Switch"
    op: "RefSwitch"
    input: "layer1/weights"
    input: "cond/pred_id"
    attr {
      key: "T"
      value {
        type: DT_FLOAT
      }
    }
    attr {
      key: "_class"
      value {
        list {
          s: "loc:@layer1/weights"
        }
      }
    }
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
            dim {
              size: 784
            }
            dim {
              size: 500
            }
          }
          shape {
            dim {
              size: 784
            }
            dim {
              size: 500
            }
          }
        }
      }
    }
  }
  node {
    name: "cond/Switch_1"
    op: "Switch"
    input: "layer1/weights/Initializer/truncated_normal"
    input: "cond/pred_id"
    attr {
      key: "T"
      value {
        type: DT_FLOAT
      }
    }
    attr {
      key: "_class"
      value {
        list {
          s: "loc:@layer1/weights"
        }
      }
    }
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
            dim {
              size: 784
            }
            dim {
              size: 500
            }
          }
          shape {
            dim {
              size: 784
            }
            dim {
              size: 500
            }
          }
        }
      }
    }
  }
  node {
    name: "cond/Merge"
    op: "Merge"
    input: "cond/Switch_1"
    input: "cond/read"
    attr {
      key: "N"
      value {
        i: 2
      }
    }
    attr {
      key: "T"
      value {
        type: DT_FLOAT
      }
    }
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
            dim {
              size: 784
            }
            dim {
              size: 500
            }
          }
          shape {
          }
        }
      }
    }
  }
  node {
    name: "layer1/weights/ExponentialMovingAverage"
    op: "VariableV2"
    attr {
      key: "_class"
      value {
        list {
          s: "loc:@layer1/weights"
        }
      }
    }
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
            dim {
              size: 784
            }
            dim {
              size: 500
            }
          }
        }
      }
    }
    attr {
      key: "container"
      value {
        s: ""
      }
    }
    attr {
      key: "dtype"
      value {
        type: DT_FLOAT
      }
    }
    attr {
      key: "shape"
      value {
        shape {
          dim {
            size: 784
          }
          dim {
            size: 500
          }
        }
      }
    }
    attr {
      key: "shared_name"
      value {
        s: ""
      }
    }
  }
  node {
    name: "layer1/weights/ExponentialMovingAverage/IsVariableInitialized"
    op: "IsVariableInitialized"
    input: "layer1/weights"
    attr {
      key: "_class"
      value {
        list {
          s: "loc:@layer1/weights"
        }
      }
    }
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
          }
        }
      }
    }
    attr {
      key: "dtype"
      value {
        type: DT_FLOAT
      }
    }
  }
  node {
    name: "layer1/weights/ExponentialMovingAverage/cond/Switch"
    op: "Switch"
    input: "layer1/weights/ExponentialMovingAverage/IsVariableInitialized"
    input: "layer1/weights/ExponentialMovingAverage/IsVariableInitialized"
    attr {
      key: "T"
      value {
        type: DT_BOOL
      }
    }
    attr {
      key: "_class"
      value {
        list {
          s: "loc:@layer1/weights"
        }
      }
    }
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
          }
          shape {
          }
        }
      }
    }
  }
  node {
    name: "layer1/weights/ExponentialMovingAverage/cond/switch_t"
    op: "Identity"
    input: "layer1/weights/ExponentialMovingAverage/cond/Switch:1"
    attr {
      key: "T"
      value {
        type: DT_BOOL
      }
    }
    attr {
      key: "_class"
      value {
        list {
          s: "loc:@layer1/weights"
        }
      }
    }
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
          }
        }
      }
    }
  }
  node {
    name: "layer1/weights/ExponentialMovingAverage/cond/switch_f"
    op: "Identity"
    input: "layer1/weights/ExponentialMovingAverage/cond/Switch"
    attr {
      key: "T"
      value {
        type: DT_BOOL
      }
    }
    attr {
      key: "_class"
      value {
        list {
          s: "loc:@layer1/weights"
        }
      }
    }
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
          }
        }
      }
    }
  }
  node {
    name: "layer1/weights/ExponentialMovingAverage/cond/pred_id"
    op: "Identity"
    input: "layer1/weights/ExponentialMovingAverage/IsVariableInitialized"
    attr {
      key: "T"
      value {
        type: DT_BOOL
      }
    }
    attr {
      key: "_class"
      value {
        list {
          s: "loc:@layer1/weights"
        }
      }
    }
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
          }
        }
      }
    }
  }
  node {
    name: "layer1/weights/ExponentialMovingAverage/cond/read"
    op: "Identity"
    input: "layer1/weights/ExponentialMovingAverage/cond/read/Switch:1"
    attr {
      key: "T"
      value {
        type: DT_FLOAT
      }
    }
    attr {
      key: "_class"
      value {
        list {
          s: "loc:@layer1/weights"
        }
      }
    }
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
            dim {
              size: 784
            }
            dim {
              size: 500
            }
          }
        }
      }
    }
  }
  node {
    name: "layer1/weights/ExponentialMovingAverage/cond/read/Switch"
    op: "RefSwitch"
    input: "layer1/weights"
    input: "layer1/weights/ExponentialMovingAverage/cond/pred_id"
    attr {
      key: "T"
      value {
        type: DT_FLOAT
      }
    }
    attr {
      key: "_class"
      value {
        list {
          s: "loc:@layer1/weights"
        }
      }
    }
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
            dim {
              size: 784
            }
            dim {
              size: 500
            }
          }
          shape {
            dim {
              size: 784
            }
            dim {
              size: 500
            }
          }
        }
      }
    }
  }
  node {
    name: "layer1/weights/ExponentialMovingAverage/cond/Switch_1"
    op: "Switch"
    input: "layer1/weights/Initializer/truncated_normal"
    input: "layer1/weights/ExponentialMovingAverage/cond/pred_id"
    attr {
      key: "T"
      value {
        type: DT_FLOAT
      }
    }
    attr {
      key: "_class"
      value {
        list {
          s: "loc:@layer1/weights"
        }
      }
    }
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
            dim {
              size: 784
            }
            dim {
              size: 500
            }
          }
          shape {
            dim {
              size: 784
            }
            dim {
              size: 500
            }
          }
        }
      }
    }
  }
  node {
    name: "layer1/weights/ExponentialMovingAverage/cond/Merge"
    op: "Merge"
    input: "layer1/weights/ExponentialMovingAverage/cond/Switch_1"
    input: "layer1/weights/ExponentialMovingAverage/cond/read"
    attr {
      key: "N"
      value {
        i: 2
      }
    }
    attr {
      key: "T"
      value {
        type: DT_FLOAT
      }
    }
    attr {
      key: "_class"
      value {
        list {
          s: "loc:@layer1/weights"
        }
      }
    }
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
            dim {
              size: 784
            }
            dim {
              size: 500
            }
          }
          shape {
          }
        }
      }
    }
  }
  node {
    name: "layer1/weights/ExponentialMovingAverage/cond/read/Switch_layer1/weights/ExponentialMovingAverage_0"
    op: "Switch"
    input: "layer1/weights/ExponentialMovingAverage/cond/Merge"
    input: "cond/pred_id"
    attr {
      key: "T"
      value {
        type: DT_FLOAT
      }
    }
    attr {
      key: "_class"
      value {
        list {
          s: "loc:@layer1/weights"
        }
      }
    }
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
            dim {
              size: 784
            }
            dim {
              size: 500
            }
          }
          shape {
            dim {
              size: 784
            }
            dim {
              size: 500
            }
          }
        }
      }
    }
  }
  node {
    name: "layer1/weights/ExponentialMovingAverage/cond/read_layer1/weights/ExponentialMovingAverage_0"
    op: "Identity"
    input: "layer1/weights/ExponentialMovingAverage/cond/read/Switch_layer1/weights/ExponentialMovingAverage_0:1"
    attr {
      key: "T"
      value {
        type: DT_FLOAT
      }
    }
    attr {
      key: "_class"
      value {
        list {
          s: "loc:@layer1/weights"
        }
      }
    }
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
            dim {
              size: 784
            }
            dim {
              size: 500
            }
          }
        }
      }
    }
  }
  node {
    name: "layer1/weights/ExponentialMovingAverage/cond/Merge_layer1/weights/ExponentialMovingAverage_0"
    op: "Merge"
    input: "cond/Switch_1"
    input: "layer1/weights/ExponentialMovingAverage/cond/read_layer1/weights/ExponentialMovingAverage_0"
    attr {
      key: "N"
      value {
        i: 2
      }
    }
    attr {
      key: "T"
      value {
        type: DT_FLOAT
      }
    }
    attr {
      key: "_class"
      value {
        list {
          s: "loc:@layer1/weights"
        }
      }
    }
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
            dim {
              size: 784
            }
            dim {
              size: 500
            }
          }
          shape {
          }
        }
      }
    }
  }
  node {
    name: "layer1/weights/ExponentialMovingAverage/Assign"
    op: "Assign"
    input: "layer1/weights/ExponentialMovingAverage"
    input: "layer1/weights/ExponentialMovingAverage/cond/Merge_layer1/weights/ExponentialMovingAverage_0"
    attr {
      key: "T"
      value {
        type: DT_FLOAT
      }
    }
    attr {
      key: "_class"
      value {
        list {
          s: "loc:@layer1/weights"
        }
      }
    }
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
            dim {
              size: 784
            }
            dim {
              size: 500
            }
          }
        }
      }
    }
    attr {
      key: "use_locking"
      value {
        b: true
      }
    }
    attr {
      key: "validate_shape"
      value {
        b: true
      }
    }
  }
  node {
    name: "layer1/weights/ExponentialMovingAverage/read"
    op: "Identity"
    input: "layer1/weights/ExponentialMovingAverage"
    attr {
      key: "T"
      value {
        type: DT_FLOAT
      }
    }
    attr {
      key: "_class"
      value {
        list {
          s: "loc:@layer1/weights"
        }
      }
    }
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
            dim {
              size: 784
            }
            dim {
              size: 500
            }
          }
        }
      }
    }
  }
  node {
    name: "IsVariableInitialized_1"
    op: "IsVariableInitialized"
    input: "layer1/biases"
    attr {
      key: "_class"
      value {
        list {
          s: "loc:@layer1/biases"
        }
      }
    }
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
          }
        }
      }
    }
    attr {
      key: "dtype"
      value {
        type: DT_FLOAT
      }
    }
  }
  node {
    name: "cond_1/Switch"
    op: "Switch"
    input: "IsVariableInitialized_1"
    input: "IsVariableInitialized_1"
    attr {
      key: "T"
      value {
        type: DT_BOOL
      }
    }
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
          }
          shape {
          }
        }
      }
    }
  }
  node {
    name: "cond_1/switch_t"
    op: "Identity"
    input: "cond_1/Switch:1"
    attr {
      key: "T"
      value {
        type: DT_BOOL
      }
    }
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
          }
        }
      }
    }
  }
  node {
    name: "cond_1/switch_f"
    op: "Identity"
    input: "cond_1/Switch"
    attr {
      key: "T"
      value {
        type: DT_BOOL
      }
    }
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
          }
        }
      }
    }
  }
  node {
    name: "cond_1/pred_id"
    op: "Identity"
    input: "IsVariableInitialized_1"
    attr {
      key: "T"
      value {
        type: DT_BOOL
      }
    }
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
          }
        }
      }
    }
  }
  node {
    name: "cond_1/read"
    op: "Identity"
    input: "cond_1/read/Switch:1"
    attr {
      key: "T"
      value {
        type: DT_FLOAT
      }
    }
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
            dim {
              size: 500
            }
          }
        }
      }
    }
  }
  node {
    name: "cond_1/read/Switch"
    op: "RefSwitch"
    input: "layer1/biases"
    input: "cond_1/pred_id"
    attr {
      key: "T"
      value {
        type: DT_FLOAT
      }
    }
    attr {
      key: "_class"
      value {
        list {
          s: "loc:@layer1/biases"
        }
      }
    }
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
            dim {
              size: 500
            }
          }
          shape {
            dim {
              size: 500
            }
          }
        }
      }
    }
  }
  node {
    name: "cond_1/Switch_1"
    op: "Switch"
    input: "layer1/biases/Initializer/Const"
    input: "cond_1/pred_id"
    attr {
      key: "T"
      value {
        type: DT_FLOAT
      }
    }
    attr {
      key: "_class"
      value {
        list {
          s: "loc:@layer1/biases"
        }
      }
    }
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
            dim {
              size: 500
            }
          }
          shape {
            dim {
              size: 500
            }
          }
        }
      }
    }
  }
  node {
    name: "cond_1/Merge"
    op: "Merge"
    input: "cond_1/Switch_1"
    input: "cond_1/read"
    attr {
      key: "N"
      value {
        i: 2
      }
    }
    attr {
      key: "T"
      value {
        type: DT_FLOAT
      }
    }
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
            dim {
              size: 500
            }
          }
          shape {
          }
        }
      }
    }
  }
  node {
    name: "layer1/biases/ExponentialMovingAverage"
    op: "VariableV2"
    attr {
      key: "_class"
      value {
        list {
          s: "loc:@layer1/biases"
        }
      }
    }
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
            dim {
              size: 500
            }
          }
        }
      }
    }
    attr {
      key: "container"
      value {
        s: ""
      }
    }
    attr {
      key: "dtype"
      value {
        type: DT_FLOAT
      }
    }
    attr {
      key: "shape"
      value {
        shape {
          dim {
            size: 500
          }
        }
      }
    }
    attr {
      key: "shared_name"
      value {
        s: ""
      }
    }
  }
  node {
    name: "layer1/biases/ExponentialMovingAverage/IsVariableInitialized"
    op: "IsVariableInitialized"
    input: "layer1/biases"
    attr {
      key: "_class"
      value {
        list {
          s: "loc:@layer1/biases"
        }
      }
    }
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
          }
        }
      }
    }
    attr {
      key: "dtype"
      value {
        type: DT_FLOAT
      }
    }
  }
  node {
    name: "layer1/biases/ExponentialMovingAverage/cond/Switch"
    op: "Switch"
    input: "layer1/biases/ExponentialMovingAverage/IsVariableInitialized"
    input: "layer1/biases/ExponentialMovingAverage/IsVariableInitialized"
    attr {
      key: "T"
      value {
        type: DT_BOOL
      }
    }
    attr {
      key: "_class"
      value {
        list {
          s: "loc:@layer1/biases"
        }
      }
    }
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
          }
          shape {
          }
        }
      }
    }
  }
  node {
    name: "layer1/biases/ExponentialMovingAverage/cond/switch_t"
    op: "Identity"
    input: "layer1/biases/ExponentialMovingAverage/cond/Switch:1"
    attr {
      key: "T"
      value {
        type: DT_BOOL
      }
    }
    attr {
      key: "_class"
      value {
        list {
          s: "loc:@layer1/biases"
        }
      }
    }
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
          }
        }
      }
    }
  }
  node {
    name: "layer1/biases/ExponentialMovingAverage/cond/switch_f"
    op: "Identity"
    input: "layer1/biases/ExponentialMovingAverage/cond/Switch"
    attr {
      key: "T"
      value {
        type: DT_BOOL
      }
    }
    attr {
      key: "_class"
      value {
        list {
          s: "loc:@layer1/biases"
        }
      }
    }
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
          }
        }
      }
    }
  }
  node {
    name: "layer1/biases/ExponentialMovingAverage/cond/pred_id"
    op: "Identity"
    input: "layer1/biases/ExponentialMovingAverage/IsVariableInitialized"
    attr {
      key: "T"
      value {
        type: DT_BOOL
      }
    }
    attr {
      key: "_class"
      value {
        list {
          s: "loc:@layer1/biases"
        }
      }
    }
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
          }
        }
      }
    }
  }
  node {
    name: "layer1/biases/ExponentialMovingAverage/cond/read"
    op: "Identity"
    input: "layer1/biases/ExponentialMovingAverage/cond/read/Switch:1"
    attr {
      key: "T"
      value {
        type: DT_FLOAT
      }
    }
    attr {
      key: "_class"
      value {
        list {
          s: "loc:@layer1/biases"
        }
      }
    }
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
            dim {
              size: 500
            }
          }
        }
      }
    }
  }
  node {
    name: "layer1/biases/ExponentialMovingAverage/cond/read/Switch"
    op: "RefSwitch"
    input: "layer1/biases"
    input: "layer1/biases/ExponentialMovingAverage/cond/pred_id"
    attr {
      key: "T"
      value {
        type: DT_FLOAT
      }
    }
    attr {
      key: "_class"
      value {
        list {
          s: "loc:@layer1/biases"
        }
      }
    }
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
            dim {
              size: 500
            }
          }
          shape {
            dim {
              size: 500
            }
          }
        }
      }
    }
  }
  node {
    name: "layer1/biases/ExponentialMovingAverage/cond/Switch_1"
    op: "Switch"
    input: "layer1/biases/Initializer/Const"
    input: "layer1/biases/ExponentialMovingAverage/cond/pred_id"
    attr {
      key: "T"
      value {
        type: DT_FLOAT
      }
    }
    attr {
      key: "_class"
      value {
        list {
          s: "loc:@layer1/biases"
        }
      }
    }
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
            dim {
              size: 500
            }
          }
          shape {
            dim {
              size: 500
            }
          }
        }
      }
    }
  }
  node {
    name: "layer1/biases/ExponentialMovingAverage/cond/Merge"
    op: "Merge"
    input: "layer1/biases/ExponentialMovingAverage/cond/Switch_1"
    input: "layer1/biases/ExponentialMovingAverage/cond/read"
    attr {
      key: "N"
      value {
        i: 2
      }
    }
    attr {
      key: "T"
      value {
        type: DT_FLOAT
      }
    }
    attr {
      key: "_class"
      value {
        list {
          s: "loc:@layer1/biases"
        }
      }
    }
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
            dim {
              size: 500
            }
          }
          shape {
          }
        }
      }
    }
  }
  node {
    name: "layer1/biases/ExponentialMovingAverage/cond_1/read/Switch_layer1/biases/ExponentialMovingAverage_0"
    op: "Switch"
    input: "layer1/biases/ExponentialMovingAverage/cond/Merge"
    input: "cond_1/pred_id"
    attr {
      key: "T"
      value {
        type: DT_FLOAT
      }
    }
    attr {
      key: "_class"
      value {
        list {
          s: "loc:@layer1/biases"
        }
      }
    }
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
            dim {
              size: 500
            }
          }
          shape {
            dim {
              size: 500
            }
          }
        }
      }
    }
  }
  node {
    name: "layer1/biases/ExponentialMovingAverage/cond_1/read_layer1/biases/ExponentialMovingAverage_0"
    op: "Identity"
    input: "layer1/biases/ExponentialMovingAverage/cond_1/read/Switch_layer1/biases/ExponentialMovingAverage_0:1"
    attr {
      key: "T"
      value {
        type: DT_FLOAT
      }
    }
    attr {
      key: "_class"
      value {
        list {
          s: "loc:@layer1/biases"
        }
      }
    }
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
            dim {
              size: 500
            }
          }
        }
      }
    }
  }
  node {
    name: "layer1/biases/ExponentialMovingAverage/cond_1/Merge_layer1/biases/ExponentialMovingAverage_0"
    op: "Merge"
    input: "cond_1/Switch_1"
    input: "layer1/biases/ExponentialMovingAverage/cond_1/read_layer1/biases/ExponentialMovingAverage_0"
    attr {
      key: "N"
      value {
        i: 2
      }
    }
    attr {
      key: "T"
      value {
        type: DT_FLOAT
      }
    }
    attr {
      key: "_class"
      value {
        list {
          s: "loc:@layer1/biases"
        }
      }
    }
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
            dim {
              size: 500
            }
          }
          shape {
          }
        }
      }
    }
  }
  node {
    name: "layer1/biases/ExponentialMovingAverage/Assign"
    op: "Assign"
    input: "layer1/biases/ExponentialMovingAverage"
    input: "layer1/biases/ExponentialMovingAverage/cond_1/Merge_layer1/biases/ExponentialMovingAverage_0"
    attr {
      key: "T"
      value {
        type: DT_FLOAT
      }
    }
    attr {
      key: "_class"
      value {
        list {
          s: "loc:@layer1/biases"
        }
      }
    }
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
            dim {
              size: 500
            }
          }
        }
      }
    }
    attr {
      key: "use_locking"
      value {
        b: true
      }
    }
    attr {
      key: "validate_shape"
      value {
        b: true
      }
    }
  }
  node {
    name: "layer1/biases/ExponentialMovingAverage/read"
    op: "Identity"
    input: "layer1/biases/ExponentialMovingAverage"
    attr {
      key: "T"
      value {
        type: DT_FLOAT
      }
    }
    attr {
      key: "_class"
      value {
        list {
          s: "loc:@layer1/biases"
        }
      }
    }
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
            dim {
              size: 500
            }
          }
        }
      }
    }
  }
  node {
    name: "IsVariableInitialized_2"
    op: "IsVariableInitialized"
    input: "layer2/weights"
    attr {
      key: "_class"
      value {
        list {
          s: "loc:@layer2/weights"
        }
      }
    }
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
          }
        }
      }
    }
    attr {
      key: "dtype"
      value {
        type: DT_FLOAT
      }
    }
  }
  node {
    name: "cond_2/Switch"
    op: "Switch"
    input: "IsVariableInitialized_2"
    input: "IsVariableInitialized_2"
    attr {
      key: "T"
      value {
        type: DT_BOOL
      }
    }
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
          }
          shape {
          }
        }
      }
    }
  }
  node {
    name: "cond_2/switch_t"
    op: "Identity"
    input: "cond_2/Switch:1"
    attr {
      key: "T"
      value {
        type: DT_BOOL
      }
    }
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
          }
        }
      }
    }
  }
  node {
    name: "cond_2/switch_f"
    op: "Identity"
    input: "cond_2/Switch"
    attr {
      key: "T"
      value {
        type: DT_BOOL
      }
    }
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
          }
        }
      }
    }
  }
  node {
    name: "cond_2/pred_id"
    op: "Identity"
    input: "IsVariableInitialized_2"
    attr {
      key: "T"
      value {
        type: DT_BOOL
      }
    }
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
          }
        }
      }
    }
  }
  node {
    name: "cond_2/read"
    op: "Identity"
    input: "cond_2/read/Switch:1"
    attr {
      key: "T"
      value {
        type: DT_FLOAT
      }
    }
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
            dim {
              size: 500
            }
            dim {
              size: 10
            }
          }
        }
      }
    }
  }
  node {
    name: "cond_2/read/Switch"
    op: "RefSwitch"
    input: "layer2/weights"
    input: "cond_2/pred_id"
    attr {
      key: "T"
      value {
        type: DT_FLOAT
      }
    }
    attr {
      key: "_class"
      value {
        list {
          s: "loc:@layer2/weights"
        }
      }
    }
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
            dim {
              size: 500
            }
            dim {
              size: 10
            }
          }
          shape {
            dim {
              size: 500
            }
            dim {
              size: 10
            }
          }
        }
      }
    }
  }
  node {
    name: "cond_2/Switch_1"
    op: "Switch"
    input: "layer2/weights/Initializer/truncated_normal"
    input: "cond_2/pred_id"
    attr {
      key: "T"
      value {
        type: DT_FLOAT
      }
    }
    attr {
      key: "_class"
      value {
        list {
          s: "loc:@layer2/weights"
        }
      }
    }
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
            dim {
              size: 500
            }
            dim {
              size: 10
            }
          }
          shape {
            dim {
              size: 500
            }
            dim {
              size: 10
            }
          }
        }
      }
    }
  }
  node {
    name: "cond_2/Merge"
    op: "Merge"
    input: "cond_2/Switch_1"
    input: "cond_2/read"
    attr {
      key: "N"
      value {
        i: 2
      }
    }
    attr {
      key: "T"
      value {
        type: DT_FLOAT
      }
    }
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
            dim {
              size: 500
            }
            dim {
              size: 10
            }
          }
          shape {
          }
        }
      }
    }
  }
  node {
    name: "layer2/weights/ExponentialMovingAverage"
    op: "VariableV2"
    attr {
      key: "_class"
      value {
        list {
          s: "loc:@layer2/weights"
        }
      }
    }
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
            dim {
              size: 500
            }
            dim {
              size: 10
            }
          }
        }
      }
    }
    attr {
      key: "container"
      value {
        s: ""
      }
    }
    attr {
      key: "dtype"
      value {
        type: DT_FLOAT
      }
    }
    attr {
      key: "shape"
      value {
        shape {
          dim {
            size: 500
          }
          dim {
            size: 10
          }
        }
      }
    }
    attr {
      key: "shared_name"
      value {
        s: ""
      }
    }
  }
  node {
    name: "layer2/weights/ExponentialMovingAverage/IsVariableInitialized"
    op: "IsVariableInitialized"
    input: "layer2/weights"
    attr {
      key: "_class"
      value {
        list {
          s: "loc:@layer2/weights"
        }
      }
    }
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
          }
        }
      }
    }
    attr {
      key: "dtype"
      value {
        type: DT_FLOAT
      }
    }
  }
  node {
    name: "layer2/weights/ExponentialMovingAverage/cond/Switch"
    op: "Switch"
    input: "layer2/weights/ExponentialMovingAverage/IsVariableInitialized"
    input: "layer2/weights/ExponentialMovingAverage/IsVariableInitialized"
    attr {
      key: "T"
      value {
        type: DT_BOOL
      }
    }
    attr {
      key: "_class"
      value {
        list {
          s: "loc:@layer2/weights"
        }
      }
    }
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
          }
          shape {
          }
        }
      }
    }
  }
  node {
    name: "layer2/weights/ExponentialMovingAverage/cond/switch_t"
    op: "Identity"
    input: "layer2/weights/ExponentialMovingAverage/cond/Switch:1"
    attr {
      key: "T"
      value {
        type: DT_BOOL
      }
    }
    attr {
      key: "_class"
      value {
        list {
          s: "loc:@layer2/weights"
        }
      }
    }
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
          }
        }
      }
    }
  }
  node {
    name: "layer2/weights/ExponentialMovingAverage/cond/switch_f"
    op: "Identity"
    input: "layer2/weights/ExponentialMovingAverage/cond/Switch"
    attr {
      key: "T"
      value {
        type: DT_BOOL
      }
    }
    attr {
      key: "_class"
      value {
        list {
          s: "loc:@layer2/weights"
        }
      }
    }
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
          }
        }
      }
    }
  }
  node {
    name: "layer2/weights/ExponentialMovingAverage/cond/pred_id"
    op: "Identity"
    input: "layer2/weights/ExponentialMovingAverage/IsVariableInitialized"
    attr {
      key: "T"
      value {
        type: DT_BOOL
      }
    }
    attr {
      key: "_class"
      value {
        list {
          s: "loc:@layer2/weights"
        }
      }
    }
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
          }
        }
      }
    }
  }
  node {
    name: "layer2/weights/ExponentialMovingAverage/cond/read"
    op: "Identity"
    input: "layer2/weights/ExponentialMovingAverage/cond/read/Switch:1"
    attr {
      key: "T"
      value {
        type: DT_FLOAT
      }
    }
    attr {
      key: "_class"
      value {
        list {
          s: "loc:@layer2/weights"
        }
      }
    }
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
            dim {
              size: 500
            }
            dim {
              size: 10
            }
          }
        }
      }
    }
  }
  node {
    name: "layer2/weights/ExponentialMovingAverage/cond/read/Switch"
    op: "RefSwitch"
    input: "layer2/weights"
    input: "layer2/weights/ExponentialMovingAverage/cond/pred_id"
    attr {
      key: "T"
      value {
        type: DT_FLOAT
      }
    }
    attr {
      key: "_class"
      value {
        list {
          s: "loc:@layer2/weights"
        }
      }
    }
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
            dim {
              size: 500
            }
            dim {
              size: 10
            }
          }
          shape {
            dim {
              size: 500
            }
            dim {
              size: 10
            }
          }
        }
      }
    }
  }
  node {
    name: "layer2/weights/ExponentialMovingAverage/cond/Switch_1"
    op: "Switch"
    input: "layer2/weights/Initializer/truncated_normal"
    input: "layer2/weights/ExponentialMovingAverage/cond/pred_id"
    attr {
      key: "T"
      value {
        type: DT_FLOAT
      }
    }
    attr {
      key: "_class"
      value {
        list {
          s: "loc:@layer2/weights"
        }
      }
    }
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
            dim {
              size: 500
            }
            dim {
              size: 10
            }
          }
          shape {
            dim {
              size: 500
            }
            dim {
              size: 10
            }
          }
        }
      }
    }
  }
  node {
    name: "layer2/weights/ExponentialMovingAverage/cond/Merge"
    op: "Merge"
    input: "layer2/weights/ExponentialMovingAverage/cond/Switch_1"
    input: "layer2/weights/ExponentialMovingAverage/cond/read"
    attr {
      key: "N"
      value {
        i: 2
      }
    }
    attr {
      key: "T"
      value {
        type: DT_FLOAT
      }
    }
    attr {
      key: "_class"
      value {
        list {
          s: "loc:@layer2/weights"
        }
      }
    }
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
            dim {
              size: 500
            }
            dim {
              size: 10
            }
          }
          shape {
          }
        }
      }
    }
  }
  node {
    name: "layer2/weights/ExponentialMovingAverage/cond_2/read/Switch_layer2/weights/ExponentialMovingAverage_0"
    op: "Switch"
    input: "layer2/weights/ExponentialMovingAverage/cond/Merge"
    input: "cond_2/pred_id"
    attr {
      key: "T"
      value {
        type: DT_FLOAT
      }
    }
    attr {
      key: "_class"
      value {
        list {
          s: "loc:@layer2/weights"
        }
      }
    }
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
            dim {
              size: 500
            }
            dim {
              size: 10
            }
          }
          shape {
            dim {
              size: 500
            }
            dim {
              size: 10
            }
          }
        }
      }
    }
  }
  node {
    name: "layer2/weights/ExponentialMovingAverage/cond_2/read_layer2/weights/ExponentialMovingAverage_0"
    op: "Identity"
    input: "layer2/weights/ExponentialMovingAverage/cond_2/read/Switch_layer2/weights/ExponentialMovingAverage_0:1"
    attr {
      key: "T"
      value {
        type: DT_FLOAT
      }
    }
    attr {
      key: "_class"
      value {
        list {
          s: "loc:@layer2/weights"
        }
      }
    }
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
            dim {
              size: 500
            }
            dim {
              size: 10
            }
          }
        }
      }
    }
  }
  node {
    name: "layer2/weights/ExponentialMovingAverage/cond_2/Merge_layer2/weights/ExponentialMovingAverage_0"
    op: "Merge"
    input: "cond_2/Switch_1"
    input: "layer2/weights/ExponentialMovingAverage/cond_2/read_layer2/weights/ExponentialMovingAverage_0"
    attr {
      key: "N"
      value {
        i: 2
      }
    }
    attr {
      key: "T"
      value {
        type: DT_FLOAT
      }
    }
    attr {
      key: "_class"
      value {
        list {
          s: "loc:@layer2/weights"
        }
      }
    }
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
            dim {
              size: 500
            }
            dim {
              size: 10
            }
          }
          shape {
          }
        }
      }
    }
  }
  node {
    name: "layer2/weights/ExponentialMovingAverage/Assign"
    op: "Assign"
    input: "layer2/weights/ExponentialMovingAverage"
    input: "layer2/weights/ExponentialMovingAverage/cond_2/Merge_layer2/weights/ExponentialMovingAverage_0"
    attr {
      key: "T"
      value {
        type: DT_FLOAT
      }
    }
    attr {
      key: "_class"
      value {
        list {
          s: "loc:@layer2/weights"
        }
      }
    }
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
            dim {
              size: 500
            }
            dim {
              size: 10
            }
          }
        }
      }
    }
    attr {
      key: "use_locking"
      value {
        b: true
      }
    }
    attr {
      key: "validate_shape"
      value {
        b: true
      }
    }
  }
  node {
    name: "layer2/weights/ExponentialMovingAverage/read"
    op: "Identity"
    input: "layer2/weights/ExponentialMovingAverage"
    attr {
      key: "T"
      value {
        type: DT_FLOAT
      }
    }
    attr {
      key: "_class"
      value {
        list {
          s: "loc:@layer2/weights"
        }
      }
    }
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
            dim {
              size: 500
            }
            dim {
              size: 10
            }
          }
        }
      }
    }
  }
  node {
    name: "IsVariableInitialized_3"
    op: "IsVariableInitialized"
    input: "layer2/biases"
    attr {
      key: "_class"
      value {
        list {
          s: "loc:@layer2/biases"
        }
      }
    }
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
          }
        }
      }
    }
    attr {
      key: "dtype"
      value {
        type: DT_FLOAT
      }
    }
  }
  node {
    name: "cond_3/Switch"
    op: "Switch"
    input: "IsVariableInitialized_3"
    input: "IsVariableInitialized_3"
    attr {
      key: "T"
      value {
        type: DT_BOOL
      }
    }
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
          }
          shape {
          }
        }
      }
    }
  }
  node {
    name: "cond_3/switch_t"
    op: "Identity"
    input: "cond_3/Switch:1"
    attr {
      key: "T"
      value {
        type: DT_BOOL
      }
    }
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
          }
        }
      }
    }
  }
  node {
    name: "cond_3/switch_f"
    op: "Identity"
    input: "cond_3/Switch"
    attr {
      key: "T"
      value {
        type: DT_BOOL
      }
    }
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
          }
        }
      }
    }
  }
  node {
    name: "cond_3/pred_id"
    op: "Identity"
    input: "IsVariableInitialized_3"
    attr {
      key: "T"
      value {
        type: DT_BOOL
      }
    }
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
          }
        }
      }
    }
  }
  node {
    name: "cond_3/read"
    op: "Identity"
    input: "cond_3/read/Switch:1"
    attr {
      key: "T"
      value {
        type: DT_FLOAT
      }
    }
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
            dim {
              size: 10
            }
          }
        }
      }
    }
  }
  node {
    name: "cond_3/read/Switch"
    op: "RefSwitch"
    input: "layer2/biases"
    input: "cond_3/pred_id"
    attr {
      key: "T"
      value {
        type: DT_FLOAT
      }
    }
    attr {
      key: "_class"
      value {
        list {
          s: "loc:@layer2/biases"
        }
      }
    }
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
            dim {
              size: 10
            }
          }
          shape {
            dim {
              size: 10
            }
          }
        }
      }
    }
  }
  node {
    name: "cond_3/Switch_1"
    op: "Switch"
    input: "layer2/biases/Initializer/Const"
    input: "cond_3/pred_id"
    attr {
      key: "T"
      value {
        type: DT_FLOAT
      }
    }
    attr {
      key: "_class"
      value {
        list {
          s: "loc:@layer2/biases"
        }
      }
    }
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
            dim {
              size: 10
            }
          }
          shape {
            dim {
              size: 10
            }
          }
        }
      }
    }
  }
  node {
    name: "cond_3/Merge"
    op: "Merge"
    input: "cond_3/Switch_1"
    input: "cond_3/read"
    attr {
      key: "N"
      value {
        i: 2
      }
    }
    attr {
      key: "T"
      value {
        type: DT_FLOAT
      }
    }
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
            dim {
              size: 10
            }
          }
          shape {
          }
        }
      }
    }
  }
  node {
    name: "layer2/biases/ExponentialMovingAverage"
    op: "VariableV2"
    attr {
      key: "_class"
      value {
        list {
          s: "loc:@layer2/biases"
        }
      }
    }
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
            dim {
              size: 10
            }
          }
        }
      }
    }
    attr {
      key: "container"
      value {
        s: ""
      }
    }
    attr {
      key: "dtype"
      value {
        type: DT_FLOAT
      }
    }
    attr {
      key: "shape"
      value {
        shape {
          dim {
            size: 10
          }
        }
      }
    }
    attr {
      key: "shared_name"
      value {
        s: ""
      }
    }
  }
  node {
    name: "layer2/biases/ExponentialMovingAverage/IsVariableInitialized"
    op: "IsVariableInitialized"
    input: "layer2/biases"
    attr {
      key: "_class"
      value {
        list {
          s: "loc:@layer2/biases"
        }
      }
    }
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
          }
        }
      }
    }
    attr {
      key: "dtype"
      value {
        type: DT_FLOAT
      }
    }
  }
  node {
    name: "layer2/biases/ExponentialMovingAverage/cond/Switch"
    op: "Switch"
    input: "layer2/biases/ExponentialMovingAverage/IsVariableInitialized"
    input: "layer2/biases/ExponentialMovingAverage/IsVariableInitialized"
    attr {
      key: "T"
      value {
        type: DT_BOOL
      }
    }
    attr {
      key: "_class"
      value {
        list {
          s: "loc:@layer2/biases"
        }
      }
    }
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
          }
          shape {
          }
        }
      }
    }
  }
  node {
    name: "layer2/biases/ExponentialMovingAverage/cond/switch_t"
    op: "Identity"
    input: "layer2/biases/ExponentialMovingAverage/cond/Switch:1"
    attr {
      key: "T"
      value {
        type: DT_BOOL
      }
    }
    attr {
      key: "_class"
      value {
        list {
          s: "loc:@layer2/biases"
        }
      }
    }
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
          }
        }
      }
    }
  }
  node {
    name: "layer2/biases/ExponentialMovingAverage/cond/switch_f"
    op: "Identity"
    input: "layer2/biases/ExponentialMovingAverage/cond/Switch"
    attr {
      key: "T"
      value {
        type: DT_BOOL
      }
    }
    attr {
      key: "_class"
      value {
        list {
          s: "loc:@layer2/biases"
        }
      }
    }
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
          }
        }
      }
    }
  }
  node {
    name: "layer2/biases/ExponentialMovingAverage/cond/pred_id"
    op: "Identity"
    input: "layer2/biases/ExponentialMovingAverage/IsVariableInitialized"
    attr {
      key: "T"
      value {
        type: DT_BOOL
      }
    }
    attr {
      key: "_class"
      value {
        list {
          s: "loc:@layer2/biases"
        }
      }
    }
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
          }
        }
      }
    }
  }
  node {
    name: "layer2/biases/ExponentialMovingAverage/cond/read"
    op: "Identity"
    input: "layer2/biases/ExponentialMovingAverage/cond/read/Switch:1"
    attr {
      key: "T"
      value {
        type: DT_FLOAT
      }
    }
    attr {
      key: "_class"
      value {
        list {
          s: "loc:@layer2/biases"
        }
      }
    }
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
            dim {
              size: 10
            }
          }
        }
      }
    }
  }
  node {
    name: "layer2/biases/ExponentialMovingAverage/cond/read/Switch"
    op: "RefSwitch"
    input: "layer2/biases"
    input: "layer2/biases/ExponentialMovingAverage/cond/pred_id"
    attr {
      key: "T"
      value {
        type: DT_FLOAT
      }
    }
    attr {
      key: "_class"
      value {
        list {
          s: "loc:@layer2/biases"
        }
      }
    }
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
            dim {
              size: 10
            }
          }
          shape {
            dim {
              size: 10
            }
          }
        }
      }
    }
  }
  node {
    name: "layer2/biases/ExponentialMovingAverage/cond/Switch_1"
    op: "Switch"
    input: "layer2/biases/Initializer/Const"
    input: "layer2/biases/ExponentialMovingAverage/cond/pred_id"
    attr {
      key: "T"
      value {
        type: DT_FLOAT
      }
    }
    attr {
      key: "_class"
      value {
        list {
          s: "loc:@layer2/biases"
        }
      }
    }
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
            dim {
              size: 10
            }
          }
          shape {
            dim {
              size: 10
            }
          }
        }
      }
    }
  }
  node {
    name: "layer2/biases/ExponentialMovingAverage/cond/Merge"
    op: "Merge"
    input: "layer2/biases/ExponentialMovingAverage/cond/Switch_1"
    input: "layer2/biases/ExponentialMovingAverage/cond/read"
    attr {
      key: "N"
      value {
        i: 2
      }
    }
    attr {
      key: "T"
      value {
        type: DT_FLOAT
      }
    }
    attr {
      key: "_class"
      value {
        list {
          s: "loc:@layer2/biases"
        }
      }
    }
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
            dim {
              size: 10
            }
          }
          shape {
          }
        }
      }
    }
  }
  node {
    name: "layer2/biases/ExponentialMovingAverage/cond_3/read/Switch_layer2/biases/ExponentialMovingAverage_0"
    op: "Switch"
    input: "layer2/biases/ExponentialMovingAverage/cond/Merge"
    input: "cond_3/pred_id"
    attr {
      key: "T"
      value {
        type: DT_FLOAT
      }
    }
    attr {
      key: "_class"
      value {
        list {
          s: "loc:@layer2/biases"
        }
      }
    }
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
            dim {
              size: 10
            }
          }
          shape {
            dim {
              size: 10
            }
          }
        }
      }
    }
  }
  node {
    name: "layer2/biases/ExponentialMovingAverage/cond_3/read_layer2/biases/ExponentialMovingAverage_0"
    op: "Identity"
    input: "layer2/biases/ExponentialMovingAverage/cond_3/read/Switch_layer2/biases/ExponentialMovingAverage_0:1"
    attr {
      key: "T"
      value {
        type: DT_FLOAT
      }
    }
    attr {
      key: "_class"
      value {
        list {
          s: "loc:@layer2/biases"
        }
      }
    }
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
            dim {
              size: 10
            }
          }
        }
      }
    }
  }
  node {
    name: "layer2/biases/ExponentialMovingAverage/cond_3/Merge_layer2/biases/ExponentialMovingAverage_0"
    op: "Merge"
    input: "cond_3/Switch_1"
    input: "layer2/biases/ExponentialMovingAverage/cond_3/read_layer2/biases/ExponentialMovingAverage_0"
    attr {
      key: "N"
      value {
        i: 2
      }
    }
    attr {
      key: "T"
      value {
        type: DT_FLOAT
      }
    }
    attr {
      key: "_class"
      value {
        list {
          s: "loc:@layer2/biases"
        }
      }
    }
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
            dim {
              size: 10
            }
          }
          shape {
          }
        }
      }
    }
  }
  node {
    name: "layer2/biases/ExponentialMovingAverage/Assign"
    op: "Assign"
    input: "layer2/biases/ExponentialMovingAverage"
    input: "layer2/biases/ExponentialMovingAverage/cond_3/Merge_layer2/biases/ExponentialMovingAverage_0"
    attr {
      key: "T"
      value {
        type: DT_FLOAT
      }
    }
    attr {
      key: "_class"
      value {
        list {
          s: "loc:@layer2/biases"
        }
      }
    }
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
            dim {
              size: 10
            }
          }
        }
      }
    }
    attr {
      key: "use_locking"
      value {
        b: true
      }
    }
    attr {
      key: "validate_shape"
      value {
        b: true
      }
    }
  }
  node {
    name: "layer2/biases/ExponentialMovingAverage/read"
    op: "Identity"
    input: "layer2/biases/ExponentialMovingAverage"
    attr {
      key: "T"
      value {
        type: DT_FLOAT
      }
    }
    attr {
      key: "_class"
      value {
        list {
          s: "loc:@layer2/biases"
        }
      }
    }
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
            dim {
              size: 10
            }
          }
        }
      }
    }
  }
  node {
    name: "ExponentialMovingAverage/decay"
    op: "Const"
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
          }
        }
      }
    }
    attr {
      key: "dtype"
      value {
        type: DT_FLOAT
      }
    }
    attr {
      key: "value"
      value {
        tensor {
          dtype: DT_FLOAT
          tensor_shape {
          }
          float_val: 0.990000009537
        }
      }
    }
  }
  node {
    name: "ExponentialMovingAverage/num_updates"
    op: "Cast"
    input: "Variable/read"
    attr {
      key: "DstT"
      value {
        type: DT_FLOAT
      }
    }
    attr {
      key: "SrcT"
      value {
        type: DT_INT32
      }
    }
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
          }
        }
      }
    }
  }
  node {
    name: "ExponentialMovingAverage/add/x"
    op: "Const"
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
          }
        }
      }
    }
    attr {
      key: "dtype"
      value {
        type: DT_FLOAT
      }
    }
    attr {
      key: "value"
      value {
        tensor {
          dtype: DT_FLOAT
          tensor_shape {
          }
          float_val: 1.0
        }
      }
    }
  }
  node {
    name: "ExponentialMovingAverage/add"
    op: "Add"
    input: "ExponentialMovingAverage/add/x"
    input: "ExponentialMovingAverage/num_updates"
    attr {
      key: "T"
      value {
        type: DT_FLOAT
      }
    }
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
          }
        }
      }
    }
  }
  node {
    name: "ExponentialMovingAverage/add_1/x"
    op: "Const"
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
          }
        }
      }
    }
    attr {
      key: "dtype"
      value {
        type: DT_FLOAT
      }
    }
    attr {
      key: "value"
      value {
        tensor {
          dtype: DT_FLOAT
          tensor_shape {
          }
          float_val: 10.0
        }
      }
    }
  }
  node {
    name: "ExponentialMovingAverage/add_1"
    op: "Add"
    input: "ExponentialMovingAverage/add_1/x"
    input: "ExponentialMovingAverage/num_updates"
    attr {
      key: "T"
      value {
        type: DT_FLOAT
      }
    }
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
          }
        }
      }
    }
  }
  node {
    name: "ExponentialMovingAverage/truediv"
    op: "RealDiv"
    input: "ExponentialMovingAverage/add"
    input: "ExponentialMovingAverage/add_1"
    attr {
      key: "T"
      value {
        type: DT_FLOAT
      }
    }
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
          }
        }
      }
    }
  }
  node {
    name: "ExponentialMovingAverage/Minimum"
    op: "Minimum"
    input: "ExponentialMovingAverage/decay"
    input: "ExponentialMovingAverage/truediv"
    attr {
      key: "T"
      value {
        type: DT_FLOAT
      }
    }
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
          }
        }
      }
    }
  }
  node {
    name: "ExponentialMovingAverage/AssignMovingAvg/sub/x"
    op: "Const"
    attr {
      key: "_class"
      value {
        list {
          s: "loc:@layer1/weights"
        }
      }
    }
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
          }
        }
      }
    }
    attr {
      key: "dtype"
      value {
        type: DT_FLOAT
      }
    }
    attr {
      key: "value"
      value {
        tensor {
          dtype: DT_FLOAT
          tensor_shape {
          }
          float_val: 1.0
        }
      }
    }
  }
  node {
    name: "ExponentialMovingAverage/AssignMovingAvg/sub"
    op: "Sub"
    input: "ExponentialMovingAverage/AssignMovingAvg/sub/x"
    input: "ExponentialMovingAverage/Minimum"
    attr {
      key: "T"
      value {
        type: DT_FLOAT
      }
    }
    attr {
      key: "_class"
      value {
        list {
          s: "loc:@layer1/weights"
        }
      }
    }
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
          }
        }
      }
    }
  }
  node {
    name: "ExponentialMovingAverage/AssignMovingAvg/sub_1"
    op: "Sub"
    input: "layer1/weights/ExponentialMovingAverage/read"
    input: "layer1/weights/read"
    attr {
      key: "T"
      value {
        type: DT_FLOAT
      }
    }
    attr {
      key: "_class"
      value {
        list {
          s: "loc:@layer1/weights"
        }
      }
    }
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
            dim {
              size: 784
            }
            dim {
              size: 500
            }
          }
        }
      }
    }
  }
  node {
    name: "ExponentialMovingAverage/AssignMovingAvg/mul"
    op: "Mul"
    input: "ExponentialMovingAverage/AssignMovingAvg/sub_1"
    input: "ExponentialMovingAverage/AssignMovingAvg/sub"
    attr {
      key: "T"
      value {
        type: DT_FLOAT
      }
    }
    attr {
      key: "_class"
      value {
        list {
          s: "loc:@layer1/weights"
        }
      }
    }
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
            dim {
              size: 784
            }
            dim {
              size: 500
            }
          }
        }
      }
    }
  }
  node {
    name: "ExponentialMovingAverage/AssignMovingAvg"
    op: "AssignSub"
    input: "layer1/weights/ExponentialMovingAverage"
    input: "ExponentialMovingAverage/AssignMovingAvg/mul"
    attr {
      key: "T"
      value {
        type: DT_FLOAT
      }
    }
    attr {
      key: "_class"
      value {
        list {
          s: "loc:@layer1/weights"
        }
      }
    }
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
            dim {
              size: 784
            }
            dim {
              size: 500
            }
          }
        }
      }
    }
    attr {
      key: "use_locking"
      value {
        b: false
      }
    }
  }
  node {
    name: "ExponentialMovingAverage/AssignMovingAvg_1/sub/x"
    op: "Const"
    attr {
      key: "_class"
      value {
        list {
          s: "loc:@layer1/biases"
        }
      }
    }
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
          }
        }
      }
    }
    attr {
      key: "dtype"
      value {
        type: DT_FLOAT
      }
    }
    attr {
      key: "value"
      value {
        tensor {
          dtype: DT_FLOAT
          tensor_shape {
          }
          float_val: 1.0
        }
      }
    }
  }
  node {
    name: "ExponentialMovingAverage/AssignMovingAvg_1/sub"
    op: "Sub"
    input: "ExponentialMovingAverage/AssignMovingAvg_1/sub/x"
    input: "ExponentialMovingAverage/Minimum"
    attr {
      key: "T"
      value {
        type: DT_FLOAT
      }
    }
    attr {
      key: "_class"
      value {
        list {
          s: "loc:@layer1/biases"
        }
      }
    }
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
          }
        }
      }
    }
  }
  node {
    name: "ExponentialMovingAverage/AssignMovingAvg_1/sub_1"
    op: "Sub"
    input: "layer1/biases/ExponentialMovingAverage/read"
    input: "layer1/biases/read"
    attr {
      key: "T"
      value {
        type: DT_FLOAT
      }
    }
    attr {
      key: "_class"
      value {
        list {
          s: "loc:@layer1/biases"
        }
      }
    }
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
            dim {
              size: 500
            }
          }
        }
      }
    }
  }
  node {
    name: "ExponentialMovingAverage/AssignMovingAvg_1/mul"
    op: "Mul"
    input: "ExponentialMovingAverage/AssignMovingAvg_1/sub_1"
    input: "ExponentialMovingAverage/AssignMovingAvg_1/sub"
    attr {
      key: "T"
      value {
        type: DT_FLOAT
      }
    }
    attr {
      key: "_class"
      value {
        list {
          s: "loc:@layer1/biases"
        }
      }
    }
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
            dim {
              size: 500
            }
          }
        }
      }
    }
  }
  node {
    name: "ExponentialMovingAverage/AssignMovingAvg_1"
    op: "AssignSub"
    input: "layer1/biases/ExponentialMovingAverage"
    input: "ExponentialMovingAverage/AssignMovingAvg_1/mul"
    attr {
      key: "T"
      value {
        type: DT_FLOAT
      }
    }
    attr {
      key: "_class"
      value {
        list {
          s: "loc:@layer1/biases"
        }
      }
    }
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
            dim {
              size: 500
            }
          }
        }
      }
    }
    attr {
      key: "use_locking"
      value {
        b: false
      }
    }
  }
  node {
    name: "ExponentialMovingAverage/AssignMovingAvg_2/sub/x"
    op: "Const"
    attr {
      key: "_class"
      value {
        list {
          s: "loc:@layer2/weights"
        }
      }
    }
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
          }
        }
      }
    }
    attr {
      key: "dtype"
      value {
        type: DT_FLOAT
      }
    }
    attr {
      key: "value"
      value {
        tensor {
          dtype: DT_FLOAT
          tensor_shape {
          }
          float_val: 1.0
        }
      }
    }
  }
  node {
    name: "ExponentialMovingAverage/AssignMovingAvg_2/sub"
    op: "Sub"
    input: "ExponentialMovingAverage/AssignMovingAvg_2/sub/x"
    input: "ExponentialMovingAverage/Minimum"
    attr {
      key: "T"
      value {
        type: DT_FLOAT
      }
    }
    attr {
      key: "_class"
      value {
        list {
          s: "loc:@layer2/weights"
        }
      }
    }
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
          }
        }
      }
    }
  }
  node {
    name: "ExponentialMovingAverage/AssignMovingAvg_2/sub_1"
    op: "Sub"
    input: "layer2/weights/ExponentialMovingAverage/read"
    input: "layer2/weights/read"
    attr {
      key: "T"
      value {
        type: DT_FLOAT
      }
    }
    attr {
      key: "_class"
      value {
        list {
          s: "loc:@layer2/weights"
        }
      }
    }
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
            dim {
              size: 500
            }
            dim {
              size: 10
            }
          }
        }
      }
    }
  }
  node {
    name: "ExponentialMovingAverage/AssignMovingAvg_2/mul"
    op: "Mul"
    input: "ExponentialMovingAverage/AssignMovingAvg_2/sub_1"
    input: "ExponentialMovingAverage/AssignMovingAvg_2/sub"
    attr {
      key: "T"
      value {
        type: DT_FLOAT
      }
    }
    attr {
      key: "_class"
      value {
        list {
          s: "loc:@layer2/weights"
        }
      }
    }
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
            dim {
              size: 500
            }
            dim {
              size: 10
            }
          }
        }
      }
    }
  }
  node {
    name: "ExponentialMovingAverage/AssignMovingAvg_2"
    op: "AssignSub"
    input: "layer2/weights/ExponentialMovingAverage"
    input: "ExponentialMovingAverage/AssignMovingAvg_2/mul"
    attr {
      key: "T"
      value {
        type: DT_FLOAT
      }
    }
    attr {
      key: "_class"
      value {
        list {
          s: "loc:@layer2/weights"
        }
      }
    }
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
            dim {
              size: 500
            }
            dim {
              size: 10
            }
          }
        }
      }
    }
    attr {
      key: "use_locking"
      value {
        b: false
      }
    }
  }
  node {
    name: "ExponentialMovingAverage/AssignMovingAvg_3/sub/x"
    op: "Const"
    attr {
      key: "_class"
      value {
        list {
          s: "loc:@layer2/biases"
        }
      }
    }
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
          }
        }
      }
    }
    attr {
      key: "dtype"
      value {
        type: DT_FLOAT
      }
    }
    attr {
      key: "value"
      value {
        tensor {
          dtype: DT_FLOAT
          tensor_shape {
          }
          float_val: 1.0
        }
      }
    }
  }
  node {
    name: "ExponentialMovingAverage/AssignMovingAvg_3/sub"
    op: "Sub"
    input: "ExponentialMovingAverage/AssignMovingAvg_3/sub/x"
    input: "ExponentialMovingAverage/Minimum"
    attr {
      key: "T"
      value {
        type: DT_FLOAT
      }
    }
    attr {
      key: "_class"
      value {
        list {
          s: "loc:@layer2/biases"
        }
      }
    }
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
          }
        }
      }
    }
  }
  node {
    name: "ExponentialMovingAverage/AssignMovingAvg_3/sub_1"
    op: "Sub"
    input: "layer2/biases/ExponentialMovingAverage/read"
    input: "layer2/biases/read"
    attr {
      key: "T"
      value {
        type: DT_FLOAT
      }
    }
    attr {
      key: "_class"
      value {
        list {
          s: "loc:@layer2/biases"
        }
      }
    }
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
            dim {
              size: 10
            }
          }
        }
      }
    }
  }
  node {
    name: "ExponentialMovingAverage/AssignMovingAvg_3/mul"
    op: "Mul"
    input: "ExponentialMovingAverage/AssignMovingAvg_3/sub_1"
    input: "ExponentialMovingAverage/AssignMovingAvg_3/sub"
    attr {
      key: "T"
      value {
        type: DT_FLOAT
      }
    }
    attr {
      key: "_class"
      value {
        list {
          s: "loc:@layer2/biases"
        }
      }
    }
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
            dim {
              size: 10
            }
          }
        }
      }
    }
  }
  node {
    name: "ExponentialMovingAverage/AssignMovingAvg_3"
    op: "AssignSub"
    input: "layer2/biases/ExponentialMovingAverage"
    input: "ExponentialMovingAverage/AssignMovingAvg_3/mul"
    attr {
      key: "T"
      value {
        type: DT_FLOAT
      }
    }
    attr {
      key: "_class"
      value {
        list {
          s: "loc:@layer2/biases"
        }
      }
    }
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
            dim {
              size: 10
            }
          }
        }
      }
    }
    attr {
      key: "use_locking"
      value {
        b: false
      }
    }
  }
  node {
    name: "ExponentialMovingAverage"
    op: "NoOp"
    input: "^ExponentialMovingAverage/AssignMovingAvg"
    input: "^ExponentialMovingAverage/AssignMovingAvg_1"
    input: "^ExponentialMovingAverage/AssignMovingAvg_2"
    input: "^ExponentialMovingAverage/AssignMovingAvg_3"
  }
  node {
    name: "layer1_2/MatMul"
    op: "MatMul"
    input: "x-input"
    input: "layer1/weights/ExponentialMovingAverage/read"
    attr {
      key: "T"
      value {
        type: DT_FLOAT
      }
    }
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
            dim {
              size: -1
            }
            dim {
              size: 500
            }
          }
        }
      }
    }
    attr {
      key: "transpose_a"
      value {
        b: false
      }
    }
    attr {
      key: "transpose_b"
      value {
        b: false
      }
    }
  }
  node {
    name: "layer1_2/add"
    op: "Add"
    input: "layer1_2/MatMul"
    input: "layer1/biases/ExponentialMovingAverage/read"
    attr {
      key: "T"
      value {
        type: DT_FLOAT
      }
    }
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
            dim {
              size: -1
            }
            dim {
              size: 500
            }
          }
        }
      }
    }
  }
  node {
    name: "layer1_2/Relu"
    op: "Relu"
    input: "layer1_2/add"
    attr {
      key: "T"
      value {
        type: DT_FLOAT
      }
    }
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
            dim {
              size: -1
            }
            dim {
              size: 500
            }
          }
        }
      }
    }
  }
  node {
    name: "layer2_2/MatMul"
    op: "MatMul"
    input: "layer1_2/Relu"
    input: "layer2/weights/ExponentialMovingAverage/read"
    attr {
      key: "T"
      value {
        type: DT_FLOAT
      }
    }
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
            dim {
              size: -1
            }
            dim {
              size: 10
            }
          }
        }
      }
    }
    attr {
      key: "transpose_a"
      value {
        b: false
      }
    }
    attr {
      key: "transpose_b"
      value {
        b: false
      }
    }
  }
  node {
    name: "layer2_2/add"
    op: "Add"
    input: "layer2_2/MatMul"
    input: "layer2/biases/ExponentialMovingAverage/read"
    attr {
      key: "T"
      value {
        type: DT_FLOAT
      }
    }
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
            dim {
              size: -1
            }
            dim {
              size: 10
            }
          }
        }
      }
    }
  }
  node {
    name: "ArgMax/dimension"
    op: "Const"
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
          }
        }
      }
    }
    attr {
      key: "dtype"
      value {
        type: DT_INT32
      }
    }
    attr {
      key: "value"
      value {
        tensor {
          dtype: DT_INT32
          tensor_shape {
          }
          int_val: 1
        }
      }
    }
  }
  node {
    name: "ArgMax"
    op: "ArgMax"
    input: "layer2/add"
    input: "ArgMax/dimension"
    attr {
      key: "T"
      value {
        type: DT_FLOAT
      }
    }
    attr {
      key: "Tidx"
      value {
        type: DT_INT32
      }
    }
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
            dim {
              size: -1
            }
          }
        }
      }
    }
    attr {
      key: "output_type"
      value {
        type: DT_INT64
      }
    }
  }
  node {
    name: "SparseSoftmaxCrossEntropyWithLogits/Shape"
    op: "Shape"
    input: "ArgMax"
    attr {
      key: "T"
      value {
        type: DT_INT64
      }
    }
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
            dim {
              size: 1
            }
          }
        }
      }
    }
    attr {
      key: "out_type"
      value {
        type: DT_INT32
      }
    }
  }
  node {
    name: "SparseSoftmaxCrossEntropyWithLogits/SparseSoftmaxCrossEntropyWithLogits"
    op: "SparseSoftmaxCrossEntropyWithLogits"
    input: "layer2_1/add"
    input: "ArgMax"
    attr {
      key: "T"
      value {
        type: DT_FLOAT
      }
    }
    attr {
      key: "Tlabels"
      value {
        type: DT_INT64
      }
    }
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
            dim {
              size: -1
            }
          }
          shape {
            dim {
              size: -1
            }
            dim {
              size: 10
            }
          }
        }
      }
    }
  }
  node {
    name: "Const"
    op: "Const"
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
            dim {
              size: 1
            }
          }
        }
      }
    }
    attr {
      key: "dtype"
      value {
        type: DT_INT32
      }
    }
    attr {
      key: "value"
      value {
        tensor {
          dtype: DT_INT32
          tensor_shape {
            dim {
              size: 1
            }
          }
          int_val: 0
        }
      }
    }
  }
  node {
    name: "Mean"
    op: "Mean"
    input: "SparseSoftmaxCrossEntropyWithLogits/SparseSoftmaxCrossEntropyWithLogits"
    input: "Const"
    attr {
      key: "T"
      value {
        type: DT_FLOAT
      }
    }
    attr {
      key: "Tidx"
      value {
        type: DT_INT32
      }
    }
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
          }
        }
      }
    }
    attr {
      key: "keep_dims"
      value {
        b: false
      }
    }
  }
  node {
    name: "l2_regularizer/scale"
    op: "Const"
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
          }
        }
      }
    }
    attr {
      key: "dtype"
      value {
        type: DT_FLOAT
      }
    }
    attr {
      key: "value"
      value {
        tensor {
          dtype: DT_FLOAT
          tensor_shape {
          }
          float_val: 9.99999974738e-05
        }
      }
    }
  }
  node {
    name: "l2_regularizer/L2Loss"
    op: "L2Loss"
    input: "layer1/weights/read"
    attr {
      key: "T"
      value {
        type: DT_FLOAT
      }
    }
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
          }
        }
      }
    }
  }
  node {
    name: "l2_regularizer"
    op: "Mul"
    input: "l2_regularizer/scale"
    input: "l2_regularizer/L2Loss"
    attr {
      key: "T"
      value {
        type: DT_FLOAT
      }
    }
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
          }
        }
      }
    }
  }
  node {
    name: "l2_regularizer_1/scale"
    op: "Const"
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
          }
        }
      }
    }
    attr {
      key: "dtype"
      value {
        type: DT_FLOAT
      }
    }
    attr {
      key: "value"
      value {
        tensor {
          dtype: DT_FLOAT
          tensor_shape {
          }
          float_val: 9.99999974738e-05
        }
      }
    }
  }
  node {
    name: "l2_regularizer_1/L2Loss"
    op: "L2Loss"
    input: "layer2/weights/read"
    attr {
      key: "T"
      value {
        type: DT_FLOAT
      }
    }
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
          }
        }
      }
    }
  }
  node {
    name: "l2_regularizer_1"
    op: "Mul"
    input: "l2_regularizer_1/scale"
    input: "l2_regularizer_1/L2Loss"
    attr {
      key: "T"
      value {
        type: DT_FLOAT
      }
    }
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
          }
        }
      }
    }
  }
  node {
    name: "add"
    op: "Add"
    input: "l2_regularizer"
    input: "l2_regularizer_1"
    attr {
      key: "T"
      value {
        type: DT_FLOAT
      }
    }
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
          }
        }
      }
    }
  }
  node {
    name: "add_1"
    op: "Add"
    input: "Mean"
    input: "add"
    attr {
      key: "T"
      value {
        type: DT_FLOAT
      }
    }
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
          }
        }
      }
    }
  }
  node {
    name: "ExponentialDecay/learning_rate"
    op: "Const"
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
          }
        }
      }
    }
    attr {
      key: "dtype"
      value {
        type: DT_FLOAT
      }
    }
    attr {
      key: "value"
      value {
        tensor {
          dtype: DT_FLOAT
          tensor_shape {
          }
          float_val: 0.800000011921
        }
      }
    }
  }
  node {
    name: "ExponentialDecay/Cast"
    op: "Cast"
    input: "Variable/read"
    attr {
      key: "DstT"
      value {
        type: DT_FLOAT
      }
    }
    attr {
      key: "SrcT"
      value {
        type: DT_INT32
      }
    }
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
          }
        }
      }
    }
  }
  node {
    name: "ExponentialDecay/Cast_1/x"
    op: "Const"
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
          }
        }
      }
    }
    attr {
      key: "dtype"
      value {
        type: DT_INT32
      }
    }
    attr {
      key: "value"
      value {
        tensor {
          dtype: DT_INT32
          tensor_shape {
          }
          int_val: 55
        }
      }
    }
  }
  node {
    name: "ExponentialDecay/Cast_1"
    op: "Cast"
    input: "ExponentialDecay/Cast_1/x"
    attr {
      key: "DstT"
      value {
        type: DT_FLOAT
      }
    }
    attr {
      key: "SrcT"
      value {
        type: DT_INT32
      }
    }
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
          }
        }
      }
    }
  }
  node {
    name: "ExponentialDecay/Cast_2/x"
    op: "Const"
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
          }
        }
      }
    }
    attr {
      key: "dtype"
      value {
        type: DT_FLOAT
      }
    }
    attr {
      key: "value"
      value {
        tensor {
          dtype: DT_FLOAT
          tensor_shape {
          }
          float_val: 0.999000012875
        }
      }
    }
  }
  node {
    name: "ExponentialDecay/truediv"
    op: "RealDiv"
    input: "ExponentialDecay/Cast"
    input: "ExponentialDecay/Cast_1"
    attr {
      key: "T"
      value {
        type: DT_FLOAT
      }
    }
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
          }
        }
      }
    }
  }
  node {
    name: "ExponentialDecay/Pow"
    op: "Pow"
    input: "ExponentialDecay/Cast_2/x"
    input: "ExponentialDecay/truediv"
    attr {
      key: "T"
      value {
        type: DT_FLOAT
      }
    }
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
          }
        }
      }
    }
  }
  node {
    name: "ExponentialDecay"
    op: "Mul"
    input: "ExponentialDecay/learning_rate"
    input: "ExponentialDecay/Pow"
    attr {
      key: "T"
      value {
        type: DT_FLOAT
      }
    }
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
          }
        }
      }
    }
  }
  node {
    name: "gradients/Shape"
    op: "Const"
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
            dim {
            }
          }
        }
      }
    }
    attr {
      key: "dtype"
      value {
        type: DT_INT32
      }
    }
    attr {
      key: "value"
      value {
        tensor {
          dtype: DT_INT32
          tensor_shape {
            dim {
            }
          }
        }
      }
    }
  }
  node {
    name: "gradients/grad_ys_0"
    op: "Const"
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
          }
        }
      }
    }
    attr {
      key: "dtype"
      value {
        type: DT_FLOAT
      }
    }
    attr {
      key: "value"
      value {
        tensor {
          dtype: DT_FLOAT
          tensor_shape {
          }
          float_val: 1.0
        }
      }
    }
  }
  node {
    name: "gradients/Fill"
    op: "Fill"
    input: "gradients/Shape"
    input: "gradients/grad_ys_0"
    attr {
      key: "T"
      value {
        type: DT_FLOAT
      }
    }
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
          }
        }
      }
    }
    attr {
      key: "index_type"
      value {
        type: DT_INT32
      }
    }
  }
  node {
    name: "gradients/add_1_grad/tuple/group_deps"
    op: "NoOp"
    input: "^gradients/Fill"
  }
  node {
    name: "gradients/add_1_grad/tuple/control_dependency"
    op: "Identity"
    input: "gradients/Fill"
    input: "^gradients/add_1_grad/tuple/group_deps"
    attr {
      key: "T"
      value {
        type: DT_FLOAT
      }
    }
    attr {
      key: "_class"
      value {
        list {
          s: "loc:@gradients/Fill"
        }
      }
    }
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
          }
        }
      }
    }
  }
  node {
    name: "gradients/add_1_grad/tuple/control_dependency_1"
    op: "Identity"
    input: "gradients/Fill"
    input: "^gradients/add_1_grad/tuple/group_deps"
    attr {
      key: "T"
      value {
        type: DT_FLOAT
      }
    }
    attr {
      key: "_class"
      value {
        list {
          s: "loc:@gradients/Fill"
        }
      }
    }
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
          }
        }
      }
    }
  }
  node {
    name: "gradients/Mean_grad/Reshape/shape"
    op: "Const"
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
            dim {
              size: 1
            }
          }
        }
      }
    }
    attr {
      key: "dtype"
      value {
        type: DT_INT32
      }
    }
    attr {
      key: "value"
      value {
        tensor {
          dtype: DT_INT32
          tensor_shape {
            dim {
              size: 1
            }
          }
          int_val: 1
        }
      }
    }
  }
  node {
    name: "gradients/Mean_grad/Reshape"
    op: "Reshape"
    input: "gradients/add_1_grad/tuple/control_dependency"
    input: "gradients/Mean_grad/Reshape/shape"
    attr {
      key: "T"
      value {
        type: DT_FLOAT
      }
    }
    attr {
      key: "Tshape"
      value {
        type: DT_INT32
      }
    }
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
            dim {
              size: 1
            }
          }
        }
      }
    }
  }
  node {
    name: "gradients/Mean_grad/Shape"
    op: "Shape"
    input: "SparseSoftmaxCrossEntropyWithLogits/SparseSoftmaxCrossEntropyWithLogits"
    attr {
      key: "T"
      value {
        type: DT_FLOAT
      }
    }
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
            dim {
              size: 1
            }
          }
        }
      }
    }
    attr {
      key: "out_type"
      value {
        type: DT_INT32
      }
    }
  }
  node {
    name: "gradients/Mean_grad/Tile"
    op: "Tile"
    input: "gradients/Mean_grad/Reshape"
    input: "gradients/Mean_grad/Shape"
    attr {
      key: "T"
      value {
        type: DT_FLOAT
      }
    }
    attr {
      key: "Tmultiples"
      value {
        type: DT_INT32
      }
    }
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
            dim {
              size: -1
            }
          }
        }
      }
    }
  }
  node {
    name: "gradients/Mean_grad/Shape_1"
    op: "Shape"
    input: "SparseSoftmaxCrossEntropyWithLogits/SparseSoftmaxCrossEntropyWithLogits"
    attr {
      key: "T"
      value {
        type: DT_FLOAT
      }
    }
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
            dim {
              size: 1
            }
          }
        }
      }
    }
    attr {
      key: "out_type"
      value {
        type: DT_INT32
      }
    }
  }
  node {
    name: "gradients/Mean_grad/Shape_2"
    op: "Const"
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
            dim {
            }
          }
        }
      }
    }
    attr {
      key: "dtype"
      value {
        type: DT_INT32
      }
    }
    attr {
      key: "value"
      value {
        tensor {
          dtype: DT_INT32
          tensor_shape {
            dim {
            }
          }
        }
      }
    }
  }
  node {
    name: "gradients/Mean_grad/Const"
    op: "Const"
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
            dim {
              size: 1
            }
          }
        }
      }
    }
    attr {
      key: "dtype"
      value {
        type: DT_INT32
      }
    }
    attr {
      key: "value"
      value {
        tensor {
          dtype: DT_INT32
          tensor_shape {
            dim {
              size: 1
            }
          }
          int_val: 0
        }
      }
    }
  }
  node {
    name: "gradients/Mean_grad/Prod"
    op: "Prod"
    input: "gradients/Mean_grad/Shape_1"
    input: "gradients/Mean_grad/Const"
    attr {
      key: "T"
      value {
        type: DT_INT32
      }
    }
    attr {
      key: "Tidx"
      value {
        type: DT_INT32
      }
    }
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
          }
        }
      }
    }
    attr {
      key: "keep_dims"
      value {
        b: false
      }
    }
  }
  node {
    name: "gradients/Mean_grad/Const_1"
    op: "Const"
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
            dim {
              size: 1
            }
          }
        }
      }
    }
    attr {
      key: "dtype"
      value {
        type: DT_INT32
      }
    }
    attr {
      key: "value"
      value {
        tensor {
          dtype: DT_INT32
          tensor_shape {
            dim {
              size: 1
            }
          }
          int_val: 0
        }
      }
    }
  }
  node {
    name: "gradients/Mean_grad/Prod_1"
    op: "Prod"
    input: "gradients/Mean_grad/Shape_2"
    input: "gradients/Mean_grad/Const_1"
    attr {
      key: "T"
      value {
        type: DT_INT32
      }
    }
    attr {
      key: "Tidx"
      value {
        type: DT_INT32
      }
    }
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
          }
        }
      }
    }
    attr {
      key: "keep_dims"
      value {
        b: false
      }
    }
  }
  node {
    name: "gradients/Mean_grad/Maximum/y"
    op: "Const"
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
          }
        }
      }
    }
    attr {
      key: "dtype"
      value {
        type: DT_INT32
      }
    }
    attr {
      key: "value"
      value {
        tensor {
          dtype: DT_INT32
          tensor_shape {
          }
          int_val: 1
        }
      }
    }
  }
  node {
    name: "gradients/Mean_grad/Maximum"
    op: "Maximum"
    input: "gradients/Mean_grad/Prod_1"
    input: "gradients/Mean_grad/Maximum/y"
    attr {
      key: "T"
      value {
        type: DT_INT32
      }
    }
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
          }
        }
      }
    }
  }
  node {
    name: "gradients/Mean_grad/floordiv"
    op: "FloorDiv"
    input: "gradients/Mean_grad/Prod"
    input: "gradients/Mean_grad/Maximum"
    attr {
      key: "T"
      value {
        type: DT_INT32
      }
    }
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
          }
        }
      }
    }
  }
  node {
    name: "gradients/Mean_grad/Cast"
    op: "Cast"
    input: "gradients/Mean_grad/floordiv"
    attr {
      key: "DstT"
      value {
        type: DT_FLOAT
      }
    }
    attr {
      key: "SrcT"
      value {
        type: DT_INT32
      }
    }
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
          }
        }
      }
    }
  }
  node {
    name: "gradients/Mean_grad/truediv"
    op: "RealDiv"
    input: "gradients/Mean_grad/Tile"
    input: "gradients/Mean_grad/Cast"
    attr {
      key: "T"
      value {
        type: DT_FLOAT
      }
    }
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
            dim {
              size: -1
            }
          }
        }
      }
    }
  }
  node {
    name: "gradients/add_grad/tuple/group_deps"
    op: "NoOp"
    input: "^gradients/add_1_grad/tuple/control_dependency_1"
  }
  node {
    name: "gradients/add_grad/tuple/control_dependency"
    op: "Identity"
    input: "gradients/add_1_grad/tuple/control_dependency_1"
    input: "^gradients/add_grad/tuple/group_deps"
    attr {
      key: "T"
      value {
        type: DT_FLOAT
      }
    }
    attr {
      key: "_class"
      value {
        list {
          s: "loc:@gradients/Fill"
        }
      }
    }
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
          }
        }
      }
    }
  }
  node {
    name: "gradients/add_grad/tuple/control_dependency_1"
    op: "Identity"
    input: "gradients/add_1_grad/tuple/control_dependency_1"
    input: "^gradients/add_grad/tuple/group_deps"
    attr {
      key: "T"
      value {
        type: DT_FLOAT
      }
    }
    attr {
      key: "_class"
      value {
        list {
          s: "loc:@gradients/Fill"
        }
      }
    }
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
          }
        }
      }
    }
  }
  node {
    name: "gradients/zeros_like"
    op: "ZerosLike"
    input: "SparseSoftmaxCrossEntropyWithLogits/SparseSoftmaxCrossEntropyWithLogits:1"
    attr {
      key: "T"
      value {
        type: DT_FLOAT
      }
    }
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
            dim {
              size: -1
            }
            dim {
              size: 10
            }
          }
        }
      }
    }
  }
  node {
    name: "gradients/SparseSoftmaxCrossEntropyWithLogits/SparseSoftmaxCrossEntropyWithLogits_grad/PreventGradient"
    op: "PreventGradient"
    input: "SparseSoftmaxCrossEntropyWithLogits/SparseSoftmaxCrossEntropyWithLogits:1"
    attr {
      key: "T"
      value {
        type: DT_FLOAT
      }
    }
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
            dim {
              size: -1
            }
            dim {
              size: 10
            }
          }
        }
      }
    }
    attr {
      key: "message"
      value {
        s: "Currently there is no way to take the second derivative of sparse_softmax_cross_entropy_with_logits due to the fused implementation\'s interaction with tf.gradients()"
      }
    }
  }
  node {
    name: "gradients/SparseSoftmaxCrossEntropyWithLogits/SparseSoftmaxCrossEntropyWithLogits_grad/ExpandDims/dim"
    op: "Const"
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
          }
        }
      }
    }
    attr {
      key: "dtype"
      value {
        type: DT_INT32
      }
    }
    attr {
      key: "value"
      value {
        tensor {
          dtype: DT_INT32
          tensor_shape {
          }
          int_val: -1
        }
      }
    }
  }
  node {
    name: "gradients/SparseSoftmaxCrossEntropyWithLogits/SparseSoftmaxCrossEntropyWithLogits_grad/ExpandDims"
    op: "ExpandDims"
    input: "gradients/Mean_grad/truediv"
    input: "gradients/SparseSoftmaxCrossEntropyWithLogits/SparseSoftmaxCrossEntropyWithLogits_grad/ExpandDims/dim"
    attr {
      key: "T"
      value {
        type: DT_FLOAT
      }
    }
    attr {
      key: "Tdim"
      value {
        type: DT_INT32
      }
    }
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
            dim {
              size: -1
            }
            dim {
              size: 1
            }
          }
        }
      }
    }
  }
  node {
    name: "gradients/SparseSoftmaxCrossEntropyWithLogits/SparseSoftmaxCrossEntropyWithLogits_grad/mul"
    op: "Mul"
    input: "gradients/SparseSoftmaxCrossEntropyWithLogits/SparseSoftmaxCrossEntropyWithLogits_grad/ExpandDims"
    input: "gradients/SparseSoftmaxCrossEntropyWithLogits/SparseSoftmaxCrossEntropyWithLogits_grad/PreventGradient"
    attr {
      key: "T"
      value {
        type: DT_FLOAT
      }
    }
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
            dim {
              size: -1
            }
            dim {
              size: 10
            }
          }
        }
      }
    }
  }
  node {
    name: "gradients/l2_regularizer_grad/Mul"
    op: "Mul"
    input: "gradients/add_grad/tuple/control_dependency"
    input: "l2_regularizer/L2Loss"
    attr {
      key: "T"
      value {
        type: DT_FLOAT
      }
    }
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
          }
        }
      }
    }
  }
  node {
    name: "gradients/l2_regularizer_grad/Mul_1"
    op: "Mul"
    input: "gradients/add_grad/tuple/control_dependency"
    input: "l2_regularizer/scale"
    attr {
      key: "T"
      value {
        type: DT_FLOAT
      }
    }
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
          }
        }
      }
    }
  }
  node {
    name: "gradients/l2_regularizer_grad/tuple/group_deps"
    op: "NoOp"
    input: "^gradients/l2_regularizer_grad/Mul"
    input: "^gradients/l2_regularizer_grad/Mul_1"
  }
  node {
    name: "gradients/l2_regularizer_grad/tuple/control_dependency"
    op: "Identity"
    input: "gradients/l2_regularizer_grad/Mul"
    input: "^gradients/l2_regularizer_grad/tuple/group_deps"
    attr {
      key: "T"
      value {
        type: DT_FLOAT
      }
    }
    attr {
      key: "_class"
      value {
        list {
          s: "loc:@gradients/l2_regularizer_grad/Mul"
        }
      }
    }
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
          }
        }
      }
    }
  }
  node {
    name: "gradients/l2_regularizer_grad/tuple/control_dependency_1"
    op: "Identity"
    input: "gradients/l2_regularizer_grad/Mul_1"
    input: "^gradients/l2_regularizer_grad/tuple/group_deps"
    attr {
      key: "T"
      value {
        type: DT_FLOAT
      }
    }
    attr {
      key: "_class"
      value {
        list {
          s: "loc:@gradients/l2_regularizer_grad/Mul_1"
        }
      }
    }
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
          }
        }
      }
    }
  }
  node {
    name: "gradients/l2_regularizer_1_grad/Mul"
    op: "Mul"
    input: "gradients/add_grad/tuple/control_dependency_1"
    input: "l2_regularizer_1/L2Loss"
    attr {
      key: "T"
      value {
        type: DT_FLOAT
      }
    }
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
          }
        }
      }
    }
  }
  node {
    name: "gradients/l2_regularizer_1_grad/Mul_1"
    op: "Mul"
    input: "gradients/add_grad/tuple/control_dependency_1"
    input: "l2_regularizer_1/scale"
    attr {
      key: "T"
      value {
        type: DT_FLOAT
      }
    }
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
          }
        }
      }
    }
  }
  node {
    name: "gradients/l2_regularizer_1_grad/tuple/group_deps"
    op: "NoOp"
    input: "^gradients/l2_regularizer_1_grad/Mul"
    input: "^gradients/l2_regularizer_1_grad/Mul_1"
  }
  node {
    name: "gradients/l2_regularizer_1_grad/tuple/control_dependency"
    op: "Identity"
    input: "gradients/l2_regularizer_1_grad/Mul"
    input: "^gradients/l2_regularizer_1_grad/tuple/group_deps"
    attr {
      key: "T"
      value {
        type: DT_FLOAT
      }
    }
    attr {
      key: "_class"
      value {
        list {
          s: "loc:@gradients/l2_regularizer_1_grad/Mul"
        }
      }
    }
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
          }
        }
      }
    }
  }
  node {
    name: "gradients/l2_regularizer_1_grad/tuple/control_dependency_1"
    op: "Identity"
    input: "gradients/l2_regularizer_1_grad/Mul_1"
    input: "^gradients/l2_regularizer_1_grad/tuple/group_deps"
    attr {
      key: "T"
      value {
        type: DT_FLOAT
      }
    }
    attr {
      key: "_class"
      value {
        list {
          s: "loc:@gradients/l2_regularizer_1_grad/Mul_1"
        }
      }
    }
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
          }
        }
      }
    }
  }
  node {
    name: "gradients/layer2_1/add_grad/Shape"
    op: "Shape"
    input: "layer2_1/MatMul"
    attr {
      key: "T"
      value {
        type: DT_FLOAT
      }
    }
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
            dim {
              size: 2
            }
          }
        }
      }
    }
    attr {
      key: "out_type"
      value {
        type: DT_INT32
      }
    }
  }
  node {
    name: "gradients/layer2_1/add_grad/Shape_1"
    op: "Const"
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
            dim {
              size: 1
            }
          }
        }
      }
    }
    attr {
      key: "dtype"
      value {
        type: DT_INT32
      }
    }
    attr {
      key: "value"
      value {
        tensor {
          dtype: DT_INT32
          tensor_shape {
            dim {
              size: 1
            }
          }
          int_val: 10
        }
      }
    }
  }
  node {
    name: "gradients/layer2_1/add_grad/BroadcastGradientArgs"
    op: "BroadcastGradientArgs"
    input: "gradients/layer2_1/add_grad/Shape"
    input: "gradients/layer2_1/add_grad/Shape_1"
    attr {
      key: "T"
      value {
        type: DT_INT32
      }
    }
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
            dim {
              size: -1
            }
          }
          shape {
            dim {
              size: -1
            }
          }
        }
      }
    }
  }
  node {
    name: "gradients/layer2_1/add_grad/Sum"
    op: "Sum"
    input: "gradients/SparseSoftmaxCrossEntropyWithLogits/SparseSoftmaxCrossEntropyWithLogits_grad/mul"
    input: "gradients/layer2_1/add_grad/BroadcastGradientArgs"
    attr {
      key: "T"
      value {
        type: DT_FLOAT
      }
    }
    attr {
      key: "Tidx"
      value {
        type: DT_INT32
      }
    }
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
            unknown_rank: true
          }
        }
      }
    }
    attr {
      key: "keep_dims"
      value {
        b: false
      }
    }
  }
  node {
    name: "gradients/layer2_1/add_grad/Reshape"
    op: "Reshape"
    input: "gradients/layer2_1/add_grad/Sum"
    input: "gradients/layer2_1/add_grad/Shape"
    attr {
      key: "T"
      value {
        type: DT_FLOAT
      }
    }
    attr {
      key: "Tshape"
      value {
        type: DT_INT32
      }
    }
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
            dim {
              size: -1
            }
            dim {
              size: 10
            }
          }
        }
      }
    }
  }
  node {
    name: "gradients/layer2_1/add_grad/Sum_1"
    op: "Sum"
    input: "gradients/SparseSoftmaxCrossEntropyWithLogits/SparseSoftmaxCrossEntropyWithLogits_grad/mul"
    input: "gradients/layer2_1/add_grad/BroadcastGradientArgs:1"
    attr {
      key: "T"
      value {
        type: DT_FLOAT
      }
    }
    attr {
      key: "Tidx"
      value {
        type: DT_INT32
      }
    }
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
            unknown_rank: true
          }
        }
      }
    }
    attr {
      key: "keep_dims"
      value {
        b: false
      }
    }
  }
  node {
    name: "gradients/layer2_1/add_grad/Reshape_1"
    op: "Reshape"
    input: "gradients/layer2_1/add_grad/Sum_1"
    input: "gradients/layer2_1/add_grad/Shape_1"
    attr {
      key: "T"
      value {
        type: DT_FLOAT
      }
    }
    attr {
      key: "Tshape"
      value {
        type: DT_INT32
      }
    }
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
            dim {
              size: 10
            }
          }
        }
      }
    }
  }
  node {
    name: "gradients/layer2_1/add_grad/tuple/group_deps"
    op: "NoOp"
    input: "^gradients/layer2_1/add_grad/Reshape"
    input: "^gradients/layer2_1/add_grad/Reshape_1"
  }
  node {
    name: "gradients/layer2_1/add_grad/tuple/control_dependency"
    op: "Identity"
    input: "gradients/layer2_1/add_grad/Reshape"
    input: "^gradients/layer2_1/add_grad/tuple/group_deps"
    attr {
      key: "T"
      value {
        type: DT_FLOAT
      }
    }
    attr {
      key: "_class"
      value {
        list {
          s: "loc:@gradients/layer2_1/add_grad/Reshape"
        }
      }
    }
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
            dim {
              size: -1
            }
            dim {
              size: 10
            }
          }
        }
      }
    }
  }
  node {
    name: "gradients/layer2_1/add_grad/tuple/control_dependency_1"
    op: "Identity"
    input: "gradients/layer2_1/add_grad/Reshape_1"
    input: "^gradients/layer2_1/add_grad/tuple/group_deps"
    attr {
      key: "T"
      value {
        type: DT_FLOAT
      }
    }
    attr {
      key: "_class"
      value {
        list {
          s: "loc:@gradients/layer2_1/add_grad/Reshape_1"
        }
      }
    }
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
            dim {
              size: 10
            }
          }
        }
      }
    }
  }
  node {
    name: "gradients/l2_regularizer/L2Loss_grad/mul"
    op: "Mul"
    input: "layer1/weights/read"
    input: "gradients/l2_regularizer_grad/tuple/control_dependency_1"
    attr {
      key: "T"
      value {
        type: DT_FLOAT
      }
    }
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
            dim {
              size: 784
            }
            dim {
              size: 500
            }
          }
        }
      }
    }
  }
  node {
    name: "gradients/l2_regularizer_1/L2Loss_grad/mul"
    op: "Mul"
    input: "layer2/weights/read"
    input: "gradients/l2_regularizer_1_grad/tuple/control_dependency_1"
    attr {
      key: "T"
      value {
        type: DT_FLOAT
      }
    }
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
            dim {
              size: 500
            }
            dim {
              size: 10
            }
          }
        }
      }
    }
  }
  node {
    name: "gradients/layer2_1/MatMul_grad/MatMul"
    op: "MatMul"
    input: "gradients/layer2_1/add_grad/tuple/control_dependency"
    input: "layer2/weights/read"
    attr {
      key: "T"
      value {
        type: DT_FLOAT
      }
    }
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
            dim {
              size: -1
            }
            dim {
              size: 500
            }
          }
        }
      }
    }
    attr {
      key: "transpose_a"
      value {
        b: false
      }
    }
    attr {
      key: "transpose_b"
      value {
        b: true
      }
    }
  }
  node {
    name: "gradients/layer2_1/MatMul_grad/MatMul_1"
    op: "MatMul"
    input: "layer1_1/Relu"
    input: "gradients/layer2_1/add_grad/tuple/control_dependency"
    attr {
      key: "T"
      value {
        type: DT_FLOAT
      }
    }
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
            dim {
              size: 500
            }
            dim {
              size: 10
            }
          }
        }
      }
    }
    attr {
      key: "transpose_a"
      value {
        b: true
      }
    }
    attr {
      key: "transpose_b"
      value {
        b: false
      }
    }
  }
  node {
    name: "gradients/layer2_1/MatMul_grad/tuple/group_deps"
    op: "NoOp"
    input: "^gradients/layer2_1/MatMul_grad/MatMul"
    input: "^gradients/layer2_1/MatMul_grad/MatMul_1"
  }
  node {
    name: "gradients/layer2_1/MatMul_grad/tuple/control_dependency"
    op: "Identity"
    input: "gradients/layer2_1/MatMul_grad/MatMul"
    input: "^gradients/layer2_1/MatMul_grad/tuple/group_deps"
    attr {
      key: "T"
      value {
        type: DT_FLOAT
      }
    }
    attr {
      key: "_class"
      value {
        list {
          s: "loc:@gradients/layer2_1/MatMul_grad/MatMul"
        }
      }
    }
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
            dim {
              size: -1
            }
            dim {
              size: 500
            }
          }
        }
      }
    }
  }
  node {
    name: "gradients/layer2_1/MatMul_grad/tuple/control_dependency_1"
    op: "Identity"
    input: "gradients/layer2_1/MatMul_grad/MatMul_1"
    input: "^gradients/layer2_1/MatMul_grad/tuple/group_deps"
    attr {
      key: "T"
      value {
        type: DT_FLOAT
      }
    }
    attr {
      key: "_class"
      value {
        list {
          s: "loc:@gradients/layer2_1/MatMul_grad/MatMul_1"
        }
      }
    }
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
            dim {
              size: 500
            }
            dim {
              size: 10
            }
          }
        }
      }
    }
  }
  node {
    name: "gradients/layer1_1/Relu_grad/ReluGrad"
    op: "ReluGrad"
    input: "gradients/layer2_1/MatMul_grad/tuple/control_dependency"
    input: "layer1_1/Relu"
    attr {
      key: "T"
      value {
        type: DT_FLOAT
      }
    }
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
            dim {
              size: -1
            }
            dim {
              size: 500
            }
          }
        }
      }
    }
  }
  node {
    name: "gradients/layer1_1/add_grad/Shape"
    op: "Shape"
    input: "layer1_1/MatMul"
    attr {
      key: "T"
      value {
        type: DT_FLOAT
      }
    }
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
            dim {
              size: 2
            }
          }
        }
      }
    }
    attr {
      key: "out_type"
      value {
        type: DT_INT32
      }
    }
  }
  node {
    name: "gradients/layer1_1/add_grad/Shape_1"
    op: "Const"
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
            dim {
              size: 1
            }
          }
        }
      }
    }
    attr {
      key: "dtype"
      value {
        type: DT_INT32
      }
    }
    attr {
      key: "value"
      value {
        tensor {
          dtype: DT_INT32
          tensor_shape {
            dim {
              size: 1
            }
          }
          int_val: 500
        }
      }
    }
  }
  node {
    name: "gradients/layer1_1/add_grad/BroadcastGradientArgs"
    op: "BroadcastGradientArgs"
    input: "gradients/layer1_1/add_grad/Shape"
    input: "gradients/layer1_1/add_grad/Shape_1"
    attr {
      key: "T"
      value {
        type: DT_INT32
      }
    }
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
            dim {
              size: -1
            }
          }
          shape {
            dim {
              size: -1
            }
          }
        }
      }
    }
  }
  node {
    name: "gradients/layer1_1/add_grad/Sum"
    op: "Sum"
    input: "gradients/layer1_1/Relu_grad/ReluGrad"
    input: "gradients/layer1_1/add_grad/BroadcastGradientArgs"
    attr {
      key: "T"
      value {
        type: DT_FLOAT
      }
    }
    attr {
      key: "Tidx"
      value {
        type: DT_INT32
      }
    }
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
            unknown_rank: true
          }
        }
      }
    }
    attr {
      key: "keep_dims"
      value {
        b: false
      }
    }
  }
  node {
    name: "gradients/layer1_1/add_grad/Reshape"
    op: "Reshape"
    input: "gradients/layer1_1/add_grad/Sum"
    input: "gradients/layer1_1/add_grad/Shape"
    attr {
      key: "T"
      value {
        type: DT_FLOAT
      }
    }
    attr {
      key: "Tshape"
      value {
        type: DT_INT32
      }
    }
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
            dim {
              size: -1
            }
            dim {
              size: 500
            }
          }
        }
      }
    }
  }
  node {
    name: "gradients/layer1_1/add_grad/Sum_1"
    op: "Sum"
    input: "gradients/layer1_1/Relu_grad/ReluGrad"
    input: "gradients/layer1_1/add_grad/BroadcastGradientArgs:1"
    attr {
      key: "T"
      value {
        type: DT_FLOAT
      }
    }
    attr {
      key: "Tidx"
      value {
        type: DT_INT32
      }
    }
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
            unknown_rank: true
          }
        }
      }
    }
    attr {
      key: "keep_dims"
      value {
        b: false
      }
    }
  }
  node {
    name: "gradients/layer1_1/add_grad/Reshape_1"
    op: "Reshape"
    input: "gradients/layer1_1/add_grad/Sum_1"
    input: "gradients/layer1_1/add_grad/Shape_1"
    attr {
      key: "T"
      value {
        type: DT_FLOAT
      }
    }
    attr {
      key: "Tshape"
      value {
        type: DT_INT32
      }
    }
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
            dim {
              size: 500
            }
          }
        }
      }
    }
  }
  node {
    name: "gradients/layer1_1/add_grad/tuple/group_deps"
    op: "NoOp"
    input: "^gradients/layer1_1/add_grad/Reshape"
    input: "^gradients/layer1_1/add_grad/Reshape_1"
  }
  node {
    name: "gradients/layer1_1/add_grad/tuple/control_dependency"
    op: "Identity"
    input: "gradients/layer1_1/add_grad/Reshape"
    input: "^gradients/layer1_1/add_grad/tuple/group_deps"
    attr {
      key: "T"
      value {
        type: DT_FLOAT
      }
    }
    attr {
      key: "_class"
      value {
        list {
          s: "loc:@gradients/layer1_1/add_grad/Reshape"
        }
      }
    }
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
            dim {
              size: -1
            }
            dim {
              size: 500
            }
          }
        }
      }
    }
  }
  node {
    name: "gradients/layer1_1/add_grad/tuple/control_dependency_1"
    op: "Identity"
    input: "gradients/layer1_1/add_grad/Reshape_1"
    input: "^gradients/layer1_1/add_grad/tuple/group_deps"
    attr {
      key: "T"
      value {
        type: DT_FLOAT
      }
    }
    attr {
      key: "_class"
      value {
        list {
          s: "loc:@gradients/layer1_1/add_grad/Reshape_1"
        }
      }
    }
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
            dim {
              size: 500
            }
          }
        }
      }
    }
  }
  node {
    name: "gradients/AddN"
    op: "AddN"
    input: "gradients/l2_regularizer_1/L2Loss_grad/mul"
    input: "gradients/layer2_1/MatMul_grad/tuple/control_dependency_1"
    attr {
      key: "N"
      value {
        i: 2
      }
    }
    attr {
      key: "T"
      value {
        type: DT_FLOAT
      }
    }
    attr {
      key: "_class"
      value {
        list {
          s: "loc:@gradients/l2_regularizer_1/L2Loss_grad/mul"
        }
      }
    }
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
            dim {
              size: 500
            }
            dim {
              size: 10
            }
          }
        }
      }
    }
  }
  node {
    name: "gradients/layer1_1/MatMul_grad/MatMul"
    op: "MatMul"
    input: "gradients/layer1_1/add_grad/tuple/control_dependency"
    input: "layer1/weights/read"
    attr {
      key: "T"
      value {
        type: DT_FLOAT
      }
    }
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
            dim {
              size: -1
            }
            dim {
              size: 784
            }
          }
        }
      }
    }
    attr {
      key: "transpose_a"
      value {
        b: false
      }
    }
    attr {
      key: "transpose_b"
      value {
        b: true
      }
    }
  }
  node {
    name: "gradients/layer1_1/MatMul_grad/MatMul_1"
    op: "MatMul"
    input: "x-input"
    input: "gradients/layer1_1/add_grad/tuple/control_dependency"
    attr {
      key: "T"
      value {
        type: DT_FLOAT
      }
    }
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
            dim {
              size: 784
            }
            dim {
              size: 500
            }
          }
        }
      }
    }
    attr {
      key: "transpose_a"
      value {
        b: true
      }
    }
    attr {
      key: "transpose_b"
      value {
        b: false
      }
    }
  }
  node {
    name: "gradients/layer1_1/MatMul_grad/tuple/group_deps"
    op: "NoOp"
    input: "^gradients/layer1_1/MatMul_grad/MatMul"
    input: "^gradients/layer1_1/MatMul_grad/MatMul_1"
  }
  node {
    name: "gradients/layer1_1/MatMul_grad/tuple/control_dependency"
    op: "Identity"
    input: "gradients/layer1_1/MatMul_grad/MatMul"
    input: "^gradients/layer1_1/MatMul_grad/tuple/group_deps"
    attr {
      key: "T"
      value {
        type: DT_FLOAT
      }
    }
    attr {
      key: "_class"
      value {
        list {
          s: "loc:@gradients/layer1_1/MatMul_grad/MatMul"
        }
      }
    }
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
            dim {
              size: -1
            }
            dim {
              size: 784
            }
          }
        }
      }
    }
  }
  node {
    name: "gradients/layer1_1/MatMul_grad/tuple/control_dependency_1"
    op: "Identity"
    input: "gradients/layer1_1/MatMul_grad/MatMul_1"
    input: "^gradients/layer1_1/MatMul_grad/tuple/group_deps"
    attr {
      key: "T"
      value {
        type: DT_FLOAT
      }
    }
    attr {
      key: "_class"
      value {
        list {
          s: "loc:@gradients/layer1_1/MatMul_grad/MatMul_1"
        }
      }
    }
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
            dim {
              size: 784
            }
            dim {
              size: 500
            }
          }
        }
      }
    }
  }
  node {
    name: "gradients/AddN_1"
    op: "AddN"
    input: "gradients/l2_regularizer/L2Loss_grad/mul"
    input: "gradients/layer1_1/MatMul_grad/tuple/control_dependency_1"
    attr {
      key: "N"
      value {
        i: 2
      }
    }
    attr {
      key: "T"
      value {
        type: DT_FLOAT
      }
    }
    attr {
      key: "_class"
      value {
        list {
          s: "loc:@gradients/l2_regularizer/L2Loss_grad/mul"
        }
      }
    }
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
            dim {
              size: 784
            }
            dim {
              size: 500
            }
          }
        }
      }
    }
  }
  node {
    name: "GradientDescent/update_layer1/weights/ApplyGradientDescent"
    op: "ApplyGradientDescent"
    input: "layer1/weights"
    input: "ExponentialDecay"
    input: "gradients/AddN_1"
    attr {
      key: "T"
      value {
        type: DT_FLOAT
      }
    }
    attr {
      key: "_class"
      value {
        list {
          s: "loc:@layer1/weights"
        }
      }
    }
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
            dim {
              size: 784
            }
            dim {
              size: 500
            }
          }
        }
      }
    }
    attr {
      key: "use_locking"
      value {
        b: false
      }
    }
  }
  node {
    name: "GradientDescent/update_layer1/biases/ApplyGradientDescent"
    op: "ApplyGradientDescent"
    input: "layer1/biases"
    input: "ExponentialDecay"
    input: "gradients/layer1_1/add_grad/tuple/control_dependency_1"
    attr {
      key: "T"
      value {
        type: DT_FLOAT
      }
    }
    attr {
      key: "_class"
      value {
        list {
          s: "loc:@layer1/biases"
        }
      }
    }
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
            dim {
              size: 500
            }
          }
        }
      }
    }
    attr {
      key: "use_locking"
      value {
        b: false
      }
    }
  }
  node {
    name: "GradientDescent/update_layer2/weights/ApplyGradientDescent"
    op: "ApplyGradientDescent"
    input: "layer2/weights"
    input: "ExponentialDecay"
    input: "gradients/AddN"
    attr {
      key: "T"
      value {
        type: DT_FLOAT
      }
    }
    attr {
      key: "_class"
      value {
        list {
          s: "loc:@layer2/weights"
        }
      }
    }
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
            dim {
              size: 500
            }
            dim {
              size: 10
            }
          }
        }
      }
    }
    attr {
      key: "use_locking"
      value {
        b: false
      }
    }
  }
  node {
    name: "GradientDescent/update_layer2/biases/ApplyGradientDescent"
    op: "ApplyGradientDescent"
    input: "layer2/biases"
    input: "ExponentialDecay"
    input: "gradients/layer2_1/add_grad/tuple/control_dependency_1"
    attr {
      key: "T"
      value {
        type: DT_FLOAT
      }
    }
    attr {
      key: "_class"
      value {
        list {
          s: "loc:@layer2/biases"
        }
      }
    }
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
            dim {
              size: 10
            }
          }
        }
      }
    }
    attr {
      key: "use_locking"
      value {
        b: false
      }
    }
  }
  node {
    name: "GradientDescent/update"
    op: "NoOp"
    input: "^GradientDescent/update_layer1/biases/ApplyGradientDescent"
    input: "^GradientDescent/update_layer1/weights/ApplyGradientDescent"
    input: "^GradientDescent/update_layer2/biases/ApplyGradientDescent"
    input: "^GradientDescent/update_layer2/weights/ApplyGradientDescent"
  }
  node {
    name: "GradientDescent/value"
    op: "Const"
    input: "^GradientDescent/update"
    attr {
      key: "_class"
      value {
        list {
          s: "loc:@Variable"
        }
      }
    }
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
          }
        }
      }
    }
    attr {
      key: "dtype"
      value {
        type: DT_INT32
      }
    }
    attr {
      key: "value"
      value {
        tensor {
          dtype: DT_INT32
          tensor_shape {
          }
          int_val: 1
        }
      }
    }
  }
  node {
    name: "GradientDescent"
    op: "AssignAdd"
    input: "Variable"
    input: "GradientDescent/value"
    attr {
      key: "T"
      value {
        type: DT_INT32
      }
    }
    attr {
      key: "_class"
      value {
        list {
          s: "loc:@Variable"
        }
      }
    }
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
          }
        }
      }
    }
    attr {
      key: "use_locking"
      value {
        b: false
      }
    }
  }
  node {
    name: "train"
    op: "NoOp"
    input: "^ExponentialMovingAverage"
    input: "^GradientDescent"
  }
  node {
    name: "ArgMax_1/dimension"
    op: "Const"
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
          }
        }
      }
    }
    attr {
      key: "dtype"
      value {
        type: DT_INT32
      }
    }
    attr {
      key: "value"
      value {
        tensor {
          dtype: DT_INT32
          tensor_shape {
          }
          int_val: 1
        }
      }
    }
  }
  node {
    name: "ArgMax_1"
    op: "ArgMax"
    input: "layer2_2/add"
    input: "ArgMax_1/dimension"
    attr {
      key: "T"
      value {
        type: DT_FLOAT
      }
    }
    attr {
      key: "Tidx"
      value {
        type: DT_INT32
      }
    }
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
            dim {
              size: -1
            }
          }
        }
      }
    }
    attr {
      key: "output_type"
      value {
        type: DT_INT64
      }
    }
  }
  node {
    name: "ArgMax_2/dimension"
    op: "Const"
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
          }
        }
      }
    }
    attr {
      key: "dtype"
      value {
        type: DT_INT32
      }
    }
    attr {
      key: "value"
      value {
        tensor {
          dtype: DT_INT32
          tensor_shape {
          }
          int_val: 1
        }
      }
    }
  }
  node {
    name: "ArgMax_2"
    op: "ArgMax"
    input: "layer2/add"
    input: "ArgMax_2/dimension"
    attr {
      key: "T"
      value {
        type: DT_FLOAT
      }
    }
    attr {
      key: "Tidx"
      value {
        type: DT_INT32
      }
    }
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
            dim {
              size: -1
            }
          }
        }
      }
    }
    attr {
      key: "output_type"
      value {
        type: DT_INT64
      }
    }
  }
  node {
    name: "Equal"
    op: "Equal"
    input: "ArgMax_1"
    input: "ArgMax_2"
    attr {
      key: "T"
      value {
        type: DT_INT64
      }
    }
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
            dim {
              size: -1
            }
          }
        }
      }
    }
  }
  node {
    name: "Cast"
    op: "Cast"
    input: "Equal"
    attr {
      key: "DstT"
      value {
        type: DT_FLOAT
      }
    }
    attr {
      key: "SrcT"
      value {
        type: DT_BOOL
      }
    }
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
            dim {
              size: -1
            }
          }
        }
      }
    }
  }
  node {
    name: "Const_1"
    op: "Const"
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
            dim {
              size: 1
            }
          }
        }
      }
    }
    attr {
      key: "dtype"
      value {
        type: DT_INT32
      }
    }
    attr {
      key: "value"
      value {
        tensor {
          dtype: DT_INT32
          tensor_shape {
            dim {
              size: 1
            }
          }
          int_val: 0
        }
      }
    }
  }
  node {
    name: "Mean_1"
    op: "Mean"
    input: "Cast"
    input: "Const_1"
    attr {
      key: "T"
      value {
        type: DT_FLOAT
      }
    }
    attr {
      key: "Tidx"
      value {
        type: DT_INT32
      }
    }
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
          }
        }
      }
    }
    attr {
      key: "keep_dims"
      value {
        b: false
      }
    }
  }
  node {
    name: "init"
    op: "NoOp"
    input: "^Variable/Assign"
    input: "^layer1/biases/Assign"
    input: "^layer1/biases/ExponentialMovingAverage/Assign"
    input: "^layer1/weights/Assign"
    input: "^layer1/weights/ExponentialMovingAverage/Assign"
    input: "^layer2/biases/Assign"
    input: "^layer2/biases/ExponentialMovingAverage/Assign"
    input: "^layer2/weights/Assign"
    input: "^layer2/weights/ExponentialMovingAverage/Assign"
  }
  node {
    name: "save/Const"
    op: "Const"
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
          }
        }
      }
    }
    attr {
      key: "dtype"
      value {
        type: DT_STRING
      }
    }
    attr {
      key: "value"
      value {
        tensor {
          dtype: DT_STRING
          tensor_shape {
          }
          string_val: "model"
        }
      }
    }
  }
  node {
    name: "save/SaveV2/tensor_names"
    op: "Const"
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
            dim {
              size: 9
            }
          }
        }
      }
    }
    attr {
      key: "dtype"
      value {
        type: DT_STRING
      }
    }
    attr {
      key: "value"
      value {
        tensor {
          dtype: DT_STRING
          tensor_shape {
            dim {
              size: 9
            }
          }
          string_val: "Variable"
          string_val: "layer1/biases"
          string_val: "layer1/biases/ExponentialMovingAverage"
          string_val: "layer1/weights"
          string_val: "layer1/weights/ExponentialMovingAverage"
          string_val: "layer2/biases"
          string_val: "layer2/biases/ExponentialMovingAverage"
          string_val: "layer2/weights"
          string_val: "layer2/weights/ExponentialMovingAverage"
        }
      }
    }
  }
  node {
    name: "save/SaveV2/shape_and_slices"
    op: "Const"
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
            dim {
              size: 9
            }
          }
        }
      }
    }
    attr {
      key: "dtype"
      value {
        type: DT_STRING
      }
    }
    attr {
      key: "value"
      value {
        tensor {
          dtype: DT_STRING
          tensor_shape {
            dim {
              size: 9
            }
          }
          string_val: ""
          string_val: ""
          string_val: ""
          string_val: ""
          string_val: ""
          string_val: ""
          string_val: ""
          string_val: ""
          string_val: ""
        }
      }
    }
  }
  node {
    name: "save/SaveV2"
    op: "SaveV2"
    input: "save/Const"
    input: "save/SaveV2/tensor_names"
    input: "save/SaveV2/shape_and_slices"
    input: "Variable"
    input: "layer1/biases"
    input: "layer1/biases/ExponentialMovingAverage"
    input: "layer1/weights"
    input: "layer1/weights/ExponentialMovingAverage"
    input: "layer2/biases"
    input: "layer2/biases/ExponentialMovingAverage"
    input: "layer2/weights"
    input: "layer2/weights/ExponentialMovingAverage"
    attr {
      key: "dtypes"
      value {
        list {
          type: DT_INT32
          type: DT_FLOAT
          type: DT_FLOAT
          type: DT_FLOAT
          type: DT_FLOAT
          type: DT_FLOAT
          type: DT_FLOAT
          type: DT_FLOAT
          type: DT_FLOAT
        }
      }
    }
  }
  node {
    name: "save/control_dependency"
    op: "Identity"
    input: "save/Const"
    input: "^save/SaveV2"
    attr {
      key: "T"
      value {
        type: DT_STRING
      }
    }
    attr {
      key: "_class"
      value {
        list {
          s: "loc:@save/Const"
        }
      }
    }
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
          }
        }
      }
    }
  }
  node {
    name: "save/RestoreV2/tensor_names"
    op: "Const"
    device: "/device:CPU:0"
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
            dim {
              size: 9
            }
          }
        }
      }
    }
    attr {
      key: "dtype"
      value {
        type: DT_STRING
      }
    }
    attr {
      key: "value"
      value {
        tensor {
          dtype: DT_STRING
          tensor_shape {
            dim {
              size: 9
            }
          }
          string_val: "Variable"
          string_val: "layer1/biases"
          string_val: "layer1/biases/ExponentialMovingAverage"
          string_val: "layer1/weights"
          string_val: "layer1/weights/ExponentialMovingAverage"
          string_val: "layer2/biases"
          string_val: "layer2/biases/ExponentialMovingAverage"
          string_val: "layer2/weights"
          string_val: "layer2/weights/ExponentialMovingAverage"
        }
      }
    }
  }
  node {
    name: "save/RestoreV2/shape_and_slices"
    op: "Const"
    device: "/device:CPU:0"
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
            dim {
              size: 9
            }
          }
        }
      }
    }
    attr {
      key: "dtype"
      value {
        type: DT_STRING
      }
    }
    attr {
      key: "value"
      value {
        tensor {
          dtype: DT_STRING
          tensor_shape {
            dim {
              size: 9
            }
          }
          string_val: ""
          string_val: ""
          string_val: ""
          string_val: ""
          string_val: ""
          string_val: ""
          string_val: ""
          string_val: ""
          string_val: ""
        }
      }
    }
  }
  node {
    name: "save/RestoreV2"
    op: "RestoreV2"
    input: "save/Const"
    input: "save/RestoreV2/tensor_names"
    input: "save/RestoreV2/shape_and_slices"
    device: "/device:CPU:0"
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
            unknown_rank: true
          }
          shape {
            unknown_rank: true
          }
          shape {
            unknown_rank: true
          }
          shape {
            unknown_rank: true
          }
          shape {
            unknown_rank: true
          }
          shape {
            unknown_rank: true
          }
          shape {
            unknown_rank: true
          }
          shape {
            unknown_rank: true
          }
          shape {
            unknown_rank: true
          }
        }
      }
    }
    attr {
      key: "dtypes"
      value {
        list {
          type: DT_INT32
          type: DT_FLOAT
          type: DT_FLOAT
          type: DT_FLOAT
          type: DT_FLOAT
          type: DT_FLOAT
          type: DT_FLOAT
          type: DT_FLOAT
          type: DT_FLOAT
        }
      }
    }
  }
  node {
    name: "save/Assign"
    op: "Assign"
    input: "Variable"
    input: "save/RestoreV2"
    attr {
      key: "T"
      value {
        type: DT_INT32
      }
    }
    attr {
      key: "_class"
      value {
        list {
          s: "loc:@Variable"
        }
      }
    }
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
          }
        }
      }
    }
    attr {
      key: "use_locking"
      value {
        b: true
      }
    }
    attr {
      key: "validate_shape"
      value {
        b: true
      }
    }
  }
  node {
    name: "save/Assign_1"
    op: "Assign"
    input: "layer1/biases"
    input: "save/RestoreV2:1"
    attr {
      key: "T"
      value {
        type: DT_FLOAT
      }
    }
    attr {
      key: "_class"
      value {
        list {
          s: "loc:@layer1/biases"
        }
      }
    }
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
            dim {
              size: 500
            }
          }
        }
      }
    }
    attr {
      key: "use_locking"
      value {
        b: true
      }
    }
    attr {
      key: "validate_shape"
      value {
        b: true
      }
    }
  }
  node {
    name: "save/Assign_2"
    op: "Assign"
    input: "layer1/biases/ExponentialMovingAverage"
    input: "save/RestoreV2:2"
    attr {
      key: "T"
      value {
        type: DT_FLOAT
      }
    }
    attr {
      key: "_class"
      value {
        list {
          s: "loc:@layer1/biases"
        }
      }
    }
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
            dim {
              size: 500
            }
          }
        }
      }
    }
    attr {
      key: "use_locking"
      value {
        b: true
      }
    }
    attr {
      key: "validate_shape"
      value {
        b: true
      }
    }
  }
  node {
    name: "save/Assign_3"
    op: "Assign"
    input: "layer1/weights"
    input: "save/RestoreV2:3"
    attr {
      key: "T"
      value {
        type: DT_FLOAT
      }
    }
    attr {
      key: "_class"
      value {
        list {
          s: "loc:@layer1/weights"
        }
      }
    }
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
            dim {
              size: 784
            }
            dim {
              size: 500
            }
          }
        }
      }
    }
    attr {
      key: "use_locking"
      value {
        b: true
      }
    }
    attr {
      key: "validate_shape"
      value {
        b: true
      }
    }
  }
  node {
    name: "save/Assign_4"
    op: "Assign"
    input: "layer1/weights/ExponentialMovingAverage"
    input: "save/RestoreV2:4"
    attr {
      key: "T"
      value {
        type: DT_FLOAT
      }
    }
    attr {
      key: "_class"
      value {
        list {
          s: "loc:@layer1/weights"
        }
      }
    }
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
            dim {
              size: 784
            }
            dim {
              size: 500
            }
          }
        }
      }
    }
    attr {
      key: "use_locking"
      value {
        b: true
      }
    }
    attr {
      key: "validate_shape"
      value {
        b: true
      }
    }
  }
  node {
    name: "save/Assign_5"
    op: "Assign"
    input: "layer2/biases"
    input: "save/RestoreV2:5"
    attr {
      key: "T"
      value {
        type: DT_FLOAT
      }
    }
    attr {
      key: "_class"
      value {
        list {
          s: "loc:@layer2/biases"
        }
      }
    }
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
            dim {
              size: 10
            }
          }
        }
      }
    }
    attr {
      key: "use_locking"
      value {
        b: true
      }
    }
    attr {
      key: "validate_shape"
      value {
        b: true
      }
    }
  }
  node {
    name: "save/Assign_6"
    op: "Assign"
    input: "layer2/biases/ExponentialMovingAverage"
    input: "save/RestoreV2:6"
    attr {
      key: "T"
      value {
        type: DT_FLOAT
      }
    }
    attr {
      key: "_class"
      value {
        list {
          s: "loc:@layer2/biases"
        }
      }
    }
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
            dim {
              size: 10
            }
          }
        }
      }
    }
    attr {
      key: "use_locking"
      value {
        b: true
      }
    }
    attr {
      key: "validate_shape"
      value {
        b: true
      }
    }
  }
  node {
    name: "save/Assign_7"
    op: "Assign"
    input: "layer2/weights"
    input: "save/RestoreV2:7"
    attr {
      key: "T"
      value {
        type: DT_FLOAT
      }
    }
    attr {
      key: "_class"
      value {
        list {
          s: "loc:@layer2/weights"
        }
      }
    }
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
            dim {
              size: 500
            }
            dim {
              size: 10
            }
          }
        }
      }
    }
    attr {
      key: "use_locking"
      value {
        b: true
      }
    }
    attr {
      key: "validate_shape"
      value {
        b: true
      }
    }
  }
  node {
    name: "save/Assign_8"
    op: "Assign"
    input: "layer2/weights/ExponentialMovingAverage"
    input: "save/RestoreV2:8"
    attr {
      key: "T"
      value {
        type: DT_FLOAT
      }
    }
    attr {
      key: "_class"
      value {
        list {
          s: "loc:@layer2/weights"
        }
      }
    }
    attr {
      key: "_output_shapes"
      value {
        list {
          shape {
            dim {
              size: 500
            }
            dim {
              size: 10
            }
          }
        }
      }
    }
    attr {
      key: "use_locking"
      value {
        b: true
      }
    }
    attr {
      key: "validate_shape"
      value {
        b: true
      }
    }
  }
  node {
    name: "save/restore_all"
    op: "NoOp"
    input: "^save/Assign"
    input: "^save/Assign_1"
    input: "^save/Assign_2"
    input: "^save/Assign_3"
    input: "^save/Assign_4"
    input: "^save/Assign_5"
    input: "^save/Assign_6"
    input: "^save/Assign_7"
    input: "^save/Assign_8"
  }
  versions {
    producer: 26
  }
}
saver_def {
  filename_tensor_name: "save/Const:0"
  save_tensor_name: "save/control_dependency:0"
  restore_op_name: "save/restore_all"
  max_to_keep: 5
  keep_checkpoint_every_n_hours: 10000.0
  version: V2
}
collection_def {
  key: "cond_context"
  value {
    bytes_list {
      value: "\n\016cond/cond_text\022\016cond/pred_id:0\032\017cond/switch_t:0 \001*\302\001\n\016cond/pred_id:0\n\022cond/read/Switch:1\n\013cond/read:0\n\017cond/switch_t:0\n\020layer1/weights:0\022 \n\016cond/pred_id:0\022\016cond/pred_id:0\022&\n\020layer1/weights:0\022\022cond/read/Switch:1\022\"\n\017cond/switch_t:0\022\017cond/switch_t:0"
      value: "\n\020cond/cond_text_1\022\016cond/pred_id:0\032\017cond/switch_f:0*\372\001\n\017cond/Switch_1:0\n\017cond/Switch_1:1\n\016cond/pred_id:0\n\017cond/switch_f:0\n-layer1/weights/Initializer/truncated_normal:0\022\"\n\017cond/switch_f:0\022\017cond/switch_f:0\022 \n\016cond/pred_id:0\022\016cond/pred_id:0\022@\n-layer1/weights/Initializer/truncated_normal:0\022\017cond/Switch_1:0"
      value: "\n6layer1/weights/ExponentialMovingAverage/cond/cond_text\0226layer1/weights/ExponentialMovingAverage/cond/pred_id:0\0327layer1/weights/ExponentialMovingAverage/cond/switch_t:0 \001*\252\004\n6layer1/weights/ExponentialMovingAverage/cond/pred_id:0\n:layer1/weights/ExponentialMovingAverage/cond/read/Switch:1\n3layer1/weights/ExponentialMovingAverage/cond/read:0\n7layer1/weights/ExponentialMovingAverage/cond/switch_t:0\n\020layer1/weights:0\022r\n7layer1/weights/ExponentialMovingAverage/cond/switch_t:0\0227layer1/weights/ExponentialMovingAverage/cond/switch_t:0\022N\n\020layer1/weights:0\022:layer1/weights/ExponentialMovingAverage/cond/read/Switch:1\022p\n6layer1/weights/ExponentialMovingAverage/cond/pred_id:0\0226layer1/weights/ExponentialMovingAverage/cond/pred_id:0"
      value: "\n8layer1/weights/ExponentialMovingAverage/cond/cond_text_1\0226layer1/weights/ExponentialMovingAverage/cond/pred_id:0\0327layer1/weights/ExponentialMovingAverage/cond/switch_f:0*\342\004\n7layer1/weights/ExponentialMovingAverage/cond/Switch_1:0\n7layer1/weights/ExponentialMovingAverage/cond/Switch_1:1\n6layer1/weights/ExponentialMovingAverage/cond/pred_id:0\n7layer1/weights/ExponentialMovingAverage/cond/switch_f:0\n-layer1/weights/Initializer/truncated_normal:0\022r\n7layer1/weights/ExponentialMovingAverage/cond/switch_f:0\0227layer1/weights/ExponentialMovingAverage/cond/switch_f:0\022p\n6layer1/weights/ExponentialMovingAverage/cond/pred_id:0\0226layer1/weights/ExponentialMovingAverage/cond/pred_id:0\022h\n-layer1/weights/Initializer/truncated_normal:0\0227layer1/weights/ExponentialMovingAverage/cond/Switch_1:0"
      value: "\n\020cond_1/cond_text\022\020cond_1/pred_id:0\032\021cond_1/switch_t:0 \001*\322\001\n\020cond_1/pred_id:0\n\024cond_1/read/Switch:1\n\rcond_1/read:0\n\021cond_1/switch_t:0\n\017layer1/biases:0\022\'\n\017layer1/biases:0\022\024cond_1/read/Switch:1\022&\n\021cond_1/switch_t:0\022\021cond_1/switch_t:0\022$\n\020cond_1/pred_id:0\022\020cond_1/pred_id:0"
      value: "\n\022cond_1/cond_text_1\022\020cond_1/pred_id:0\032\021cond_1/switch_f:0*\364\001\n\021cond_1/Switch_1:0\n\021cond_1/Switch_1:1\n\020cond_1/pred_id:0\n\021cond_1/switch_f:0\n!layer1/biases/Initializer/Const:0\0226\n!layer1/biases/Initializer/Const:0\022\021cond_1/Switch_1:0\022&\n\021cond_1/switch_f:0\022\021cond_1/switch_f:0\022$\n\020cond_1/pred_id:0\022\020cond_1/pred_id:0"
      value: "\n5layer1/biases/ExponentialMovingAverage/cond/cond_text\0225layer1/biases/ExponentialMovingAverage/cond/pred_id:0\0326layer1/biases/ExponentialMovingAverage/cond/switch_t:0 \001*\237\004\n5layer1/biases/ExponentialMovingAverage/cond/pred_id:0\n9layer1/biases/ExponentialMovingAverage/cond/read/Switch:1\n2layer1/biases/ExponentialMovingAverage/cond/read:0\n6layer1/biases/ExponentialMovingAverage/cond/switch_t:0\n\017layer1/biases:0\022n\n5layer1/biases/ExponentialMovingAverage/cond/pred_id:0\0225layer1/biases/ExponentialMovingAverage/cond/pred_id:0\022L\n\017layer1/biases:0\0229layer1/biases/ExponentialMovingAverage/cond/read/Switch:1\022p\n6layer1/biases/ExponentialMovingAverage/cond/switch_t:0\0226layer1/biases/ExponentialMovingAverage/cond/switch_t:0"
      value: "\n7layer1/biases/ExponentialMovingAverage/cond/cond_text_1\0225layer1/biases/ExponentialMovingAverage/cond/pred_id:0\0326layer1/biases/ExponentialMovingAverage/cond/switch_f:0*\301\004\n6layer1/biases/ExponentialMovingAverage/cond/Switch_1:0\n6layer1/biases/ExponentialMovingAverage/cond/Switch_1:1\n5layer1/biases/ExponentialMovingAverage/cond/pred_id:0\n6layer1/biases/ExponentialMovingAverage/cond/switch_f:0\n!layer1/biases/Initializer/Const:0\022[\n!layer1/biases/Initializer/Const:0\0226layer1/biases/ExponentialMovingAverage/cond/Switch_1:0\022n\n5layer1/biases/ExponentialMovingAverage/cond/pred_id:0\0225layer1/biases/ExponentialMovingAverage/cond/pred_id:0\022p\n6layer1/biases/ExponentialMovingAverage/cond/switch_f:0\0226layer1/biases/ExponentialMovingAverage/cond/switch_f:0"
      value: "\n\020cond_2/cond_text\022\020cond_2/pred_id:0\032\021cond_2/switch_t:0 \001*\324\001\n\020cond_2/pred_id:0\n\024cond_2/read/Switch:1\n\rcond_2/read:0\n\021cond_2/switch_t:0\n\020layer2/weights:0\022$\n\020cond_2/pred_id:0\022\020cond_2/pred_id:0\022&\n\021cond_2/switch_t:0\022\021cond_2/switch_t:0\022(\n\020layer2/weights:0\022\024cond_2/read/Switch:1"
      value: "\n\022cond_2/cond_text_1\022\020cond_2/pred_id:0\032\021cond_2/switch_f:0*\214\002\n\021cond_2/Switch_1:0\n\021cond_2/Switch_1:1\n\020cond_2/pred_id:0\n\021cond_2/switch_f:0\n-layer2/weights/Initializer/truncated_normal:0\022&\n\021cond_2/switch_f:0\022\021cond_2/switch_f:0\022B\n-layer2/weights/Initializer/truncated_normal:0\022\021cond_2/Switch_1:0\022$\n\020cond_2/pred_id:0\022\020cond_2/pred_id:0"
      value: "\n6layer2/weights/ExponentialMovingAverage/cond/cond_text\0226layer2/weights/ExponentialMovingAverage/cond/pred_id:0\0327layer2/weights/ExponentialMovingAverage/cond/switch_t:0 \001*\252\004\n6layer2/weights/ExponentialMovingAverage/cond/pred_id:0\n:layer2/weights/ExponentialMovingAverage/cond/read/Switch:1\n3layer2/weights/ExponentialMovingAverage/cond/read:0\n7layer2/weights/ExponentialMovingAverage/cond/switch_t:0\n\020layer2/weights:0\022N\n\020layer2/weights:0\022:layer2/weights/ExponentialMovingAverage/cond/read/Switch:1\022p\n6layer2/weights/ExponentialMovingAverage/cond/pred_id:0\0226layer2/weights/ExponentialMovingAverage/cond/pred_id:0\022r\n7layer2/weights/ExponentialMovingAverage/cond/switch_t:0\0227layer2/weights/ExponentialMovingAverage/cond/switch_t:0"
      value: "\n8layer2/weights/ExponentialMovingAverage/cond/cond_text_1\0226layer2/weights/ExponentialMovingAverage/cond/pred_id:0\0327layer2/weights/ExponentialMovingAverage/cond/switch_f:0*\342\004\n7layer2/weights/ExponentialMovingAverage/cond/Switch_1:0\n7layer2/weights/ExponentialMovingAverage/cond/Switch_1:1\n6layer2/weights/ExponentialMovingAverage/cond/pred_id:0\n7layer2/weights/ExponentialMovingAverage/cond/switch_f:0\n-layer2/weights/Initializer/truncated_normal:0\022p\n6layer2/weights/ExponentialMovingAverage/cond/pred_id:0\0226layer2/weights/ExponentialMovingAverage/cond/pred_id:0\022r\n7layer2/weights/ExponentialMovingAverage/cond/switch_f:0\0227layer2/weights/ExponentialMovingAverage/cond/switch_f:0\022h\n-layer2/weights/Initializer/truncated_normal:0\0227layer2/weights/ExponentialMovingAverage/cond/Switch_1:0"
      value: "\n\020cond_3/cond_text\022\020cond_3/pred_id:0\032\021cond_3/switch_t:0 \001*\322\001\n\020cond_3/pred_id:0\n\024cond_3/read/Switch:1\n\rcond_3/read:0\n\021cond_3/switch_t:0\n\017layer2/biases:0\022&\n\021cond_3/switch_t:0\022\021cond_3/switch_t:0\022$\n\020cond_3/pred_id:0\022\020cond_3/pred_id:0\022\'\n\017layer2/biases:0\022\024cond_3/read/Switch:1"
      value: "\n\022cond_3/cond_text_1\022\020cond_3/pred_id:0\032\021cond_3/switch_f:0*\364\001\n\021cond_3/Switch_1:0\n\021cond_3/Switch_1:1\n\020cond_3/pred_id:0\n\021cond_3/switch_f:0\n!layer2/biases/Initializer/Const:0\0226\n!layer2/biases/Initializer/Const:0\022\021cond_3/Switch_1:0\022$\n\020cond_3/pred_id:0\022\020cond_3/pred_id:0\022&\n\021cond_3/switch_f:0\022\021cond_3/switch_f:0"
      value: "\n5layer2/biases/ExponentialMovingAverage/cond/cond_text\0225layer2/biases/ExponentialMovingAverage/cond/pred_id:0\0326layer2/biases/ExponentialMovingAverage/cond/switch_t:0 \001*\237\004\n5layer2/biases/ExponentialMovingAverage/cond/pred_id:0\n9layer2/biases/ExponentialMovingAverage/cond/read/Switch:1\n2layer2/biases/ExponentialMovingAverage/cond/read:0\n6layer2/biases/ExponentialMovingAverage/cond/switch_t:0\n\017layer2/biases:0\022n\n5layer2/biases/ExponentialMovingAverage/cond/pred_id:0\0225layer2/biases/ExponentialMovingAverage/cond/pred_id:0\022p\n6layer2/biases/ExponentialMovingAverage/cond/switch_t:0\0226layer2/biases/ExponentialMovingAverage/cond/switch_t:0\022L\n\017layer2/biases:0\0229layer2/biases/ExponentialMovingAverage/cond/read/Switch:1"
      value: "\n7layer2/biases/ExponentialMovingAverage/cond/cond_text_1\0225layer2/biases/ExponentialMovingAverage/cond/pred_id:0\0326layer2/biases/ExponentialMovingAverage/cond/switch_f:0*\301\004\n6layer2/biases/ExponentialMovingAverage/cond/Switch_1:0\n6layer2/biases/ExponentialMovingAverage/cond/Switch_1:1\n5layer2/biases/ExponentialMovingAverage/cond/pred_id:0\n6layer2/biases/ExponentialMovingAverage/cond/switch_f:0\n!layer2/biases/Initializer/Const:0\022[\n!layer2/biases/Initializer/Const:0\0226layer2/biases/ExponentialMovingAverage/cond/Switch_1:0\022p\n6layer2/biases/ExponentialMovingAverage/cond/switch_f:0\0226layer2/biases/ExponentialMovingAverage/cond/switch_f:0\022n\n5layer2/biases/ExponentialMovingAverage/cond/pred_id:0\0225layer2/biases/ExponentialMovingAverage/cond/pred_id:0"
    }
  }
}
collection_def {
  key: "moving_average_variables"
  value {
    bytes_list {
      value: "\n\020layer1/weights:0\022\025layer1/weights/Assign\032\025layer1/weights/read:02-layer1/weights/Initializer/truncated_normal:0"
      value: "\n\017layer1/biases:0\022\024layer1/biases/Assign\032\024layer1/biases/read:02!layer1/biases/Initializer/Const:0"
      value: "\n\020layer2/weights:0\022\025layer2/weights/Assign\032\025layer2/weights/read:02-layer2/weights/Initializer/truncated_normal:0"
      value: "\n\017layer2/biases:0\022\024layer2/biases/Assign\032\024layer2/biases/read:02!layer2/biases/Initializer/Const:0"
    }
  }
}
collection_def {
  key: "train_op"
  value {
    node_list {
      value: "GradientDescent"
    }
  }
}
collection_def {
  key: "trainable_variables"
  value {
    bytes_list {
      value: "\n\020layer1/weights:0\022\025layer1/weights/Assign\032\025layer1/weights/read:02-layer1/weights/Initializer/truncated_normal:0"
      value: "\n\017layer1/biases:0\022\024layer1/biases/Assign\032\024layer1/biases/read:02!layer1/biases/Initializer/Const:0"
      value: "\n\020layer2/weights:0\022\025layer2/weights/Assign\032\025layer2/weights/read:02-layer2/weights/Initializer/truncated_normal:0"
      value: "\n\017layer2/biases:0\022\024layer2/biases/Assign\032\024layer2/biases/read:02!layer2/biases/Initializer/Const:0"
    }
  }
}
collection_def {
  key: "variables"
  value {
    bytes_list {
      value: "\n\020layer1/weights:0\022\025layer1/weights/Assign\032\025layer1/weights/read:02-layer1/weights/Initializer/truncated_normal:0"
      value: "\n\017layer1/biases:0\022\024layer1/biases/Assign\032\024layer1/biases/read:02!layer1/biases/Initializer/Const:0"
      value: "\n\020layer2/weights:0\022\025layer2/weights/Assign\032\025layer2/weights/read:02-layer2/weights/Initializer/truncated_normal:0"
      value: "\n\017layer2/biases:0\022\024layer2/biases/Assign\032\024layer2/biases/read:02!layer2/biases/Initializer/Const:0"
      value: "\n\nVariable:0\022\017Variable/Assign\032\017Variable/read:02\030Variable/initial_value:0"
      value: "\n)layer1/weights/ExponentialMovingAverage:0\022.layer1/weights/ExponentialMovingAverage/Assign\032.layer1/weights/ExponentialMovingAverage/read:02\014cond/Merge:0"
      value: "\n(layer1/biases/ExponentialMovingAverage:0\022-layer1/biases/ExponentialMovingAverage/Assign\032-layer1/biases/ExponentialMovingAverage/read:02\016cond_1/Merge:0"
      value: "\n)layer2/weights/ExponentialMovingAverage:0\022.layer2/weights/ExponentialMovingAverage/Assign\032.layer2/weights/ExponentialMovingAverage/read:02\016cond_2/Merge:0"
      value: "\n(layer2/biases/ExponentialMovingAverage:0\022-layer2/biases/ExponentialMovingAverage/Assign\032-layer2/biases/ExponentialMovingAverage/read:02\016cond_3/Merge:0"
    }
  }
}
