问题标签 [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.
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"]]
每次尝试使用迭代器时,我都会被类似的错误所困扰。这里的目标只是掌握将数据输入图表的基本机制。我确实有一张图表,但我没有把它放在这篇文章中,因为我认为这根本不是问题所在。
显然,我不理解一些非常简单的东西。有人可以帮我吗?谢谢你。
python - 如何使用新的数据集 API 在 tensorflow 中仅循环一次使用占位符提供的数据
我开始使用新的数据集 API,我想做的一件事没有在文档中描述(https://www.tensorflow.org/programmers_guide/datasets#training_workflows)
我的数据适合内存,所以我想将它加载到 tensorflow 中以提高训练效率,为此我现在看到了 2 种方法:
一种是直接在图中加载数据,如下所示:
另一种是将数据加载到占位符中,这样数据就不会保存在图表中:
第二个是我认为最好节省内存,但我不想在每个时期都提供数据。真的是白白损失了性能。
有没有办法用占位符只初始化一次迭代器?
像这样的东西:
这样我们可以保持第一个解决方案的性能并像第二个解决方案一样节省内存。
笔记:
一种解决方案是使用方法定义 epoch 的数量,
dataset.repeat()
但使用它我们有点松散地跟踪我们在训练中的位置。我想在每个时期(一次遍历所有数据)之后检查损失的演变。
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 的外部范围,但它说输入张量来自不同的图
知道我在做什么错吗?谢谢你的帮助!
tensorflow - tf.contrib.data.Dataset 似乎不支持 SparseTensor
我使用 tensorflow 对象检测 API 中的代码生成了一个 pascal voc 2007 tfrecords 文件。我使用tf.contrib.data.Dataset
API从 tfrecords 读取数据。我试过没有tf.contrib.data.Dataset
API的mehtod,代码可以运行没有任何错误,但是当更改为tf.contrib.data.Dataset
API时它不能正常工作。
没有的代码tf.contrib.data.Dataset
:
上面代码的输出是:
代码tf.contrib.data.Dataset
:
运行上述代码时,报如下错误:
生成 tfrecords 文件的代码可以参考create_pascal_tf_record.py。
tensorflow - tf.contrib.data.DataSet 批量大小只能设置为 1
我通过代码create_pascal_tf_record.py将 pascal voc 数据集转换为 tfrecords 。我曾经tf.contrib.data.Dataset
读过数据。我使用的代码如下:
批量大小设置为1时代码可以正常运行,当我将批量大小更改为大于1时,代码会出错。错误如下:
如何将批量大小更改为大于 1?谢谢
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 解决这个问题。
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 答案的更改的自包含可运行代码示例:
错误:
python - TF:如何从用户输入数据创建数据集
我最近开始使用 tensorflow,更具体地说,是使用新的数据集 API。通过将数据集的迭代器插入代表输入和标签的图形节点,我成功地使用数据集将训练数据提供给我的简单模型。就像是:
现在我想知道当我必须对用户输入进行推断时该怎么办,即用户给我一个单一的输入值,我必须做出我的预测。如果我有一个占位符,我只会将用户输入放在 feed_dict 中,但是对于数据集 api,我几乎不知道如何做类似的事情。我应该有一个单独的图表,仅用于我的input
变量是占位符的推断吗?
我已经尝试过按照此处所述制作一个可馈送的迭代器,但这仅适用于字符串的占位符,而我的输入是 int32。
感谢您的任何建议。
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?