问题标签 [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.
python - 如何在'input_fn'中使用tensorflow的迭代器'make_initializable_iterator'?
我想用 tf.estimator.Estimator 训练我的模式并通过 Dataset API 加载我的数据。因为我的数据,例如“mnist”,是一个数组(张量),所以我尝试用“tf.data”加载它。 Dataset.from_tensor_slices'。但我不知道如何在“input_fn”中初始化“make_initializable_iterator”。
如果我可以使用“make_one_shot_iterator”成功训练,但它在训练前加载缓慢。而《<a href="https://medium.com/onfido-tech/higher-level-apis-in-tensorflow-67bfb602e6c0" rel="nofollow noreferrer">Higher-Level APIs in TensorFlow》就是一个很好的例子'input_fn' 中的 'make_initializable_iterator',但它需要从 'input_fn' 返回一个 'iterator_initializer_hook' 给其他函数。我想知道还有其他更好或更优雅的方式吗?
python - 打印 estimator.predict 张量的问题
我目前正在使用 tf 1.4,我需要帮助查看tf.contrib.factorization.KMeansClustering
估算器的预测。我当前的代码段如下所示:
其中 body 和 tst 是 pandas 数据帧。print(y)
给出:
并尝试我搜索过的东西,比如调用print(list(y))
,print(next(y))
或者遍历 y,比如:
等,给出错误TypeError: data must be either a numpy array or pandas DataFrame if pandas is installed; got dict
。我找不到任何其他方法可以尝试在线打印。谢谢
python - 使用 SageMaker 模型预测一批图像
预先感谢您帮助解决此问题。我在 Sagemaker 上训练了一个模型。这是一个将图像作为输入的 TensorFlow 估计器,使用 InceptionV3 计算高级特征(即瓶颈),然后使用密集层来预测新类。
它有点工作:我可以一次又一次地训练它、服务它并预测新图像。
现在我想在一个独特的 HTTP 调用 / predict() 调用中一次预测一整批图像。如何?
这是我的做法:
这会触发以下结果:
(2, 299, 299, 3)
(2, 299, 299, 3) # 注意我发送的形状。那么为什么它在下面的日志中抱怨形状 [1,2,299,299,3] ?
ModelError:调用 InvokeEndpoint 操作时发生错误 (ModelError):收到来自模型的服务器错误 (500),带有消息“”。请参阅 https://eu-west-1.console.aws.amazon.com/cloudwatch/home?region=eu-west-1#logEventViewer:group=/aws/sagemaker/Endpoints/sagemaker-tensorflow-py2-cpu- 2018-02-05-16-48-38-496 账户 047562184710 了解更多信息
以下是来自 AWS 的日志:
顺便说一句,如果我用 PIL 而不是 Keras 加载图像,我会遇到同样的问题:
这是服务器端的代码:
python - 张量流估计器错误:“张量”对象不可迭代
我的代码使用 keras 模型和 tf 数据集并从磁盘加载图像文件。运行此代码时:
我收到以下错误:
python - 恢复使用 tf.estimator 训练的模型并通过 feed_dict 提供输入
我用 tf.estimator 训练了一个 resnet,模型在训练过程中被保存。保存的文件由.data
、.index
和组成.meta
。我想重新加载这个模型并获得对新图像的预测。数据在训练期间使用tf.data.Dataset
. 我密切关注这里给出的 resnet 实现。
我想使用 feed_dict 恢复模型并为节点提供输入。
第一次尝试
我提供了一个数据集,该数据集使用 对同一模型进行了评估classifier.evaluate
,但上述方法给出了错误的预测。该模型为所有图像提供相同的类别和概率 1.0。
第二次尝试
与 相比,这也给出了错误的预测classifier.evaluate
。我什至可以在sess.run(logits)
没有feed_dict
!
第三次尝试
它失败了
我用于训练和构建模型的代码如下:
解析数据集的规范:
以下函数解析数据并创建用于训练的批次
如下创建一个分类器,用于训练集的训练和验证集的评估
这就是我尝试从模型加载和获取预测的方式。
恢复已保存模型并对其执行推理的正确方法是什么。我想直接提供图像而不使用tf.data.Dataset
.
更新
is
ckpt
运行后的值为ckpt = tf.train.get_checkpoint_state(r'./model')
model_checkpoint_path: "./model\model.ckpt-5980" all_model_checkpoint_paths: "./model\model.ckpt-5060" all_model_checkpoint_paths: "./model\model.ckpt-5061" all_model_checkpoint_paths: "./model\model.ckpt- 5520" all_model_checkpoint_paths:"./model\model.ckpt-5521" all_model_checkpoint_paths:"./model\model.ckpt-5980"
当我尝试 `saver.restore(sess, tf.train.latest_checkpoint(r'.\resnet\model')) 时输出相同
传递完整路径以
saver.restore
提供相同的输出在所有情况下,相同的模型都已model.ckpt-5980
恢复
python - TensorFlow Estimator 无法训练第二组全连接层
我有一个 Estimator,它用一个特定的损失函数训练一个 CNN。训练完成后,我希望使用相同的 Estimator,使用已经训练的卷积层和新的损失函数训练一组新的全连接层。这些必须一个接一个地完成。
在尝试开始训练第二组全连接层时,我遇到以下错误:
似乎它需要已经设置了第二个损失函数,但我认为在 model_fn 运行时已经完成了。正在使用两个连续的 Estimator.train 方法调用来训练 Estimator。
tensorflow - 寻找有关“运行”Tensorflow 模型的说明
从 Tensorflow 的文档中,似乎有大量选项可用于“运行”、服务、测试和使用 Tensorflow 模型进行预测。我制作了一个与 MNIST 非常相似的模型,它从图像中输出分布。 对于初学者来说,获取一张或几张图像并通过模型发送它们以获得输出预测的最简单方法是什么? 它主要用于实验目的。抱歉,如果这太多余了,但是我的所有研究都使我找到了许多不同的方法,并且文档并没有真正提供有关不同方法的优缺点的任何信息。谢谢
tensorflow - 如何在没有 model_fn 源代码的情况下将“任何”模型从磁盘加载到 TensorFlow Estimator?
在 Keras 中,您可以使用以下方法加载您之前训练过的模型:
训练好的_keras_model = tf.keras.models.load_model(model_name)
有没有使用 TensorFlow estimator API 的等效方法?根据文档,我必须使用:
trained_estimator = tf.estimator.Estimator (model_fn,model_dir) 我想只使用模型目录中的文件来获得训练有素的估计器。更清楚地说,我的想法是在没有 model_fn 源代码的情况下从磁盘加载“任何”模型。有可能这样做吗?
这个功能是在 Keras 中实现的,所以我不明白为什么 Estimator API 不能做到这一点。
python - Tensorflow 估计器中 ConvLSTM 的正则化
我在估计器的 model_fn 内使用来自 Tensorflow 1.5 的 contrib 包的卷积 LSTM 单元。我想向该单元格添加 L2 正则化。我尝试了以下代码:
这是我创建 convLSTM2D 的地方,我想在其中添加 L2 正则化:
我收到以下错误消息:
ValueError:图层范围没有可用的名称,因为尚未使用图层“lstmConv2d”。范围名称在第一次调用层实例时确定。因此,您必须在查询“scope_name”之前调用该层
如果我用任何其他类型的 tf.layer 替换 convLSTM2D/static_rnn ,它工作正常(如果我使用 kernel_regularizer=tf.nn.l2_loss)...
tensorflow - Tensorflow:当我加载保存的模型并使用预测时,它会给出非常糟糕的结果。为什么?(我正在使用估算器 API)
我正在使用估计器 API 来训练对形状图像进行分类的 CNN。
我能够使用从 tfrecord 文件训练的自定义 input_fn() 成功训练 CNN。然后我可以使用 model.predict(predict_input_fn) 进行预测。几个 epoch 之后的准确率 > 80%,然后当我在一些测试数据上使用 model.predict() 时。我也得到> 80%。所以这似乎工作正常。
我想保存模型,然后加载模型并使用它进行预测,因为这就是我的目标。所以基本上推断。当我这样做并预测我的测试数据时,我得到的结果很糟糕。我已经从我的 input_fn() 中剥离了所有预处理并重新训练。因此,当我进行预测时,我基本上是在传递原始数据。问题仍然存在。我想知道为什么会这样,或者我做错了什么。感谢您的任何见解。
我会链接相关代码我的model_fn
我的服务功能:
我如何保存训练有素的模型:
我如何从保存的模型中预测: