我正在tf.data.Dataset
准备一个用于训练 tf.kears 模型的流数据集。使用kedro,有没有办法创建一个节点并返回创建的节点tf.data.Dataset
以在下一个训练节点中使用它?
这MemoryDataset
可能不起作用,因为tf.data.Dataset
不能腌制(deepcopy
不可能),另请参见这个 SO question。根据问题#91,深度复制MemoryDataset
是为了避免其他节点修改数据。有人可以详细说明为什么/如何发生这种并发修改吗?
从文档中,似乎有一个copy_mode = "assign"
. 如果数据不可提取,是否可以使用此选项?
另一个解决方案(在 issue 91 中也提到过)是只使用一个函数在训练节点内部生成流tf.data.Dataset
,而不需要前面的数据集生成节点。但是,我不确定这种方法的缺点是什么(如果有的话)。如果有人可以举一些例子,那就太好了。
此外,我想避免存储流数据集的完整输出,例如使用tfrecords
或tf.data.experimental.save
因为这些选项会使用大量磁盘存储。
有没有办法只传递创建的tf.data.Dataset
对象以将其用于训练节点?