input: 
  def decode_libsvm(input, num_features, dtype=_dtypes.float32, label_dtype=_dtypes.int64, name=None):
      """
      Convert LibSVM input to tensors. The output consists of a label and a feature tensor.
      
      Args:
          input: A `Tensor` of type `string`. Each string is a record in the LibSVM.
          num_features: An `int` that is `>= 1`. The number of features.
          dtype: An optional `tf.DType` from: `tf.float32, tf.float64, tf.int32, tf.int64`. Defaults to `tf.float32`.
          label_dtype: An optional `tf.DType` from: `tf.float32, tf.float64, tf.int32, tf.int64`. Defaults to `tf.int64`.
          name: A name for the operation (optional).
  
      Returns:
          A tuple of `Tensor` objects (label, feature_indices, feature_values, feature_shape).
  
          label: A `Tensor` of type `label_dtype`. A tensor of the same shape as input.
          feature_indices: A `Tensor` of type `int64`. A 2-D int64 tensor of dense_shape [N, ndims].
          feature_values: A `Tensor` of type `dtype`. A 1-D tensor of any type and dense_shape [N].
          feature_shape: A `Tensor` of type `int64`. A 1-D int64 tensor of dense_shape [ndims].
      
      >>> decode_libsvm(['1 1:2.0 2:3.0', '2 1:1.0 2:4.0'], 2)
      (_tf.Tensor: shape=(2,), dtype=int64, numpy=array([1, 2], dtype=int64)>,
       _tf.Tensor: shape=(4, 2), dtype=int64, numpy=
      array([[0, 1],
             [0, 2],
             [1, 1],
             [1, 2]], dtype=int64)>,
       _tf.Tensor: shape=(4,), dtype=float32, numpy=array([2., 3., 1., 4.], dtype=float32)>,
       _tf.Tensor: shape=(2,), dtype=int64, numpy=array([2, 2], dtype=int64)>)
      """
  
output:     
      with _ops.name_scope(name, "decode_libsvm", [input]) as name:
          input = _ops.convert_to_tensor(input, dtype=_dtypes.string, name="input")
          num_features = _ops.convert_to_tensor(num_features, dtype=_dtypes.int32, name="num_features")
          
          def _parse_libsvm(record):
              tokens = _compat.as_bytes(record).split()
              label = _ops.convert_to_tensor(_compat.as_str(_decode_raw(tokens[0], label_dtype)), dtype=label_dtype)
              indices = []
              values = []
              for token in tokens[1:]:
                  parts = _compat.as_str(token).split(':')
                  indices.append([int(parts[0]) - 1])
                  values.append(dtype.as_numpy_dtype(_decode_raw(parts[1], dtype)))
              indices = _ops.convert_to_tensor(indices, dtype=_dtypes.int64)
              values = _ops.convert_to_tensor(values, dtype=dtype)
              shape = _ops.convert_to_tensor([num_features], dtype=_dtypes.int64)
              return label, indices, values, shape
          
          labels, indices, values, shapes = _map_fn.map_fn(_parse_libsvm, input, dtype=(label_dtype, _dtypes.int64, dtype, _dtypes.int64))
          return labels, indices, values, shapes
  