From 4d151cf8256494729bf010db423b9372e9a90b6a Mon Sep 17 00:00:00 2001 From: SunAhong1993 Date: Mon, 14 Sep 2020 18:02:34 +0800 Subject: [PATCH] add aten and comment --- x2paddle/core/program.py | 2 +- x2paddle/decoder/pytorch_decoder.py | 2 +- x2paddle/op_mapper/pytorch2paddle/aten.py | 43 ++++++++++++++++++- .../op_mapper/pytorch2paddle/prim2code.py | 2 +- .../pytorch2paddle/pytorch_op_mapper.py | 2 +- .../optimizer/fusion/constant_fuse_pass.py | 2 + .../optimizer/fusion/dropout_fuse_pass.py | 2 + 7 files changed, 50 insertions(+), 5 deletions(-) diff --git a/x2paddle/core/program.py b/x2paddle/core/program.py index 88b9df3..9f35a8b 100644 --- a/x2paddle/core/program.py +++ b/x2paddle/core/program.py @@ -1,4 +1,4 @@ -# Copyright (c) 2019 PaddlePaddle Authors. All Rights Reserved. +# Copyright (c) 2020 PaddlePaddle Authors. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License" # you may not use this file except in compliance with the License. diff --git a/x2paddle/decoder/pytorch_decoder.py b/x2paddle/decoder/pytorch_decoder.py index 9befec3..c1a626d 100644 --- a/x2paddle/decoder/pytorch_decoder.py +++ b/x2paddle/decoder/pytorch_decoder.py @@ -1,4 +1,4 @@ -# Copyright (c) 2019 PaddlePaddle Authors. All Rights Reserved. +# Copyright (c) 2020 PaddlePaddle Authors. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License" # you may not use this file except in compliance with the License. diff --git a/x2paddle/op_mapper/pytorch2paddle/aten.py b/x2paddle/op_mapper/pytorch2paddle/aten.py index f5289fd..565b289 100644 --- a/x2paddle/op_mapper/pytorch2paddle/aten.py +++ b/x2paddle/op_mapper/pytorch2paddle/aten.py @@ -1044,7 +1044,10 @@ def aten_embedding(mapper, graph, node): # 获取当前节点输入的list current_inputs = list(layer_inputs.values()) # 处理输入2,即%45 - layer_attrs["padding_idx"] = mapper.attrs[inputs_name[2]] + if mapper.attrs[inputs_name[2]] == -1: + layer_attrs["padding_idx"] = None + else: + layer_attrs["padding_idx"] = mapper.attrs[inputs_name[2]] # 处理输入4,即%46 # layer_attrs["sparse"] = mapper.attrs[inputs_name[4]] layer_attrs["is_sparse"] = mapper.attrs[inputs_name[4]] @@ -2933,6 +2936,44 @@ def aten_softplus(mapper, graph, node): return current_inputs, current_outputs +def aten_squeeze(mapper, graph, node): + """ 构造删除位数为1的维度的PaddleLayer。 + + TorchScript示例: + %12 : Tensor = aten::squeeze(%start_logits.1, %4) + 参数含义: + %12 (Tensor): 输出,删除维度后的Tensor。 + %start_logits.1 (Tensor): 需要删除维度的Tensor。 + %4 (int): 维度。 + """ + output_name = mapper._get_outputs_name(node)[0] + layer_outputs = [output_name] + layer_inputs = {} + layer_attrs = {} + inputs_name, inputs_node = mapper._get_inputs_name(node) + # 获取当前节点输出的list + current_outputs = [output_name] + # 处理输入0,即%start_logits.1 + mapper._check_input(graph, inputs_node[0], inputs_name[0], current_outputs) + layer_inputs["x"] = inputs_name[0] + # 获取当前节点输入的list + current_inputs = list(layer_inputs.values()) + # 处理输入1,即%4 + if inputs_name[1] in mapper.attrs: + layer_attrs["axis"] = mapper.attrs[inputs_name[1]] + else: + mapper._check_input(graph, inputs_node[1], inputs_name[1], + current_outputs) + layer_inputs["axis"] = inputs_name[1] + current_inputs.append(inputs_name[1]) + graph.add_layer( + "paddle.tensor.squeeze", + inputs=layer_inputs, + outputs=layer_outputs, + **layer_attrs) + return current_inputs, current_outputs + + def aten_stack(mapper, graph, node): """ 构造堆叠Tensor的PaddleLayer。 diff --git a/x2paddle/op_mapper/pytorch2paddle/prim2code.py b/x2paddle/op_mapper/pytorch2paddle/prim2code.py index 04bf22d..d16197f 100644 --- a/x2paddle/op_mapper/pytorch2paddle/prim2code.py +++ b/x2paddle/op_mapper/pytorch2paddle/prim2code.py @@ -1,4 +1,4 @@ -# Copyright (c) 2019 PaddlePaddle Authors. All Rights Reserved. +# Copyright (c) 2020 PaddlePaddle Authors. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License" # you may not use this file except in compliance with the License. diff --git a/x2paddle/op_mapper/pytorch2paddle/pytorch_op_mapper.py b/x2paddle/op_mapper/pytorch2paddle/pytorch_op_mapper.py index 26564e8..2d63411 100644 --- a/x2paddle/op_mapper/pytorch2paddle/pytorch_op_mapper.py +++ b/x2paddle/op_mapper/pytorch2paddle/pytorch_op_mapper.py @@ -1,4 +1,4 @@ -# Copyright (c) 2019 PaddlePaddle Authors. All Rights Reserved. +# Copyright (c) 2020 PaddlePaddle Authors. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License" # you may not use this file except in compliance with the License. diff --git a/x2paddle/optimizer/fusion/constant_fuse_pass.py b/x2paddle/optimizer/fusion/constant_fuse_pass.py index 26b24c4..62d3552 100644 --- a/x2paddle/optimizer/fusion/constant_fuse_pass.py +++ b/x2paddle/optimizer/fusion/constant_fuse_pass.py @@ -1,3 +1,5 @@ +# Copyright (c) 2020 PaddlePaddle Authors. All Rights Reserved. +# # Licensed under the Apache License, Version 2.0 (the "License" # you may not use this file except in compliance with the License. # You may obtain a copy of the License at diff --git a/x2paddle/optimizer/fusion/dropout_fuse_pass.py b/x2paddle/optimizer/fusion/dropout_fuse_pass.py index 52104ac..e004b1d 100644 --- a/x2paddle/optimizer/fusion/dropout_fuse_pass.py +++ b/x2paddle/optimizer/fusion/dropout_fuse_pass.py @@ -1,3 +1,5 @@ +# Copyright (c) 2020 PaddlePaddle Authors. All Rights Reserved. +# # Licensed under the Apache License, Version 2.0 (the "License" # you may not use this file except in compliance with the License. # You may obtain a copy of the License at -- GitLab