簡體   English   中英

如何將 CSV 數據翻譯成 TFRecord 文件

[英]How to Translate CSV Data into TFRecord Files

目前我正在開發一個可以從 CSV 文件中獲取數據並將其導入 TFRecord 文件的系統,但是我有幾個問題。

對於初學者,我需要知道 TFRecord 文件可以采用什么類型,當使用 CSV 類型被刪除時。

其次,如何將數據類型:object 轉換為 TFRecord 可以采用的類型?

我有兩個字符串類型的對象類型的兩列(將在下面發布示例),如何將該數據轉換為 TFRecords 的正確類型?

當我希望一次將每一行中的 append 數據導入 TFRecord 文件時,任何建議或文檔都會很棒,我一直在尋找這個問題的時間,似乎只能將整數、浮點數輸入到 TFRecord但是整數列表/數組呢?

謝謝你的閱讀!

快速說明,我正在使用 PANDAS 創建 CSV 文件的 dataframe

我使用的一些示例代碼

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 數據

更新:使用以下 function 獲得兩列約會工作...

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

但是,當嘗試包含我的另外兩列 object 類型時(這兩列中的數據是什么樣的) "3,9,11,16,25,26,28,29,36,40,41,46,63,66,67,69,72,73,78,80"

我收到一個錯誤,這是我嘗試過的 function

    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.

我是否應該嘗試將這兩種類型投射到 function 之外,然后嘗試將其與 make_csv_dataset function 中的make_csv_dataset一起合並到 TFRecord 文件中?

對於初學者,我需要知道 TFRecord 文件可以采用什么類型,當使用 CSV 類型被刪除時。

TFRecord 接受以下數據類型 - string、byte、float32、float 64、bool、enum、int32、int64、uint32、uint64 Talked here

其次,如何將數據類型:object 轉換為 TFRecord 可以采用的類型?

是TF的一個例子,一次消化有點復雜,但如果你仔細閱讀它很容易。

有兩個字符串類型的對象類型的兩列(將在下面發布示例),如何將該數據轉換為 TFRecords 的正確類型?

對於字符串類型數據,您需要從字符串返回tf.train.BytesList的 tf.train.BytesList。

當我希望一次將每一行中的 append 數據導入 TFRecord 文件時,任何建議或文檔都會很棒,我一直在尋找這個問題的時間,似乎只能將整數、浮點數輸入到 TFRecord但是整數列表/數組呢?

快速說明,我正在使用 PANDAS 創建 CSV 文件的 dataframe

我建議您使用此處定義的tf.data.experimental.make_csv_dataset而不是使用 Pandas 讀取 csv 文件。 這將使這個轉換過程比 Pandas 更快,並且會減少使用 TF 類的兼容性問題。 如果您使用這個 function,那么您將不需要逐行讀取 csv 文件,而是使用使用eager executionmap()一次完成。 是一個很好的入門教程。

不小心編輯了帖子的錯誤部分

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM