问题标签 [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 回答
665 浏览

python - 访问 tf.data.Dataset 对象中的图像和标签

我正在关注关于图像分类的keras 教程。tf.data.Dataset使用以下方法创建并指定了一个批次.take()

检查train_batch对象,不出所料,我看到它由两个对象组成:图像和标签:

教程状态使用以下代码绘制此批次中的图像:

我的问题是如何for images, labels in train_batch:设法分别指定图像和标签。除了enumerate 我没有遇到在 for 循环中指定两个变量。这是批量访问图像和标签的唯一方法吗?

0 投票
1 回答
425 浏览

python - 如何使用多个 .npy 文件创建 tf.data 管道

我已经研究了有关此问题的其他问题,但找不到确切答案,因此从头开始尝试:

问题

我有多个 .npy 文件(X_train 文件),每个文件都是一个形状数组 (n, 99, 2) - 只有第一个维度不同,而其余两个相同。根据 .npy 文件的名称,我还可以获得相应的标签(y_train 文件)。

每一个这样的文件都可以很容易地加载到内存中(多个文件也是如此),但不是一次全部加载。

我构建了一个生成器,它遍历文件列表并为训练批次聚合给定数量的文件:

在实践中(在 CPU 上)它工作正常,但是如果我试图在 CUDA 上使用 GPU,它会崩溃,给出Failed to call ThenRnnForward with model config:错误(见:链接

所以我试图找到另一种方法并使用 tf.data API 来生成数据。但是,我被困住了:

这很好用,但是,我找不到以下方法:

  1. 混合多个文件(最多一定数量,比如说五个)
  2. 遍历整个文件列表

我已经阅读了 flat_map 和 interleave,但是,我无法更进一步,任何尝试使用它们的尝试都没有成功。如何制作与代码上部类似的生成器,但使用 tf.data API?

0 投票
1 回答
43 浏览

python - tf.data:函数尝试转换为 numpy 数组失败?

我正在尝试建立一个tf.data管道,最终计算skipgrams,但我得到一个错误

我的管道:

在哪里

部分堆栈跟踪是

我想它不喜欢提取要运行的维度_make_fat_diagonal(),尽管我不确定我会如何表达这一点。在管道之外,该函数在数据集的各个元素上工作得很好text_ds。如您所见,我很小心只使用 Tensorflow 方法。

什么是正确的方法?

0 投票
1 回答
459 浏览

python - 如何将图像输入 CNN

我是 tensorflow 的新手,正在尝试创建一个用于二进制分类的卷积神经网络,可以区分正常人脸和中风人脸之间的差异。

我的数据集的图像包含在一个名为CNNImages的目录中,并包含两个子目录:RegularFacesStrokes。在每个子目录中都是我试图输入神经网络的 PNG 图像。

按照本参考资料中建议的方法:https ://towardsdatascience.com/build-your-own-convolution-neural-network-in-5-mins-4217c2cf964f ,我已经成功使用 Spyder 创建了神经网络本身,它与 mnist.load_data() 一起运行时工作。

但是,我无法使用 tf.data.Dataset 将自己的图像上传到神经网络中。当我尝试在我创建的图像数据库上训练我的神经网络时,它返回一个 ValueError 并指出“要解包的值太多(预期为 2)”。我相信我要么错误地调用了我的数据库,要么在创建数据库时搞砸了。

当我调用 ds for(x_train, y_train), (x_test, y_test) = ds时,我收到 ValueError,它指出“要解包的值太多(预期为 2)”。我把那条线弄乱了吗?还是我设计的 tf 数据集不正确?

0 投票
1 回答
224 浏览

tensorflow - 如何将 PostgreSQL 数据库的输出从 TensorFlow IO 馈送到 tf.keras Sequential Model

我试图学习如何使用本教程将 SQL 数据集读入 Tensorflow 。直到最后一步一切正常!

我只记录前 10 条记录。

现在,我yco变量,其余的是自变量。我想为演示目的创建一个非常基本的 DNN 回归模型。

我知道我需要简单地将一个元组(x,y)输入模型,但这是一个元组字典。我尝试使用以下方法将其映射为分离特征和标签:

并运行

但我收到一个错误:

我不知道如何弄清楚。我感谢所有的帮助!

0 投票
2 回答
519 浏览

tensorflow - tf.data.Datasets.repeat(EPOCHS) 与 model.fit epochs=EPOCHS 之间的区别

在训练时,我将 epoch 设置为迭代数据的次数。我想知道tf.data.Datasets.repeat(EPOCHS)当我已经可以做同样的事情时有什么用model.fit(train_dataset,epochs=EPOCHS)

0 投票
1 回答
184 浏览

python - 如何有效地将数据输入 TensorFlow 2.x,

我正在查看对大量文本数据的数据预处理任务,并希望将预处理后的数据加载到 TensorFlow 2.x 中。预处理数据包含整数值数组,因为预处理步骤生成:

  • 一个热编码数组作为标签列
  • 每个数据行的标记化标记列表
  • 用于变压器的激活掩码

所以,我一直在想我会使用 pyspark 来预处理数据并将结果转储到JSON文件中(因为 CSV 无法存储结构化数据)。到目前为止,一切正常。但是我在处理JSON文件时遇到了麻烦tf.data.Dataset(或任何其他可以有效扩展并可以与 TensorFlow 2.x 接口的文件)。

我不想使用/安装除 Tensorflow 和 PySpark 之外的其他库(例如 TensorFlowOnSpark),所以我想知道是否可以使用 JSON 文件以有效的方式链接两者,因为似乎没有其他方法可以保存/加载记录包含数据列表(?)。JSON 测试文件如下所示:

因此,label4列已经进行了一次热编码,并且一旦将标记器应用于它,标记化的文本列将看起来相似。所以,我的问题是:JSON文件可以有效地加载(可能通过生成器函数)tf.data.Dataset还是我应该为此走一条不同的道路(使用额外的库)?

0 投票
3 回答
848 浏览

python - 无效参数:维度 -972891 必须 >= 0

我使用以下代码片段创建了一个使用 tf.data 进行语音识别的数据管道:

这些片段是从https://www.tensorflow.org/tutorials/audio/simple_audio#build_and_train_the_model借来的。

我的模型定义如下:

当我开始训练过程时,这个错误会在几次迭代后出现:

0 投票
1 回答
2263 浏览

tensorflow - tf.data.Dataset.interleave() 与 map() 和 flat_map() 究竟有何不同?

我目前的理解是:

不同的 map_func:两者都 interleave期望flat_map“将数据集元素映射到数据集的函数。相反,map期望“将数据集元素映射到另一个数据集元素的函数”。

参数:两者都interleave提供map参数 num_parallel_calls,而flat_map没有。此外,interleave 提供了这些神奇的参数 block_length 和 cycle_length。对于 cycle_length=1,文档说明 interleave 和 flat_map 的输出是相等的。

最后,我看到了没有 interleave 的数据加载管道以及带有 interleave 的数据加载管道。任何建议何时使用interleavevs.mapflat_map将不胜感激


//编辑:我确实看到交错的价值,如果我们从不同的数据集开始,例如在下面的代码中

但是,在以下场景中使用interleaveover有什么好处吗?map

0 投票
1 回答
20 浏览

multidimensional-array - 使用滑动窗口重塑 ndarray 而不使用太多内存的有效方法

我必须通过对其应用两个滑动窗口来将 [17205, 21] 的 ndarray 重塑为 [17011, 96, 100, 21]。

我的解决方案是两次对其应用滑动窗口。然后我两次应用以下方法:

给出 的形状,[17106, 100, 21]然后再次使用n_step=96,给出 的形状[17011, 96, 100, 21]

缺点:它将整个数据存储在内存中,这会产生错误:

一个可能的解决方案:

但是,它并没有给我想要的输出,因为“它会生成嵌套窗口的数据集”,正如这里所说的那样。

任何想法?谢谢