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

csv - 构建一个 tf.data.Dataset 对象,其中图像作为特征,.csv 文件作为标签

我正在做一个深度学习项目,试图自动检测给定图像的人的关节,我被困在试图以正确格式将数据提供给我的神经网络。我的特征 (x) 是非常大的图像 (2000x900),我的标签 (y) 是 .csv 文件,其中有四列,每列 15 行:第一列包含字符串(关节名称),其他三列包含整数(每行每列一个整数)。.csv 文件如下所示:

左膝,可见,x,y

Right_knee, vis, x, y

...(这里的x和y代表图像坐标,不是特征和标签!vis为0或1,表示关节是否可见)

每个 .csv 文件对应一个特定的图像,.csv 文件和对应的图像名称相同但路径不同。现在,我想创建一个 tf.data.Dataset 对象,其中特征是图像,标签是从 .csv 文件构建的 Python 字典。例如,对应于图像 x(i) 的单个标签 y(i) 需要如下所示: {'Left_knee': [vis, x, y], 'Right_knee': [vis, x, y] , ...}。

我构建这样一个数据集的策略是将图像和标签加载到单独的 tf.data.Dataset 对象中,然后将它们融合在一起。为了加载图像,我编写了这个非常简单的代码(可能效率低下/错误?):

老实说,我对 TensorFlow(和一般编程!)太陌生了,无法以任何方式对其进行测试以发现潜在问题,但它至少不会给我任何错误。

现在,我的问题是如何将 .csv 文件加载到 tf.data.Dataset 对象中,然后将其与 imgs_dataset 融合,以便正确的标签到达每个图像。我知道我必须使用 tf.data.experimental.make_csv_dataset 之类的东西,但我不太确定如何设置它,以便我的 y 采用我想要的格式。有没有办法做到这一点,还是我走错了路?我应该澄清一下,我对使用 tf.data.Dataset 对象的想法没有任何看法,但据我所知,这似乎是一种非常方便(如果你可以设置的话!)将数据提供给 tf 的方式.keras 模型通过 .fit()。另外,我希望标签以特定方式(即作为字典)构造,因为我的网络损失将需要访问标签的不同字段(例如,如果,损失会更低,对于给定的图像和给定的关节,关节的 vis 参数为 0)。但也许有一种更有效的方法来构建我的标签以实现这一目标?

任何帮助和建议将不胜感激!提前致谢。

0 投票
1 回答
597 浏览

tensorflow - 使用 tf.data.Dataset 时,Model.fit() 方法的 shuffle 如何处理 Batches?

我正在使用张量流 2。

当使用Model.fit()带有 a 的方法时tf.data.Dataset,参数 ' batch_size' 被忽略。因此,要批量训练我的模型,我必须首先通过调用将我的样本数据集更改为批量样本数据集tf.data.Dataset.batch(batch_size)

然后,在阅读文档后,我不清楚该.fit()方法将如何在每个时期对我的数据集进行洗牌。

由于我的数据集是批次数据集,它会在批次之间打乱(批次保持不变)吗?或者它会打乱所有样本,然后将它们重新组合成新的批次(这是所需的行为)

非常感谢你的帮助。

0 投票
1 回答
243 浏览

python - 如何合并 tf.data.Dataset 的元素?

快速免责声明:这不是关于 , 或 的tf.data.Dataset.concat()菜鸟tf.data.Dataset.zip()问题tf.data.Dataset.interleave()。这是关于组合单个数据集的行,而不是合并两个单独的数据集。

我想在 TensorFlow 中构建一个命名实体识别 (NER) 模型。我为这个任务找到了这个数据集。但是每个单词都在数据集的单独一行上,我想将一个句子中的所有单词组合到他们自己的行中(更像是[Sentence 1, Sentence 2, ...]而不是[Sentence 1, Sentence 1, Sentence 1, ...])我不知道我是否应该做 NER那样,但我不知道如何合并数据集的行。我确实尝试过,但正如您在这个 gist中看到的那样,它给了我一个奇怪的错误。我将如何合并行?

0 投票
1 回答
330 浏览

python - 具有张量流数据集的序列模型

我试图了解如何将tensorflowsDataset用于简单的回归模型,而不是用单独np.array的训练输入和输出来喂养它。

这是一个简单的独立示例:

运行该示例my_model.fit(X_train_set,y_train_set,epochs=2)确实有效。但是,my_model.fit(train_dataset,epochs=2)会引发错误:

问题是:我必须创建一个不同的Sequential模型还是我的train_dataset完全不正确?我会假设 anp.array应该可以Dataset在训练步骤中与 a 交换?

0 投票
0 回答
25 浏览

python - 未在从张量流中的 dataset.map 调用的函数中获取张量的值

我正在尝试从 map 函数调用的函数中获取张量的值。但我收到了这个错误。

tensorflow.python.framework.errors_impl.InvalidArgumentError:您必须使用 dtype 字符串 [[{{node args_0}}]] 为占位符张量“args_0”提供一个值

我的代码如下

在我的主要功能中:

现在在预处理类调用方法中我收到错误这是我的预处理类。在调用函数中我收到错误。

我该如何解决这个问题。如果我评论 print(sess.run(image)) 这一行,所有代码都可以正常工作。但我想要映射函数中的张量值。

0 投票
1 回答
291 浏览

python - 每个时期的步数在 tensorflow tf.data.Dataset 中的行为不正确

我在使用中的steps_per_epoch参数时遇到问题model.fit。据我所知,steps_per_epoch 用于在多次迭代后(即向模型提供多个批次后)记录指标,如损失函数。因此,在训练时,我们能够在几次迭代后看到损失,而不必等到 epoch 结束才能显示损失。因此,如果我有一个小数据,那么我的模型将从几个时期学习一个模式。因此,我有兴趣查看模型在 n 次迭代后的行为。

首先,请注意我有 tensorflow 版本 2.3.0

这是数据预处理逻辑(这是为时间序列数据定制的)。

和输出:

因此,我可以看出我的数据集总共包含 27 个批次,每个批次包含 29-32 个形状为 (32, 39, 1), (32, 39, 1) 的元素。

至于型号:

我得到以下输出:

所以,我可以说我在一个真实的纪元中有 12 个虚拟纪元。

在此处输入图像描述

但是,经过调查,history.history我得到了以下信息:

在此处输入图像描述

但是,我希望看到每个 theloss和 the的 12 个值的列表_custom_mae

最后,我很想在 tensorboard 中看到结果。

请让我知道我缺少什么以及如何解决我的问题。

提前感谢您的支持!

0 投票
1 回答
1133 浏览

python - 设置一次后更改 tf.keras.preprocessing.image_dataset_from_directory 的 label_mode

我正在使用此代码加载必须传递给卷积变分自动编码器的图像:

为了能够将它传递给自动编码器,我必须设置label_mode = None. 此外,解码器接收到的图像将进一步传递到 CNN 进行分类,我需要标签。

我如何才能train在最初为 CNN 时返回标签label_mode=None

0 投票
2 回答
99 浏览

python - 迭代 Tensorfow 数据集总是返回一个不同排序的数组

假设您有一个具有值和标签的 tensorflow 数据集。在我的情况下,我从时间序列创建它:

现在出于评估目的,我想获得测试的真实值,所以我正在运行

但这会在每次数组不同排序时返回,因此无法与模型预测的模型进行比较。例如,当在 jupyter notebook 中运行上述行并将前 5 个值打印y为 `y[:5] 时,有一次我得到

另一个我得到

但长度y保持不变,所以我假设元素只是随机播放。无论如何,我无法将这些值与预测值进行比较,因为它们的顺序不同:

此外,我也得到了不同的评估结果。例如,

每次定义数组xy重新执行循环时,我都会得到不同xy数组,从而导致不同的评估结果。

0 投票
1 回答
1098 浏览

python-3.x - 如何使用 tf.data.Dataset 对象的 map 方法删除或省略数据?

我正在使用张量流 2.3.0

我有一个 python 数据生成器-

我将其设为 tf.data.Dataset 对象

现在我想使用map方法对项目进行子采样,这样 tf 生成器将永远不会输出任何偶数。

如何使用map方法实现这一点?

0 投票
1 回答
30 浏览

python - 如何使用 tf.data.Dataset 对象的 map 或 filter 或 reduce 方法修改顺序数据?

我有一个 python 数据生成器-

它生成具有从 0 到 4 的整数值的不同长度(5 到 8)的序列。以下是生成器生成的一些序列 -

现在我想以这样的方式修改序列 -

  • 从每个序列中删除所有偶数
  • 长度<2的序列(删除所有偶数后)被过滤掉

这应该给我们一个看起来像这样的结果 -

如何使用tf.data.Dataset方法进行此类转换?