请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
器件型号:TDA4VM 工具/软件:
您好:
我有以下 Pytorch 网络,我转换为 onnx 和它在 CPU 上工作正常:
导入火炬
类 NeckTorch (torch.nn.Module):
def __init__(self):
超级(NeckTorch、self)。__init__()
self.x0 = torch.rand (1、80、8、40).long ()
self.y0 = torch.rand (1、80、8、40).long ()
DEF Forward (自我、x): #输入形状1128、32、64
x = x[:、:、self.y0、self.x0]
X = torch.rehenge (x、(1128、80、8、 40))
x = x.permute (0、1、3、2、4)。re整 形(1、 1024、80、40)
返回 x
但是、使用 TIDLCompilationProvider 时、我只得到此误差和单个标量值作为输出:
[W:onnxruntime:、execution_frame.cc:835 VerifyOutputSizes]来自{11024、80、40}模型的预期形状与输出的实际形状{}不匹配
compile_options ={
'tidl_tools_path':os.environ['TIDL_TOOLS_PATH']、
'artifactes_folder': output_dir,
Tensor_bits:16,
'accurity_level': 0,
'advanced_options: calibration_frames': 1,
'advanced_options: calibration_iterations': 1,# used if accurity_level = 1.
'advanced_options: add_data_convert_ops': 1,
'debug_level': 1,
}
'tidl_tools_path':os.environ['TIDL_TOOLS_PATH']、
'artifactes_folder': output_dir,
Tensor_bits:16,
'accurity_level': 0,
'advanced_options: calibration_frames': 1,
'advanced_options: calibration_iterations': 1,# used if accurity_level = 1.
'advanced_options: add_data_convert_ops': 1,
'debug_level': 1,
}
我按如下方式运行编译:
SO = RT.SessionOptions()
ep_list =['TIDLCompilationProvider'、'CPUExecutionProvider']
SESS = RT.ConferenceSession (onnx_model_path、provider=ep_list、provider_options=[compile_options、{}]、sess_options_so)
input_details = sess.get_inputs()
output = list (sess.run(None、{input_details[0].name:np.random.rand(1128、32、64).astype (Np.float32)})))[0]
ep_list =['TIDLCompilationProvider'、'CPUExecutionProvider']
SESS = RT.ConferenceSession (onnx_model_path、provider=ep_list、provider_options=[compile_options、{}]、sess_options_so)
input_details = sess.get_inputs()
output = list (sess.run(None、{input_details[0].name:np.random.rand(1128、32、64).astype (Np.float32)})))[0]
您是否知道如何正确编译这些操作?