65 lines
1.9 KiB
Python
65 lines
1.9 KiB
Python
"""
|
|
acl backend
|
|
"""
|
|
|
|
|
|
import dnmetis_backend as dnmetis_backend
|
|
import backend.backend as backend
|
|
import numpy as np
|
|
import os
|
|
import pdb
|
|
|
|
class AclBackend(backend.Backend):
|
|
def __init__(self):
|
|
super(AclBackend, self).__init__()
|
|
self.ACL=5
|
|
self.outputs = ""
|
|
self.inputs = ""
|
|
self.model_path = ""
|
|
self.cfg_path = ""
|
|
|
|
def version(self):
|
|
return "1.0"
|
|
|
|
def name(self):
|
|
return "AclBackend"
|
|
|
|
def image_format(self):
|
|
# By default tensorflow uses NHWC (and the cpu implementation only does NHWC)
|
|
return "NHWC"
|
|
|
|
def load(self, args):
|
|
# there is no input/output meta data i the graph so it need to come from config.
|
|
if not args.inputs:
|
|
raise ValueError("AclBackend needs inputs")
|
|
if not args.outputs:
|
|
raise ValueError("AclBackend needs outputs")
|
|
self.outputs = args.outputs
|
|
self.inputs = args.inputs
|
|
self.model_path = args.model
|
|
self.cfg_path = args.cfg_path
|
|
#s.path.join(args.pwd, 'backend_cfg/built-in_config.txt')
|
|
dnmetis_backend.backend_setconfig(self.cfg_path)
|
|
dnmetis_backend.backend_load(self.ACL,self.model_path,"")
|
|
return self
|
|
|
|
def predict(self, feed):
|
|
#fed=feed[self.inputs[0]]
|
|
result_list=[]
|
|
result = dnmetis_backend.backend_predict(self.ACL,self.model_path,feed)
|
|
|
|
for _ in range(len(self.outputs)):
|
|
#resnet50 tf & caffe
|
|
if 'softmax_tensor' in self.outputs[_] or 'prob' in self.outputs[_]:
|
|
result_list.append(np.argmax(result[_],1))
|
|
# resnet50 tf
|
|
if 'ArgMax' in self.outputs[_]:
|
|
result_list.append(result[_])
|
|
if result_list == []:
|
|
# ssd-resnet34 tf
|
|
result_list = result
|
|
return result_list
|
|
|
|
def unload(self):
|
|
return dnmetis_backend.backend_unload(self.ACL,self.model_path,"")
|