问题标签 [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.
python - 未知层:DenseVariational。请确保将此对象传递给“custom_objects”参数
任何人都可以在此错误消息中帮助我:ValueError:未知层:DenseVariational。请确保将此对象传递给custom_objects
参数。
当我尝试使用 tf.keras 加载经过训练的贝叶斯神经网络模型时,就会发生这种情况。它不断返回未知层:DenseVariational。但是训练代码运行良好。有谁知道如何解决这个问题?
我们尝试修改 Densevariational_v2 模块中的 get_config 函数,但它不起作用。谢谢并感激!!
加载模型的代码:
训练和保存模型的代码:
训练代码工作正常,我没有在这里复制整个内容,但它可以将模型保存到 .h5 文件中。只是加载部分,它无法完成。提前致谢!
python - Tensorflow Keras 模型结果不可重现
这就是我的训练脚本的样子,只有重要的部分。
这是推理脚本,在不同的 python 会话中。
最后一个预测循环是必要的,因为该model.predict
方法似乎直到五次尝试才在测试集上给出正确的结果(即在训练期间观察到的结果)。模型本身加载的权重与训练期间观察到的相同,但预测方法的输出似乎有一些周期性变化,所以每次我使用它时,我必须调用它五次以确保一致性。我不知道为什么会这样。我应该采取什么纠正措施?特别是,5 在这里看起来完全是一个神奇的数字。
如果它很重要,请在 python 3.8、Ubuntu 20.04 上运行它(并打算使用相同的 docker 映像在生产中部署),并使用以下库版本。
编辑:经过更多的实验,我意识到周期不是 5,但实际上没有这样的周期。它在加载和预测时不断给出随机结果,有时它确实给出了正确的结果。
tensorflow - 传递到 TensorFlow 模型分析之前的后处理模型预测
是否可以在将模型预测传递给tfma.run_model_analysis之前对其进行后处理?据我在教程中看到的,没有办法做到这一点,因为它只接受经过训练的模型、tfrecords 格式的数据以及要计算的指标列表。
谢谢!
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
实用程序文件:
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 文件?