mirror of
https://github.com/saymrwulf/onnxruntime.git
synced 2026-07-11 17:48:34 +00:00
Fix issue that failed to load Conv node with external initializer (#20042)
### Description Fix issue that failed to load Conv node with external initializer. Root cause the model path is not provided while loading the weight and bias tensor for Conv.
This commit is contained in:
parent
5b64d7c32b
commit
f977be0663
4 changed files with 23 additions and 1 deletions
|
|
@ -244,7 +244,9 @@ Status BaseOpBuilder::TransposeInitializer(const QnnModelWrapper& qnn_model_wrap
|
|||
|
||||
TensorShape new_tensor_shape(new_tensor_shape_dims);
|
||||
Tensor out_tensor = Tensor(tensor_dtype, new_tensor_shape, cpu_allocator);
|
||||
ORT_RETURN_IF_ERROR(onnxruntime::utils::TensorProtoToTensor(Env::Default(), nullptr, initializer, in_tensor));
|
||||
onnxruntime::PathString model_path = qnn_model_wrapper.GetGraphViewer().ModelPath().ToPathString();
|
||||
const ORTCHAR_T* model_path_str = model_path.empty() ? nullptr : model_path.c_str();
|
||||
ORT_RETURN_IF_ERROR(onnxruntime::utils::TensorProtoToTensor(Env::Default(), model_path_str, initializer, in_tensor));
|
||||
ORT_RETURN_IF_ERROR(Transpose::DoTranspose(permutations, in_tensor, out_tensor));
|
||||
onnx::TensorProto new_tensor_proto = onnxruntime::utils::TensorToTensorProto(out_tensor, "test");
|
||||
ORT_RETURN_IF_ERROR(qnn_model_wrapper.UnpackInitializerData(new_tensor_proto, transposed_data));
|
||||
|
|
|
|||
|
|
@ -168,6 +168,26 @@ TEST(QnnEP, TestDisableCPUFallback_ConflictingConfig) {
|
|||
}
|
||||
}
|
||||
|
||||
// Conv node `Conv` is not supported: GetFileLength for conv_qdq_external_ini.bin failed:open file conv_qdq_external_ini.bin fail,
|
||||
// errcode = 2 - The system cannot find the file specified.
|
||||
TEST_F(QnnHTPBackendTests, TestConvWithExternalData) {
|
||||
Ort::SessionOptions so;
|
||||
onnxruntime::ProviderOptions options;
|
||||
#if defined(_WIN32)
|
||||
options["backend_path"] = "QnnHtp.dll";
|
||||
#else
|
||||
options["backend_path"] = "libQnnHtp.so";
|
||||
#endif
|
||||
|
||||
so.AppendExecutionProvider("QNN", options);
|
||||
|
||||
Ort::Status status(OrtSessionOptionsAppendExecutionProvider_CPU(so, 1));
|
||||
|
||||
const ORTCHAR_T* ort_model_path = ORT_MODEL_FOLDER "conv_qdq_external_ini.onnx";
|
||||
|
||||
Ort::Session session(*ort_env, ort_model_path, so);
|
||||
}
|
||||
|
||||
// Helper function that runs an ONNX model with a NHWC Resize operator to test that
|
||||
// type/shape inference succeeds during layout transformation.
|
||||
// Refer to onnxruntime/core/graph/contrib_ops/nhwc_inference_context.h.
|
||||
|
|
|
|||
BIN
onnxruntime/test/testdata/conv_qdq_external_ini.bin
vendored
Normal file
BIN
onnxruntime/test/testdata/conv_qdq_external_ini.bin
vendored
Normal file
Binary file not shown.
BIN
onnxruntime/test/testdata/conv_qdq_external_ini.onnx
vendored
Normal file
BIN
onnxruntime/test/testdata/conv_qdq_external_ini.onnx
vendored
Normal file
Binary file not shown.
Loading…
Reference in a new issue