Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

onnx和mnn推理结果不一致,使用onnxruntime推理onnx结果是正常的,但使用mnn就不正常了 #2825

Open
lewis-v opened this issue Apr 13, 2024 · 13 comments
Labels
question Further information is requested

Comments

@lewis-v
Copy link

lewis-v commented Apr 13, 2024

平台(如果交叉编译请再附上交叉编译目标平台):

mac

Github版本:

Github Version:

mnn_2.8.1_macos_x64_arm82_cpu_opencl_metal.zip

问题

onnx和mnn推理结果不一致,直接使用onnxruntime推理onnx是可以输出正常pcm,但是mnn输出就不正常

模型

https://newcoreresource.oss-cn-shenzhen.aliyuncs.com/model/TEST/mnn_model.zip

推理大致代码

const std::string model_file = "t2s_all.mnn";
const std::vector<std::string> input_names{"x", "t", "language", "bert_0", "bert_1", "bert_2", "sid"};
const std::vector<std::string> output_names{"o"};
MNN::Express::Module::Config mdconfig;
_all_models.reset(MNN::Express::Module::load(input_names, output_names, model_file.c_str(), &mdconfig));

// hello world
std::vector<int> phone = {0, 38, 0, 12, 0, 59, 0, 69, 0, 97, 0, 32, 0, 59, 0, 23, 0};
std::vector<int> tone = {0, 8, 0, 9, 0, 8, 0, 10, 0, 8, 0, 10, 0, 8, 0, 8, 0};
std::vector<int> language_ids = {0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0};

std::vector<MNN::Express::VARP> inputs(7);
inputs[0] = MNN::Express::_Input({1, static_cast<int>(phone.size())}, MNN::Express::NCHW,
                                 halide_type_of<int>());
inputs[1] = MNN::Express::_Input({1, static_cast<int>(tone.size())}, MNN::Express::NCHW,
                                 halide_type_of<int>());
inputs[2] = MNN::Express::_Input({1, static_cast<int>(language_ids.size())}, MNN::Express::NCHW,
                                 halide_type_of<int>());
inputs[3] = MNN::Express::_Input({static_cast<int>(phone.size()), 1024}, MNN::Express::NCHW,
                                 halide_type_of<float>());
inputs[4] = MNN::Express::_Input({static_cast<int>(phone.size()), 1024}, MNN::Express::NCHW,
                                 halide_type_of<float>());
inputs[5] = MNN::Express::_Input({static_cast<int>(phone.size()), 1024}, MNN::Express::NCHW,
                                 halide_type_of<float>());
inputs[6] = MNN::Express::_Input({1}, MNN::Express::NCHW,
                                 halide_type_of<int>());
//        "x", "t", "language", "bert_0", "bert_1", "bert_2", "sid"

memcpy(inputs[0]->writeMap<int>(), phone.data(), phone.size() * sizeof(int));
memcpy(inputs[1]->writeMap<int>(), tone.data(), tone.size() * sizeof(int));
memcpy(inputs[2]->writeMap<int>(), language_ids.data(), language_ids.size() * sizeof(int));
std::vector<int> sid = {0};
memcpy(inputs[6]->writeMap<int>(), sid.data(), sid.size() * sizeof(int));
std::vector<float> bert_0(phone.size() * 1024, 0.0f);
std::vector<float> bert_1(phone.size() * 1024, 0.0f);
std::vector<float> bert_2(phone.size() * 1024, 0.0f);
memcpy(inputs[3]->writeMap<float>(), bert_0.data(), bert_0.size() * sizeof(float));
memcpy(inputs[4]->writeMap<float>(), bert_1.data(), bert_1.size() * sizeof(float));
memcpy(inputs[5]->writeMap<float>(), bert_2.data(), bert_2.size() * sizeof(float));

std::vector<MNN::Express::VARP> outputs = _all_models->onForward(inputs);
auto audio_ptr = outputs[0]->readMap<float>();
auto audio_shape = outputs[0]->getInfo()->dim;
int elementCount = 1;
for (auto dim: audio_shape) {
    elementCount *= dim;
}
std::vector<float> output_data(audio_ptr, audio_ptr + elementCount);

// 44100的pcm
auto save_result = save_audio_pcm(output_data,
                                          "test_out14.pcm"
                                           );
@lewis-v
Copy link
Author

lewis-v commented Apr 13, 2024

testMNNFromOnnx.py的结果

Dir exist
onnx/test.onnx
inputVar.name:t shapes:[1, 17]
tensor(int64)
inputVar.name:language shapes:[1, 17]
tensor(int64)
inputVar.name:x shapes:[1, 17]
tensor(int64)
inputVar.name:sid shapes:[1]
tensor(int64)
inputVar.name:bert_0 shapes:[17, 1024]
tensor(float)
inputVar.name:bert_1 shapes:[17, 1024]
tensor(float)
inputVar.name:bert_2 shapes:[17, 1024]
tensor(float)
['o']
inputs:
x
onnx/
t
onnx/
language
onnx/
sid
onnx/
bert_0
onnx/
bert_1
onnx/
bert_2
onnx/
outputs:
onnx/o.txt (1, 1, 29696)
onnx/
hw.cpufamily: 1598941843 , size = 4
The device support i8sdot:0, support fp16:0, support i8mm: 0
Start to Convert Other Model Format To MNN Model..., target version: 2.8
[12:26:43] /Users/lewisywliu/Desktop/code/MNN/tools/converter/source/onnx/onnxConverter.cpp:46: ONNX Model ir version: 8
[12:26:43] /Users/lewisywliu/Desktop/code/MNN/tools/converter/source/onnx/onnxConverter.cpp:47: ONNX Model opset version: 16
[12:26:43] /Users/lewisywliu/Desktop/code/MNN/tools/converter/source/onnx/onnxConverter.cpp:142: Check it out ==> /enc_p/encoder/attn_layers.0/Pad_output_0 has empty input, the index is 2
[12:26:43] /Users/lewisywliu/Desktop/code/MNN/tools/converter/source/onnx/onnxConverter.cpp:142: Check it out ==> /enc_p/encoder/attn_layers.0/Pad_5_output_0 has empty input, the index is 2
[12:26:43] /Users/lewisywliu/Desktop/code/MNN/tools/converter/source/onnx/onnxConverter.cpp:142: Check it out ==> /enc_p/encoder/attn_layers.0/Pad_1_output_0 has empty input, the index is 2
[12:26:43] /Users/lewisywliu/Desktop/code/MNN/tools/converter/source/onnx/onnxConverter.cpp:142: Check it out ==> /enc_p/encoder/attn_layers.0/Pad_2_output_0 has empty input, the index is 2
[12:26:43] /Users/lewisywliu/Desktop/code/MNN/tools/converter/source/onnx/onnxConverter.cpp:142: Check it out ==> /enc_p/encoder/attn_layers.0/Pad_3_output_0 has empty input, the index is 2
[12:26:43] /Users/lewisywliu/Desktop/code/MNN/tools/converter/source/onnx/onnxConverter.cpp:142: Check it out ==> /enc_p/encoder/attn_layers.0/Pad_4_output_0 has empty input, the index is 2
[12:26:43] /Users/lewisywliu/Desktop/code/MNN/tools/converter/source/onnx/onnxConverter.cpp:142: Check it out ==> /enc_p/encoder/ffn_layers.0/Pad_output_0 has empty input, the index is 2
[12:26:43] /Users/lewisywliu/Desktop/code/MNN/tools/converter/source/onnx/onnxConverter.cpp:142: Check it out ==> /enc_p/encoder/ffn_layers.0/Pad_1_output_0 has empty input, the index is 2
[12:26:43] /Users/lewisywliu/Desktop/code/MNN/tools/converter/source/onnx/onnxConverter.cpp:142: Check it out ==> /enc_p/encoder/attn_layers.1/Pad_output_0 has empty input, the index is 2
[12:26:43] /Users/lewisywliu/Desktop/code/MNN/tools/converter/source/onnx/onnxConverter.cpp:142: Check it out ==> /enc_p/encoder/attn_layers.1/Pad_5_output_0 has empty input, the index is 2
[12:26:43] /Users/lewisywliu/Desktop/code/MNN/tools/converter/source/onnx/onnxConverter.cpp:142: Check it out ==> /enc_p/encoder/attn_layers.1/Pad_1_output_0 has empty input, the index is 2
[12:26:43] /Users/lewisywliu/Desktop/code/MNN/tools/converter/source/onnx/onnxConverter.cpp:142: Check it out ==> /enc_p/encoder/attn_layers.1/Pad_2_output_0 has empty input, the index is 2
[12:26:43] /Users/lewisywliu/Desktop/code/MNN/tools/converter/source/onnx/onnxConverter.cpp:142: Check it out ==> /enc_p/encoder/attn_layers.1/Pad_3_output_0 has empty input, the index is 2
[12:26:43] /Users/lewisywliu/Desktop/code/MNN/tools/converter/source/onnx/onnxConverter.cpp:142: Check it out ==> /enc_p/encoder/attn_layers.1/Pad_4_output_0 has empty input, the index is 2
[12:26:43] /Users/lewisywliu/Desktop/code/MNN/tools/converter/source/onnx/onnxConverter.cpp:142: Check it out ==> /enc_p/encoder/ffn_layers.1/Pad_output_0 has empty input, the index is 2
[12:26:43] /Users/lewisywliu/Desktop/code/MNN/tools/converter/source/onnx/onnxConverter.cpp:142: Check it out ==> /enc_p/encoder/ffn_layers.1/Pad_1_output_0 has empty input, the index is 2
[12:26:43] /Users/lewisywliu/Desktop/code/MNN/tools/converter/source/onnx/onnxConverter.cpp:142: Check it out ==> /enc_p/encoder/attn_layers.2/Pad_output_0 has empty input, the index is 2
[12:26:43] /Users/lewisywliu/Desktop/code/MNN/tools/converter/source/onnx/onnxConverter.cpp:142: Check it out ==> /enc_p/encoder/attn_layers.2/Pad_5_output_0 has empty input, the index is 2
[12:26:43] /Users/lewisywliu/Desktop/code/MNN/tools/converter/source/onnx/onnxConverter.cpp:142: Check it out ==> /enc_p/encoder/attn_layers.2/Pad_1_output_0 has empty input, the index is 2
[12:26:43] /Users/lewisywliu/Desktop/code/MNN/tools/converter/source/onnx/onnxConverter.cpp:142: Check it out ==> /enc_p/encoder/attn_layers.2/Pad_2_output_0 has empty input, the index is 2
[12:26:43] /Users/lewisywliu/Desktop/code/MNN/tools/converter/source/onnx/onnxConverter.cpp:142: Check it out ==> /enc_p/encoder/attn_layers.2/Pad_3_output_0 has empty input, the index is 2
[12:26:43] /Users/lewisywliu/Desktop/code/MNN/tools/converter/source/onnx/onnxConverter.cpp:142: Check it out ==> /enc_p/encoder/attn_layers.2/Pad_4_output_0 has empty input, the index is 2
[12:26:43] /Users/lewisywliu/Desktop/code/MNN/tools/converter/source/onnx/onnxConverter.cpp:142: Check it out ==> /enc_p/encoder/ffn_layers.2/Pad_output_0 has empty input, the index is 2
[12:26:43] /Users/lewisywliu/Desktop/code/MNN/tools/converter/source/onnx/onnxConverter.cpp:142: Check it out ==> /enc_p/encoder/ffn_layers.2/Pad_1_output_0 has empty input, the index is 2
[12:26:43] /Users/lewisywliu/Desktop/code/MNN/tools/converter/source/onnx/onnxConverter.cpp:142: Check it out ==> /enc_p/encoder/attn_layers.3/Pad_output_0 has empty input, the index is 2
[12:26:43] /Users/lewisywliu/Desktop/code/MNN/tools/converter/source/onnx/onnxConverter.cpp:142: Check it out ==> /enc_p/encoder/attn_layers.3/Pad_5_output_0 has empty input, the index is 2
[12:26:43] /Users/lewisywliu/Desktop/code/MNN/tools/converter/source/onnx/onnxConverter.cpp:142: Check it out ==> /enc_p/encoder/attn_layers.3/Pad_1_output_0 has empty input, the index is 2
[12:26:43] /Users/lewisywliu/Desktop/code/MNN/tools/converter/source/onnx/onnxConverter.cpp:142: Check it out ==> /enc_p/encoder/attn_layers.3/Pad_2_output_0 has empty input, the index is 2
[12:26:43] /Users/lewisywliu/Desktop/code/MNN/tools/converter/source/onnx/onnxConverter.cpp:142: Check it out ==> /enc_p/encoder/attn_layers.3/Pad_3_output_0 has empty input, the index is 2
[12:26:43] /Users/lewisywliu/Desktop/code/MNN/tools/converter/source/onnx/onnxConverter.cpp:142: Check it out ==> /enc_p/encoder/attn_layers.3/Pad_4_output_0 has empty input, the index is 2
[12:26:43] /Users/lewisywliu/Desktop/code/MNN/tools/converter/source/onnx/onnxConverter.cpp:142: Check it out ==> /enc_p/encoder/ffn_layers.3/Pad_output_0 has empty input, the index is 2
[12:26:43] /Users/lewisywliu/Desktop/code/MNN/tools/converter/source/onnx/onnxConverter.cpp:142: Check it out ==> /enc_p/encoder/ffn_layers.3/Pad_1_output_0 has empty input, the index is 2
[12:26:43] /Users/lewisywliu/Desktop/code/MNN/tools/converter/source/onnx/onnxConverter.cpp:142: Check it out ==> /enc_p/encoder/attn_layers.4/Pad_output_0 has empty input, the index is 2
[12:26:43] /Users/lewisywliu/Desktop/code/MNN/tools/converter/source/onnx/onnxConverter.cpp:142: Check it out ==> /enc_p/encoder/attn_layers.4/Pad_5_output_0 has empty input, the index is 2
[12:26:43] /Users/lewisywliu/Desktop/code/MNN/tools/converter/source/onnx/onnxConverter.cpp:142: Check it out ==> /enc_p/encoder/attn_layers.4/Pad_1_output_0 has empty input, the index is 2
[12:26:43] /Users/lewisywliu/Desktop/code/MNN/tools/converter/source/onnx/onnxConverter.cpp:142: Check it out ==> /enc_p/encoder/attn_layers.4/Pad_2_output_0 has empty input, the index is 2
[12:26:43] /Users/lewisywliu/Desktop/code/MNN/tools/converter/source/onnx/onnxConverter.cpp:142: Check it out ==> /enc_p/encoder/attn_layers.4/Pad_3_output_0 has empty input, the index is 2
[12:26:43] /Users/lewisywliu/Desktop/code/MNN/tools/converter/source/onnx/onnxConverter.cpp:142: Check it out ==> /enc_p/encoder/attn_layers.4/Pad_4_output_0 has empty input, the index is 2
[12:26:43] /Users/lewisywliu/Desktop/code/MNN/tools/converter/source/onnx/onnxConverter.cpp:142: Check it out ==> /enc_p/encoder/ffn_layers.4/Pad_output_0 has empty input, the index is 2
[12:26:43] /Users/lewisywliu/Desktop/code/MNN/tools/converter/source/onnx/onnxConverter.cpp:142: Check it out ==> /enc_p/encoder/ffn_layers.4/Pad_1_output_0 has empty input, the index is 2
[12:26:43] /Users/lewisywliu/Desktop/code/MNN/tools/converter/source/onnx/onnxConverter.cpp:142: Check it out ==> /enc_p/encoder/attn_layers.5/Pad_output_0 has empty input, the index is 2
[12:26:43] /Users/lewisywliu/Desktop/code/MNN/tools/converter/source/onnx/onnxConverter.cpp:142: Check it out ==> /enc_p/encoder/attn_layers.5/Pad_5_output_0 has empty input, the index is 2
[12:26:43] /Users/lewisywliu/Desktop/code/MNN/tools/converter/source/onnx/onnxConverter.cpp:142: Check it out ==> /enc_p/encoder/attn_layers.5/Pad_1_output_0 has empty input, the index is 2
[12:26:43] /Users/lewisywliu/Desktop/code/MNN/tools/converter/source/onnx/onnxConverter.cpp:142: Check it out ==> /enc_p/encoder/attn_layers.5/Pad_2_output_0 has empty input, the index is 2
[12:26:43] /Users/lewisywliu/Desktop/code/MNN/tools/converter/source/onnx/onnxConverter.cpp:142: Check it out ==> /enc_p/encoder/attn_layers.5/Pad_3_output_0 has empty input, the index is 2
[12:26:43] /Users/lewisywliu/Desktop/code/MNN/tools/converter/source/onnx/onnxConverter.cpp:142: Check it out ==> /enc_p/encoder/attn_layers.5/Pad_4_output_0 has empty input, the index is 2
[12:26:43] /Users/lewisywliu/Desktop/code/MNN/tools/converter/source/onnx/onnxConverter.cpp:142: Check it out ==> /enc_p/encoder/ffn_layers.5/Pad_output_0 has empty input, the index is 2
[12:26:43] /Users/lewisywliu/Desktop/code/MNN/tools/converter/source/onnx/onnxConverter.cpp:142: Check it out ==> /enc_p/encoder/ffn_layers.5/Pad_1_output_0 has empty input, the index is 2
[12:26:43] /Users/lewisywliu/Desktop/code/MNN/tools/converter/source/onnx/onnxConverter.cpp:142: Check it out ==> /sdp/flows.7/Pad_output_0 has empty input, the index is 2
[12:26:43] /Users/lewisywliu/Desktop/code/MNN/tools/converter/source/onnx/onnxConverter.cpp:142: Check it out ==> /sdp/flows.5/Pad_output_0 has empty input, the index is 2
[12:26:43] /Users/lewisywliu/Desktop/code/MNN/tools/converter/source/onnx/onnxConverter.cpp:142: Check it out ==> /sdp/flows.3/Pad_output_0 has empty input, the index is 2
[12:26:43] /Users/lewisywliu/Desktop/code/MNN/tools/converter/source/onnx/onnxConverter.cpp:142: Check it out ==> /Clip_output_0 has empty input, the index is 2
[12:26:43] /Users/lewisywliu/Desktop/code/MNN/tools/converter/source/onnx/onnxConverter.cpp:142: Check it out ==> /Pad_output_0 has empty input, the index is 2
[12:26:43] /Users/lewisywliu/Desktop/code/MNN/tools/converter/source/onnx/onnxConverter.cpp:142: Check it out ==> /flow/flows.6/enc/attn_layers.0/Pad_output_0 has empty input, the index is 2
[12:26:43] /Users/lewisywliu/Desktop/code/MNN/tools/converter/source/onnx/onnxConverter.cpp:142: Check it out ==> /flow/flows.6/enc/attn_layers.0/Pad_5_output_0 has empty input, the index is 2
[12:26:43] /Users/lewisywliu/Desktop/code/MNN/tools/converter/source/onnx/onnxConverter.cpp:142: Check it out ==> /flow/flows.6/enc/attn_layers.0/Pad_1_output_0 has empty input, the index is 2
[12:26:43] /Users/lewisywliu/Desktop/code/MNN/tools/converter/source/onnx/onnxConverter.cpp:142: Check it out ==> /flow/flows.6/enc/attn_layers.0/Pad_2_output_0 has empty input, the index is 2
[12:26:43] /Users/lewisywliu/Desktop/code/MNN/tools/converter/source/onnx/onnxConverter.cpp:142: Check it out ==> /flow/flows.6/enc/attn_layers.0/Pad_3_output_0 has empty input, the index is 2
[12:26:43] /Users/lewisywliu/Desktop/code/MNN/tools/converter/source/onnx/onnxConverter.cpp:142: Check it out ==> /flow/flows.6/enc/attn_layers.0/Pad_4_output_0 has empty input, the index is 2
[12:26:43] /Users/lewisywliu/Desktop/code/MNN/tools/converter/source/onnx/onnxConverter.cpp:142: Check it out ==> /flow/flows.6/enc/ffn_layers.0/Pad_output_0 has empty input, the index is 2
[12:26:43] /Users/lewisywliu/Desktop/code/MNN/tools/converter/source/onnx/onnxConverter.cpp:142: Check it out ==> /flow/flows.6/enc/ffn_layers.0/Pad_1_output_0 has empty input, the index is 2
[12:26:43] /Users/lewisywliu/Desktop/code/MNN/tools/converter/source/onnx/onnxConverter.cpp:142: Check it out ==> /flow/flows.6/enc/attn_layers.1/Pad_output_0 has empty input, the index is 2
[12:26:43] /Users/lewisywliu/Desktop/code/MNN/tools/converter/source/onnx/onnxConverter.cpp:142: Check it out ==> /flow/flows.6/enc/attn_layers.1/Pad_5_output_0 has empty input, the index is 2
[12:26:43] /Users/lewisywliu/Desktop/code/MNN/tools/converter/source/onnx/onnxConverter.cpp:142: Check it out ==> /flow/flows.6/enc/attn_layers.1/Pad_1_output_0 has empty input, the index is 2
[12:26:43] /Users/lewisywliu/Desktop/code/MNN/tools/converter/source/onnx/onnxConverter.cpp:142: Check it out ==> /flow/flows.6/enc/attn_layers.1/Pad_2_output_0 has empty input, the index is 2
[12:26:43] /Users/lewisywliu/Desktop/code/MNN/tools/converter/source/onnx/onnxConverter.cpp:142: Check it out ==> /flow/flows.6/enc/attn_layers.1/Pad_3_output_0 has empty input, the index is 2
[12:26:43] /Users/lewisywliu/Desktop/code/MNN/tools/converter/source/onnx/onnxConverter.cpp:142: Check it out ==> /flow/flows.6/enc/attn_layers.1/Pad_4_output_0 has empty input, the index is 2
[12:26:43] /Users/lewisywliu/Desktop/code/MNN/tools/converter/source/onnx/onnxConverter.cpp:142: Check it out ==> /flow/flows.6/enc/ffn_layers.1/Pad_output_0 has empty input, the index is 2
[12:26:43] /Users/lewisywliu/Desktop/code/MNN/tools/converter/source/onnx/onnxConverter.cpp:142: Check it out ==> /flow/flows.6/enc/ffn_layers.1/Pad_1_output_0 has empty input, the index is 2
[12:26:43] /Users/lewisywliu/Desktop/code/MNN/tools/converter/source/onnx/onnxConverter.cpp:142: Check it out ==> /flow/flows.6/enc/attn_layers.2/Pad_output_0 has empty input, the index is 2
[12:26:43] /Users/lewisywliu/Desktop/code/MNN/tools/converter/source/onnx/onnxConverter.cpp:142: Check it out ==> /flow/flows.6/enc/attn_layers.2/Pad_5_output_0 has empty input, the index is 2
[12:26:43] /Users/lewisywliu/Desktop/code/MNN/tools/converter/source/onnx/onnxConverter.cpp:142: Check it out ==> /flow/flows.6/enc/attn_layers.2/Pad_1_output_0 has empty input, the index is 2
[12:26:43] /Users/lewisywliu/Desktop/code/MNN/tools/converter/source/onnx/onnxConverter.cpp:142: Check it out ==> /flow/flows.6/enc/attn_layers.2/Pad_2_output_0 has empty input, the index is 2
[12:26:43] /Users/lewisywliu/Desktop/code/MNN/tools/converter/source/onnx/onnxConverter.cpp:142: Check it out ==> /flow/flows.6/enc/attn_layers.2/Pad_3_output_0 has empty input, the index is 2
[12:26:43] /Users/lewisywliu/Desktop/code/MNN/tools/converter/source/onnx/onnxConverter.cpp:142: Check it out ==> /flow/flows.6/enc/attn_layers.2/Pad_4_output_0 has empty input, the index is 2
[12:26:43] /Users/lewisywliu/Desktop/code/MNN/tools/converter/source/onnx/onnxConverter.cpp:142: Check it out ==> /flow/flows.6/enc/ffn_layers.2/Pad_output_0 has empty input, the index is 2
[12:26:43] /Users/lewisywliu/Desktop/code/MNN/tools/converter/source/onnx/onnxConverter.cpp:142: Check it out ==> /flow/flows.6/enc/ffn_layers.2/Pad_1_output_0 has empty input, the index is 2
[12:26:43] /Users/lewisywliu/Desktop/code/MNN/tools/converter/source/onnx/onnxConverter.cpp:142: Check it out ==> /flow/flows.6/enc/attn_layers.3/Pad_output_0 has empty input, the index is 2
[12:26:43] /Users/lewisywliu/Desktop/code/MNN/tools/converter/source/onnx/onnxConverter.cpp:142: Check it out ==> /flow/flows.6/enc/attn_layers.3/Pad_5_output_0 has empty input, the index is 2
[12:26:43] /Users/lewisywliu/Desktop/code/MNN/tools/converter/source/onnx/onnxConverter.cpp:142: Check it out ==> /flow/flows.6/enc/attn_layers.3/Pad_1_output_0 has empty input, the index is 2
[12:26:43] /Users/lewisywliu/Desktop/code/MNN/tools/converter/source/onnx/onnxConverter.cpp:142: Check it out ==> /flow/flows.6/enc/attn_layers.3/Pad_2_output_0 has empty input, the index is 2
[12:26:43] /Users/lewisywliu/Desktop/code/MNN/tools/converter/source/onnx/onnxConverter.cpp:142: Check it out ==> /flow/flows.6/enc/attn_layers.3/Pad_3_output_0 has empty input, the index is 2
[12:26:43] /Users/lewisywliu/Desktop/code/MNN/tools/converter/source/onnx/onnxConverter.cpp:142: Check it out ==> /flow/flows.6/enc/attn_layers.3/Pad_4_output_0 has empty input, the index is 2
[12:26:43] /Users/lewisywliu/Desktop/code/MNN/tools/converter/source/onnx/onnxConverter.cpp:142: Check it out ==> /flow/flows.6/enc/ffn_layers.3/Pad_output_0 has empty input, the index is 2
[12:26:43] /Users/lewisywliu/Desktop/code/MNN/tools/converter/source/onnx/onnxConverter.cpp:142: Check it out ==> /flow/flows.6/enc/ffn_layers.3/Pad_1_output_0 has empty input, the index is 2
[12:26:43] /Users/lewisywliu/Desktop/code/MNN/tools/converter/source/onnx/onnxConverter.cpp:142: Check it out ==> /flow/flows.4/enc/attn_layers.0/Pad_output_0 has empty input, the index is 2
[12:26:43] /Users/lewisywliu/Desktop/code/MNN/tools/converter/source/onnx/onnxConverter.cpp:142: Check it out ==> /flow/flows.4/enc/attn_layers.0/Pad_5_output_0 has empty input, the index is 2
[12:26:43] /Users/lewisywliu/Desktop/code/MNN/tools/converter/source/onnx/onnxConverter.cpp:142: Check it out ==> /flow/flows.4/enc/attn_layers.0/Pad_1_output_0 has empty input, the index is 2
[12:26:43] /Users/lewisywliu/Desktop/code/MNN/tools/converter/source/onnx/onnxConverter.cpp:142: Check it out ==> /flow/flows.4/enc/attn_layers.0/Pad_2_output_0 has empty input, the index is 2
[12:26:43] /Users/lewisywliu/Desktop/code/MNN/tools/converter/source/onnx/onnxConverter.cpp:142: Check it out ==> /flow/flows.4/enc/attn_layers.0/Pad_3_output_0 has empty input, the index is 2
[12:26:43] /Users/lewisywliu/Desktop/code/MNN/tools/converter/source/onnx/onnxConverter.cpp:142: Check it out ==> /flow/flows.4/enc/attn_layers.0/Pad_4_output_0 has empty input, the index is 2
[12:26:43] /Users/lewisywliu/Desktop/code/MNN/tools/converter/source/onnx/onnxConverter.cpp:142: Check it out ==> /flow/flows.4/enc/ffn_layers.0/Pad_output_0 has empty input, the index is 2
[12:26:43] /Users/lewisywliu/Desktop/code/MNN/tools/converter/source/onnx/onnxConverter.cpp:142: Check it out ==> /flow/flows.4/enc/ffn_layers.0/Pad_1_output_0 has empty input, the index is 2
[12:26:43] /Users/lewisywliu/Desktop/code/MNN/tools/converter/source/onnx/onnxConverter.cpp:142: Check it out ==> /flow/flows.4/enc/attn_layers.1/Pad_output_0 has empty input, the index is 2
[12:26:43] /Users/lewisywliu/Desktop/code/MNN/tools/converter/source/onnx/onnxConverter.cpp:142: Check it out ==> /flow/flows.4/enc/attn_layers.1/Pad_5_output_0 has empty input, the index is 2
[12:26:43] /Users/lewisywliu/Desktop/code/MNN/tools/converter/source/onnx/onnxConverter.cpp:142: Check it out ==> /flow/flows.4/enc/attn_layers.1/Pad_1_output_0 has empty input, the index is 2
[12:26:43] /Users/lewisywliu/Desktop/code/MNN/tools/converter/source/onnx/onnxConverter.cpp:142: Check it out ==> /flow/flows.4/enc/attn_layers.1/Pad_2_output_0 has empty input, the index is 2
[12:26:43] /Users/lewisywliu/Desktop/code/MNN/tools/converter/source/onnx/onnxConverter.cpp:142: Check it out ==> /flow/flows.4/enc/attn_layers.1/Pad_3_output_0 has empty input, the index is 2
[12:26:43] /Users/lewisywliu/Desktop/code/MNN/tools/converter/source/onnx/onnxConverter.cpp:142: Check it out ==> /flow/flows.4/enc/attn_layers.1/Pad_4_output_0 has empty input, the index is 2
[12:26:43] /Users/lewisywliu/Desktop/code/MNN/tools/converter/source/onnx/onnxConverter.cpp:142: Check it out ==> /flow/flows.4/enc/ffn_layers.1/Pad_output_0 has empty input, the index is 2
[12:26:43] /Users/lewisywliu/Desktop/code/MNN/tools/converter/source/onnx/onnxConverter.cpp:142: Check it out ==> /flow/flows.4/enc/ffn_layers.1/Pad_1_output_0 has empty input, the index is 2
[12:26:43] /Users/lewisywliu/Desktop/code/MNN/tools/converter/source/onnx/onnxConverter.cpp:142: Check it out ==> /flow/flows.4/enc/attn_layers.2/Pad_output_0 has empty input, the index is 2
[12:26:43] /Users/lewisywliu/Desktop/code/MNN/tools/converter/source/onnx/onnxConverter.cpp:142: Check it out ==> /flow/flows.4/enc/attn_layers.2/Pad_5_output_0 has empty input, the index is 2
[12:26:43] /Users/lewisywliu/Desktop/code/MNN/tools/converter/source/onnx/onnxConverter.cpp:142: Check it out ==> /flow/flows.4/enc/attn_layers.2/Pad_1_output_0 has empty input, the index is 2
[12:26:43] /Users/lewisywliu/Desktop/code/MNN/tools/converter/source/onnx/onnxConverter.cpp:142: Check it out ==> /flow/flows.4/enc/attn_layers.2/Pad_2_output_0 has empty input, the index is 2
[12:26:43] /Users/lewisywliu/Desktop/code/MNN/tools/converter/source/onnx/onnxConverter.cpp:142: Check it out ==> /flow/flows.4/enc/attn_layers.2/Pad_3_output_0 has empty input, the index is 2
[12:26:43] /Users/lewisywliu/Desktop/code/MNN/tools/converter/source/onnx/onnxConverter.cpp:142: Check it out ==> /flow/flows.4/enc/attn_layers.2/Pad_4_output_0 has empty input, the index is 2
[12:26:43] /Users/lewisywliu/Desktop/code/MNN/tools/converter/source/onnx/onnxConverter.cpp:142: Check it out ==> /flow/flows.4/enc/ffn_layers.2/Pad_output_0 has empty input, the index is 2
[12:26:43] /Users/lewisywliu/Desktop/code/MNN/tools/converter/source/onnx/onnxConverter.cpp:142: Check it out ==> /flow/flows.4/enc/ffn_layers.2/Pad_1_output_0 has empty input, the index is 2
[12:26:43] /Users/lewisywliu/Desktop/code/MNN/tools/converter/source/onnx/onnxConverter.cpp:142: Check it out ==> /flow/flows.4/enc/attn_layers.3/Pad_output_0 has empty input, the index is 2
[12:26:43] /Users/lewisywliu/Desktop/code/MNN/tools/converter/source/onnx/onnxConverter.cpp:142: Check it out ==> /flow/flows.4/enc/attn_layers.3/Pad_5_output_0 has empty input, the index is 2
[12:26:43] /Users/lewisywliu/Desktop/code/MNN/tools/converter/source/onnx/onnxConverter.cpp:142: Check it out ==> /flow/flows.4/enc/attn_layers.3/Pad_1_output_0 has empty input, the index is 2
[12:26:43] /Users/lewisywliu/Desktop/code/MNN/tools/converter/source/onnx/onnxConverter.cpp:142: Check it out ==> /flow/flows.4/enc/attn_layers.3/Pad_2_output_0 has empty input, the index is 2
[12:26:43] /Users/lewisywliu/Desktop/code/MNN/tools/converter/source/onnx/onnxConverter.cpp:142: Check it out ==> /flow/flows.4/enc/attn_layers.3/Pad_3_output_0 has empty input, the index is 2
[12:26:43] /Users/lewisywliu/Desktop/code/MNN/tools/converter/source/onnx/onnxConverter.cpp:142: Check it out ==> /flow/flows.4/enc/attn_layers.3/Pad_4_output_0 has empty input, the index is 2
[12:26:43] /Users/lewisywliu/Desktop/code/MNN/tools/converter/source/onnx/onnxConverter.cpp:142: Check it out ==> /flow/flows.4/enc/ffn_layers.3/Pad_output_0 has empty input, the index is 2
[12:26:43] /Users/lewisywliu/Desktop/code/MNN/tools/converter/source/onnx/onnxConverter.cpp:142: Check it out ==> /flow/flows.4/enc/ffn_layers.3/Pad_1_output_0 has empty input, the index is 2
[12:26:43] /Users/lewisywliu/Desktop/code/MNN/tools/converter/source/onnx/onnxConverter.cpp:142: Check it out ==> /flow/flows.2/enc/attn_layers.0/Pad_output_0 has empty input, the index is 2
[12:26:43] /Users/lewisywliu/Desktop/code/MNN/tools/converter/source/onnx/onnxConverter.cpp:142: Check it out ==> /flow/flows.2/enc/attn_layers.0/Pad_5_output_0 has empty input, the index is 2
[12:26:43] /Users/lewisywliu/Desktop/code/MNN/tools/converter/source/onnx/onnxConverter.cpp:142: Check it out ==> /flow/flows.2/enc/attn_layers.0/Pad_1_output_0 has empty input, the index is 2
[12:26:43] /Users/lewisywliu/Desktop/code/MNN/tools/converter/source/onnx/onnxConverter.cpp:142: Check it out ==> /flow/flows.2/enc/attn_layers.0/Pad_2_output_0 has empty input, the index is 2
[12:26:43] /Users/lewisywliu/Desktop/code/MNN/tools/converter/source/onnx/onnxConverter.cpp:142: Check it out ==> /flow/flows.2/enc/attn_layers.0/Pad_3_output_0 has empty input, the index is 2
[12:26:43] /Users/lewisywliu/Desktop/code/MNN/tools/converter/source/onnx/onnxConverter.cpp:142: Check it out ==> /flow/flows.2/enc/attn_layers.0/Pad_4_output_0 has empty input, the index is 2
[12:26:43] /Users/lewisywliu/Desktop/code/MNN/tools/converter/source/onnx/onnxConverter.cpp:142: Check it out ==> /flow/flows.2/enc/ffn_layers.0/Pad_output_0 has empty input, the index is 2
[12:26:43] /Users/lewisywliu/Desktop/code/MNN/tools/converter/source/onnx/onnxConverter.cpp:142: Check it out ==> /flow/flows.2/enc/ffn_layers.0/Pad_1_output_0 has empty input, the index is 2
[12:26:43] /Users/lewisywliu/Desktop/code/MNN/tools/converter/source/onnx/onnxConverter.cpp:142: Check it out ==> /flow/flows.2/enc/attn_layers.1/Pad_output_0 has empty input, the index is 2
[12:26:43] /Users/lewisywliu/Desktop/code/MNN/tools/converter/source/onnx/onnxConverter.cpp:142: Check it out ==> /flow/flows.2/enc/attn_layers.1/Pad_5_output_0 has empty input, the index is 2
[12:26:43] /Users/lewisywliu/Desktop/code/MNN/tools/converter/source/onnx/onnxConverter.cpp:142: Check it out ==> /flow/flows.2/enc/attn_layers.1/Pad_1_output_0 has empty input, the index is 2
[12:26:43] /Users/lewisywliu/Desktop/code/MNN/tools/converter/source/onnx/onnxConverter.cpp:142: Check it out ==> /flow/flows.2/enc/attn_layers.1/Pad_2_output_0 has empty input, the index is 2
[12:26:43] /Users/lewisywliu/Desktop/code/MNN/tools/converter/source/onnx/onnxConverter.cpp:142: Check it out ==> /flow/flows.2/enc/attn_layers.1/Pad_3_output_0 has empty input, the index is 2
[12:26:43] /Users/lewisywliu/Desktop/code/MNN/tools/converter/source/onnx/onnxConverter.cpp:142: Check it out ==> /flow/flows.2/enc/attn_layers.1/Pad_4_output_0 has empty input, the index is 2
[12:26:43] /Users/lewisywliu/Desktop/code/MNN/tools/converter/source/onnx/onnxConverter.cpp:142: Check it out ==> /flow/flows.2/enc/ffn_layers.1/Pad_output_0 has empty input, the index is 2
[12:26:43] /Users/lewisywliu/Desktop/code/MNN/tools/converter/source/onnx/onnxConverter.cpp:142: Check it out ==> /flow/flows.2/enc/ffn_layers.1/Pad_1_output_0 has empty input, the index is 2
[12:26:43] /Users/lewisywliu/Desktop/code/MNN/tools/converter/source/onnx/onnxConverter.cpp:142: Check it out ==> /flow/flows.2/enc/attn_layers.2/Pad_output_0 has empty input, the index is 2
[12:26:43] /Users/lewisywliu/Desktop/code/MNN/tools/converter/source/onnx/onnxConverter.cpp:142: Check it out ==> /flow/flows.2/enc/attn_layers.2/Pad_5_output_0 has empty input, the index is 2
[12:26:43] /Users/lewisywliu/Desktop/code/MNN/tools/converter/source/onnx/onnxConverter.cpp:142: Check it out ==> /flow/flows.2/enc/attn_layers.2/Pad_1_output_0 has empty input, the index is 2
[12:26:43] /Users/lewisywliu/Desktop/code/MNN/tools/converter/source/onnx/onnxConverter.cpp:142: Check it out ==> /flow/flows.2/enc/attn_layers.2/Pad_2_output_0 has empty input, the index is 2
[12:26:43] /Users/lewisywliu/Desktop/code/MNN/tools/converter/source/onnx/onnxConverter.cpp:142: Check it out ==> /flow/flows.2/enc/attn_layers.2/Pad_3_output_0 has empty input, the index is 2
[12:26:43] /Users/lewisywliu/Desktop/code/MNN/tools/converter/source/onnx/onnxConverter.cpp:142: Check it out ==> /flow/flows.2/enc/attn_layers.2/Pad_4_output_0 has empty input, the index is 2
[12:26:43] /Users/lewisywliu/Desktop/code/MNN/tools/converter/source/onnx/onnxConverter.cpp:142: Check it out ==> /flow/flows.2/enc/ffn_layers.2/Pad_output_0 has empty input, the index is 2
[12:26:43] /Users/lewisywliu/Desktop/code/MNN/tools/converter/source/onnx/onnxConverter.cpp:142: Check it out ==> /flow/flows.2/enc/ffn_layers.2/Pad_1_output_0 has empty input, the index is 2
[12:26:43] /Users/lewisywliu/Desktop/code/MNN/tools/converter/source/onnx/onnxConverter.cpp:142: Check it out ==> /flow/flows.2/enc/attn_layers.3/Pad_output_0 has empty input, the index is 2
[12:26:43] /Users/lewisywliu/Desktop/code/MNN/tools/converter/source/onnx/onnxConverter.cpp:142: Check it out ==> /flow/flows.2/enc/attn_layers.3/Pad_5_output_0 has empty input, the index is 2
[12:26:43] /Users/lewisywliu/Desktop/code/MNN/tools/converter/source/onnx/onnxConverter.cpp:142: Check it out ==> /flow/flows.2/enc/attn_layers.3/Pad_1_output_0 has empty input, the index is 2
[12:26:43] /Users/lewisywliu/Desktop/code/MNN/tools/converter/source/onnx/onnxConverter.cpp:142: Check it out ==> /flow/flows.2/enc/attn_layers.3/Pad_2_output_0 has empty input, the index is 2
[12:26:43] /Users/lewisywliu/Desktop/code/MNN/tools/converter/source/onnx/onnxConverter.cpp:142: Check it out ==> /flow/flows.2/enc/attn_layers.3/Pad_3_output_0 has empty input, the index is 2
[12:26:43] /Users/lewisywliu/Desktop/code/MNN/tools/converter/source/onnx/onnxConverter.cpp:142: Check it out ==> /flow/flows.2/enc/attn_layers.3/Pad_4_output_0 has empty input, the index is 2
[12:26:43] /Users/lewisywliu/Desktop/code/MNN/tools/converter/source/onnx/onnxConverter.cpp:142: Check it out ==> /flow/flows.2/enc/ffn_layers.3/Pad_output_0 has empty input, the index is 2
[12:26:43] /Users/lewisywliu/Desktop/code/MNN/tools/converter/source/onnx/onnxConverter.cpp:142: Check it out ==> /flow/flows.2/enc/ffn_layers.3/Pad_1_output_0 has empty input, the index is 2
[12:26:43] /Users/lewisywliu/Desktop/code/MNN/tools/converter/source/onnx/onnxConverter.cpp:142: Check it out ==> /flow/flows.0/enc/attn_layers.0/Pad_output_0 has empty input, the index is 2
[12:26:43] /Users/lewisywliu/Desktop/code/MNN/tools/converter/source/onnx/onnxConverter.cpp:142: Check it out ==> /flow/flows.0/enc/attn_layers.0/Pad_5_output_0 has empty input, the index is 2
[12:26:43] /Users/lewisywliu/Desktop/code/MNN/tools/converter/source/onnx/onnxConverter.cpp:142: Check it out ==> /flow/flows.0/enc/attn_layers.0/Pad_1_output_0 has empty input, the index is 2
[12:26:43] /Users/lewisywliu/Desktop/code/MNN/tools/converter/source/onnx/onnxConverter.cpp:142: Check it out ==> /flow/flows.0/enc/attn_layers.0/Pad_2_output_0 has empty input, the index is 2
[12:26:43] /Users/lewisywliu/Desktop/code/MNN/tools/converter/source/onnx/onnxConverter.cpp:142: Check it out ==> /flow/flows.0/enc/attn_layers.0/Pad_3_output_0 has empty input, the index is 2
[12:26:43] /Users/lewisywliu/Desktop/code/MNN/tools/converter/source/onnx/onnxConverter.cpp:142: Check it out ==> /flow/flows.0/enc/attn_layers.0/Pad_4_output_0 has empty input, the index is 2
[12:26:43] /Users/lewisywliu/Desktop/code/MNN/tools/converter/source/onnx/onnxConverter.cpp:142: Check it out ==> /flow/flows.0/enc/ffn_layers.0/Pad_output_0 has empty input, the index is 2
[12:26:43] /Users/lewisywliu/Desktop/code/MNN/tools/converter/source/onnx/onnxConverter.cpp:142: Check it out ==> /flow/flows.0/enc/ffn_layers.0/Pad_1_output_0 has empty input, the index is 2
[12:26:43] /Users/lewisywliu/Desktop/code/MNN/tools/converter/source/onnx/onnxConverter.cpp:142: Check it out ==> /flow/flows.0/enc/attn_layers.1/Pad_output_0 has empty input, the index is 2
[12:26:43] /Users/lewisywliu/Desktop/code/MNN/tools/converter/source/onnx/onnxConverter.cpp:142: Check it out ==> /flow/flows.0/enc/attn_layers.1/Pad_5_output_0 has empty input, the index is 2
[12:26:43] /Users/lewisywliu/Desktop/code/MNN/tools/converter/source/onnx/onnxConverter.cpp:142: Check it out ==> /flow/flows.0/enc/attn_layers.1/Pad_1_output_0 has empty input, the index is 2
[12:26:43] /Users/lewisywliu/Desktop/code/MNN/tools/converter/source/onnx/onnxConverter.cpp:142: Check it out ==> /flow/flows.0/enc/attn_layers.1/Pad_2_output_0 has empty input, the index is 2
[12:26:43] /Users/lewisywliu/Desktop/code/MNN/tools/converter/source/onnx/onnxConverter.cpp:142: Check it out ==> /flow/flows.0/enc/attn_layers.1/Pad_3_output_0 has empty input, the index is 2
[12:26:43] /Users/lewisywliu/Desktop/code/MNN/tools/converter/source/onnx/onnxConverter.cpp:142: Check it out ==> /flow/flows.0/enc/attn_layers.1/Pad_4_output_0 has empty input, the index is 2
[12:26:43] /Users/lewisywliu/Desktop/code/MNN/tools/converter/source/onnx/onnxConverter.cpp:142: Check it out ==> /flow/flows.0/enc/ffn_layers.1/Pad_output_0 has empty input, the index is 2
[12:26:43] /Users/lewisywliu/Desktop/code/MNN/tools/converter/source/onnx/onnxConverter.cpp:142: Check it out ==> /flow/flows.0/enc/ffn_layers.1/Pad_1_output_0 has empty input, the index is 2
[12:26:43] /Users/lewisywliu/Desktop/code/MNN/tools/converter/source/onnx/onnxConverter.cpp:142: Check it out ==> /flow/flows.0/enc/attn_layers.2/Pad_output_0 has empty input, the index is 2
[12:26:43] /Users/lewisywliu/Desktop/code/MNN/tools/converter/source/onnx/onnxConverter.cpp:142: Check it out ==> /flow/flows.0/enc/attn_layers.2/Pad_5_output_0 has empty input, the index is 2
[12:26:43] /Users/lewisywliu/Desktop/code/MNN/tools/converter/source/onnx/onnxConverter.cpp:142: Check it out ==> /flow/flows.0/enc/attn_layers.2/Pad_1_output_0 has empty input, the index is 2
[12:26:43] /Users/lewisywliu/Desktop/code/MNN/tools/converter/source/onnx/onnxConverter.cpp:142: Check it out ==> /flow/flows.0/enc/attn_layers.2/Pad_2_output_0 has empty input, the index is 2
[12:26:43] /Users/lewisywliu/Desktop/code/MNN/tools/converter/source/onnx/onnxConverter.cpp:142: Check it out ==> /flow/flows.0/enc/attn_layers.2/Pad_3_output_0 has empty input, the index is 2
[12:26:43] /Users/lewisywliu/Desktop/code/MNN/tools/converter/source/onnx/onnxConverter.cpp:142: Check it out ==> /flow/flows.0/enc/attn_layers.2/Pad_4_output_0 has empty input, the index is 2
[12:26:43] /Users/lewisywliu/Desktop/code/MNN/tools/converter/source/onnx/onnxConverter.cpp:142: Check it out ==> /flow/flows.0/enc/ffn_layers.2/Pad_output_0 has empty input, the index is 2
[12:26:43] /Users/lewisywliu/Desktop/code/MNN/tools/converter/source/onnx/onnxConverter.cpp:142: Check it out ==> /flow/flows.0/enc/ffn_layers.2/Pad_1_output_0 has empty input, the index is 2
[12:26:43] /Users/lewisywliu/Desktop/code/MNN/tools/converter/source/onnx/onnxConverter.cpp:142: Check it out ==> /flow/flows.0/enc/attn_layers.3/Pad_output_0 has empty input, the index is 2
[12:26:43] /Users/lewisywliu/Desktop/code/MNN/tools/converter/source/onnx/onnxConverter.cpp:142: Check it out ==> /flow/flows.0/enc/attn_layers.3/Pad_5_output_0 has empty input, the index is 2
[12:26:43] /Users/lewisywliu/Desktop/code/MNN/tools/converter/source/onnx/onnxConverter.cpp:142: Check it out ==> /flow/flows.0/enc/attn_layers.3/Pad_1_output_0 has empty input, the index is 2
[12:26:43] /Users/lewisywliu/Desktop/code/MNN/tools/converter/source/onnx/onnxConverter.cpp:142: Check it out ==> /flow/flows.0/enc/attn_layers.3/Pad_2_output_0 has empty input, the index is 2
[12:26:43] /Users/lewisywliu/Desktop/code/MNN/tools/converter/source/onnx/onnxConverter.cpp:142: Check it out ==> /flow/flows.0/enc/attn_layers.3/Pad_3_output_0 has empty input, the index is 2
[12:26:43] /Users/lewisywliu/Desktop/code/MNN/tools/converter/source/onnx/onnxConverter.cpp:142: Check it out ==> /flow/flows.0/enc/attn_layers.3/Pad_4_output_0 has empty input, the index is 2
[12:26:43] /Users/lewisywliu/Desktop/code/MNN/tools/converter/source/onnx/onnxConverter.cpp:142: Check it out ==> /flow/flows.0/enc/ffn_layers.3/Pad_output_0 has empty input, the index is 2
[12:26:43] /Users/lewisywliu/Desktop/code/MNN/tools/converter/source/onnx/onnxConverter.cpp:142: Check it out ==> /flow/flows.0/enc/ffn_layers.3/Pad_1_output_0 has empty input, the index is 2
Start to Optimize the MNN Net...
inputTensors : [ x, t, language, bert_0, bert_1, bert_2, sid, ]
outputTensors: [ o, ]
The model has subgraphs, please use MNN::Express::Module to run it
Converted Success!
Check convert result by onnx, thredhold is 0.01

修改的测试代码

141         for inputVar in ort_session.get_inputs():
142             inp = {}
143             inp['name'] = inputVar.name
144             shapes = inputVar.shape
145             # for i in range(0, len(shapes)):
146             #     if type(shapes[i]) == str:
147             #         shapes[i] = 1
148             if inputVar.name in ["t", "language", "x"]:
149                 shapes = [1, 17]
150                 if inputVar.name == "x":
151                     inputs[inputVar.name] = torch.LongTensor([0, 38, 0, 12, 0, 59, 0, 69, 0, 97, 0, 32, 0, 59, 0, 23, 0]).unsqueeze(0).numpy()
152                 elif inputVar.name == "t":
153                     inputs[inputVar.name] =torch.LongTensor([ 0, 8, 0, 9, 0, 8, 0, 10, 0, 8, 0, 10, 0, 8, 0, 8, 0]).unsqueeze(0).numpy()
154                 else:
155                     inputs[inputVar.name] =torch.LongTensor([ 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0]).unsqueeze(0).numpy()
156             elif inputVar.name in ["sid"]:
157                 shapes = [1]
158                 inputs[inputVar.name] = torch.LongTensor([0]).numpy()
159             else:
160                 shapes = [17, 1024]
161                 inputs[inputVar.name] = torch.zeros( (17,1024) ).float().numpy()
162             print(f"inputVar.name:{inputVar.name} shapes:{shapes} ")
163             inp['shape'] = shapes
164             print(inputVar.type)
165             # if inputVar.type.find("int64") >= 0:
166             #     inputs[inputVar.name] = np.random.uniform(0, 12, shapes).astype(np.int64)
167             # elif inputVar.type.find("int32") >=0:
168             #     inputs[inputVar.name] = np.random.uniform(0, 12, shapes).astype(np.int32)
169             # elif inputVar.type.find('bool') >=0:
170             #     inputs[inputVar.name] = np.random.uniform(0, 1, shapes).astype(np.bool_)
171             # else:
172             #     # Float
173             #     inputs[inputVar.name] = np.random.uniform(0.1, 1.2, shapes).astype(np.float32)
174             jsonDict['inputs'].append(inp)

@jxt1234
Copy link
Collaborator

jxt1234 commented Apr 16, 2024

问题已经复现,定位中

@jxt1234 jxt1234 added bug Something isn't working question Further information is requested and removed bug Something isn't working labels Apr 16, 2024
@jxt1234
Copy link
Collaborator

jxt1234 commented Apr 16, 2024

模型中有 random 算子,结果是不能对齐的

@lewis-v
Copy link
Author

lewis-v commented Apr 16, 2024

模型中有随机算子,结果是不能对齐的

这个有什么修改建议?

@lewis-v
Copy link
Author

lewis-v commented Apr 16, 2024

模型中有 random 算子,结果是不能对齐的

onnx模型推理出来的pcm是一段hello world语音,但mnn推理出来的并不能正常发音

@jxt1234
Copy link
Collaborator

jxt1234 commented Apr 16, 2024

save_audio_pcm 的代码是? 或者完整可跑的工程可以发一下?

@lewis-v
Copy link
Author

lewis-v commented Apr 16, 2024

    bool save_audio_pcm(const std::vector<float> &audio, const std::string &filePath) {
        std::ofstream file(filePath, std::ios::binary);
        if (!file.is_open()) {
            // 文件打开失败
            return false;
        }

        for (float sample: audio) {
            if (sample > 1 || sample < -1) {
                std::cout << "sample " << sample << std::endl;
            }
            file.write(reinterpret_cast<const char *>(&sample), sizeof(sample));
        }

        file.close();
        return true;
    }

这个是save_audio_pcm的代码只是普通的写入,可以通过python将他转成wav

import numpy as np
import soundfile as sf
pcm_data = np.fromfile('xxx.pcm', dtype=np.float32)
sf.write('../out/output14.wav', pcm_data, 44100)

@lewis-v
Copy link
Author

lewis-v commented Apr 20, 2024

save_audio_pcm 的代码是? 或者完整可跑的工程可以发一下?

这里是否有后继的进展或还需要提供什么吗?

@jxt1234
Copy link
Collaborator

jxt1234 commented Apr 23, 2024

对应的 onnxruntime 推理的代码是?

@jxt1234
Copy link
Collaborator

jxt1234 commented Apr 23, 2024

要不你更新 mnn 再测试下吧,用你的测试代码生成的 o.txt (onnxruntime运行结果) ,转成 wav 。和 mnn 运行出来的结果貌似差不多

@lewis-v
Copy link
Author

lewis-v commented Apr 27, 2024

code.zip

这个是推理的代码,USE_MNN标记控制使用onnx还是mnn,调用入口方法

auto mmm = sl_t2s::t2s_model_test();
mmm.init("onnx or mnn path");
mmm.exe_onnx("output pcm path");

最终输出结果pcm可使用python转成wav来播放

import numpy as np
import soundfile as sf
pcm_data = np.fromfile('xxx.pcm', dtype=np.float32)
sf.write('../out/xxx.wav', pcm_data, 44100)

out.zip
这个是我这边输出的pcm和wav,onnx输出的是正常的hello world

目前简单测试,mnn会比onnx快1.5倍,所以还是希望可以用上mnn。

@lewis-v
Copy link
Author

lewis-v commented Apr 27, 2024

我使用2.8.4的tag,推理的结果就是正常的,使用2.8.1的不行。

@jxt1234
Copy link
Collaborator

jxt1234 commented Apr 29, 2024

那就更新到 2.8.4 以后吧,可能是之前的bug修正了

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
question Further information is requested
Projects
None yet
Development

No branches or pull requests

2 participants