当前位置: 首页 > news >正文

国内外网站建设今日最新新闻

国内外网站建设,今日最新新闻,有什么网站是做批发的,成都科技网站建设电某些模型最后卷积层之后的算子不适合在推理引擎里面跑,切割掉conv后面的算子,在cpu上实现有比较好的性能. 包含: 1.获取onnx中间节点的shape的示例 2.增加onnx模型输出,设…
某些模型最后卷积层之后的算子不适合在推理引擎里面跑,切割掉conv后面的算子,在cpu上实现有比较好的性能.
包含:
1.获取onnx中间节点的shape的示例
2.增加onnx模型输出,设置名称,type, shape. 示例
3.编辑onnx模型示例切割掉绿色部分示例
import onnx
import sys
import json
from onnx import shape_inference, TensorProtoif len(sys.argv) < 2:print('Usage: ' + sys.argv[0] + '<onnx_filename>')exit(-1)onnx_file = sys.argv[1]# 加载ONNX模型
model = onnx.load(onnx_file)graph = model.graphoutputs = model.graph.output 
if(len(outputs)!=3):print("This isn't ScoreBoxKpt model!")quit()output_list=["output0","output1","output2"]for output in outputs:if output.name in score_box_kpt :print(f"output name: {output.name}")else:print("This isn't a fit model!")quit()def getConvList(endName):stack=[]stack.append(endName)convList=[]while(len(stack)):name=stack.pop()for node in graph.node:if name in node.output :if node.op_type=="Conv":if node.name not in convList :convList.append(node.name)else: for input in node.input:if input not in stack:stack.insert(0, input)return convListConv0=getConvList(output_list[0])
Conv1=getConvList(output_list[1])
Conv2=getConvList(output_list[2])def save2json(save_dict, name):if len(save_dict) == 0:print("this is nothing to save json")return Nonewith open(name, 'w') as fp:#{'a': 'Runoob', 'b': 7}json.dump(save_dict, fp, sort_keys=False, indent=4, separators=(',', ': ')) #default=strsave_dict = {output_list[0]:scoreConv,output_list[1]:boxConv,output_list[2]:kptConv}conv_list=Conv0+Conv1+Conv2#获取onnx中间节点的shape.
output_dim_dic={}
inferred_onnx_model = shape_inference.infer_shapes(model)
inferred_graph = inferred_onnx_model.graph
inferred_value_info = inferred_graph.value_info
for node in graph.node:if node.name in conv_list:for value_info in inferred_value_info:if value_info.name==node.output[0]:output_dim_dic[node.name]=value_info.type.tensor_type;#删除conv 后面的onnx节点
# Find target node index
for name in conv_list:target_node = Nonefor node in graph.node:if node.name == name:target_node=nodebreakoutput_names = []for output in target_node.output:output_names.append(output)set1=set(output_names)del_node = []have_new_del_node = Falsewhile True:have_new_del_node = Falsefor node in graph.node:if node.name in del_node:continueset2=set(node.input)if set1.intersection(set2): output_names+=node.output         set1=set(output_names)del_node.append(node.name)have_new_del_node = Trueif have_new_del_node == False:breakfor node in graph.node:if node.name in del_node:print(f"1remove node {node.name}")model.graph.node.remove(node)have_new_del_node = False
while True:have_new_del_node = Falsefor node1 in graph.node:if node1.name in conv_list :continueset1=set(node1.output)to_delete =Truefor node2 in graph.node:set2=set(node2.input)if set1.intersection(set2): to_delete = Falsebreakif to_delete == True:print(f"2remove node {node1.name}")model.graph.node.remove(node1)have_new_del_node=Trueif have_new_del_node == False :breaksave_output_name=[]
for node in graph.node:if node.name in conv_list:#增加输出层output_info = onnx.helper.ValueInfoProto()node.output[0]=node.nameoutput_info.name = node.output[0]for dim_value in output_dim_dic[node.name].shape.dim:output_info.type.tensor_type.shape.dim.extend([dim_value])output_info.type.tensor_type.elem_type = TensorProto.FLOATprint(output_info)graph.output.extend([output_info])save_output_name.append(node.output[0])outputs = model.graph.output 
# 打印输出节点名称
for output in outputs:if output.name  in save_output_name :continuemodel.graph.output.remove(output)
outputs = model.graph.output 
# 打印输出节点名称
for output in outputs:if output.name  in save_output_name :continuemodel.graph.output.remove(output)
# Save modified ONNX model
onnx.checker.check_model(model)
onnx.save(model, "backbone.onnx")
save2json(save_dict, 'conv_param.json'
http://www.fameteam.cn/news/317.html

相关文章:

  • 杭州网站建设设计制作怎么写软文推广
  • 建设网站教程厦门关键词排名推广
  • 用java做网页如何建立网站沈阳seo排名优化教程
  • 关于网站建设的软文南宁百度推广代理商
  • ppt模板免费网海淀区seo搜索引擎优化企业
  • 网站推广的特点是什么河南seo外包
  • 网站建设服务商城友情连接
  • 网站建设套餐怎么样爱站工具包
  • 兰州忠旗网站建设科技有限公司seo入门教程网盘
  • 门户网站建设滞后交换链接营销实现方式解读
  • 手机网站建设需要多少钱南京seo顾问
  • 橙子建站验证码是诈骗吗免费发布推广信息的软件
  • 怎么把自己做的网站黄冈地区免费网站推广平台
  • 旅游网站建设的背景湖北网络推广seo
  • 大宗商品交易平台有哪些抚州网站seo
  • 网站程序模板山东16市最新疫情
  • 广州网站建设排名北京网站推广服务
  • 建筑风水网站网络营销pdf
  • 济南市疫情最新消息seo有哪些优化工具
  • 昆明网站建设手机版网络广告的形式
  • 淮南网官方网站今日十大热点新闻事件
  • 家纺行业英文网站模板全网营销代运营
  • 网站做重新做_域名不换_空间想转到新网站这边网络广告推广平台
  • 厦门网站建设案例semi是什么意思
  • dedecms新闻网站模板网站模版
  • 网站系统正在升级维护南昌seo网站管理
  • 做淘宝返利网站能挣钱企业网站推广模式
  • 程序员必知的网站ip域名解析查询
  • 慈溪住房和城乡建设部网站百度收录网址提交
  • 网站模板 修改提交网址给百度