【问题标题】:How to Translate CSV Data into TFRecord Files如何将 CSV 数据转换为 TFRecord 文件
【发布时间】:2020-01-27 07:18:47
【问题描述】:

目前我正在开发一个可以从 CSV 文件中获取数据并将其导入 TFRecord 文件的系统,但是我有几个问题。

对于初学者,我需要知道 TFRecord 文件可以采用什么类型,当使用 CSV 类型被删除时。

其次,如何将 data type:object 转换为 TFRecord 可以采用的类型?

我有两个字符串类型的对象类型的两列(将在下面发布示例),如何将该数据转换为 TFRecords 的正确类型?

当我希望一次将每一行的数据附加到 TFRecord 文件中时,任何建议或文档都会很棒,我一直在寻找这个问题的时间,似乎只能输入整数、浮点数到 TFRecord 但整数列表/数组呢?

感谢您的阅读!

快速说明,我正在使用 PANDAS 创建 CSV 文件的数据框

我正在使用的一些示例代码

import pandas as pd
from ast import literal_eval
import numpy as np
import tensorflow as tf


tf.compat.v1.enable_eager_execution()


def Start():
    db = pd.read_csv("I:\Github\ClubKeno\Keno Project\Database\..\LotteryDatabase.csv")

    pd.DataFrame = db
    print(db['Winning_Numbers'])
    print(db.dtypes)

    training_dataset = (
        tf.data.Dataset.from_tensor_slices(
            (
                tf.cast(db['Draw_Number'].values, tf.int64),
                tf.cast(db['Winning_Numbers'].values, tf.int64),
                tf.cast(db['Extra_Numbers'].values, tf.int64),
                tf.cast(db['Kicker'].values, tf.int64)
            )
        )
    )

    for features_tensor, target_tensor in training_dataset:
        print(f'features:{features_tensor} target:{target_tensor}')

错误信息:

CSV Data

更新: 使用以下功能获得两列约会...

dataset = tf.data.experimental.make_csv_dataset(
        file_pattern=databasefile,
        column_names=['Draw_Number', 'Kicker'],
        column_defaults=[tf.int64, tf.int64],
    )

但是,当尝试包含我的其他两种列对象类型时 (这两列中的数据是什么样的) "3,9,11,16,25,26,28,29,36,40,41,46,63,66,67,69,72,73,78,80"

我得到一个错误,这是我尝试的函数

    dataset = tf.data.experimental.make_csv_dataset(
        file_pattern=databasefile,
        column_names=['Draw_Number', 'Winning_Numbers', 'Extra_Numbers', 'Kicker'],
        column_defaults=[tf.int64, tf.compat.as_bytes, tf.compat.as_bytes, tf.int64],
        header=True,
        batch_size=100,
        field_delim=',',
        na_value='NA'
    )

出现此错误:

TypeError: Failed to convert object of type <class 'function'> to Tensor. Contents: <function as_bytes at 0x000000EA530908C8>. Consider casting elements to a supported type.

我是否应该尝试将这两种类型转换到函数之外,然后尝试将其与 make_csv_dataset 函数中的 tf.data 一起合并到 TFRecord 文件中?

【问题讨论】:

    标签: python pandas csv tensorflow


    【解决方案1】:

    对于初学者,我需要知道 TFRecord 文件可以采用什么类型,当使用 CSV 类型被删除时。

    TFRecord 接受以下数据类型- 字符串、字节、float32、float 64、bool、枚举、int32、int64、uint32、uint64 谈了here

    其次,如何将 data type:object 转换为 TFRecord 可以采用的类型?

    Here是TF的一个例子,一下子消化起来有点复杂,但仔细阅读就很容易了。

    有两个字符串类型的对象类型的两列(将在下面发布示例),如何将该数据转换为 TFRecords 的正确类型?

    对于字符串类型的数据,您需要tf.train.BytesList,它会从字符串中返回一个 bytes_list。

    当我希望一次将每一行的数据附加到 TFRecord 文件中时,任何建议或文档都会很棒,我一直在寻找这个问题的时间,似乎只能输入整数、浮点数到 TFRecord 但整数列表/数组呢?

    快速说明,我正在使用 PANDAS 创建 CSV 文件的数据框

    我建议您使用 tf.data.experimental.make_csv_dataset 定义的 here,而不是使用 Pandas 读取 csv 文件。这将使这个转换过程比 Pandas 更快,并且可以减少使用 TF 类的兼容性问题。如果使用此功能,则无需逐行读取 csv 文件,而是使用 map() 一次性读取,而 map() 使用 eager executionThis 是一个很好的入门教程。

    不小心编辑了帖子的错误部分

    【讨论】:

    • 我查看了您发布的所有文档,我想说声谢谢!首先查看使用tf.data.experimental.make_csv_dataset' function It has to input all Columns unless you use the select_columns attribute which allows only passing in columns you want to use, However I have two columns of string type that I would have to convert to tf.train.BytesList`,然后附加到make_csv_dataset 函数中。我该怎么做呢?我发布了 CSV 文件外观的更新,感谢阅读
    • 您是说您在不同的 csv 文件中有两列,因此您可以将这两列添加在一起并将其保存为 csv 文件,然后使用 make_csv_file 调用此文件,这将为您提供 tf .data 类型输出,然​​后您可以使用this 过程。记住from_tensor_slices 也输出 tf.data 类型数据集。
    • 不,我有一个 CSV 文件,其中包含两列对象类型,如下所示:"3,9,11,16,25,26,28,29,36,40,41,46,63,66,67,69,72,73,78,80" 我也需要输入这两列对象类型和另外两列 int 类型并能够将其形成为 tf.data 可以接受的东西,从早些时候听起来,一旦所有值都是非对象类型,我就可以使用映射,然后将其输入到 tf.data 中。这行得通吗?
    • 那么,在你转换了这两个字符串类型的列之后,为什么要将它附加到make_csv_dataset?转换为BytesList 后得到的内容必须存储为 TFRecord 文件!
    • 那么我是否将所有列都应用到make_csv_dataset?在这一点上我不应该再使用熊猫了?我会更多地尝试它,但我确信它在实施时给了我关于不是正确类型的警告谢谢你花时间帮助我,如果我不完全理解,我很抱歉
    猜你喜欢
    • 2021-10-30
    • 1970-01-01
    • 1970-01-01
    • 2020-07-01
    • 1970-01-01
    • 2019-09-11
    • 1970-01-01
    • 2020-12-25
    • 2019-06-16
    相关资源
    最近更新 更多