[英]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}')
錯誤信息:
更新:使用以下 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 execution
的map()
一次完成。 這是一個很好的入門教程。
不小心編輯了帖子的錯誤部分
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.