deepin-ocr/3rdparty/ncnn/docs/developer-guide/binaryop-broadcasting.md
wangzhengyang 718c41634f feat: 切换后端至PaddleOCR-NCNN,切换工程为CMake
1.项目后端整体迁移至PaddleOCR-NCNN算法,已通过基本的兼容性测试
2.工程改为使用CMake组织,后续为了更好地兼容第三方库,不再提供QMake工程
3.重整权利声明文件,重整代码工程,确保最小化侵权风险

Log: 切换后端至PaddleOCR-NCNN,切换工程为CMake
Change-Id: I4d5d2c5d37505a4a24b389b1a4c5d12f17bfa38c
2022-05-10 10:22:11 +08:00

1.2 KiB

broadcasting rule

ncnn BinaryOp accepts blobs with different shape

C = BinaryOp(A, B)

shape notation convention is [w], [w,h], [w,h,c], [w,h,d,c]

type A B C
1 [1] scalar [1]
2 [1] [2] [2]
3 [1] [2,3] [2,3]
4 [1] [2,3,4] [2,3,4]
5 [2] scalar [2]
6 [2] [1] [2]
7 [2] [2] [2]
8 [3] [2,3] [2,3]
9 [4] [2,3,4] [2,3,4]
10 [2,3] scalar [2,3]
11 [2,3] [1] [2,3]
12 [2,3] [3] [2,3]
13 [2,3] [2,3] [2,3]
14 [3,4] [2,3,4] [2,3,4]
15 [2,3,4] scalar [2,3,4]
16 [2,3,4] [1] [2,3,4]
17 [2,3,4] [4] [2,3,4]
18 [2,3,4] [3,4] [2,3,4]
19 [2,3,4] [2,3,4] [2,3,4]
20 [1] [2,3,4,5] [2,3,4,5]
21 [5] [2,3,4,5] [2,3,4,5]
22 [4,5] [2,3,4,5] [2,3,4,5]
23 [3,4,5] [2,3,4,5] [2,3,4,5]
24 [2,3,4,5] scalar [2,3,4,5]
25 [2,3,4,5] [1] [2,3,4,5]
26 [2,3,4,5] [5] [2,3,4,5]
27 [2,3,4,5] [4,5] [2,3,4,5]
28 [2,3,4,5] [3,4,5] [2,3,4,5]
29 [2,3,4,5] [2,3,4,5] [2,3,4,5]

some special broadcasting rule exists for model compatibility

special type A B C
1 [2,3,4] [1,1,4] [2,3,4]
2 [2,3,4] [2,3,1] [2,3,4]
3 [1,1,4] [2,3,4] [2,3,4]
4 [2,3,1] [2,3,4] [2,3,4]
5 [2,3,4] [1,3,4] [2,3,4]
6 [2,3,4] [2,1,4] [2,3,4]
7 [1,3,4] [2,3,4] [2,3,4]
8 [2,1,4] [2,3,4] [2,3,4]