bert4keras icon indicating copy to clipboard operation
bert4keras copied to clipboard

转onnx格式出现错误

Open 34127chi opened this issue 4 years ago • 8 comments

提问时请尽可能提供如下信息:

基本信息

  • 你使用的操作系统: Ubuntu 16.04.6
  • 你使用的Python版本: 3.6
  • 你使用的Tensorflow版本: 1.12.0
  • 你使用的Keras版本: 2.2.4
  • 你使用的bert4keras版本: 0.7.0
  • 你使用纯keras还是tf.keras: keras
  • 你加载的预训练模型:bert

核心代码

def on_epoch_end(self, epoch, logs=None):                                                                                                         
    val_acc = evaluate(valid_generator)                                                                                                           
    if val_acc > self.best_val_acc:                                                                                                               
        self.best_val_acc = val_acc                                                                                                               
        import keras2onnx                                                                                                                         
        onnx_model = keras2onnx.convert_keras(model, model.name)                                                                                  
        keras2onnx.save_model(onnx_model, 'bert.onnx')                                                                                            
        model.save_weights('best_model.weights')   

输出信息

AssertionError: Tensor Transformer-11-MultiHeadSelfAttention-Add/All:0 already processed```


34127chi avatar Aug 20 '20 08:08 34127chi

这个我也不懂,只能等其他了解的朋友看到的话帮忙解答一下了

bojone avatar Aug 22 '20 02:08 bojone

有进展吗?最近也遇到了这个问题

Chandler-Bing avatar Nov 09 '20 06:11 Chandler-Bing

same here

iamfaith avatar Nov 17 '20 09:11 iamfaith

遇到相同的问题,我的环境

python3.6

tensorflow==1.15

onnx==1.6.0

keras2onnx==1.7.0

onnxconverter-common==1.7.0

RoacherM avatar Nov 18 '20 10:11 RoacherM

有人解决这个问题吗

ggwdwsbs avatar Apr 22 '21 07:04 ggwdwsbs

请问现在有解决这个问题吗?

yuanXuX avatar Jul 20 '21 06:07 yuanXuX

我也遇到这个问题,不过用另一种方式解决了。 https://blog.csdn.net/hailongzhang26/article/details/118937909

471417367 avatar Jul 20 '21 08:07 471417367

我也遇到这个问题,不过用另一种方式解决了。 https://blog.csdn.net/hailongzhang26/article/details/118937909

您好,按照您的方法已经成功跑通,实现cpu下使用onnx推理。但是发现速度变得特别慢,比直接使用keras调用predict方法慢了很多。您有遇到这类问题吗?

我的任务是匹配任务

class TheseusONNX:
    def __init__(self, weights):
        self.sess = onnxruntime.InferenceSession(weights)
        self.max_seg_len = maxlen
        self.tokenizer = tokenizer

    def rank_batch(self, query, answer_list, batch_size=128):
        '''
        预测批量句子的类别与置信度
        '''
        results = []
        # label赋值为1,也可以赋值其他的值
        texts = [(1, query, answer) for answer in answer_list]
        texts_generator = data_generator(texts, batch_size)
        for index, (x_true, y_true) in enumerate(texts_generator):
            input_dict = {'Successor-Input-Segment': x_true[1].tolist(), "Successor-Input-Token": x_true[0].tolist()}
            time_start = time.time()
            scores_pred = self.sess.run(None, input_dict)[0]
            time_end = time.time()
            print("one query cost {} s".format(time_end-time_start))
            # 获取预测为1的概率
            for score in scores_pred:
                results.append(score[1])

        return results

SuMeng123 avatar Sep 06 '21 13:09 SuMeng123