问题标签 [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.
tf.data.dataset - 从任何外部库中增加 tf.data.Dataset 元素(在我的情况下为albumentations)
我正在创建一个映射函数,它扩充数据集中的每个图像,然后由 tf.numpy_function 包装以创建一个 tensorflow 操作。现在这个 tensorflow op 被传递给 tf.data.Dataset.map 函数
我遇到了一种奇怪的行为,因为代码有时会运行并且有时会显示错误。
tf.data.Dataset
对象data
由image,label
元组组成。我已经对图像进行了预处理,data
以使每个图像都具有相同的大小,这样做是为了确保data
可以对图像进行批处理。aug
是一个增广函数,它image
取自data
所以,在我的例子aug
中是映射函数。现在aug
必须在将映射应用于data
.
tf_augment
是将传递给data.map
方法的张量流操作
为了对映射进行矢量化,我想data
在将映射应用到它之前对第一个进行批处理。所以,我data.batch.map
先使用,然后再申请map
。
现在是最后一段代码
有时运行并在其他时间抛出错误。
它抛出的错误是
我还附上了 colab 笔记本的链接。请复制它。 合作实验室
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]
我怎样才能做到这一点?
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) 的标签批次
tensorflow - Tensorflow Estimator:使用加权分布(概率)的样本
我想使用加权分布(概率)对数据进行采样
示例如下:
班级分布:
doc_distribution = {0: 40, 1: 18, 2: 8, 3: 598, ... , 9: 177}
我会以等概率的类来制作这批数据集。
然后,我制作导出模型input_fn
,tf.estimator
最后,我可以得到如下结果rejection_resample
:
结果是:{3: 33, 8: 14, 4: 17, 7: 5, 5: 10, 9: 12, 0: 6, 6: 3}
不知道为什么rejection_resample
效果不好,就是想平均抽取样本。我应该如何解决它?
有什么方法可以平均采样input_fn
吗tf.estimator
?
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
,而不需要前面的数据集生成节点。但是,我不确定这种方法的缺点是什么(如果有的话)。如果有人可以举一些例子,那就太好了。
此外,我想避免存储流数据集的完整输出,例如使用tfrecords
或tf.data.experimental.save
因为这些选项会使用大量磁盘存储。
有没有办法只传递创建的tf.data.Dataset
对象以将其用于训练节点?
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),但程序似乎没有做任何事情。有没有人见过这个?欢迎任何帮助。
python - 如何在 tf.data 中启用渴望模式
对于一个项目,我使用 tf.data.Dataset 来编写输入管道。输入是图像 RGB 标签是图像中用于生成热图的对象的 2D 坐标列表
这是重现问题的MWE。
问题是在generate_heatmap()
函数中,我使用 numpy 数组通过索引修改元素,这在 tensorflow 中是不可能的。我尝试迭代标签张量,这在 tensorflow 中是不可能的。另一件事是急切模式似乎没有启用 tf.data.Dataset
!有什么建议可以解决这个问题!我认为在 pytorch 中这样的代码可以快速完成而不会受苦:)!
python - 使用 tf.data 时如何对数据进行自定义预处理?
我需要一些关于 tf.data 的帮助。
我正在对 SQUAD 数据集进行一些实验。给出的数据集结构如下:
我想利用tf.data 进行加载和预处理。加载后,它被加载。格式:
现在我们要对数据进行预处理。现在这里的预处理并不简单,因为值是张量对象。
Tensorflow 为这种预处理提供了一些 api,但是如果我想进行自定义预处理,或者我想使用 spacy,它只对字符串等原始数据类型而不是张量进行操作。
基本上我需要这个片段的帮助:
python - 无法在组件 0 中批处理具有不同形状的张量
InvalidArgumentError:无法在组件 0 中批处理具有不同形状的张量。第一个元素的形状为 [224,224,3],元素 25 的形状为 [224,224,1]。
正如你在这里看到的,我已经重新塑造了图像。
然后我只是合并标签和图像数据
问题可能出在损坏的图像中,还是我在代码中遗漏了一些东西?
python - 如何在 keras 自定义回调中访问 tf.data.Dataset?
我编写了一个自定义 keras 回调来检查来自生成器的增强数据。(有关完整代码,请参阅此答案。)但是,当我尝试对 a 使用相同的回调时tf.data.Dataset
,它给了我一个错误:
keras 回调一般只适用于生成器,还是与我编写的方式有关?有没有办法修改我的回调或数据集以使其工作?
我认为这个难题有三个部分。我对任何和所有的更改持开放态度。首先,自定义回调类中的init函数:
其次,on_batch_end
同一类中的功能
三、实例化回调
一些尚未让我得到答案的相关主题: