问题标签 [tensorflow-model-analysis]

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 回答
21 浏览

python - 未知层:DenseVariational。请确保将此对象传递给“custom_objects”参数

任何人都可以在此错误消息中帮助我:ValueError:未知层:DenseVariational。请确保将此对象传递给custom_objects参数。

当我尝试使用 tf.keras 加载经过训练的贝叶斯神经网络模型时,就会发生这种情况。它不断返回未知层:DenseVariational。但是训练代码运行良好。有谁知道如何解决这个问题?

我们尝试修改 Densevariational_v2 模块中的 get_config 函数,但它不起作用。谢谢并感激!!

加载模型的代码:

训练和保存模型的代码:

训练代码工作正常,我没有在这里复制整个内容,但它可以将模型保存到 .h5 文件中。只是加载部分,它无法完成。提前致谢!

0 投票
0 回答
93 浏览

python - Tensorflow Keras 模型结果不可重现

这就是我的训练脚本的样子,只有重要的部分。

这是推理脚本,在不同的 python 会话中。

最后一个预测循环是必要的,因为该model.predict方法似乎直到五次尝试才在测试集上给出正确的结果(即在训练期间观察到的结果)。模型本身加载的权重与训练期间观察到的相同,但预测方法的输出似乎有一些周期性变化,所以每次我使用它时,我必须调用它五次以确保一致性。我不知道为什么会这样。我应该采取什么纠正措施?特别是,5 在这里看起来完全是一个神奇的数字。

如果它很重要,请在 python 3.8、Ubuntu 20.04 上运行它(并打算使用相同的 docker 映像在生产中部署),并使用以下库版本。

编辑:经过更多的实验,我意识到周期不是 5,但实际上没有这样的周期。它在加载和预测时不断给出随机结果,有时它确实给出了正确的结果。

0 投票
0 回答
18 浏览

tensorflow - 传递到 TensorFlow 模型分析之前的后处理模型预测

是否可以在将模型预测传递给tfma.run_model_analysis之前对其进行后处理?据我在教程中看到的,没有办法做到这一点,因为它只接受经过训练的模型、tfrecords 格式的数据以及要计算的指标列表。

谢谢!

0 投票
1 回答
327 浏览

tensorflow - TFX Tensorflow 模型验证器组件 - 您传递了一个带有键 ['image_raw_xf'] 的数据字典。预期以下键:['input_1']

我正在基于 cifar10 示例构建 tfx 管道:[https://github.com/tensorflow/tfx/tree/master/tfx/examples/cifar10]

不同之处在于我不想将其转换为 tf_lite 模型,而是使用基于 keras 的常规 tensorflow 模型。

一切都按预期工作,直到我到达 Evaluator 组件,因为它失败并出现以下错误:

不知道我做错了什么,但到目前为止我调试/修改了代码如下:

[1] preprocessing_fn 输出正在输出密钥image_xf

[2] 当我构建模型时,我使用了带有同名 inputLayer 的迁移学习image_xf

[3] 相应地创建模型签名:

现在,我怀疑 tensorflow 没有正确保存模型,因为当我导出保存的模型时,输入层input_1不是image_xf.

这里要注意的是(1)我在Sequential上面的模型中添加的输入层丢失了,(2)mobilenet 第一层是input_1,所以我得到一个不匹配的原因是有道理的。

那么我怎样才能让模型正确保存正确的输入呢?

这是完整的代码:

管道.py

实用程序文件:

0 投票
0 回答
31 浏览

tensorflow - tensorflow-model-analysis:使用 EvalConfig protobuf 而不导入 tensorflow

我正在编写一个 API,它配置一个 tfma EvalConfig protobuf 对象并将其发送到下游以在 TFX 管道中使用。目前此 API 运行

它初始化了整个 tensorflow 框架。它使我非常小的 API 依赖于整个(巨大的)Tensorflow 框架,并且也不必要地使其依赖于在 tensorflow 实际启动的架构上运行。由于这些原因,我希望能够只导入/加载 protobuf 类。

我已经知道我可以通过在我的项目中硬拷贝整个 .proto 来实现这一点,但我发现这既肮脏又令人反感,如果/当 TFMA 项目决定更改 proto 文件时,它肯定会增加开销。

有没有一种干净的方法可以只从 TFMA 导入 proto 文件?或者来自 tensorflow 的其他 proto 文件?