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

python - 带有 ListDirectory 的 TensorFlow 数据集 API

我想使用 Tensorflow 数据集 API 为每个文件夹创建一批(每个文件夹包含图像)。我有以下简单的代码片段:

但是,tf.gfile.ListDirectory(在 parse_dir 中)需要一个普通字符串而不是张量。所以现在的错误是

有没有简单的方法来解决这个问题?

0 投票
1 回答
873 浏览

tensorflow - 如何使用 Dataset API 一次性从 TFRecord 文件中读取所有示例记录?

我正在使用 Spark 作业来生成一个TFRecord文件,该文件将是我的(单词,计数)对的词汇文件。

我想使用 Dataset API 一次加载整个文件,因为我的词汇文件可能位于 HDFS 上,并且可能被拆分为多个物理文件。也就是说,我发现它非常不直观。到目前为止,这是我的代码:

使用一个巨大的、固定的预先批量大小是我能想到的在shape=(num_entries,). 它似乎也运行得很慢。

有没有更好的办法?

0 投票
1 回答
962 浏览

python - 如何在完整的验证示例中评估 Tensorflow 模型

我正在使用 Tensorflow 的 tf.estimator.DNNClassifier.evaluate 函数来评估我的网络。我正在使用位于此处的 Tensorflow 的 Iris 数据。经过一些进一步的调查和数学计算,我确定无论评估集大小如何,都会评估 128 个示例。

例如,iris_training.csv 只有 120 个示例,并且评估了 128 个(估计有 8 个被评估了两次)。我也有一些包含 1k 个示例的验证集,但在这种情况下也只评估了 128 个示例。

我通过将总损失除以平均损失来计算出这一点,以获得评估的示例数量。我希望能够任意改变这一点,尤其是在使用更大的验证集时。如何实现?

我已经尝试使用评估函数的 steps 参数 = 1、2、10、120 等......这会导致相同的 128 个示例被评估,而 steps = None 会导致函数永远不会返回。

我无法理解这个 128 指标的来源,即使在搜索了位于此处的 API 之后。我还研究了使用位于此处的类似 tf.contrib.learn.DNNClassifier 的估计器,但 API 声明该函数已弃用并将被删除,所以我认为这不是最佳选择。

我假设在此处找到另一个 SO 页面后,steps 参数不是我要寻找的。

那么,如何使用 Tensorflow 评估任意数量的验证示例?

0 投票
1 回答
2290 浏览

python - 如何从 TFrecord 为 TensorFlow 中的训练网络创建批次?

我已将数据保存到 tfrecord 文件中。它有 1000 个样本和 2 个特征(一个是输入,另一个是输出)。输入是形状 [1,20] 和输出 [1,10]。它们都是从扁平的 numpy 数组创建的。我正在尝试从它们创建批次,以便我可以使用它们来训练我的网络,但我无法弄清楚如何。

这是我训练网络的代码

这是我从中获取数据的文件。

错误:

在看了其他问题之后,我在想也许我的批次应该是 ndarray 什么的?但我不知道如何将我的数据集变成那种形式。我什至无法弄清楚如何在没有迭代器的情况下使用我的数据。任何指导都会很棒!谢谢

0 投票
1 回答
638 浏览

tensorflow - tf.data.Dataset 中大量数据集的最佳数据流和处理解决方案

语境:

我的文本输入管道目前由两个主要部分组成:

。复杂的文本预处理和导出tf.SequenceExamples到 tfrecords(自定义标记化、词汇创建、统计计算、规范化以及整个数据集以及每个单独示例的更多)。对每个数据配置执行一次。

.一个 tf.Dataset (TFRecords) 管道,在训练期间也进行了大量处理(string_split字符、表查找、分桶、条件过滤等)。

原始数据集存在于多个位置(BigQuery、GCS、RDS...)。

问题:

问题在于,随着生产数据集的快速增长(数 TB),为每个可能的数据配置(第 1 部分有很多超参数)重新创建一个 tfrecords 文件是不可行的,因为每个文件都有数百 TB 的巨大大小。更不用说,当tfrecords 的大小增加时,tf.Dataset读取速度会惊人地减慢。tf.SequenceExamples

有很多可能的解决方案:

  • Apache Beam + Cloud DataFlow + feed_dict;
  • tf.变换;
  • Apache Beam + Cloud DataFlow + tf.Dataset.from_generator;
  • 张量流/生态系统 + Hadoop 或 Spark
  • tf.contrib.cloud.BigQueryReader

,但以下似乎都不能完全满足我的要求:

  1. 流式传输和处理来自 BigQuery、GCS、RDS 等的动态数据,如第一部分所述。
  2. 以一种或另一种方式直接发送数据(原型?)以tf.Dataset在第二部分中使用。
  3. 快速可靠的训练和推理。
  4. (可选)能够预先计算选定部分数据的一些完整统计数据。

  5. 编辑: Python 3 支持会很棒。

tf.data.Dataset管道最合适的选择是什么?在这种情况下,最佳实践是什么?

提前致谢!

0 投票
1 回答
2226 浏览

tensorflow - TensorFlow Custom Estimator - 在 model_fn 发生微小变化后恢复模型

tf.estimator.Estimator用于开发我的模型,

我写了一个model_fn并训练了 50,000 次迭代,现在我想对我model_fn的 .

我不想从头开始训练,我想从 50,000 检查点恢复所有旧变量,并从这一点继续训练。当我尝试这样做时,我得到一个NotFoundError

如何做到这一点tf.estimator.Estimator

0 投票
2 回答
6038 浏览

tensorflow - 使用 Estimators API 结合 tf.data.Dataset 时如何加快批量准备

我想加快使用 Estimator API 和 input_fn 编写的训练例程tf.data.Dataset

我的实现需要 2 秒来准备一批数据,然后在 GPU 上运行 1 秒训练,然后重新开始准备一批数据。这真的是低效的。

我正在寻找一种方法来异步准备批次并将它们上传到 GPU 以加快训练速度。或者,另一种方法是在调用之间缓存数据集input_fn(这dataset.cache()似乎不是一个好的选择,因为必须在每次 input_fn 调用时重新创建数据集)。

这是我的代码的简化版本:

我注意到 Estimator API 正在积极开发中,并且在 tensorflow 的主分支中 input_fn 已经可以返回数据集,所以也许我问得太早了,这个功能还没有准备好。但如果是这样,请提供可以跟踪此实施的票证。

0 投票
1 回答
1176 浏览

python - 使用创建的 tensorflow 模型进行预测

我正在查看这篇 Tensorflow 文章的源代码,该文章讨论了如何创建一个广泛而深入的学习模型。https://www.tensorflow.org/versions/r1.3/tutorials/wide_and_deep

这是python源代码的链接:https ://github.com/tensorflow/tensorflow/blob/r1.3/tensorflow/examples/learn/wide_n_deep_tutorial.py

它的目标是训练一个模型,根据人口普查信息中的数据,该模型将预测某人的年收入是否超过或低于 50ka 美元。

按照指示,我正在运行此命令来执行:

我得到的结果如下:

在我在网上看到的各种文章中,它谈到了加载.ckpt文件。当我查看我的模型目录时,我看到了这些文件:

我猜我会使用的是model.ckpt-1.meta,对吗?

但我也对如何使用和提供这个模型数据感到困惑。我在 Tensorflow 的网站上看过这篇文章:https ://www.tensorflow.org/versions/r1.3/programmers_guide/saved_model

上面写着“请注意,Estimators 会自动保存和恢复变量(在 model_dir 中)。” (不确定在这种情况下这意味着什么)

我如何生成人口普查数据格式的信息,除了工资,因为这是我们应该预测的?对我来说,如何使用两篇 Tensorflow 文章以便能够使用经过训练的模型进行预测并不明显。

0 投票
2 回答
7078 浏览

python - TensorFlow - 从 TFRecords 文件中读取视频帧

TLDR; 我的问题是如何从 TFRecords 加载压缩视频帧。

我正在建立一个数据管道,用于在大型视频数据集 ( Kinetics ) 上训练深度学习模型。为此,我正在使用 TensorFlow,更具体地说是tf.data.DatasetTFRecordDataset结构。由于数据集包含约 30 万个 10 秒的视频,因此需要处理大量数据。在训练期间,我想从视频中随机采样 64 个连续帧,因此快速随机采样很重要。为了实现这一点,在训练期间可能会出现许多数据加载场景:

  1. 来自视频的样本。ffmpeg使用orOpenCV和示例帧加载视频。不理想,因为在视频中搜索很棘手,并且解码视频流比解码 JPG 慢得多。
  2. JPG 图片。通过将所有视频帧提取为 JPG 来预处理数据集。这会生成大量文件,由于随机访问,这可能不会很快。
  3. 数据容器。将数据集预处理为TFRecordsHDF5文件。需要做更多的工作来准备好管道,但很可能是这些选项中最快的。

我决定选择选项(3)并使用TFRecord文件来存储数据集的预处理版本。然而,这也并不像看起来那么简单,例如:

  1. 压缩。将视频帧作为未压缩字节数据存储在 TFRecords 中将需要大量磁盘空间。因此,我提取所有视频帧,应用 JPG 压缩并将压缩字节存储为 TFRecords。
  2. 视频数据。我们正在处理视频,因此 TFRecords 文件中的每个示例都将非常大,并且包含多个视频帧(通常 250-300 用于 10 秒的视频,具体取决于帧速率)。

我编写了以下代码来预处理视频数据集并将视频帧写入 TFRecord 文件(每个文件大小约为 5GB):

这很好用;数据集很好地编写为 TFRecord 文件,帧为压缩的 JPG 字节。我的问题是,如何在训练期间读取 TFRecord 文件,从视频中随机采样 64 帧并解码 JPG 图像。

根据TensorFlow 的文档tf.Data我们需要执行以下操作:

有很多关于如何使用图像执行此操作的示例,这非常简单。但是,对于视频和帧的随机采样,我被卡住了。该tf.train.Features对象将帧存储为frame/00001frame/000002。我的第一个问题是如何从dataset.map()函数内部随机采样一组连续帧?考虑因素是由于 JPG 压缩,每个帧都有可变数量的字节,需要使用tf.image.decode_jpeg.

任何帮助如何最好地设置从 TFRecord 文件读取视频样本将不胜感激!

0 投票
6 回答
14012 浏览

tensorflow - 如何让 tf.data.Dataset 在一次调用中返回所有元素?

有没有一种简单的方法可以在 a 中获取整个元素集tf.data.Dataset?即我想将数据集的批量大小设置为我的数据集的大小,而无需专门传递元素的数量。这对于我想一次性测量整个数据集的准确性的验证数据集很有用。我很惊讶没有一种方法可以获取tf.data.Dataset