【发布时间】:2020-02-13 00:06:26
【问题描述】:
我有一个包含 N 个特征和 M 个标签的 CSV 数据集。它足够大,我不能把它全部放在内存中,所以我希望将它分块读入 Tensorflow (2.0.0)。表中的所有内容都具有相同的数据类型(浮点数),并且所有特征和标签都是唯一命名的。可视化:
| F1 | F2 | ... | FN | L1 | L2 | ... | LM |
|------|------|-----|------|------|------|-----|------|
| 1.0 | 2.0 | ... | 3.0 | 4.0 | 5.0 | ... | 6.0 |
| 7.0 | 8.0 | ... | 9.0 | 10.0 | 11.0 | ... | 12.0 |
| 13.0 | 14.0 | ... | 15.0 | 16.0 | 17.0 | ... | 18.0 |
| ... | ... | ... | ... | ... | ... | ... | ... |
| 19.0 | 20.0 | ... | 21.0 | 22.0 | 23.0 | ... | 24.0 |
我的目标是将此 CSV 数据加载到 tensorflow 数据集对象中,其中包含我的所有功能和标签。到目前为止,我最好的猜测是使用 Tensorflow 的内置 make_csv_dataset 函数。使用labels 中的标签列表,我尝试了这个:
import tensorflow as tf
data = tf.data.experimental.make_csv_dataset("data.csv", batch_size=32, num_epochs=100, label_name=labels)
这会导致 ValueError 指示 label_name 参数必须对应于其中一列。该文档还表明这是一个对应于单个标签的字符串。
我发现的所有文档和每个用于分块加载 CSV 的示例似乎都只关注要预测单个标签的情况。即使是关于加载 CSV 数据的 TensorFlow 指南 (https://www.tensorflow.org/tutorials/load_data/csv) 在其示例中也只有一个标签。
这似乎是一个足够常见的操作,我不需要编写自定义数据集类。从 CSV 生成 Tensorflow 数据集对象的理想(或普遍接受的)方法是什么?
【问题讨论】:
标签: python python-3.x csv tensorflow