你如何使用tf.数据允许数据集选择和批处理的管道?

2024-05-19 02:50:55 发布

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

我想用tf.数据在批处理数据时允许在运行时选择数据集的输入管道。下面应该允许我运行InitTrain/InitTest来选择要使用的数据集:

TrainData = tf.data.Dataset.from_generator(TrainGenerator,tf.float32)
TestData = tf.data.Dataset.from_generator(TestGenerator,tf.float32)

DataIterator = tf.data.Iterator.from_structure(tf.float32)
DataNext = DataIterator.get_next()
InitTrain = DataIterator.make_initializer(TrainData)
InitTest = DataIterator.make_initializer(TestData)

如果不使用迭代器,我可以使用以下方法获取填充批:

^{pr2}$

如何在保留选择输入数据源的能力的同时批处理数据?在

一种可能的解决方法是创建一个新的from_生成器数据集,并创建一个调用sess.运行在DataNext上创建一个可以批处理的数据集,但是这将导致运行调用的分配,因此我怀疑这是它的使用方式。在


Tags: 数据fromdatamaketfgeneratordatasettestdata
1条回答
网友
1楼 · 发布于 2024-05-19 02:50:55

每个数据集独立于其他数据集运行,迭代器根据您使用的初始值设定项在detest之间切换。因此,如果要批处理一个数据集而不是另一个数据集,则应使用:

TrainData = tf.data.Dataset.from_generator(TrainGenerator,tf.float32)
TrainData = TrainData.batch(100)

TestData = tf.data.Dataset.from_generator(TestGenerator,tf.float32)

DataIterator = tf.data.Iterator.from_structure(tf.float32)
DataNext = DataIterator.get_next()
InitTrain = DataIterator.make_initializer(TrainData)
InitTest = DataIterator.make_initializer(TestData)

顺便说一句,您还可以使用这两条管道不同于(如果您想)为每个数据集执行不同的映射。例如,您可以对列车数据使用批处理规范化,但对测试数据不进行规范化(如果您已经在整个数据集中进行了标准化)。在

相关问题 更多 >

    热门问题