目前我正在开发一个可以从 CSV 文件中获取数据并将其导入到 TFRecord 文件的系统,但是我有几个问题。
首先,我需要知道当使用 CSV 类型被删除时,TFRecord 文件可以采用什么类型。
其次,如何将数据 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.
我应该尝试将这两种类型投射到函数之外,然后尝试将其与函数中的 tf.data 一起合并到 TFRecord 文件中make_csv_dataset
吗?
首先,我需要知道当使用 CSV 类型被删除时,TFRecord 文件可以采用什么类型。
TFRecord 接受以下数据类型 - 字符串、字节、float32、float 64、bool、enum、int32、int64、uint32、uint64在这里谈过。
其次,如何将数据 type:object 转换为 TFRecord 可以采用的类型?
这是 TF 的一个例子,一下子消化它有点复杂,但如果你仔细阅读它很容易。
有两个对象类型的两列(将在下面发布示例)是字符串,如何将该数据转换为 TFRecords 的正确类型?
对于字符串类型数据,您需要tf.train.BytesList
从字符串返回一个 bytes_list。
当导入我希望一次将每一行的数据附加到 TFRecord 文件中时,任何建议或文档都会很棒,我一直在寻找这个问题的一段时间,似乎只能输入整数,浮点数到 TFRecord但是整数列表/数组呢?
快速说明,我正在使用 PANDAS 创建 CSV 文件的数据框
我建议您使用tf.data.experimental.make_csv_dataset
defined here,而不是使用 Pandas 读取 csv 文件。这将使这个转换过程比 Pandas 快得多,并且可以减少使用 TF 类的兼容性问题。如果您使用此功能,那么您将不需要逐行读取 csv 文件,而是一次使用map()
which uses eager execution
. 这是一个很好的入门教程。
不小心编辑了帖子的错误部分
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句