问题标签 [tensorflow-estimator]

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 投票
0 回答
614 浏览

tensorflow - logits 和标签的大小必须相同 logits_size

嗨,我使用自己的数据集来训练模型,但我有错误,我在下面提到。我的数据集有 124 个类,标签是 0 到 123,大小是 60*60 gray,批次是 10,结果是:

labels.eval() --> [ 1 101 101 103 103 103 103 100 102 1] -- len(lables.eval())= 10

原始图片大小 --> (?, 60, 60, 1)

第一个卷积层 (?, 30, 30, 32)

第二个卷积层。(?, 15, 15, 64)

变平。(?, 14400)

密集 .1 (?, 2048)

密集 0.2 (?, 124)

错误

代码

这个标签通过 tfrecords 来自这里:

我通过此代码生成标签,例如 image name=math-1 , lable = 1

我推送图像和标签来创建 tfrecords

0 投票
0 回答
857 浏览

python - TensorFlow Estimator 在评估模式下创建自定义指标

如何在 TensorFlow Estimator 中创建自定义指标?与 MRR、信息检索领域的 NDCG 指标一样。

实际上,让我感到困惑的主要问题是 TensorFlow 如何使用batch. 它是否首先计算批次中度量的平均值(例如accuracy),然后自动计算批次数的平均值?

0 投票
1 回答
642 浏览

tensorflow - Tensorflow : Predict in Recurrent Neural Networks for Drawing Classification 教程

我使用了https://www.tensorflow.org/tutorials/recurrent_quickdraw中的教程代码,一切正常,直到我尝试做出预测而不是仅仅评估它。

我根据 create_dataset.py 中的代码编写了一个新的预测输入函数

我修改了现有的 model_fn() 函数并在下面的适当位置添加

但是,当我调用以下代码时

我收到以下错误,我的代码有什么问题可以请任何人帮助我。我已经尝试了很多方法来获得正确的形状,但我做不到。我还尝试首先将我的笔画数据写为 tfrecord,然后使用现有的 input_fn 从 tfrecord 中读取,这给了我类似的错误,但略有不同

p>

0 投票
1 回答
45 浏览

tensorflow - 为什么我不能将模式传递给 tensorflows GANEstimator 中的鉴别器函数?

在使用 tensorflow 库中的 GANEstimator 时,我只能将模式传递给生成器函数,而不能传递给鉴别器函数。这意味着我无法在鉴别器中执行批量标准化或丢失。有没有理由不允许这样做?这在未来会改变吗?

GANEstimator 链接: https ://www.tensorflow.org/versions/r1.6/api_docs/python/tf/contrib/gan/estimator/GANEstimator

0 投票
0 回答
618 浏览

tensorflow - Tensorflow:训练估计器直到收敛

据我了解EstimatorAPI,该方法train在给定数据上进行训练,直到input_fn函数引发异常或达到步骤数。因此,如果我想循环直到估计器收敛(对于它的某些定义),我需要自己编写循环并测试我的标准。对于估算器来说,这样的事情e

但是有一些事情对我来说仍然是模糊的。

  • 什么时候调用输入函数?它应该总是返回相同的数据吗?它的正确用途是什么?
  • 数据会在每次迭代时上传到 GPU 吗?
    • 如果是这样,我该如何避免呢?
  • 输入函数返回的数据是否只是作为常量嵌入到图中?
    • 如果是这样,我如何使它可喂养
  • 总体而言,启动一个 tensorflow 作业需要 0.8 秒(即每次迭代 1.6 秒没有取得进展),这个循环在 GPU 上不是更好吗?
    • 如果是这样,我该怎么做?
0 投票
4 回答
1329 浏览

tensorflow - 带有 Dataset API 的 Tensorflow 自定义 Estimator:嵌入查找 (feature_column) NMT 任务

我的问题本质上与Feature Columns Embedding lookup很接近,但是我无法评论那里给出的答案(没有足够的代表),我认为回答者要么没有完全理解问题,要么答案不完全是问。


目标

为使用 Dataset API 提供数据的自定义 Estimator 提供服务。任务是 NMT (seq2seq)。


问题

Estimator 需要 feature_columns 作为服务的输入。我的 NMT 任务只有一个特征,即要翻译的输入句子(或者可能句子中的每个单词都是一个特征?)。所以我不确定如何使用我的输入句子作为一个特征来构建一个 feature_column(以及一个 embedding_column,最后是一个 input_layer),这个特征可以被输入到一个 RNN(它需要一个 embedding_lookup [batch_size,max_seqence_len,embedding_dim]),最终将请允许我为估算员服务。


背景

我正在尝试使用自定义估计器来提供 seq2seq 样式的 NMT 实现。我需要能够通过 tf-serving 为模型提供服务,估计器似乎相对容易。

但是,我遇到了“如何”为模型服务的路障。据我所知,我需要“feature_columns”作为模型的输入。

https://github.com/MtDersvan/tf_playground/blob/master/wide_and_deep_tutorial/wide_and_deep_basic_serving.md

表明您需要一个 export_input_fn ,它使用一个 feature_spec 需要一个 feature_column(s) 作为输入。这是有道理的,但是,对于我的用例,我没有一堆(不同的)特征,而是我有需要通过嵌入查找并用作特征的输入句子(其中每个单词都是一个特征)......

所以我知道我需要输入到我的模型中才能成为特征列。我对 NMT 的输入只是 [batch_size, max_sequence_len] 的张量,其中填充了句子中单词的索引(例如,对于 batch_size=1 [3, 17, 132, 2, 1, 0, ...]其中每个索引应该映射到一个嵌入向量)。通常我会通过

我会很高兴,我可以将它作为输入提供给 RNN,其余的都是历史,不是问题。

但是,这是我遇到问题的地方,我需要使用 feature_columns (这样我就可以为模型提供服务)。我在本文开头提到的问题给出的答案显示了如何使用 embedding_column,但他建议嵌入应该将整个句子作为一个单一特征查找,但传统上你会查找句子中的每个单词并得到它的嵌入。

同样,https://www.damienpontifex.com/2018/01/02/using-tensorflow-feature-columns-in-your-custom-estimator-model/

显示“如何在自定义估计器中实现特征列”,实际上他的“之前”代码是完全正确的(正如我写的那样),一个 tf.get_variable 到一个 tf.nn.embedding_lookup,但他的“之后”代码,同样,只接受 1 个特征(整个句子?)。

我已经通过使用他们的代码并将 [batch_size, max_seq_len] 中的数据提供给 tf.feature_column.categorical_column_with_identity 来验证这一点,输出张量是 [batch_size, embedding_dim]

序列信息丢失?或者它只是变平了?当我打印输出时,它的大小(?,embedding_dim)在哪里?通常是我的 batch_size。

编辑:我已经验证了形状是 [batch_size, embedding_dim],它不只是扁平化......所以序列信息丢失了

我猜它必须将输入视为 1 个单个输入特征(因此 batch_size=1 ex [3, 17, 132, 2, 1, 0, ...] 其中每个索引映射到嵌入向量)将映射对于不想要的单个特征,我们希望每个索引映射到一个嵌入,并且所需的输出是 [batch_size, max_seq_len, embedding_dim]。

听起来我需要的不是一个 categorical_column_with_*,而是它们的 max_seq_len 数量(我序列中的每个单词 1 个),这听起来对吗?每个单词都是我模型的一个特征,所以我倾向于这是正确的方法,但这也有问题。我正在使用 Dataset API,所以在我的 input_train_fn() 中,我从文件中加载数据,然后使用 tf.data.Dataset.from_tensor_slices(data, labels) 将数据拆分为张量,然后我可以使用 dataset.batch( batch_size).make_one_shot_iterator().get_next() 输入我的估算器。我不能对每个批次进行迭代(Tesors 不可迭代)所以我不能简单地为每个输入批次制作 100 个 feature_columns ...

有谁知道如何做到这一点?这种嵌入查找对于简单的占位符或变量(以及 NLP 任务中的常用方法)来说是一件非常简单的事情。但是当我冒险使用 Dataset API 和 Estimators 时,我遇到了一个信息量很少的墙(这不是一个基本的例子)。

我承认我的理解可能存在差距,自定义估算器和数据集 API 对我来说是新事物,有时很难找到有关它们的信息。因此,请随时向我发送信息。

感谢您阅读我的文字墙并希望对我有所帮助(以及我见过的其他人提出类似的问题但没有得到答案https://groups.google.com/a/tensorflow.org/forum/#!searchin /discuss/embeddings $20in$20custom$20estimator/discuss/U3vFQF_jeaY/EjgwRQ3RDQAJ 我为这个家伙感到难过,他的问题没有得到真正的回答(出于与此处所述相同的原因,他的线程被劫持了......)。

0 投票
1 回答
1647 浏览

python - 将 Estimator 转换为 TPUEstimator

是否可以在不费力重写其函数的情况下将 TensorFlow 中的 an 转换Estimator为 a ?TPUEstimator我有一个在EstimatorCPU 上运行良好的模型,但我不知道一种方便的方法将其转换为 aTPUEstimator而无需重写model_fnand input_fn

这需要手动完成大量工作的原因是我使用 Keras 创建模型,然后使用以下辅助函数创建Estimator

如果我能做类似estimator.to_TPU_estimator()或类似的事情会很棒——也许有人知道解决方案?

0 投票
0 回答
388 浏览

tensorflow - 计算 tf.estimator.DNNLinearCombinedClassifier 的精度/召回率

我刚刚更新了DNNLinearCombinedClassifierto use tf.estimator,它只需要SessionRunHooka ValidationMonitor,我一直在使用此处描述的代码来计算精度/召回率,因为评估器不会打印这两个指标。但是,我找不到使用SessionRunHookrequired for实现相同功能的方法tf.estimator.Estimator

我在这里找到了相关帖子,但似乎在代码中,ValidationMonitor如果指定了指标(来自 tensorflow/contrib/learn/python/learn/monitors.py),则特别禁止使用它:

我正在使用张量流 1.5.0。

任何建议如何实施?

0 投票
1 回答
1010 浏览

python - tf.estimator.train_and_evaluate 的 input_fn 优化

我正在构建一个 TensorFlow Estimator,我想使用该tf.estimator.train_and_evaluate()函数进行训练和评估。此功能的文档提供以下建议:

还建议在执行评估之前对模型进行更长时间的训练,比如多个 epoch,因为每次训练的输入管道都是从头开始的。

这是有道理的,因为train_and_evaluate()通过在调用estimator.train()和之间交替工作estimator.evaluate(),为每个新调用拆除计算图。就我而言,这是一个问题,因为我想相对频繁地评估模型,而且我input_fn的设置似乎有很多开销。它目前看起来像这样:

我怀疑这个函数的很多时间成本来自于洗牌,因为它需要首先生成整个数据集。洗牌可能并不慢,但我instance_generator的是。理想情况下,我想找到一种方法来避免必须为每个 train/eval 调用从生成器重建数据集。有什么方法可以使用 Dataset 类来实现这一点?有没有一种方法可以在数据集生成后缓存它的状态,以便input_fn在第一次调用之后的每个新调用都变得更便宜?

0 投票
1 回答
314 浏览

python - 在输入函数中使用 Dataset API 时,Tensorflow Estimator.predict_scores 未产生正确数量的预测

我正在使用 tensorflow 1.5,我对这种我无法解释的奇怪行为感到困惑。
我制作了一个最小的例子:

在此示例中,对“fit”的调用似乎工作正常(但我不确定),但对“predict_scores”的调用仅产生 batch_size (=16) 预测而不是 n_samples (=256)。我做错了什么?
如果我使用 tf.esimator.inputs.numpy_input_fn,这个问题就会消失,尽管最终我将不得不使用一个使用 TFRecordDataset 从 tfrecord 文件中读取大量训练数据的输入函数,类似于此处显示的内容: https: //www.tensorflow.org/programmers_guide/datasets#using_high-level_apis
任何帮助将不胜感激。