【发布时间】: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}')
错误信息:
更新: 使用以下功能获得两列约会...
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