我在尝试将tensorflow训练好的模型转换成onnx文件格式时,尝试了多种方式但是总是提醒这样的错误,怎么解决呢dtype = TF_TO_ONNX_DTYPE[dtype]
KeyError: tf.float32_ref,保存模型的方式试了多种包括.pb格式,.meta格式,基本都时模型的权重是float_ref导致的问题
例如输入python -m tf2onnx.convert --checkpoint model.ckpt-100.meta --output tfmodel.onnx --inputs Placeholder:0 --outputs Reshape:0
提示的错误包括dtype = TF_TO_ONNX_DTYPE[dtype],KeyError: tf.float32_ref。
还有Input 0 of node RDB/conv1_scale1/bn1_VI_batch_norm/AssignMovingAvg was passed float from RDB/conv1_scale1/bn1_VI_batch_norm/moving_mean:0 incompatible with expected float_ref.
用tensorflow训练好的模型转onnx格式
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
24条回答 默认 最新
- Kwan的解忧杂货铺@新空间代码工作室 2024-04-02 15:22关注
下午好🌅🌅🌅
本答案参考ChatGPT-3.5根据你提供的错误信息,问题出现在转换过程中的数据类型不匹配。在TensorFlow中,
tf.float32_ref
表示一个变量的引用,而不是实际的数据。而ONNX格式中没有类似的数据类型,因此会出现错误。为了解决这个问题,你可以尝试以下解决方案:
- 尝试将模型的权重保存为实际的浮点数数据类型:在使用
tf.train.Saver
保存模型时,尝试使用export_meta_graph
参数设置为True
,可以保存模型的图结构和权重值。这样在转换为ONNX格式时,权重将被保存为实际的浮点数值。 - 使用TensorFlow的图编辑工具修改模型:你可以尝试使用TensorFlow的图编辑工具修改模型,将
tf.float32_ref
类型的张量转换为普通的浮点数类型。你可以使用tf.get_default_graph
获取默认的图,并使用tf.graph_util.convert_variables_to_constants
将模型中的变量转换为常量。然后再尝试将转换后的模型保存为ONNX格式。 - 尝试使用其他框架(如TensorRT)进行模型转换:如果经过尝试仍然无法解决该问题,你可以尝试使用其他框架进行模型转换。比如TensorRT可以直接加载TensorFlow模型,并将其转换为ONNX格式。
实际操作中,你可以尝试将以上解决方案逐一尝试,根据自己的情况选择最适合的方法。
如果你有具体的代码片段,我可以帮你进行修改和优化。
解决 无用评论 打赏 举报 编辑记录 - 尝试将模型的权重保存为实际的浮点数数据类型:在使用
悬赏问题
- ¥15 Altair EDEM中生成一个颗粒,并且各个方向没有初始速度
- ¥15 系统2008r2 装机配置推荐一下
- ¥500 服务器搭建cisco AnyConnect vpn
- ¥15 用大厂网站防红自己网站
- ¥15 悬赏Python-playwright部署在centos7上
- ¥15 psoc creator软件有没有人能远程安装啊
- ¥15 快速扫描算法求解Eikonal方程咨询
- ¥20 我的是道格手机,重置后屏幕右上角出现红色字的未写入tee key 和未写入google key请问怎么去掉啊
- ¥15 校内二手商品转让网站
- ¥20 高德地图聚合图层MarkerCluster聚合多个点,但是ClusterData只有其中部分数据,原因应该是有经纬度重合的地方点,现在我想让ClusterData显示所有点的信息,如何实现?