docs: def parse_example_tensor(examples, train_config, keep_target):
    """Read the csv files.
  
    Args:
      examples: string tensor
      train_config: training config
      keep_target: if true, the target column is expected to exist and it is
          returned in the features dict.
  
    Returns:
      Dict of feature_name to tensor. Target feature is in the dict.
    """
  
    csv_header = []
    if keep_target:
      csv_header = train_config['csv_header']
    else:
      csv_header = [name for name in train_config['csv_header']
                    if name != train_config['target_column']]
  
    # record_defaults are used by tf.decode_csv to insert defaults, and to infer
    # the datatype.
    record_defaults = [[train_config['csv_defaults'][name]]
                       for name in csv_header]
    tensors = tf.decode_csv(examples, record_defaults, name='csv_to_tensors')
  
    # I'm not really sure why expand_dims needs to be called. If using regression
    # models, it errors without it.
    tensors = [tf.expand_dims(x, axis=1) for x in tensors]
  
    tensor_dict = dict(zip(csv_header, tensors))
    return tensor_dict