tf.data.TextLineDataset 和 tf.data.experimental.make_csv_dataset 的区别

Posted

技术标签:

【中文标题】tf.data.TextLineDataset 和 tf.data.experimental.make_csv_dataset 的区别【英文标题】:Difference between tf.data.TextLineDataset and tf.data.experimental.make_csv_dataset 【发布时间】:2021-08-22 03:00:18 【问题描述】:

打开一个 Google colab notebook 并运行以下语句

#
import tensorflow as tf
import pathlib
import os
dataset = tf.data.TextLineDataset('/content/sample_data/california_housing_test.csv')
dataset ## output is <TextLineDatasetV2 shapes: (), types: tf.string>

然后在下面运行

import tensorflow as tf
import pathlib
import os
dataset = tf.data.experimental.make_csv_dataset('/content/sample_data/california_housing_test.csv',batch_size=5)
dataset ## output is <PrefetchDataset shapes: OrderedDict([(longitude, (5,)), (latitude, (5,)), (housing_median_age, (5,)), (total_rooms, (5,)), (total_bedrooms, (5,)), (population, (5,)), (households, (5,)), (median_income, (5,)), (median_house_value, (5,))]), types: OrderedDict([(longitude, tf.float32), (latitude, tf.float32), (housing_median_age, tf.float32), (total_rooms, tf.float32), (total_bedrooms, tf.float32), (population, tf.float32), (households, tf.float32), (median_income, tf.float32), (median_house_value, tf.float32)])>

显然 tf.data.TextLineDataset 和 tf.data.experimental.make_csv_dataset 处理文本文件的方式存在巨大差异。为什么tensorflow有这两个在实验中,其他在外面。

【问题讨论】:

【参考方案1】:

tf.data.TextLineDataset 从文本文件加载文本并创建一个数据集,其中文件的每一行都成为数据集的一个元素。

作为tf.data.experimental.make_csv_dataset,它将 CSV 文件读入数据集,其中数据集的每个元素都是对应于一批 CSV 行的(特征、标签)元组。 file_pattern 应该是包含 CSV 记录的文件或文件路径模式的列表。

tf.experimental 表示所述类/方法处于早期开发阶段,不完整,或者不太常见,不符合标准。更多信息可以参考this answer

【讨论】:

以上是关于tf.data.TextLineDataset 和 tf.data.experimental.make_csv_dataset 的区别的主要内容,如果未能解决你的问题,请参考以下文章

tf.data 数据处理模块

TensorFlow2 动手训练模型和部署服务

TensorFlow2 动手训练模型和部署服务

Tensorflow:如何查找 tf.data.Dataset API 对象的大小

查找表时出现查找表未初始化错误

& 和 && 区别和联系,| 和 || 区别和联系