当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python tf.data.experimental.make_csv_dataset用法及代码示例


将 CSV 文件读入数据集。

用法

tf.data.experimental.make_csv_dataset(
    file_pattern, batch_size, column_names=None, column_defaults=None,
    label_name=None, select_columns=None, field_delim=',',
    use_quote_delim=True, na_value='', header=True, num_epochs=None,
    shuffle=True, shuffle_buffer_size=10000, shuffle_seed=None,
    prefetch_buffer_size=None, num_parallel_reads=None, sloppy=False,
    num_rows_for_inference=100, compression_type=None, ignore_errors=False
)

参数

  • file_pattern 包含 CSV 记录的文件或文件路径模式的列表。有关模式规则,请参见tf.io.gfile.glob
  • batch_size 一个 int 表示要在单个批次中组合的记录数。
  • column_names 按顺序对应于 CSV 列的可选字符串列表。输入记录的每列一个。如果未提供,则从记录的第一行推断列名。这些名称将是每个数据集元素的特征字典的键。
  • column_defaults CSV 字段的默认值的可选列表。输入记录的每个选定列一个项目。列表中的每个项目或者是有效的 CSV dtype(float32、float64、int32、int64 或 string),或者是具有上述类型之一的 Tensor。张量可以是标量默认值(如果列是可选的),也可以是空张量(如果需要列)。如果提供了 dtype 而不是张量,则该列也将根据需要进行处理。如果未提供此列表,则尝试根据读取指定文件的前 num_rows_for_inference 行来推断类型,并假定所有列都是可选的,对于数值默认为 0,对于字符串值默认为 ""。如果同时指定了 this 和 select_columns,则它们必须具有相同的长度,并且假定 column_defaults 是按列索引递增的顺序排序的。
  • label_name 与标签列对应的可选字符串。如果提供,此列的数据将作为单独的 Tensor 从特征字典返回,以便数据集符合 tf.Estimator.traintf.Estimator.evaluate 输入函数预期的格式。
  • select_columns 整数索引或字符串列名的可选列表,指定要选择的 CSV 数据列的子集。如果提供了列名,则这些必须对应于 column_names 中提供的名称或从文件标题行推断的名称。指定此参数时,将仅解析和返回与指定列相对应的 CSV 列的子集。使用它会导致更快的解析和更低的内存使用。如果同时指定了 this 和 column_defaults,则它们必须具有相同的长度,并且假设 column_defaults 是按列索引递增的顺序排序的。
  • field_delim 可选的 string 。默认为 "," 。用于分隔记录中的字段的字符分隔符。
  • use_quote_delim 一个可选的布尔值。默认为 True 。如果为 false,则将双引号视为字符串字段内的常规字符。
  • na_value 识别为 NA/NaN 的附加字符串。
  • header 一个布尔值,指示提供的 CSV 文件的第一行是否对应于具有列名的标题行,并且不应包含在数据中。
  • num_epochs 指定此数据集重复次数的 int。如果没有,则永远循环遍历数据集。
  • shuffle 一个布尔值,指示输入是否应该被打乱。
  • shuffle_buffer_size 用于洗牌的缓冲区大小。较大的缓冲区大小可确保更好的洗牌,但会增加内存使用和启动时间。
  • shuffle_seed 用于洗牌的随机化种子。
  • prefetch_buffer_size 一个 int 指定要预取以提高性能的特征批次的数量。推荐值是每个训练步骤消耗的批次数。默认为auto-tune。
  • num_parallel_reads 用于从文件中读取 CSV 记录的线程数。如果>1,结果将被交错。默认为 1
  • sloppy 如果 True ,读取性能将以非确定性排序为代价来提高。如果 False ,则生成的元素的顺序在洗牌之前是确定的(如果 shuffle=True ,元素仍然是随机的。请注意,如果设置了种子,那么洗牌后的元素顺序是确定的)。默认为 False
  • num_rows_for_inference 如果未提供record_defaults,则用于类型推断的文件行数。如果为 None,则读取所有文件的所有行。默认为 100。
  • compression_type (可选。)tf.string 标量评估为 ""(无压缩)、"ZLIB""GZIP" 之一。默认为无压缩。
  • ignore_errors (可选。)如果 True ,忽略 CSV 文件解析错误,例如格式错误的数据或空行,并继续下一个有效的 CSV 记录。否则,数据集会在遇到任何无效记录时引发错误并停止处理。默认为 False

返回

  • 一个数据集,其中每个元素都是一个(特征、标签)元组,对应于一批 batch_size CSV 行。特征字典将特征列名称映射到包含相应列数据的 Tensor ,标签是一个 Tensor ,其中包含由 label_name 指定的标签列的列数据。

抛出

  • ValueError 如果任何参数格式错误。

将 CSV 文件读入数据集,其中数据集的每个元素都是一个(特征、标签)元组,对应于一批 CSV 行。特征字典将特征列名称映射到包含相应特征数据的Tensor,标签是包含批次标签数据的Tensor

默认情况下,CSV 文件的第一行应该是列出列名的标题。如果第一行不是标题,请设置 header=False 并使用 column_names 参数提供列名。

默认情况下,数据集会无限重复,每次都会重新排列顺序。可以通过设置 num_epochsshuffle 参数来修改此行为。

例如,假设您有一个 CSV 文件,其中包含

Feature_A Feature_B
1 "a"
2 "b"
3 "c"
4 "d"
# No label column specified
dataset = tf.data.experimental.make_csv_dataset(filename, batch_size=2)
iterator = ds.as_numpy_iterator()
print(dict(next(iterator)))
# prints a dictionary of batched features:
# OrderedDict([('Feature_A', array([1, 4], dtype=int32)),
#              ('Feature_B', array([b'a', b'd'], dtype=object))])
# Set Feature_B as label column
dataset = tf.data.experimental.make_csv_dataset(
    filename, batch_size=2, label_name="Feature_B")
iterator = ds.as_numpy_iterator()
print(next(iterator))
# prints (features, labels) tuple:
# (OrderedDict([('Feature_A', array([1, 2], dtype=int32))]),
#  array([b'a', b'b'], dtype=object))

有关使用 make_csv_dataset 读取 CSV 数据的更多示例,请参阅加载 CSV 数据指南。

相关用法


注:本文由纯净天空筛选整理自tensorflow.org大神的英文原创作品 tf.data.experimental.make_csv_dataset。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。