如何找到张量流模型(.pb 格式的冻结图)、onnx 模型(.onnx 格式)的浮点精度,比如它是 FP32 还是 FP16?

Posted

技术标签:

【中文标题】如何找到张量流模型(.pb 格式的冻结图)、onnx 模型(.onnx 格式)的浮点精度,比如它是 FP32 还是 FP16?【英文标题】:How to find the floating point precision of a tensorflow model (frozen graph in .pb format),onnx model(.onnx format) like whether it is FP32 or FP16? 【发布时间】:2021-09-07 04:56:14 【问题描述】:

我正在尝试将 resnet-50 模型的冻结图转换为 onnx 模型,然后再转换为 tensorRT。我想确保每次转换的浮点精度。

【问题讨论】:

请编辑问题以将其限制为具有足够详细信息的特定问题,以确定适当的答案。 【参考方案1】:

假设您将图像 x 传递给 model(x) 或 model.forward(x) 等模型,那么您可以检查 x 的数据类型。 您可以使用 dtype 属性来获取 tensorflow 变量的类型。

> x = tf.Variable(tf.random_normal([256, 100]))
> x.dtype

<dtype: 'float32_ref'>

您可以使用 dtype 的 as_numpy_dtype 属性将 tf.dtype 转换为 numpy dtype。

> x = tf.Variable(tf.random_normal([256, 100]))
> x.dtype.as_numpy_dtype
<class 'numpy.float32'>

对于 Onnx,您可以导入 onnx/graphsurgeon 库来执行各种操作。但最简单的方法是使用netron。

    pip install netron 打开 https://localhost:8080 点击输入节点 右侧的信息面板会提供很多信息,包括数据类型。

【讨论】:

以上是关于如何找到张量流模型(.pb 格式的冻结图)、onnx 模型(.onnx 格式)的浮点精度,比如它是 FP32 还是 FP16?的主要内容,如果未能解决你的问题,请参考以下文章

在张量流中将 SSD 转换为冻结图。必须使用哪些输出节点名称?

在 Android 上使用来自冻结的张量流图的变量

将冻结图转换为 tensorflow-js 格式

从 Keras 构建 TensoRRT 引擎时出错

如何在张量流中创建集成?

TensorFlow:有没有办法将冻结图转换为检查点模型?