问题标签 [tensorflow-datasets]

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 回答
3105 浏览

python - 在 tensorflow 中初始化一个基本的一次性迭代器

我是 tensorflow 的新用户,正在使用数据集。作为入门,我从tensorflow 站点复制并使用了以下示例代码:

在第一次调用时,sess.run()我看到以下错误:

NotFoundError(参见上面的回溯):未定义函数 _make_dataset_989f6fa6。[[节点:OneShotIterator = OneShotIteratorcontainer="", dataset_factory=_make_dataset_989f6fa6[], output_shapes=[[]], output_types=[DT_INT64], shared_name="", _device="/job:localhost/replica:0/task:0 /cpu:0"]]

每次尝试使用迭代器时,我都会被类似的错误所困扰。这里的目标只是掌握将数据输入图表的基本机制。我确实有一张图表,但我没有把它放在这篇文章中,因为我认为这根本不是问题所在。

显然,我不理解一些非常简单的东西。有人可以帮我吗?谢谢你。

0 投票
2 回答
4216 浏览

python - 如何使用新的数据集 API 在 tensorflow 中仅循环一次使用占位符提供的数据

我开始使用新的数据集 API,我想做的一件事没有在文档中描述(https://www.tensorflow.org/programmers_guide/datasets#training_workflows

我的数据适合内存,所以我想将它加载到 tensorflow 中以提高训练效率,为此我现在看到了 2 种方法:

一种是直接在图中加载数据,如下所示:

另一种是将数据加载到占位符中,这样数据就不会保存在图表中:

第二个是我认为最好节省内存,但我不想在每个时期都提供数据。真的是白白损失了性能。

有没有办法用占位符只初始化一次迭代器?

像这样的东西:

这样我们可以保持第一个解决方案的性能并像第二个解决方案一样节省内存。

笔记:

一种解决方案是使用方法定义 epoch 的数量,dataset.repeat() 但使用它我们有点松散地跟踪我们在训练中的位置。

我想在每个时期(一次遍历所有数据)之后检查损失的演变。

0 投票
1 回答
888 浏览

python - 从 tfrecords 数据集生成跨步切片数据集

继续这个问题和这里的讨论- 我正在尝试使用 Dataset API 来获取可变长度张量的数据集并将它们切成相等长度的切片(段)。就像是:

当然,我不想在生成器中传递会话,但这应该通过链接中给出的技巧来解决(创建一个虚拟数据集并映射另一个的迭代器)。上面的代码因圣经而失败:

我猜这是因为我尝试产生迭代器的初始化程序,但我的问题基本上是我是否可以使用数据集 API 实现我正在尝试的所有内容。

0 投票
0 回答
369 浏览

python - 在循环中使用 tf.estimator.Estimator、tf.TFRecordReader 和 input_fn 批量训练整个数据集

我正在努力使用 tf.estimator.Estimator 训练方法用整个 TFRecord 数据集训练我的 cnn。

我试图在循环中运行 train 如下:

我的 input_fn 看起来像这样:

在我的 model_fn 我有以下代码:

但是,当我在我的 model_fn 中使用 tf.Print 文件名时,似乎每次运行我都会获得相同的批次。到目前为止,我已经尝试过: * 更改步骤 - 但它不打印文件名而不是(仅 logits)???* 试图将阅读器移动到 generate_input_fn 的外部范围,但它说输入张量来自不同的图

知道我在做什么错吗?谢谢你的帮助!

0 投票
2 回答
2744 浏览

tensorflow - tf.contrib.data.Dataset 似乎不支持 SparseTensor

我使用 tensorflow 对象检测 API 中的代码生成了一个 pascal voc 2007 tfrecords 文件。我使用tf.contrib.data.DatasetAPI从 tfrecords 读取数据。我试过没有tf.contrib.data.DatasetAPI的mehtod,代码可以运行没有任何错误,但是当更改为tf.contrib.data.DatasetAPI时它不能正常工作。

没有的代码tf.contrib.data.Dataset

上面代码的输出是:

代码tf.contrib.data.Dataset

运行上述代码时,报如下错误:

生成 tfrecords 文件的代码可以参考create_pascal_tf_record.py

0 投票
3 回答
2968 浏览

tensorflow - tf.contrib.data.DataSet 批量大小只能设置为 1

我通过代码create_pascal_tf_record.py将 pascal voc 数据集转换为 tfrecords 。我曾经tf.contrib.data.Dataset读过数据。我使用的代码如下:

批量大小设置为1时代码可以正常运行,当我将批量大小更改为大于1时,代码会出错。错误如下:

如何将批量大小更改为大于 1?谢谢

0 投票
2 回答
1187 浏览

python - tensorflow 的数据集 API 返回的大小不是恒定的

我正在使用 tensorflow 的数据集 API。并用简单的案例测试我的代码。下面显示了我使用的简单代码。问题是,当数据集大小较小时,从数据集 API 返回的大小似乎不一致。我确信有一个适当的方法来处理它。但即使我阅读了该页面和教程中的所有功能,我也找不到。

数据集是灰度视频。共有 24 个视频序列,步长均为 200。帧大小为 64 x 64 和单通道。我将批量大小设置为 16,缓冲区大小设置为 100。但代码的结果是,

返回的视频大小是16或8。我猜是因为原始数据大小很小,24,当它到达数据末尾时,API只是返回剩下的。

但我不明白。我还将缓冲区大小设置为 100。这意味着应该提前用小数据集填充缓冲区。并且从该缓冲区中,API 应该选择批量大小为 16 的 next_element。

当我在 tensorflow 中使用队列类型的 API 时,我没有遇到这个问题。无论原始数据的大小是多少,总有一天迭代器会到达数据集的末尾。我想知道其他人如何使用这个 API 解决这个问题。

0 投票
2 回答
4798 浏览

tensorflow - 使用 tf.py_func 生成输入数据

Python 版本 = 3.6.3 TensorFlow 版本 = 1.3.0

我曾在 .Keras但现在正试图直接在TensorFlow. 我正在尝试实现Keras's的等效项,fit_generator因此我不必在开始时将所有训练数据加载到内存中,而是可以根据需要将其输入网络进行训练。下面的代码代表我尝试开始这样的事情,但如果我做错了这一切,我很想知道我应该在文档中的哪个位置查找以及我应该使用哪些关键字来搜索它。

我的系统目前基于一个生成器,该生成器读取 sqlite 数据库文件以提取np.arrays然后将它们转换为我想要的数据形状(具有一个向前预测的时间序列)。我现在正在尝试迁移该系统以使用 TensorflowDataset并在应用时遇到困难tf.py_func。这是我现在正在尝试的工作方式

初始化运行良好,但是当我启动会话并运行时,出现以下错误:

问题

(1)这似乎完全是一个用例,py_func但我错了吗?如果没有,谁能指出一些比 Tensorflow 文档更深入的资源?(我确实注意到了 git 上的一个潜在相关问题:https ://github.com/tensorflow/tensorflow/issues/12396 ,但是用 a 包装所有内容的修复对tuple我没有帮助)。

(2) 我应该遵循的一般流程是什么,特别是在我想从一堆文件名开始并为每个文件名输出多个训练的情况下Example

谢谢你。

下面我重写了我的脚本,使其成为一个独立的可运行示例。我相信问题仍然与上面的代码中的相同,但我也正在重复错误以确认。

包含来自@mrry 答案的更改的自包含可运行代码示例:

错误:

0 投票
1 回答
348 浏览

python - TF:如何从用户输入数据创建数据集

我最近开始使用 tensorflow,更具体地说,是使用新的数据集 API。通过将数据集的迭代器插入代表输入和标签的图形节点,我成功地使用数据集将训练数据提供给我的简单模型。就像是:

现在我想知道当我必须对用户输入进行推断时该怎么办,即用户给我一个单一的输入值,我必须做出我的预测。如果我有一个占位符,我只会将用户输入放在 feed_dict 中,但是对于数据集 api,我几乎不知道如何做类似的事情。我应该有一个单独的图表,仅用于我的input变量是占位符的推断吗?

我已经尝试过按照此处所述制作一个可馈送的迭代器,但这仅适用于字符串的占位符,而我的输入是 int32。

感谢您的任何建议。

0 投票
1 回答
1097 浏览

python-3.x - padding MNIST dataset with tf.pad()

How to pad MNIST dataset images of size (?,28,28,1) with tf.pad() and make it (?,32,32,1) in tensorflow?