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

tensorflow - 冻结 TensorFlow Estimator 的图(将转换为 Core ML)

我正在尝试将Iris 估计器示例转换为与 iOS/CoreML 一起使用,但无法弄清楚如何导出冻结图。

按照程序员移动指南指南,我在尝试转换经过训练的(估计器)graph.pbtxt(和model.ckpt)时遇到错误:

给出以下错误:

0 投票
1 回答
107 浏览

python - sampled_softmax_loss 抱怨张量畸形(但似乎不是)

我正在尝试构建一个使用的模型,sampled_softmax_loss但我似乎无法为该函数正确地塑造输入张量。这是一个示例,据我所知,它应该与文档匹配,但会引发此异常:

ValueError:形状必须为 2 级,但对于具有输入形状的“sampled_softmax_loss/LogUniformCandidateSampler”(操作:“LogUniformCandidateSampler”)为 1 级:[?]。

代码:

如果有人能给我一些指示,我将永远欠你虚拟啤酒。

0 投票
1 回答
342 浏览

protocol-buffers - 使用 tf.Estimators 的 Tensorflow 服务函数在从 java 调用时导致错误

我已经成功创建了模型并希望将其导出以用于从 java 客户端进行预测,但是在使用来自 java 的预测存根调用预测时出错,因为我需要在调用预测时将序列化示例放入占位符对象中!

You must feed a value for placeholder tensor 'input_example_tensor' with dtype string and shape [?]

是否有人可以帮助我在 java 中使用 protobuff 创建张量占位符?

有如下错误 -

我使用的签名定义如下使用 saved_model_cli -

请在 java 中找到以下用于创建请求对象的代码 -

注意:我已经使用并使用以下导出函数()成功导出了模型 -

0 投票
0 回答
396 浏览

python - 如何为 tf.data.Dataset 构建外部缓存

我试图弄清楚如何编写正确的 input_fn。我已经使用 Tensorflow 估计器和数据集重建了一个 keras UNet 实现。它正在工作,但它比 Keras 实现慢得多。我的输入管道直接从 SSD 读取文件,而 Keras 实现将整个 DataSet 加载到内存。

我想在 DataSets 中做同样的事情,不幸的是,缓存构建ds.cache()在每次中断时都会被清除estimator.train。因为我试图只使用一个 GPU,所以我必须中断它来验证模型。

我看了一下实现,Dataset.cache我猜缓存绑定到保存数据集的图上,每次训练中断时都会释放这个图。

我有什么选择可以让我的输入管道留在张量流图中?我想避免在 python 和 tensorflow 之间来回传递整个训练数据。

我可以在另一个图表中使用张量吗?所以我可以用我的 input_fn 创建一个外部(到 Estimator 的 API)图,然后以某种方式在由 estimator.train 创建的图中使用它。

沿着这条线的东西:

0 投票
1 回答
2094 浏览

tensorflow - 如何使用 tf.MonitoredTrainingSession 在训练和验证数据集之间切换?

我想feedable在 tensorflow Dataset API 中使用迭代器设计,所以我可以在一些训练步骤后切换到验证数据。但如果我切换到验证数据,它将结束整个会话。

以下代码演示了我想要做什么:

训练数据有 32 个元素,用 4 个进行批处理,所以我们每 4 个步骤进行 8 个批处理,所以我期望:

但是当第一次验证完成时它会停止:

那么,如何在 中使用这个feedable迭代器tf.MonitoredTrainingSession呢?

0 投票
1 回答
837 浏览

tensorflow - 将使用 tf.estimator 训练和保存的模型转换为 .pb

我有一个用 tf.estimator 训练的模型,它在训练后被导出,如下所示

这给了我一个saved_model.pb和一个包含权重文件的.data文件夹。我可以使用重新加载保存的模型

我想在 android 上运行这个模型,这需要模型的.pb格式。如何冻结此预测器以在 android 平台上使用?

0 投票
1 回答
8128 浏览

python - 张量流错误:不支持的可调用

我遵循教程https://www.tensorflow.org/tutorials/layers,我想用它来使用我自己的数据集。

但我有这个错误:

我不明白这个错误,我只知道它来自 train_input_fn_custom。张量流版本是1.6

如果有人有想法..谢谢!

0 投票
2 回答
1344 浏览

python - 为什么要在 tensorflow 中为训练和验证构建分离图?

我已经使用 tensorflow 有一段时间了。起初我有这样的东西:

主要是因为我从一些强迫我这样做的 MOOC 开始。但他们也没有使用 TFRecords 或 Queues。而且我不知道为什么要使用两个独立的模型。我尝试只构建一个并使用feed_dict: 提供数据,一切正常。

从那以后我通常只使用一种模型。我的输入总是占位符,我只输入训练或验证数据。

最近,我注意到在使用tf.layers.dropout和的模型上有一些奇怪的行为tf.layers.batch_normalization。这两个函数都有一个我与tf.bool占位符一起使用的“培训”参数。我见过 tf.layers 通常与 a 一起使用tf.estimator.Estimator,但我没有使用它。我已经阅读了 Estimators 代码,它似乎为训练和验证创建了两个不同的图表。可能是这些问题是由于没有两个独立的模型引起的,但我仍然持怀疑态度。

是否有一个明确的原因我没有看到这意味着必须使用两个单独的等效模型?

0 投票
6 回答
64723 浏览

python - Tensorflow:logits 和标签必须具有相同的第一维

我是 tensoflow 的新手,我想用我自己的数据(40x40 的图像)调整 MNIST 教程https://www.tensorflow.org/tutorials/layers 。这是我的模型功能:

我在标签和 logits 之间有一个形状大小错误:

InvalidArgumentError(参见上文的追溯):logits 和标签必须具有相同的第一维,得到 logits 形状 [3,2] 和标签形状 [1]

filenames_array 是一个 16 个字符串的数组

labels_array 是一个 16 个整数的数组

主要功能是:

我试图重塑 logits 但没有成功:

logits = tf.reshape(logits, [1, 2])

我需要你的帮助,谢谢


编辑

经过更多时间搜索,在我的模型函数的第一行

表示将动态计算 batch_size 维度的“-1”在此处具有值“3”。与我的错误中相同的“3”:logits 和 labels 必须具有相同的第一维,得到 logits 形状 [3,2] 和标签形状 [1]

如果我将值强制为“1”,我会遇到这个新错误:

reshape 的输入是一个有 4800 个值的张量,但请求的形状有 1600 个

也许我的功能有问题?


编辑2:

完整的代码在这里:https ://gist.github.com/geoffreyp/cc8e97aab1bff4d39e10001118c6322e


编辑3

我更新了要点

https://gist.github.com/geoffreyp/cc8e97aab1bff4d39e10001118c6322e

但是我不完全理解您对批量大小的回答,这里的批量大小如何可以为 3 而我选择批量大小为 1 ?

如果我选择一个 batch_size = 3 我有这个错误: logits 和 labels 必须具有相同的第一维,得到 logits 形状 [9,1] 和标签形状 [3]

我试图重塑标签:

我更新了功能和标签结构:

但没有成功...

0 投票
1 回答
1593 浏览

gcloud - 当 Json 请求包含“_bytes”或“b64”时,google cloud ml-engine 会做什么?

谷歌云文档(请参阅预测输入中的二进制数据)指出:

您的编码字符串必须格式化为带有一个名为 b64 的键的 JSON 对象。以下 Python 示例使用 base64 库对原始 JPEG 数据的缓冲区进行编码以创建实例:

在您的 TensorFlow 模型代码中,您必须为输入和输出张量命名别名,以便它们以“_bytes”结尾。

我想更多地了解这个过程在谷歌云端是如何工作的。

  • ml-engine 是否自动将“b64”字符串之后的任何内容解码为字节数据?

  • 当请求具有这种嵌套结构时,它是否只将“b64”部分传递给服务输入函数并删除“image_bytes”键?

  • 每个请求是单独传递给服务输入函数还是批量传递?

  • 我们是否在服务输入函数返回的 ServingInputReceiver 中定义输入输出别名?

我发现没有办法创建使用这种嵌套结构来定义特征占位符的服务输入函数。我只在我的中使用“b64”,我不确定 gcloud ml-engine 在接收请求时会做什么。

此外,在本地使用 进行预测时,使用gcloud ml-engine local predict嵌套结构发送请求失败,(意外的关键 image_bytes,因为它未在服务输入函数中定义)。但是在使用 进行预测时gcloud ml-engine predict,即使服务输入函数不包含对“image_bytes”的引用,也可以使用嵌套结构发送请求。gcloud predict 在省略“image_bytes”并仅传入“b64”时也有效。

一个示例服务输入函数

我给出了使用图像的示例,但我假设这同样适用于以字节和 base64 编码形式发送的所有类型的数据。

有很多 stackoverflow 问题包含对需要在信息片段中包含“_bytes”的引用,但如果有人可以更详细地解释发生了什么,我会发现它很有用,因为这样我就不会那么受到打击并在格式化请求时错过。

关于此主题的 Stackoverflow 问题