openvino2019R2 踩坑历程

openvino_2019.2.275


1.模型转换时提示:AttributeError: 'Graph' object has no attribute 'node':
重新安装一下networkx这个模块就行了
pip install networkx==2.3

2.onnx Clamp层的转换有问题,转换后参数、输入不对:
模型加载提示:Error reading network: Error of validate layer: Clip_XXX with type: Clamp. Number of inputs (3) is not equal to expected ones。
修改openvino_2019.2.275\deployment_tools\model_optimizer\mo\ops\clamp.py,让其正常处理min,max。

from mo.graph.graph import Node, Graph
from mo.ops.op import Op


class Clamp(Op):
    op = 'Clamp'

    def __init__(self, graph: Graph, attrs: dict):
        super().__init__(graph, {
            'kind': 'op',
            'type': __class__.op,
            'op': __class__.op,
            # 'infer': copy_shape_infer,
            'infer': self.infer,
            'in_ports_count': 1,
            'out_ports_count': 1,
        }, attrs)

    def supported_attrs(self):
        return [
            'max',
            'min'
        ]

    @staticmethod
    def infer(node: Node):
        # name = node.soft_get('name', node.id)
        name = node.soft_get('name')
        min_input_connected = node.has_port('in', 1) and not node.in_port(1).disconnected()
        max_input_connected = node.has_port('in', 2) and not node.in_port(2).disconnected()

        input_value = node.in_port(0).data.get_value()

        min_value = node.in_port(1).data.get_value() if min_input_connected else np.finfo(np.float32).min
        max_value = node.in_port(2).data.get_value() if max_input_connected else np.finfo(np.float32).max

        #设置min、max
        node.min = min_value
        node.max = max_value

        #删除in_port 1,2
        node.in_port(1).disconnect()
        node.in_port(2).disconnect()
        
        if input_value is not None and min_value is not None and max_value is not None:
            assert np.all(max_value >= min_value), \
                'Clamp max_value=={} is less than min_value=={} for node `{}`'.format(max_value, min_value, name)
            node.out_port(0).data.set_value(np.clip(node.in_port(0).data.get_value(), min_value, max_value))
        else:
            node.out_port(0).data.set_shape(node.in_port(0).data.get_shape())


 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值