chore: import upstream snapshot with attribution
This commit is contained in:
@@ -0,0 +1,52 @@
|
||||
#!/usr/bin/python
|
||||
import numpy as np
|
||||
|
||||
mnn_module = '.tmp.mnn'
|
||||
ts_module = '.tmp.pt'
|
||||
onnx_module = '.tmp.onnx'
|
||||
input_file = '.input.txt'
|
||||
output_file = '.output.txt'
|
||||
|
||||
def run_cmd(args):
|
||||
from subprocess import Popen, PIPE, STDOUT
|
||||
stdout, _ = Popen(args, stdout=PIPE, stderr=STDOUT).communicate()
|
||||
return str(stdout)
|
||||
|
||||
def run_torchscript():
|
||||
import torchvision.models as models
|
||||
import onnxruntime as ort
|
||||
import torch
|
||||
resnet18 = models.resnet18(pretrained=True)
|
||||
x = torch.rand(1, 3, 224, 224)
|
||||
resnet18_ts = torch.jit.trace(resnet18, x)
|
||||
resnet18_ts.save(ts_module)
|
||||
torch.onnx.export(resnet18, x, onnx_module)
|
||||
on_module = ort.InferenceSession(onnx_module)
|
||||
inputs = {}
|
||||
for inp in on_module.get_inputs():
|
||||
inputs[inp.name] = x.numpy()
|
||||
y = on_module.run(None, inputs)[0]
|
||||
nx = x.numpy().reshape(-1)
|
||||
ny = y.reshape(-1)
|
||||
np.savetxt(input_file, nx, fmt='%f')
|
||||
np.savetxt(output_file, ny, fmt='%f')
|
||||
|
||||
def run_mnn():
|
||||
# convert to mnn module
|
||||
conv_res = run_cmd(['./MNNConvert', '-f', 'TS', '--modelFile', ts_module, '--MNNModel', mnn_module, '--bizCode', 'mnn'])
|
||||
if (str(conv_res).find('Done') == -1):
|
||||
print('Convert Error!')
|
||||
return
|
||||
# mnn run
|
||||
message = run_cmd(['./testModel.out', mnn_module, input_file, output_file, '0', '0.001'])
|
||||
# message = run_cmd(['./testModel.out', mnn_module, '/Users/wangzhaode/x.txt', '/Users/wangzhaode/y.txt', '0', '0.001'])
|
||||
if (str(message).find('Correct') == -1):
|
||||
print('Run Error!')
|
||||
# return
|
||||
print(message)
|
||||
|
||||
if __name__ == '__main__':
|
||||
import os
|
||||
import sys
|
||||
run_torchscript()
|
||||
run_mnn()
|
||||
Reference in New Issue
Block a user