當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。