如何在Tens中使用tf.datasets和迭代器

2024-10-01 00:15:08 发布

您现在位置:Python中文网/ 问答频道 /正文

我试着用tf.data.TextLineDataset在一个csv文件中迭代创建多个数据源,然后在一个csv节点上迭代创建多个数据。我用程序员指南tf.数据集来自TensorFlow(https://www.tensorflow.org/programmers_guide/datasets)。 在tf会话中运行代码时的问题是,我得到以下错误:

*** tensorflow.python.framework.errors_impl.NotFoundError: Date,Open,High,Low,Last,Close,Total Trade Quantity,Turnover,close_pct_change_1d,KAMA7-KAMA30,KAMA15-KAMA30,HT_QUAD,TURNOVER,BOP,MFI,MINUS_DI,ROCP,STOCH_SLOWK,NATR,EMA7-EMA30-1d,DX-1d,PPO-1d,NATR-1d,HT_INPHASOR-2d,day_0,day_1,day_2,day_3; No such file or directory
     [[Node: IteratorGetNext_5 = IteratorGetNext[output_shapes=[[], [], [], [], [], ..., [], [], [], [], []], output_types=[DT_INT32, DT_INT32, DT_INT32, DT_INT32, DT_INT32, ..., DT_INT32, DT_INT32, DT_INT32, DT_INT32, DT_INT32], _device="/job:localhost/replica:0/task:0/device:CPU:0"](Iterator_8)]]

现在,“Date”、“Open”、“High”等是我要加载的数据集中的列。因此,我知道错误与加载数据集无关。 加载数据集时,我使用tf.data.TextLineDataset(file).skip(1),但根据错误,它似乎没有跳过数据集的第一行(列标题)。在

有人知道这个错误是从哪里来的吗?有人能解决这个问题吗?在

请参见以下代码进行说明:

^{pr2}$

Tags: csv数据代码datadatetftensorflow错误
1条回答
网友
1楼 · 发布于 2024-10-01 00:15:08

这两条线似乎是问题的根源:

ds_file = tf.data.TextLineDataset(file)

ds = ds_file.flat_map(lambda file: (tf.data.TextLineDataset(file).skip(1))) #remove CSV headers

第一行从file中名为的一个或多个文件的行创建一个数据集。第二行为ds_file中的每个元素创建一个数据集,该数据集将每个元素(即file中的一行文本)视为另一个文件名。当NotFoundError的第一行(看起来是CSV头)被视为文件名时,将引发您看到的NotFoundError。在

幸运的是,修复相对简单,因为您可以使用Dataset.list_files()创建与glob匹配的文件的数据集,Dataset.flat_map()将对文件名进行操作:

^{pr2}$

相关问题 更多 >