问题标签 [tf.data.dataset]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
609 浏览

tf.data.dataset - 从任何外部库中增加 tf.data.Dataset 元素(在我的情况下为albumentations)

我正在创建一个映射函数,它扩充数据集中的每个图像,然后由 tf.numpy_function 包装以创建一个 tensorflow 操作。现在这个 tensorflow op 被传递给 tf.data.Dataset.map 函数

我遇到了一种奇怪的行为,因为代码有时会运行并且有时会显示错误。

tf.data.Dataset对象dataimage,label元组组成。我已经对图像进行了预处理,data以使每个图像都具有相同的大小,这样做是为了确保data可以对图像进行批处理。aug是一个增广函数,它image取自data

所以,在我的例子aug中是映射函数。现在aug必须在将映射应用于data.

tf_augment是将传递给data.map方法的张量流操作

为了对映射进行矢量化,我想data在将映射应用到它之前对第一个进行批处理。所以,我data.batch.map先使用,然后再申请map

现在是最后一段代码

有时运行并在其他时间抛出错误。

它抛出的错误是

我还附上了 colab 笔记本的链接。请复制它。 合作实验室

0 投票
1 回答
480 浏览

tensorflow - 使用 tf.data.dataset 为序列模型创建数据生成器

我有一个包含 RGB 图像的图像数据集:img1.png、img2.png ... img250.png。我从每个图像中提取了 100 个大小为 [64,64,3] 的小块。所以,我现在有像 img1_1.png、img1_2.png ...img1_100.png、img2_1.png、img2_2.png、... img2_100.png、img3_1、......

我想使用 tf.data.dataset.from_tensor_slices 创建一个数据生成器,以将每个图像的所有补丁传递给 RNN 模型。所以,我希望生成器创建这样的输出:[batch_size, 100, 64, 64, 3]

我怎样才能做到这一点?

0 投票
0 回答
77 浏览

tf.data.dataset - tf.data.dataset.from_tensor_slices 用于 RNN 模型

我有一个包含 RGB 图像的图像数据集:img1.png、img2.png ... img250.png。[64,64,3]我从每个图像中提取了 100 个大小不同的小块。所以,我现在有像img1_1.png、img1_2.png ...img1_100.png、img2_1.png、img2_2.png、... img2_100.png、img3_1、......

我想创建一个数据生成器,tf.data.dataset.from_tensor_slices将每个图像的所有补丁传递给 RNN 模型。所以,我希望生成器创建这样的输出:[batch_size, 100, 64, 64, 3]

我怎样才能做到这一点?

250:是图像的数量,100:是从每个图像中提取的补丁数量,64、64、3:每个补丁的大小

例如,对于每次迭代,我想随机选择 250 个图像中的 32 个,并将它们的所有 100 个补丁放在一起并创建以下格式(32, 100, 64, 64, 3)

由于内存使用,我无法将所有数据加载到变量中。我只有 25000 个名为img1_1.png、img1_2.png ...img1_100.png、img2_1.png、img2_2.png、... img2_100.png、img3_1、...... img250_1.png、img250_2 的补丁。 png ...img250_100.png。

我认为最好使用格式

同样重要的是要注意标签向量的大小是(250,1)。如果批量大小为 32,则生成器应输出大小为 (32,1) 的标签批次

0 投票
1 回答
61 浏览

tensorflow - Tensorflow Estimator:使用加权分布(概率)的样本

我想使用加权分布(概率)对数据进行采样

示例如下:

班级分布: doc_distribution = {0: 40, 1: 18, 2: 8, 3: 598, ... , 9: 177}

我会以等概率的类来制作这批数据集。

然后,我制作导出模型input_fntf.estimator

最后,我可以得到如下结果rejection_resample

结果是:{3: 33, 8: 14, 4: 17, 7: 5, 5: 10, 9: 12, 0: 6, 6: 3}

不知道为什么rejection_resample效果不好,就是想平均抽取样本。我应该如何解决它?

有什么方法可以平均采样input_fntf.estimator

0 投票
1 回答
277 浏览

tensorflow - 如何将 tf.data.Dataset 与 kedro 一起使用?

我正在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,而不需要前面的数据集生成节点。但是,我不确定这种方法的缺点是什么(如果有的话)。如果有人可以举一些例子,那就太好了。

此外,我想避免存储流数据集的完整输出,例如使用tfrecordstf.data.experimental.save因为这些选项会使用大量磁盘存储。

有没有办法只传递创建的tf.data.Dataset对象以将其用于训练节点?

0 投票
0 回答
260 浏览

tensorflow2.0 - tf.compat.v1.disable_eager_execution() 和 tf.data.dateset

我正在使用张量流 2.2。我有两个传递给 tf.data.dataset.from_tensor_slices() 的 numpy 数组(特征和标签):

我正在尝试将此数据传递给我的 model.fit():

我用

在我的代码的开头。如果我将其注释掉,则训练开始时没有问题,但我意识到训练速度较慢(在 2080TI 上每一步需要 2 秒)。如果我离开它,每一步大约是 1.2 秒。但是,该程序从未通过该行

我离开程序超过 30 分钟,虽然消耗了大约 60GB(我的内存是 64GB),但程序似乎没有做任何事情。有没有人见过这个?欢迎任何帮助。

0 投票
0 回答
99 浏览

python - 如何在 tf.data 中启用渴望模式

对于一个项目,我使用 tf.data.Dataset 来编写输入管道。输入是图像 RGB 标签是图像中用于生成热图的对象的 2D 坐标列表

这是重现问题的MWE。

问题是在generate_heatmap()函数中,我使用 numpy 数组通过索引修改元素,这在 tensorflow 中是不可能的。我尝试迭代标签张量,这在 tensorflow 中是不可能的。另一件事是急切模式似乎没有启用 tf.data.Dataset!有什么建议可以解决这个问题!我认为在 pytorch 中这样的代码可以快速完成而不会受苦:)!

0 投票
1 回答
200 浏览

python - 使用 tf.data 时如何对数据进行自定义预处理?

我需要一些关于 tf.data 的帮助。

我正在对 SQUAD 数据集进行一些实验。给出的数据集结构如下:

我想利用tf.data 进行加载和预处理。加载后,它被加载。格式:

现在我们要对数据进行预处理。现在这里的预处理并不简单,因为值是张量对象。

Tensorflow 为这种预处理提供了一些 api,但是如果我想进行自定义预处理,或者我想使用 spacy,它只对字符串等原始数据类型而不是张量进行操作。

基本上我需要这个片段的帮助:

0 投票
1 回答
404 浏览

python - 无法在组件 0 中批处理具有不同形状的张量

InvalidArgumentError:无法在组件 0 中批处理具有不同形状的张量。第一个元素的形状为 [224,224,3],元素 25 的形状为 [224,224,1]。

正如你在这里看到的,我已经重新塑造了图像。

然后我只是合并标签和图像数据

问题可能出在损坏的图像中,还是我在代码中遗漏了一些东西?

0 投票
1 回答
679 浏览

python - 如何在 keras 自定义回调中访问 tf.data.Dataset?

我编写了一个自定义 keras 回调来检查来自生成器的增强数据。(有关完整代码,请参阅此答案。)但是,当我尝试对 a 使用相同的回调时tf.data.Dataset,它给了我一个错误:

keras 回调一般只适用于生成器,还是与我编写的方式有关?有没有办法修改我的回调或数据集以使其工作?

我认为这个难题有三个部分。我对任何和所有的更改持开放态度。首先,自定义回调类中的init函数:

其次,on_batch_end同一类中的功能

三、实例化回调

一些尚未让我得到答案的相关主题:

在自定义回调中访问验证数据

创建 keras 回调以在训练期间保存每个批次的模型预测和目标