@@ -39,8 +39,8 @@ TEST_F(TransformationTestsF, OptimizeSubsequentReshapes1) {
39
39
}
40
40
{
41
41
auto input = std::make_shared<ov::op::v0::Parameter>(ov::element::i64, ov::PartialShape{ -1 , 1 , 4096 });
42
- auto reshape_pattern = std::make_shared<ov::op::v0::Constant>(ov::element::i32, ov::Shape{2 }, std::vector<int32_t >{ 0 , 4096 });
43
- auto reshape = std::make_shared<ov::op::v1::Reshape>(input, reshape_pattern, true );
42
+ auto reshape_pattern = std::make_shared<ov::op::v0::Constant>(ov::element::i32, ov::Shape{2 }, std::vector<int32_t >{ - 1 , 4096 });
43
+ auto reshape = std::make_shared<ov::op::v1::Reshape>(input, reshape_pattern, false );
44
44
auto result = std::make_shared<ov::op::v0::Result>(reshape);
45
45
46
46
model_ref = std::make_shared<ov::Model>(ov::NodeVector{ result }, ov::ParameterVector{ input });
@@ -63,8 +63,8 @@ TEST_F(TransformationTestsF, OptimizeSubsequentReshapes2) {
63
63
}
64
64
{
65
65
auto input = std::make_shared<ov::op::v0::Parameter>(ov::element::i64, ov::PartialShape{ -1 , 1 , 4096 });
66
- auto reshape_pattern = std::make_shared<ov::op::v0::Constant>(ov::element::i32, ov::Shape{4 }, std::vector<int32_t >{ 0 , 32 , 1 , 128 });
67
- auto reshape = std::make_shared<ov::op::v1::Reshape>(input, reshape_pattern, true );
66
+ auto reshape_pattern = std::make_shared<ov::op::v0::Constant>(ov::element::i32, ov::Shape{4 }, std::vector<int32_t >{ - 1 , 32 , 1 , 128 });
67
+ auto reshape = std::make_shared<ov::op::v1::Reshape>(input, reshape_pattern, false );
68
68
auto result = std::make_shared<ov::op::v0::Result>(reshape);
69
69
70
70
model_ref = std::make_shared<ov::Model>(ov::NodeVector{ result }, ov::ParameterVector{ input });
@@ -87,8 +87,56 @@ TEST_F(TransformationTestsF, OptimizeSubsequentReshapes3) {
87
87
}
88
88
{
89
89
auto input = std::make_shared<ov::op::v0::Parameter>(ov::element::i64, ov::PartialShape{ -1 , 32 , 1 , 128 });
90
- auto reshape_pattern = std::make_shared<ov::op::v0::Constant>(ov::element::i32, ov::Shape{2 }, std::vector<int32_t >{ 0 , 4096 });
91
- auto reshape = std::make_shared<ov::op::v1::Reshape>(input, reshape_pattern, true );
90
+ auto reshape_pattern = std::make_shared<ov::op::v0::Constant>(ov::element::i32, ov::Shape{2 }, std::vector<int32_t >{ -1 , 4096 });
91
+ auto reshape = std::make_shared<ov::op::v1::Reshape>(input, reshape_pattern, false );
92
+ auto result = std::make_shared<ov::op::v0::Result>(reshape);
93
+
94
+ model_ref = std::make_shared<ov::Model>(ov::NodeVector{ result }, ov::ParameterVector{ input });
95
+ }
96
+ comparator.enable (FunctionsComparator::CmpValues::ATTRIBUTES);
97
+ }
98
+
99
+ TEST_F (TransformationTestsF, OptimizeSubsequentReshapes4) {
100
+ {
101
+ auto input = std::make_shared<ov::op::v0::Parameter>(ov::element::i64, ov::PartialShape{ 1 , -1 , 256 });
102
+ auto first_reshape_pattern = std::make_shared<ov::op::v0::Constant>(ov::element::i32, ov::Shape{4 }, std::vector<int32_t >{ 0 , 0 , 2 , 128 });
103
+ auto first_reshape = std::make_shared<ov::op::v1::Reshape>(input, first_reshape_pattern, true );
104
+
105
+ auto second_reshape_pattern = std::make_shared<ov::op::v0::Constant>(ov::element::i32, ov::Shape{2 }, std::vector<int32_t >{ -1 , 256 });
106
+ auto second_reshape = std::make_shared<ov::op::v1::Reshape>(first_reshape, second_reshape_pattern, false );
107
+ auto result = std::make_shared<ov::op::v0::Result>(second_reshape);
108
+
109
+ model = std::make_shared<ov::Model>(ov::NodeVector{ result }, ov::ParameterVector{ input });
110
+ manager.register_pass <OptimizeSubsequentReshapes>();
111
+ }
112
+ {
113
+ auto input = std::make_shared<ov::op::v0::Parameter>(ov::element::i64, ov::PartialShape{ 1 , -1 , 256 });
114
+ auto reshape_pattern = std::make_shared<ov::op::v0::Constant>(ov::element::i32, ov::Shape{2 }, std::vector<int32_t >{ -1 , 256 });
115
+ auto reshape = std::make_shared<ov::op::v1::Reshape>(input, reshape_pattern, false );
116
+ auto result = std::make_shared<ov::op::v0::Result>(reshape);
117
+
118
+ model_ref = std::make_shared<ov::Model>(ov::NodeVector{ result }, ov::ParameterVector{ input });
119
+ }
120
+ comparator.enable (FunctionsComparator::CmpValues::ATTRIBUTES);
121
+ }
122
+
123
+ TEST_F (TransformationTestsF, OptimizeSubsequentReshapes5) {
124
+ {
125
+ auto input = std::make_shared<ov::op::v0::Parameter>(ov::element::i64, ov::PartialShape{ 1 , 256 , -1 });
126
+ auto first_reshape_pattern = std::make_shared<ov::op::v0::Constant>(ov::element::i32, ov::Shape{4 }, std::vector<int32_t >{ 0 , 64 , 4 , -1 });
127
+ auto first_reshape = std::make_shared<ov::op::v1::Reshape>(input, first_reshape_pattern, true );
128
+
129
+ auto second_reshape_pattern = std::make_shared<ov::op::v0::Constant>(ov::element::i32, ov::Shape{4 }, std::vector<int32_t >{ -1 , 32 , 2 , 4 });
130
+ auto second_reshape = std::make_shared<ov::op::v1::Reshape>(first_reshape, second_reshape_pattern, true );
131
+ auto result = std::make_shared<ov::op::v0::Result>(second_reshape);
132
+
133
+ model = std::make_shared<ov::Model>(ov::NodeVector{ result }, ov::ParameterVector{ input });
134
+ manager.register_pass <OptimizeSubsequentReshapes>();
135
+ }
136
+ {
137
+ auto input = std::make_shared<ov::op::v0::Parameter>(ov::element::i64, ov::PartialShape{ 1 , 256 , -1 });
138
+ auto reshape_pattern = std::make_shared<ov::op::v0::Constant>(ov::element::i32, ov::Shape{4 }, std::vector<int32_t >{ -1 , 32 , 2 , 4 });
139
+ auto reshape = std::make_shared<ov::op::v1::Reshape>(input, reshape_pattern, false );
92
140
auto result = std::make_shared<ov::op::v0::Result>(reshape);
93
141
94
142
model_ref = std::make_shared<ov::Model>(ov::NodeVector{ result }, ov::ParameterVector{ input });
0 commit comments