mnn本地推理输出全部为0
import numpy as np
import MNN
加载模型
interpreter = MNN.Interpreter(r"\encoder.mnn") session = interpreter.createSession()
获取输入张量的信息
input0 = interpreter.getSessionInput(session, "src") # 假设模型有名为 'input0' 的第一个输入 input1 = interpreter.getSessionInput(session, "src_mask") # 假设模型有名为 'input1' 的第二个输入
准备输入数据
假设 input0_data 和 input1_data 是两个输入数据张量,可以是 numpy 数组
input0_data = np.array([2, 9447, 31275, 743, 3] + [0] * 59, dtype=np.float32)
input1: 前5个是1,后面64-5个0
input1_data = np.array([1, 1, 1, 1, 1] + [0] * 59, dtype=np.float32) input_data_1 = MNN.Tensor(input0_data) # Var -> Tensor input_data_2 = MNN.Tensor(input1_data) # Var -> Tensor
将数据设置到输入张量中
input0.copyFrom(input_data_1) input1.copyFrom(input_data_2)
运行推理
output_tensor = interpreter.getSessionOutput(session, 'output') # 假设模型有名为 'output' 的输出节点
设置输出张量为浮点型数据类型
output_data = MNN.Tensor(output_tensor.getShape(), MNN.Halide_Type_Float, MNN.Tensor_DimensionType_Caffe) output_tensor.copyToHostTensor(output_data)
将输出张量的数据复制到numpy数组中
output_data = np.array(output_tensor.getData()) print(output_tensor)
打印输出结果
print("Output tensor shape:", output_data.shape) print("Output tensor data:") print(output_data)
获取输出
array([[[0., 0., 0., ..., 0., 0., 0.], [0., 0., 0., ..., 0., 0., 0.], [0., 0., 0., ..., 0., 0., 0.], ..., [0., 0., 0., ..., 0., 0., 0.], [0., 0., 0., ..., 0., 0., 0.], [0., 0., 0., ..., 0., 0., 0.]]], dtype=float32) Output tensor shape: (32768,) Output tensor data: [0. 0. 0. ... 0. 0. 0.] The device support i8sdot:0, support fp16:0, support i8mm: 0
- 执行 interpreter.runSession 了么?
- 建议换用 Module API ,后续 python - session api 不建议使用
- 执行 interpreter.runSession 了么?
- 建议换用 Module API ,后续 python - session api 不建议使用
添加了interpreter.runSession(session), 最终运行的结果: 不论输入是什么,输出都是一模一样
Marking as stale. No activity in 60 days.