【K210】onnx模型优化——进行BN和卷积层的融合

 

ncc转换出错:

NOT supported ONNX opcode: BatchNormalization

onnx模型优化——进行BN和卷积层的融合

一、准备工作

安装ONNX

You can then install ONNX from PyPi (Note: Set environment variable ONNX_ML=1 for onnx-ml):

pip install onnx==1.3.0

You can also build and install ONNX locally from source code:

git clone https://github.com/onnx/onnx.git

cd onnx

git submodule update --init --recursive

python setup.py install

二、源码

import onnx
import os
from onnx import optimizer

# Preprocessing: load the model contains two transposes.
# model_path = os.path.join('resources', 'two_transposes.onnx')
# original_model = onnx.load(model_path)
original_model = onnx.load("resnet50.onnx")

print('The model before optimization:\n\n{}'.format(onnx.helper.printable_graph(original_model.graph)))


# A full list of supported optimization passes can be found using get_available_passes()
all_passes = optimizer.get_available_passes()
print("Available optimization passes:")
for p in all_passes:
    print('\t{}'.format(p))
print()

# Pick one pass as example
passes = ['fuse_add_bias_into_conv']

# Apply the optimization on the original serialized model
optimized_model = optimizer.optimize(original_model, passes)

print('The model after optimization:\n\n{}'.format(onnx.helper.printable_graph(optimized_model.graph)))

# save new model
onnx.save(optimized_model, "newResnet50.onnx")

三,没有BatchNormalization,依然有下面错误:

Fatal: Not supported ONNX opcode: PRelu

ncc的最新版支持PRelu,但是需要自己编译:

### Linux
1. Install dependencies
- gcc >= 8
- cmake >=3.8
- python >= 3.6

2. Install conan
```bash
pip install conan==1.21.1
```
3. Clone source
```bash
git clone https://github.com/kendryte/nncase.git --recursive

(third_party如果缺文件就自行下载)


```
4. Build
```bash
mkdir out && cd out
cmake .. -DNNCASE_TARGET=k210 -DCMAKE_BUILD_TYPE=Release
make -j
```

。。。。。。

还是报错,崩溃。。。。。。。。。。。。。。。。

Fatal: inputs are not compatible to broadcast

可能是不支持resnet结构:

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Arthur.AI

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值