首页 > 其他分享 >将onnx模型转静态量化,量化过程中的数据处理

将onnx模型转静态量化,量化过程中的数据处理

时间:2023-09-11 12:31:42浏览次数:42  
标签:onnx batch ids input 数据处理 量化 data datas size

将onnx模型转静态量化,量化过程中的数据处理_数据读取

from onnxruntime.quantization import QuantType,quantize_dynamic,quantize_static,CalibrationDataReader

import onnx

txt_test_list = read_file(os.path.join(ModelConfig().data_dir_pp,"test_test.txt"))

path = "E:\py_workspace\TinyBERT-PP-New\quantized"

tokenizer = BertTokenizer.from_pretrained(path, do_lower_case=True)

datas = []

for txt in txt_test_list:

    tokens = ['[CLS]'] + tokenizer.tokenize(txt)

    token_ids = tokenizer.convert_tokens_to_ids(tokens)

    token_ids = np.asarray([token_ids], dtype=np.int64)

    datas.append(token_ids)


# 数据批次读取器

def batch_reader(datas, batch_size):

    _datas = []

    length = len(datas)

    for i, data in enumerate(datas):

        if batch_size==1:

            yield {'input_ids': data}

        elif (i+1) % batch_size==0:

            _datas.append(data)

            yield {'input_ids': np.concatenate(_datas, 0)}

            _datas = []

        elif i<length-1:

            _datas.append(data)

        else:

            _datas.append(data)

            yield {'input_ids': np.concatenate(_datas, 0)}


# 构建校准数据读取器

'''

    实质是一个迭代器

    get_next 方法返回一个如下样式的字典

    {

        输入 1: 数据 1,

        ...

        输入 n: 数据 n

    }

    记录了模型的各个输入和其对应的经过预处理后的数据

'''

class DataReader(CalibrationDataReader):

    def __init__(self, datas, batch_size):

        self.datas = batch_reader(datas, batch_size)


    def get_next(self):

        return next(self.datas, None)

静态量化需要传入数据,获取对应的值,传入的数据无需标签值,但是返回值yield {'input_ids': data}需与模型的输入名一致

标签:onnx,batch,ids,input,数据处理,量化,data,datas,size
From: https://blog.51cto.com/u_12727662/7434934

相关文章

  • 三维模型3DTILE格式轻量化压缩主要技术方法浅析
    三维模型3DTILE格式轻量化压缩主要技术方法浅析 三维模型3DTILE格式轻量化压缩主要技术方法浅析随着三维地理空间数据的应用日益广泛,为了更快速地传输和存储这些大规模数据,3DTile格式的轻量化压缩显得尤为重要。本文将浅析关于三维模型3DTile格式轻量化压缩的主要技术方法。......
  • 三维模型3DTile格式轻量化压缩处理工具常用几款软件介绍
    三维模型3DTile格式轻量化压缩处理工具常用几款软件介绍   三维模型3DTile格式的轻量化处理旨在减少模型的存储空间和提高渲染性能。以下是一些推荐的工具软件,可以用于实现这个目的:MeshLab:MeshLab是一个开源的三维模型处理软件,它支持多种格式的导入和导出,包括3DTiles。通......
  • 模型量化中的均匀量化举例——量化和反量化
    模型量化是深度学习中的一种技术,用于降低模型的存储和计算要求,同时仍然保持近似的性能。均匀量化是其中的一种方法。下面我将提供一个简化的均匀量化示例: ......
  • 升讯威在线客服系统的并发高性能数据处理技术:高性能TCP服务器技术
    我在业余时间开发维护了一款免费开源的升讯威在线客服系统,也收获了许多用户。对我来说,只要能获得用户的认可,就是我最大的动力。最近客服系统成功经受住了客户现场组织的压力测试,获得了客户的认可。客户组织多名客服上线后,所有员工同一时间打开访客页面疯狂不停的给在线客服发消......
  • 三维模型OBJ格式轻量化的跨平台兼容性问题分析
    三维模型OBJ格式轻量化的跨平台兼容性问题分析 三维模型的OBJ格式轻量化在跨平台兼容性方面具有重要意义,可以确保模型在不同平台和设备上的正确加载和渲染。本文将分析OBJ格式轻量化的跨平台兼容性技术,并探讨其在保证数据一致性、支持多种平台和工具以及提供灵活性方面的作用......
  • 三维模型OBJ格式轻量化压缩在大规模场景的加载和渲染的作用分析
    三维模型OBJ格式轻量化压缩在大规模场景的加载和渲染的作用分析 OBJ格式是一种常用的三维模型文件格式,它存储了三维模型的几何信息和纹理坐标等相关属性。在大规模场景中加载和渲染三维模型时,OBJ格式的轻量化压缩对于提高性能和效率起到了重要的作用。首先,使用OBJ格式的轻量......
  • 三维模型OBJ格式轻量化的数据压缩与性能平衡分析
    三维模型OBJ格式轻量化的数据压缩与性能平衡分析 三维模型的OBJ格式轻量化数据压缩在保持性能的同时,可以减小文件大小、提高加载速度和节省存储空间。然而,在进行数据压缩时,需要权衡压缩比率和模型质量之间的关系,并考虑不同应用场景下的需求。首先,数据压缩对于大规模场景中的......
  • 【开源】java版本BertTokenizer以及使用onnxruntime推理
    python训练的模型,转换为onnx模型后,用python代码可以方便进行推理,但是java代码如何实现呢?首先ONNX推理,可以使用onnxruntime<dependency><groupId>com.microsoft.onnxruntime</groupId><artifactId>onnxruntime</artifactId><version>1.15.1</version>......
  • 通过商品数据API接口获取数据后的数据处理与利用
    在电子商务时代,商品数据API接口为开发者提供了方便快捷的商品数据获取途径。本文将介绍如何利用商品数据API接口获取数据,并对获取的数据进行清洗、整理和利用,以便为电商企业或开发者提供有价值的信息和洞察。一、获取商品数据API接口首先,我们需要找到一个可靠的商品数据API接口。一......
  • 通过商品数据API接口获取数据后的数据处理与利用
    ​ 在电子商务时代,商品数据API接口为开发者提供了方便快捷的商品数据获取途径。本文将介绍如何利用商品数据API接口获取数据,并对获取的数据进行清洗、整理和利用,以便为电商企业或开发者提供有价值的信息和洞察。一、获取商品数据API接口首先,我们需要找到一个可靠的商品数据API......