將 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.train
或tf.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_epochs
和 shuffle
參數來修改此行為。
例如,假設您有一個 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 數據指南。
相關用法
- Python tf.data.experimental.make_saveable_from_iterator用法及代碼示例
- Python tf.data.experimental.make_batched_features_dataset用法及代碼示例
- Python tf.data.experimental.RandomDataset.group_by_window用法及代碼示例
- Python tf.data.experimental.SqlDataset.enumerate用法及代碼示例
- Python tf.data.experimental.SqlDataset.zip用法及代碼示例
- Python tf.data.experimental.Counter用法及代碼示例
- Python tf.data.experimental.SqlDataset.shard用法及代碼示例
- Python tf.data.experimental.CsvDataset.window用法及代碼示例
- Python tf.data.experimental.RandomDataset.cache用法及代碼示例
- Python tf.data.experimental.SqlDataset.snapshot用法及代碼示例
- Python tf.data.experimental.CsvDataset.apply用法及代碼示例
- Python tf.data.experimental.DatasetInitializer用法及代碼示例
- Python tf.data.experimental.ignore_errors用法及代碼示例
- Python tf.data.experimental.unbatch用法及代碼示例
- Python tf.data.experimental.RandomDataset.map用法及代碼示例
- Python tf.data.experimental.CsvDataset.flat_map用法及代碼示例
- Python tf.data.experimental.assert_cardinality用法及代碼示例
- Python tf.data.experimental.CsvDataset.random用法及代碼示例
- Python tf.data.experimental.save用法及代碼示例
- Python tf.data.experimental.CsvDataset.cardinality用法及代碼示例
注:本文由純淨天空篩選整理自tensorflow.org大神的英文原創作品 tf.data.experimental.make_csv_dataset。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。