X2Paddle icon indicating copy to clipboard operation
X2Paddle copied to clipboard

tensorflow转paddle错误,缺少算子

Open xdg2016 opened this issue 2 years ago • 2 comments

问题描述

image tensorflow的pb格式模型转paddle时,出现这个错误,缺少一个算子的支持。

  • 转换模型后用处
    • [ ] 使用 Paddlenlp框架/ PaddleInference 推理预测
  • 模型来源 https://github.com/ZhuiyiTechnology/pretrained-models 从这个repo下载的权重,保存成了pb格式文件。 转换代码:
from tensorflow.python.framework.graph_util import convert_variables_to_constants
    from tensorflow.python.framework import graph_io

    def freeze_session(session, keep_var_names=None, output_names=None, clear_devices=True):
        graph = session.graph
        with graph.as_default():
            freeze_var_names = list(set(v.op.name for v in tf.global_variables()).difference(keep_var_names or []))
            output_names = output_names or []
            output_names += [v.op.name for v in tf.global_variables()]
            input_graph_def = graph.as_graph_def()
            if clear_devices:
                for node in input_graph_def.node:
                    node.device = ""
            frozen_graph = convert_variables_to_constants(session, input_graph_def,
                                                        output_names, freeze_var_names)
            return frozen_graph

    frozen_out_path = frozen_out_path+"_tf1"
    #加载keras模型
    K.set_learning_phase(0)
    for input in network.input:
        print('input is :', input.name)
    print ('output is:', network.output.name)

    #冻结并保存为Tensorflow模型
    sess = K.get_session()
    frozen_graph = freeze_session(K.get_session(), output_names=[network.output.op.name])
    graph_io.write_graph(frozen_graph, frozen_out_path, frozen_graph_filename, as_text=False)
  • 应用场景 用于nlp文本匹配场景
  • 版本信息 PaddlePaddle => 2.2.2(gpu版) X2Paddle => 1.3.9 tensorflow= 1.14.0 onnx=1.7.0 keras=2.3.1 bert4keras=0.7.7

来源框架版本(Tensorflow) => 1.14.0

xdg2016 avatar Dec 19 '22 07:12 xdg2016

@xdg2016 这是什么模型?

建议转成ONNX,再ONNX2Paddle

wjj19950828 avatar Dec 27 '22 06:12 wjj19950828

这个是simbert的官方模型(https://github.com/ZhuiyiTechnology/simbert) 尝试了很多次无法转成paddle,就是用onnx再转paddle也是不行,模型可以转出来,无法正确运行,这个模型的输入是 input_ids:[None,None], token_type_ids:[None,None] 都是动态输入的,在转的时候不支持动态输入。

xdg2016 avatar Dec 27 '22 06:12 xdg2016