【问题标题】:Creating a Tensorflow batched dataset object from a CSV containing multiple labels and features从包含多个标签和特征的 CSV 创建 TensorFlow 批处理数据集对象
【发布时间】: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


    【解决方案1】:

    您可以改用本教程: https://www.tensorflow.org/tutorials/load_data/pandas_dataframe

    首先将 csv 文件加载到 pandas 数据帧。然后从 df 中选择所需的列到“特征”和“目标”的子帧中。在将 target.values 传递到 'from_tensor_slices' 之后,它将成为标签的一个张量,正如 tf.

    df=pd.read_csv('data.csv')
    feature = df['F1']
    target  = df[['L1', 'L2']]
    
    dataset = tf.data.Dataset.from_tensor_slices((feature.values, target.values))
    for feat, targ in dataset.take(1):
        print ('Features: {}, Target: {}'.format(feat, targ))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-01-03
      • 1970-01-01
      • 2018-10-01
      • 1970-01-01
      • 2021-05-09
      • 2018-08-17
      相关资源
      最近更新 更多