自然语言处理是人工智能技术中的另一个分支,主要应用于机器与人之间的语言交互。在工业领域,自然语言处理可以用于实现自然语言的输入、理解和生成。例如,在工业设备维护领域,可以使用自然语言处理技术来实现设备的语音控制和故障诊断。
计算机视觉是人工智能技术中的一种,主要应用于图像和视频的处理和分析。在工业领域,计算机视觉可以用于工业品质检测、自动化生产、机器人视觉等领域。例如,在智能制造中,计算机视觉技术可以实现对生产线上产品的检测和分类,提高生产效率和质量。
documentation
torch.onnx.export在torch.onnx.__init__.py文件中的定义如下:
def export(model,args,f,export_params=True,verbose=False,training=TrainingMode.EVAL,
input_names=None,output_names=None,aten=False,export_raw_ir=False,
operator_export_type=None,opset_version=None,_retain_param_name=True,
do_constant_folding=True,example_outputs=None,strip_doc_string=True,
dynamic_axes=None,keep_initializers_as_inputs=None,custom_opsets=None,
enable_onnx_checker=True,use_external_data_format=False):
export_params
模型中是否存储模型权重。一般中间表示包含两大类信息:模型结构和模型权重,这两类信息可以在同一个文件里存储,也可以分文件存储。ONNX是用同一个文件表示记录模型的结构和权重的。
我们部署时一般都默认这个参数为True。如果onnx文件是用来在不同框架间传递模型(比如PyTorch到Tensorflow)而不是用于部署,则可以令这个参数为False。
input_names,output_names
设置输入和输出张量的名称。如果不设置的话,会自动分配一些简单的名字(如数字)。
ONNX模型的每个输入和输出张量都有一个名字。很多推理引擎在运行ONNX文件时,都需要以“名称-张量值”的数据对来输入数据,并根据输出张量的名称来获取输出数据。在进行跟张量有关的设置(比如添加动态维度)时,也需要知道张量的名字。
在实际的部署流水线中,我们都需要设置输入和输出张量的名称,并保证ONNX和推理引擎中使用同一套名称。
opset_version
转换时参考哪个ONNX算子集版本,默认为9。后文会详细介绍PyTorch与ONNX的算子对应关系。
dynamic_axes
指定输入输出张量的哪些维度是动态的。
为了追求效率,ONNX默认所有参与运算的张量都是静态的(张量的形状不发生改变)。但在实际应用中,我们又希望模型的输入张量是动态的,尤其是本来就没有形状限制的全卷积模型。因此,我们需要显式地指明输入输出张量的哪几个维度的大小是可变的。