提交 09199986 编写于 作者: A Alexander Alekhin

Merge branch 4.x

BXJ0x?h>z?j@$ ?.z8s?bhdӽ9>(>%?
\ No newline at end of file
BWJ0^B?0= B>]ת>=?RiJ>Z/d#S'?K]?=
\ No newline at end of file
BBJ0C@(Hm;= ?2??>>Ec! >
\ No newline at end of file
BXJ0x?h>z?j@$ ?.z8s?bhdӽ9>(>%?
\ No newline at end of file
BXJ0x?h>z?j@$ ?.z8s?bhdӽ9>(>%?
\ No newline at end of file
BXJ0x?h>z?j@$ ?.z8s?bhdӽ9>(>%?
\ No newline at end of file
BWJ0*z??Oƾmǚ6&õgڿ?xFKྙ[ G?
\ No newline at end of file
BBJ04οYL=e> kQN>.:=ݚ>b"6
\ No newline at end of file
BXJxx?h>z?j@$ ?.z8s?bhdӽ9>(>%?^B?0= B>]ת>=?RiJ>Z/d#S'?K]?=C@(Hm;= ?2??
\ No newline at end of file
BWJx>>Ec! >*z??Oƾmǚ6&õgڿ?xFKྙ[ G?4οYL=e> kQN>.:=ݚ>b"6
\ No newline at end of file
BBJx^&,Z[*Pܿ35>;;Wп>DhT=:?>ב?>O/^~/Ѓ f=#f?Ok>Ŀ ??@?7>8lF?
\ No newline at end of file
BXJxx?h>z?j@$ ?.z8s?bhdӽ9>(>%?^B?0= B>]ת>=?RiJ>Z/d#S'?K]?=C@(Hm;= ?2??
\ No newline at end of file
BWJ<A‹N?A>zSzɽ)5?2;A)?> s?N=ۜ
\ No newline at end of file
BBJ<,(X?ſ\?MF>gk?E0>@Y[?&b|.?AMV0;t0<
\ No newline at end of file
BXJxx?h>z?j@$ ?.z8s?bhdӽ9>(>%?^B?0= B>]ת>=?RiJ>Z/d#S'?K]?=C@(Hm;= ?2??
\ No newline at end of file
BXJxx?h>z?j@$ ?.z8s?bhdӽ9>(>%?^B?0= B>]ת>=?RiJ>Z/d#S'?K]?=C@(Hm;= ?2??
\ No newline at end of file
BXJxx?h>z?j@$ ?.z8s?bhdӽ9>(>%?^B?0= B>]ת>=?RiJ>Z/d#S'?K]?=C@(Hm;= ?2??
\ No newline at end of file
BBJ<ש/E?+R?ur
@Y?gu?]'?#?jοGǼ<GR>ɽ
\ No newline at end of file
BXJxx?h>z?j@$ ?.z8s?bhdӽ9>(>%?^B?0= B>]ת>=?RiJ>Z/d#S'?K]?=C@(Hm;= ?2??
\ No newline at end of file
BWJx5mξy? FU>z?u>4?G,<h?>>> ?^Ab*x?(?Ӿ3Y?"??, ?g?Iy\}?7mM?r?N4?l?
\ No newline at end of file
BBJxٺ>*>ǩ?319r޾?,?֞>8E<
?,`="*-?u?ELUd>q鋿᾿>u*>l"?r@hq?id?oT
\ No newline at end of file
BXJx?h>z?j@$ ?.z8s?bhdӽ9>(>%?^B?0= B>]ת>=?RiJ>Z/d#S'?K]?=C@(Hm;= ?2??>>Ec! >*z??Oƾmǚ6&õgڿ?xFKྙ[ G?4οYL=e> kQN>.:=ݚ>b"6^&,Z[*Pܿ35>;;Wп>DhT=:?>ב?>O/^~/Ѓ f=#f?Ok>Ŀ ??@?7>8lF?5mξy? FU>z?u>4?G,<h?>>> ?^Ab*x?(?Ӿ3Y?"??, ?g?Iy\}?7mM?r?N4?l?
\ No newline at end of file
BBJ/#6g˾ x6Kֿ?0?8P˳d?f,\>1?1?9ʿA?, PW-OA>?=y,y=O>)r1V[?P>@'
+Ⱦ> @$c?.*1?>1?ʅ?0?梦?Y 0I_s@f6 ?$=t<?̾w>F<=?) .*?wȪ=a1?8g#?; ;žh;=,Ⓘk|۽78O Ph>d8$䟾vs!(n@=g4yq?G??Y/E?g/*7?>W/)l?Ĉ?/" 0fv >?>C ?0&lr?
\ No newline at end of file
BXJx?h>z?j@$ ?.z8s?bhdӽ9>(>%?^B?0= B>]ת>=?RiJ>Z/d#S'?K]?=C@(Hm;= ?2??>>Ec! >*z??Oƾmǚ6&õgڿ?xFKྙ[ G?4οYL=e> kQN>.:=ݚ>b"6^&,Z[*Pܿ35>;;Wп>DhT=:?>ב?>O/^~/Ѓ f=#f?Ok>Ŀ ??@?7>8lF?5mξy? FU>z?u>4?G,<h?>>> ?^Ab*x?(?Ӿ3Y?"??, ?g?Iy\}?7mM?r?N4?l?
\ No newline at end of file
BXJx?h>z?j@$ ?.z8s?bhdӽ9>(>%?^B?0= B>]ת>=?RiJ>Z/d#S'?K]?=C@(Hm;= ?2??>>Ec! >*z??Oƾmǚ6&õgڿ?xFKྙ[ G?4οYL=e> kQN>.:=ݚ>b"6^&,Z[*Pܿ35>;;Wп>DhT=:?>ב?>O/^~/Ѓ f=#f?Ok>Ŀ ??@?7>8lF?5mξy? FU>z?u>4?G,<h?>>> ?^Ab*x?(?Ӿ3Y?"??, ?g?Iy\}?7mM?r?N4?l?
\ No newline at end of file
BWJP/Uu>Vx?L@>E2xA?
?wb=L%(;-z߾LҿϾw <
\ No newline at end of file
BBJPM?0>C<Ǯ=h>~$S뽥>un]?j?ۡ!A!w`
3?"ևc-[oP=N
\ No newline at end of file
BXJx?h>z?j@$ ?.z8s?bhdӽ9>(>%?^B?0= B>]ת>=?RiJ>Z/d#S'?K]?=C@(Hm;= ?2??>>Ec! >*z??Oƾmǚ6&õgڿ?xFKྙ[ G?4οYL=e> kQN>.:=ݚ>b"6^&,Z[*Pܿ35>;;Wп>DhT=:?>ב?>O/^~/Ѓ f=#f?Ok>Ŀ ??@?7>8lF?5mξy? FU>z?u>4?G,<h?>>> ?^Ab*x?(?Ӿ3Y?"??, ?g?Iy\}?7mM?r?N4?l?
\ No newline at end of file
BWJ^;pV??BR>r8=
\ No newline at end of file
BBJj@F焾I>GT?
\ No newline at end of file
BXJx?h>z?j@$ ?.z8s?bhdӽ9>(>%?^B?0= B>]ת>=?RiJ>Z/d#S'?K]?=C@(Hm;= ?2??>>Ec! >*z??Oƾmǚ6&õgڿ?xFKྙ[ G?4οYL=e> kQN>.:=ݚ>b"6^&,Z[*Pܿ35>;;Wп>DhT=:?>ב?>O/^~/Ѓ f=#f?Ok>Ŀ ??@?7>8lF?5mξy? FU>z?u>4?G,<h?>>> ?^Ab*x?(?Ӿ3Y?"??, ?g?Iy\}?7mM?r?N4?l?
\ No newline at end of file
BXJx?h>z?j@$ ?.z8s?bhdӽ9>(>%?^B?0= B>]ת>=?RiJ>Z/d#S'?K]?=C@(Hm;= ?2??>>Ec! >*z??Oƾmǚ6&õgڿ?xFKྙ[ G?4οYL=e> kQN>.:=ݚ>b"6^&,Z[*Pܿ35>;;Wп>DhT=:?>ב?>O/^~/Ѓ f=#f?Ok>Ŀ ??@?7>8lF?5mξy? FU>z?u>4?G,<h?>>> ?^Ab*x?(?Ӿ3Y?"??, ?g?Iy\}?7mM?r?N4?l?
\ No newline at end of file
BWJPɩ?rv!Tu=YCEcѷo?b֊>.M%a>@/n?%3x?F[Rſ &@Rξ
\ No newline at end of file
BBJP..>B>
ZO??ϣu??:GQY_g?Zw?Zb"a>p
\ No newline at end of file
BXJx?h>z?j@$ ?.z8s?bhdӽ9>(>%?^B?0= B>]ת>=?RiJ>Z/d#S'?K]?=C@(Hm;= ?2??>>Ec! >*z??Oƾmǚ6&õgڿ?xFKྙ[ G?4οYL=e> kQN>.:=ݚ>b"6^&,Z[*Pܿ35>;;Wп>DhT=:?>ב?>O/^~/Ѓ f=#f?Ok>Ŀ ??@?7>8lF?5mξy? FU>z?u>4?G,<h?>>> ?^Ab*x?(?Ӿ3Y?"??, ?g?Iy\}?7mM?r?N4?l?
\ No newline at end of file
BWJƾV<>^žͿJcCn%?h P?V?*_P"@Zb?6l
ս|c?.DH?,)<"T8?>q>TE?AԿy>z?msGR?+?5r"=Hȿ1A>9?^<P8?,Fн<h?N[<KkDaE>躾9Jto?п}
\ No newline at end of file
BXJx?h>z?j@$ ?.z8s?bhdӽ9>(>%?^B?0= B>]ת>=?RiJ>Z/d#S'?K]?=C@(Hm;= ?2??>>Ec! >*z??Oƾmǚ6&õgڿ?xFKྙ[ G?4οYL=e> kQN>.:=ݚ>b"6^&,Z[*Pܿ35>;;Wп>DhT=:?>ב?>O/^~/Ѓ f=#f?Ok>Ŀ ??@?7>8lF?5mξy? FU>z?u>4?G,<h?>>> ?^Ab*x?(?Ӿ3Y?"??, ?g?Iy\}?7mM?r?N4?l?
\ No newline at end of file
BXJx?h>z?j@$ ?.z8s?bhdӽ9>(>%?^B?0= B>]ת>=?RiJ>Z/d#S'?K]?=C@(Hm;= ?2??>>Ec! >*z??Oƾmǚ6&õgڿ?xFKྙ[ G?4οYL=e> kQN>.:=ݚ>b"6^&,Z[*Pܿ35>;;Wп>DhT=:?>ב?>O/^~/Ѓ f=#f?Ok>Ŀ ??@?7>8lF?5mξy? FU>z?u>4?G,<h?>>> ?^Ab*x?(?Ӿ3Y?"??, ?g?Iy\}?7mM?r?N4?l?
\ No newline at end of file
BYJ0F@h >^>V@./?d><??@iWҾ
\ No newline at end of file
BYJ0U`Ӡ=p-ܿ69p=?U?GU
\ No newline at end of file
BYJ0ׄa*~$(ѽ^2俽ż?0;k ?>m>>m>
\ No newline at end of file
BYJxF?C?ſĢt[I@>4x @l%?u?N>Vf k{?ӀW?@{>LV?>{??g䉎?|>w@48?>&L>߿??8fz 
\ No newline at end of file
BYJx+j:?׿7;><>@ .O>?4(@µ=>a>p)" @,?ص=
=?@0#RdX=?|‿
\ No newline at end of file
BYJxa3?f?ֿ
@3&@?<?&*>m<VAP>c=mÁ?qJuc3Vk!?A?LkQ?͚F@v"A??J@=jg9r>
\ No newline at end of file
BYJxĽe>ԙ8@`yaܾbh?]?ں>t+9Fz| #>eC>ob>2>2Dl?;0vįtp?о?8>
\ No newline at end of file
......@@ -709,6 +709,21 @@ model = DepthWiseAdd()
model.eval()
save_data_and_model("depthwiseconv_add", input, model)
class DepthWiseStride2(nn.Module):
def __init__(self):
super(DepthWiseStride2, self).__init__()
self.dconv1 = nn.Conv2d(8, 8, kernel_size=3, stride=2, padding=1, groups=8)
def forward(self, x):
a = self.dconv1(x)
return a
input = Variable(torch.randn(1, 8, 6, 6))
model = DepthWiseStride2()
model.eval()
save_data_and_model("depthwise_stride2", input, model)
class Clip(nn.Module):
def __init__(self):
......@@ -2461,3 +2476,100 @@ tile=dict(
)
generate_onnx_single_operator(tile, "tile")
def gen_layer_norm_expanded(input_shape=[1, 4, 5], axis=-1, constant_as_initializers=False):
X = onnx.helper.make_tensor_value_info("X", onnx.TensorProto.FLOAT, input_shape)
Y = onnx.helper.make_tensor_value_info("Y", onnx.TensorProto.FLOAT, input_shape)
nodes = []
initializers = []
class NodeNameManager:
def __init__(self):
self.name_dict = dict()
def get_name(self, op_type):
if op_type in self.name_dict:
self.name_dict[op_type] += 1
else:
self.name_dict[op_type] = 0
return "{}.{}".format(op_type, self.name_dict[op_type])
node_name_manager = NodeNameManager()
def make_node(op_type, inputs=None, outputs=None, *args, **kwargs):
nonlocal node_name_manager, nodes
node_name = node_name_manager.get_name(op_type)
if inputs is None:
inputs = [nodes[-1].output[0]]
if outputs is None:
outputs = ["{}.out".format(node_name)]
return [onnx.helper.make_node(op_type, inputs, outputs, *args, **kwargs)]
def make_node_with_constant(op_type, constant_value, inputs=None, outputs=None, is_constant_scalar=False):
nonlocal node_name_manager, nodes, initializers, constant_as_initializers
node_name = node_name_manager.get_name(op_type)
constant_shape = [] if is_constant_scalar else constant_value.shape
tensor = onnx.helper.make_tensor(
"Const.{}.tensor".format(node_name),
onnx.mapping.NP_TYPE_TO_TENSOR_TYPE[constant_value.dtype],
constant_shape,
vals=constant_value
)
if inputs is None:
inputs = [nodes[-1].output[0]]
if outputs is None:
outputs = ["{}.out".format(node_name)]
if constant_as_initializers:
inputs = inputs + [tensor.name]
initializers += [tensor]
return [onnx.helper.make_node(op_type, inputs, outputs, node_name)]
else:
node_const = onnx.helper.make_node("Constant", [], ["Const.{}.out".format(node_name)], value=tensor)
inputs = inputs + [node_const.output[0]]
return [node_const, onnx.helper.make_node(op_type, inputs, outputs, node_name)]
# -> ReduceMean -> -> Pow(2) -> ReduceMean -> Add(epsilon) -> Sqrt ->
# x Sub Div -> Mul(weight) -> Add(bias)
# ---------------> ------------------------------------------------->
nodes += make_node("ReduceMean", inputs=["X"], axes=np.array([axis], dtype=np.int64))
nodes += make_node("Sub", inputs=["X", nodes[-1].output[0]])
node_sub_0_outname = nodes[-1].output[0]
nodes += make_node_with_constant("Pow", np.array([2], dtype=np.float32), is_constant_scalar=True)
nodes += make_node("ReduceMean", axes=np.array([axis], dtype=np.int64))
nodes += make_node_with_constant("Add", np.array([1e-5], dtype=np.float32), is_constant_scalar=True)
nodes += make_node("Sqrt")
nodes += make_node("Div", inputs=[node_sub_0_outname, nodes[-1].output[0]])
nodes += make_node_with_constant("Mul", np.random.rand(*input_shape[axis:]).astype(np.float32))
nodes += make_node_with_constant("Add", np.random.rand(*input_shape[axis:]).astype(np.float32), outputs=["Y"])
graph_name = "layer_norm_expanded"
if constant_as_initializers:
graph_name += "with_initializers"
graph_def = onnx.helper.make_graph(
nodes,
graph_name,
[X],
[Y],
initializers
)
model_def = onnx.helper.make_model(graph_def, producer_name="github.com/opencv/opencv_extra")
onnx.checker.check_model(model_def)
shape_inferred_model_def = onnx.shape_inference.infer_shapes(model_def)
onnx.save(shape_inferred_model_def, "models/{}.onnx".format(graph_name))
# infer & save data
input_blob = np.random.rand(*input_shape).astype(np.float32)
import onnxruntime as ort
sess = ort.InferenceSession("models/{}.onnx".format(graph_name))
output_blobs = sess.run(["Y"], {"X": input_blob})
np.save("data/input_{}.npy".format(graph_name), input_blob)
np.save("data/output_{}.npy".format(graph_name), output_blobs[0])
gen_layer_norm_expanded()
gen_layer_norm_expanded(constant_as_initializers=True)
7backend-test modified by github.com/opencv/opencv_extra:
-
X
W
BY"LayerNormalization*
axis!test_layer_normalization_2d_axis1Z
X


Z
W

Z
B

b
Y


B
\ No newline at end of file
7backend-test modified by github.com/opencv/opencv_extra:
6
X
W
BY"LayerNormalization*
axis+test_layer_normalization_2d_axis_negative_1Z
X


Z
W

Z
B

b
Y


B
\ No newline at end of file
7backend-test modified by github.com/opencv/opencv_extra:
6
X
W
BY"LayerNormalization*
axis+test_layer_normalization_2d_axis_negative_2Z
X


Z
W


Z
B


b
Y


B
\ No newline at end of file
7backend-test modified by github.com/opencv/opencv_extra:
@
X
W
BY"LayerNormalization*
axis*
epsilon=)test_layer_normalization_3d_axis1_epsilonZ
X



Z
W


Z
B


b
Y



B
\ No newline at end of file
7backend-test modified by github.com/opencv/opencv_extra:
@
X
W
BY"LayerNormalization*
axis*
epsilon=)test_layer_normalization_3d_axis2_epsilonZ
X



Z
W

Z
B

b
Y



B
\ No newline at end of file
7backend-test modified by github.com/opencv/opencv_extra:
I
X
W
BY"LayerNormalization*
axis*
epsilon=3test_layer_normalization_3d_axis_negative_1_epsilonZ
X



Z
W

Z
B

b
Y



B
\ No newline at end of file
7backend-test modified by github.com/opencv/opencv_extra:
I
X
W
BY"LayerNormalization*
axis*
epsilon=3test_layer_normalization_3d_axis_negative_2_epsilonZ
X



Z
W


Z
B


b
Y



B
\ No newline at end of file
7backend-test modified by github.com/opencv/opencv_extra:
I
X
W
BY"LayerNormalization*
axis*
epsilon=3test_layer_normalization_3d_axis_negative_3_epsilonZ
X



Z
W



Z
B



b
Y



B
\ No newline at end of file
7backend-test modified by github.com/opencv/opencv_extra:
-
X
W
BY"LayerNormalization*
axis!test_layer_normalization_4d_axis1Z
X




Z
W



Z
B



b
Y




B
\ No newline at end of file
7backend-test modified by github.com/opencv/opencv_extra:
-
X
W
BY"LayerNormalization*
axis!test_layer_normalization_4d_axis2Z
X




Z
W


Z
B


b
Y




B
\ No newline at end of file
7backend-test modified by github.com/opencv/opencv_extra:
-
X
W
BY"LayerNormalization*
axis!test_layer_normalization_4d_axis3Z
X




Z
W

Z
B

b
Y




B
\ No newline at end of file
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册