问题标签 [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.
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)。但也许有一种更有效的方法来构建我的标签以实现这一目标?
任何帮助和建议将不胜感激!提前致谢。
tensorflow - 使用 tf.data.Dataset 时,Model.fit() 方法的 shuffle 如何处理 Batches?
我正在使用张量流 2。
当使用Model.fit()
带有 a 的方法时tf.data.Dataset
,参数 ' batch_size
' 被忽略。因此,要批量训练我的模型,我必须首先通过调用将我的样本数据集更改为批量样本数据集tf.data.Dataset.batch(batch_size)
。
然后,在阅读文档后,我不清楚该.fit()
方法将如何在每个时期对我的数据集进行洗牌。
由于我的数据集是批次数据集,它会在批次之间打乱(批次保持不变)吗?或者它会打乱所有样本,然后将它们重新组合成新的批次(这是所需的行为)?
非常感谢你的帮助。
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中看到的那样,它给了我一个奇怪的错误。我将如何合并行?
python - 具有张量流数据集的序列模型
我试图了解如何将tensorflow
sDataset
用于简单的回归模型,而不是用单独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 交换?
python - 未在从张量流中的 dataset.map 调用的函数中获取张量的值
我正在尝试从 map 函数调用的函数中获取张量的值。但我收到了这个错误。
tensorflow.python.framework.errors_impl.InvalidArgumentError:您必须使用 dtype 字符串 [[{{node args_0}}]] 为占位符张量“args_0”提供一个值
我的代码如下
在我的主要功能中:
现在在预处理类调用方法中我收到错误这是我的预处理类。在调用函数中我收到错误。
我该如何解决这个问题。如果我评论 print(sess.run(image)) 这一行,所有代码都可以正常工作。但我想要映射函数中的张量值。
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 中看到结果。
请让我知道我缺少什么以及如何解决我的问题。
提前感谢您的支持!
python - 设置一次后更改 tf.keras.preprocessing.image_dataset_from_directory 的 label_mode
我正在使用此代码加载必须传递给卷积变分自动编码器的图像:
为了能够将它传递给自动编码器,我必须设置label_mode = None
. 此外,解码器接收到的图像将进一步传递到 CNN 进行分类,我需要标签。
我如何才能train
在最初为 CNN 时返回标签label_mode=None
。
python - 迭代 Tensorfow 数据集总是返回一个不同排序的数组
假设您有一个具有值和标签的 tensorflow 数据集。在我的情况下,我从时间序列创建它:
现在出于评估目的,我想获得测试的真实值,所以我正在运行
但这会在每次数组不同排序时返回,因此无法与模型预测的模型进行比较。例如,当在 jupyter notebook 中运行上述行并将前 5 个值打印y
为 `y[:5] 时,有一次我得到
另一个我得到
但长度y
保持不变,所以我假设元素只是随机播放。无论如何,我无法将这些值与预测值进行比较,因为它们的顺序不同:
此外,我也得到了不同的评估结果。例如,
每次定义数组x
并y
重新执行循环时,我都会得到不同x
的y
数组,从而导致不同的评估结果。
python-3.x - 如何使用 tf.data.Dataset 对象的 map 方法删除或省略数据?
我正在使用张量流 2.3.0
我有一个 python 数据生成器-
我将其设为 tf.data.Dataset 对象
现在我想使用map方法对项目进行子采样,这样 tf 生成器将永远不会输出任何偶数。
如何使用map方法实现这一点?
python - 如何使用 tf.data.Dataset 对象的 map 或 filter 或 reduce 方法修改顺序数据?
我有一个 python 数据生成器-
它生成具有从 0 到 4 的整数值的不同长度(5 到 8)的序列。以下是生成器生成的一些序列 -
现在我想以这样的方式修改序列 -
- 从每个序列中删除所有偶数
- 长度<2的序列(删除所有偶数后)被过滤掉
这应该给我们一个看起来像这样的结果 -
如何使用tf.data.Dataset方法进行此类转换?