From f9b76e01fac3b272d2c5a0cb6a1e9abb17c4ce88 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BD=AD=E4=B8=9A=E5=BA=86?= Date: Tue, 17 Aug 2021 02:14:31 +0000 Subject: [PATCH 1/4] =?UTF-8?q?add=20Ascend-PyTorch=E7=A6=BB=E7=BA=BF?= =?UTF-8?q?=E6=8E=A8=E7=90=86=E6=8C=87=E5=AF=BC/=E4=B8=93=E9=A2=98?= =?UTF-8?q?=E6=A1=88=E4=BE=8B/=E6=80=A7=E8=83=BD=E8=B0=83=E4=BC=98/?= =?UTF-8?q?=E4=BF=AE=E6=94=B9transpose=E5=88=B0=E6=9C=80=E5=90=8E=E4=B8=80?= =?UTF-8?q?=E6=A0=B9=E8=BD=B4=E5=81=9Asoftmax=E6=80=A7=E8=83=BD=E4=BD=8E.m?= =?UTF-8?q?d.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...ax\346\200\247\350\203\275\344\275\216.md" | 26 +++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 "Ascend-PyTorch\347\246\273\347\272\277\346\216\250\347\220\206\346\214\207\345\257\274/\344\270\223\351\242\230\346\241\210\344\276\213/\346\200\247\350\203\275\350\260\203\344\274\230/\344\277\256\346\224\271transpose\345\210\260\346\234\200\345\220\216\344\270\200\346\240\271\350\275\264\345\201\232softmax\346\200\247\350\203\275\344\275\216.md" diff --git "a/Ascend-PyTorch\347\246\273\347\272\277\346\216\250\347\220\206\346\214\207\345\257\274/\344\270\223\351\242\230\346\241\210\344\276\213/\346\200\247\350\203\275\350\260\203\344\274\230/\344\277\256\346\224\271transpose\345\210\260\346\234\200\345\220\216\344\270\200\346\240\271\350\275\264\345\201\232softmax\346\200\247\350\203\275\344\275\216.md" "b/Ascend-PyTorch\347\246\273\347\272\277\346\216\250\347\220\206\346\214\207\345\257\274/\344\270\223\351\242\230\346\241\210\344\276\213/\346\200\247\350\203\275\350\260\203\344\274\230/\344\277\256\346\224\271transpose\345\210\260\346\234\200\345\220\216\344\270\200\346\240\271\350\275\264\345\201\232softmax\346\200\247\350\203\275\344\275\216.md" new file mode 100644 index 0000000..4e1e93f --- /dev/null +++ "b/Ascend-PyTorch\347\246\273\347\272\277\346\216\250\347\220\206\346\214\207\345\257\274/\344\270\223\351\242\230\346\241\210\344\276\213/\346\200\247\350\203\275\350\260\203\344\274\230/\344\277\256\346\224\271transpose\345\210\260\346\234\200\345\220\216\344\270\200\346\240\271\350\275\264\345\201\232softmax\346\200\247\350\203\275\344\275\216.md" @@ -0,0 +1,26 @@ +``` +import sys +import onnx + +if __name__ == '__main__': + model = onnx.load(sys.argv[1]) + graph = model.graph + node = graph.node + softmax_node_index = [] + del_group = [] + for i in range(len(node)): + if node[i].op_type == 'Softmax': + del_group.append((node[i-1], node[i], node[i+1], i)) + for g in del_group: + new_input = g[0].input + new_output = g[2].output + new_name = g[1].name + new_index = g[3] + new_node = onnx.helper.make_node("Softmax", new_input, new_output, new_name, axis=1) + for n in g[:-1]: + graph.node.remove(n) + graph.node.insert(new_index, new_node) + onnx.save(model, sys.argv[2]) +``` +python3 fix_softmax_transpose.py ./wideresnet_dybs.onnx ./wideresnet_dybs_fix.onnx +导出onnx时如果softmax不是在最后一根轴上计算时会通过transpose转换到最后一根轴计算,然而softmax在最后一根轴上计算时性能低,故修改onnx使softmax在原轴上计算。 \ No newline at end of file -- Gitee From 1afe2630db8046ce046e350142bfed4a12c36f97 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BD=AD=E4=B8=9A=E5=BA=86?= Date: Tue, 17 Aug 2021 02:15:37 +0000 Subject: [PATCH 2/4] rename --- ...4\345\201\232softmax\346\200\247\350\203\275\344\275\216.md" | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) rename "Ascend-PyTorch\347\246\273\347\272\277\346\216\250\347\220\206\346\214\207\345\257\274/\344\270\223\351\242\230\346\241\210\344\276\213/\346\200\247\350\203\275\350\260\203\344\274\230/\344\277\256\346\224\271transpose\345\210\260\346\234\200\345\220\216\344\270\200\346\240\271\350\275\264\345\201\232softmax\346\200\247\350\203\275\344\275\216.md" => "Ascend-PyTorch\347\246\273\347\272\277\346\216\250\347\220\206\346\214\207\345\257\274/\344\270\223\351\242\230\346\241\210\344\276\213/\346\200\247\350\203\275\350\260\203\344\274\230/\344\274\230\345\214\226transpose\345\210\260\346\234\200\345\220\216\344\270\200\346\240\271\350\275\264\345\201\232softmax\346\200\247\350\203\275\344\275\216.md" (95%) diff --git "a/Ascend-PyTorch\347\246\273\347\272\277\346\216\250\347\220\206\346\214\207\345\257\274/\344\270\223\351\242\230\346\241\210\344\276\213/\346\200\247\350\203\275\350\260\203\344\274\230/\344\277\256\346\224\271transpose\345\210\260\346\234\200\345\220\216\344\270\200\346\240\271\350\275\264\345\201\232softmax\346\200\247\350\203\275\344\275\216.md" "b/Ascend-PyTorch\347\246\273\347\272\277\346\216\250\347\220\206\346\214\207\345\257\274/\344\270\223\351\242\230\346\241\210\344\276\213/\346\200\247\350\203\275\350\260\203\344\274\230/\344\274\230\345\214\226transpose\345\210\260\346\234\200\345\220\216\344\270\200\346\240\271\350\275\264\345\201\232softmax\346\200\247\350\203\275\344\275\216.md" similarity index 95% rename from "Ascend-PyTorch\347\246\273\347\272\277\346\216\250\347\220\206\346\214\207\345\257\274/\344\270\223\351\242\230\346\241\210\344\276\213/\346\200\247\350\203\275\350\260\203\344\274\230/\344\277\256\346\224\271transpose\345\210\260\346\234\200\345\220\216\344\270\200\346\240\271\350\275\264\345\201\232softmax\346\200\247\350\203\275\344\275\216.md" rename to "Ascend-PyTorch\347\246\273\347\272\277\346\216\250\347\220\206\346\214\207\345\257\274/\344\270\223\351\242\230\346\241\210\344\276\213/\346\200\247\350\203\275\350\260\203\344\274\230/\344\274\230\345\214\226transpose\345\210\260\346\234\200\345\220\216\344\270\200\346\240\271\350\275\264\345\201\232softmax\346\200\247\350\203\275\344\275\216.md" index 4e1e93f..233c595 100644 --- "a/Ascend-PyTorch\347\246\273\347\272\277\346\216\250\347\220\206\346\214\207\345\257\274/\344\270\223\351\242\230\346\241\210\344\276\213/\346\200\247\350\203\275\350\260\203\344\274\230/\344\277\256\346\224\271transpose\345\210\260\346\234\200\345\220\216\344\270\200\346\240\271\350\275\264\345\201\232softmax\346\200\247\350\203\275\344\275\216.md" +++ "b/Ascend-PyTorch\347\246\273\347\272\277\346\216\250\347\220\206\346\214\207\345\257\274/\344\270\223\351\242\230\346\241\210\344\276\213/\346\200\247\350\203\275\350\260\203\344\274\230/\344\274\230\345\214\226transpose\345\210\260\346\234\200\345\220\216\344\270\200\346\240\271\350\275\264\345\201\232softmax\346\200\247\350\203\275\344\275\216.md" @@ -22,5 +22,5 @@ if __name__ == '__main__': graph.node.insert(new_index, new_node) onnx.save(model, sys.argv[2]) ``` -python3 fix_softmax_transpose.py ./wideresnet_dybs.onnx ./wideresnet_dybs_fix.onnx +python3 fix_softmax_transpose.py ./wideresnet_dybs.onnx ./wideresnet_dybs_fix.onnx 导出onnx时如果softmax不是在最后一根轴上计算时会通过transpose转换到最后一根轴计算,然而softmax在最后一根轴上计算时性能低,故修改onnx使softmax在原轴上计算。 \ No newline at end of file -- Gitee From f7882223e82c235059db38cc4c80720cace82545 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BD=AD=E4=B8=9A=E5=BA=86?= Date: Tue, 17 Aug 2021 02:16:10 +0000 Subject: [PATCH 3/4] rename --- ...50\203\275\344\275\216\347\232\204\351\227\256\351\242\230.md" | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename "Ascend-PyTorch\347\246\273\347\272\277\346\216\250\347\220\206\346\214\207\345\257\274/\344\270\223\351\242\230\346\241\210\344\276\213/\346\200\247\350\203\275\350\260\203\344\274\230/\344\274\230\345\214\226transpose\345\210\260\346\234\200\345\220\216\344\270\200\346\240\271\350\275\264\345\201\232softmax\346\200\247\350\203\275\344\275\216.md" => "Ascend-PyTorch\347\246\273\347\272\277\346\216\250\347\220\206\346\214\207\345\257\274/\344\270\223\351\242\230\346\241\210\344\276\213/\346\200\247\350\203\275\350\260\203\344\274\230/\344\274\230\345\214\226transpose\345\210\260\346\234\200\345\220\216\344\270\200\346\240\271\350\275\264\345\201\232softmax\346\200\247\350\203\275\344\275\216\347\232\204\351\227\256\351\242\230.md" (100%) diff --git "a/Ascend-PyTorch\347\246\273\347\272\277\346\216\250\347\220\206\346\214\207\345\257\274/\344\270\223\351\242\230\346\241\210\344\276\213/\346\200\247\350\203\275\350\260\203\344\274\230/\344\274\230\345\214\226transpose\345\210\260\346\234\200\345\220\216\344\270\200\346\240\271\350\275\264\345\201\232softmax\346\200\247\350\203\275\344\275\216.md" "b/Ascend-PyTorch\347\246\273\347\272\277\346\216\250\347\220\206\346\214\207\345\257\274/\344\270\223\351\242\230\346\241\210\344\276\213/\346\200\247\350\203\275\350\260\203\344\274\230/\344\274\230\345\214\226transpose\345\210\260\346\234\200\345\220\216\344\270\200\346\240\271\350\275\264\345\201\232softmax\346\200\247\350\203\275\344\275\216\347\232\204\351\227\256\351\242\230.md" similarity index 100% rename from "Ascend-PyTorch\347\246\273\347\272\277\346\216\250\347\220\206\346\214\207\345\257\274/\344\270\223\351\242\230\346\241\210\344\276\213/\346\200\247\350\203\275\350\260\203\344\274\230/\344\274\230\345\214\226transpose\345\210\260\346\234\200\345\220\216\344\270\200\346\240\271\350\275\264\345\201\232softmax\346\200\247\350\203\275\344\275\216.md" rename to "Ascend-PyTorch\347\246\273\347\272\277\346\216\250\347\220\206\346\214\207\345\257\274/\344\270\223\351\242\230\346\241\210\344\276\213/\346\200\247\350\203\275\350\260\203\344\274\230/\344\274\230\345\214\226transpose\345\210\260\346\234\200\345\220\216\344\270\200\346\240\271\350\275\264\345\201\232softmax\346\200\247\350\203\275\344\275\216\347\232\204\351\227\256\351\242\230.md" -- Gitee From 26a73e7e4195503c2207735e9f1ab6357e5eeef9 Mon Sep 17 00:00:00 2001 From: pengyeqing Date: Tue, 17 Aug 2021 16:10:28 +0800 Subject: [PATCH 4/4] update --- ...\350\257\225\346\212\245\345\221\212.docx" | Bin 380693 -> 380867 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git "a/Ascend-PyTorch\347\246\273\347\272\277\346\216\250\347\220\206\346\214\207\345\257\274/PyTorch\347\246\273\347\272\277\346\216\250\347\220\206-Xxx\346\250\241\345\236\213\346\265\213\350\257\225\346\212\245\345\221\212.docx" "b/Ascend-PyTorch\347\246\273\347\272\277\346\216\250\347\220\206\346\214\207\345\257\274/PyTorch\347\246\273\347\272\277\346\216\250\347\220\206-Xxx\346\250\241\345\236\213\346\265\213\350\257\225\346\212\245\345\221\212.docx" index 3148e9dd51264cdd082c82ba0d63de929a604b27..359ceb910871434efdf08a1b74152e050234a8f6 100644 GIT binary patch delta 17047 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 z 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