summaryrefslogtreecommitdiff
path: root/res/TensorFlowTests
diff options
context:
space:
mode:
authorChunseok Lee <chunseok.lee@samsung.com>2020-12-14 14:43:04 +0900
committerChunseok Lee <chunseok.lee@samsung.com>2020-12-14 14:43:04 +0900
commit12d88feea8573f8490629cf62fc342b152e57d65 (patch)
tree3c734cc4d629834d2d523f4575ef84cd64684e57 /res/TensorFlowTests
parentd6b371e095d737922187a518b8faba1ef6f3a2b1 (diff)
downloadnnfw-12d88feea8573f8490629cf62fc342b152e57d65.tar.gz
nnfw-12d88feea8573f8490629cf62fc342b152e57d65.tar.bz2
nnfw-12d88feea8573f8490629cf62fc342b152e57d65.zip
Imported Upstream version 1.11.0upstream/1.11.0
Diffstat (limited to 'res/TensorFlowTests')
-rw-r--r--res/TensorFlowTests/NET_0003/test.pbtxt6
-rwxr-xr-x[-rw-r--r--]res/TensorFlowTests/NET_0003/test.py0
-rwxr-xr-x[-rw-r--r--]res/TensorFlowTests/NET_0004/test.py0
-rw-r--r--res/TensorFlowTests/NET_0007/test.pbtxt6
-rw-r--r--res/TensorFlowTests/NET_0008/test.manifest1
-rw-r--r--res/TensorFlowTests/NET_0008/test.pbtxt6
-rw-r--r--res/TensorFlowTests/NET_0009/test.manifest1
-rw-r--r--res/TensorFlowTests/NET_0009/test.pbtxt6
-rw-r--r--res/TensorFlowTests/NET_0010/test.manifest1
-rw-r--r--res/TensorFlowTests/NET_0025/circle_1.0_rel_requirement.rule8
-rw-r--r--res/TensorFlowTests/NET_0025/test.manifest1
-rw-r--r--res/TensorFlowTests/NET_0025/test.pbtxt6
-rw-r--r--res/TensorFlowTests/NET_0025/tflite_1.0_rel_requirement.rule8
-rw-r--r--res/TensorFlowTests/NET_0026/test.pbtxt12
-rw-r--r--res/TensorFlowTests/NET_0027/test.pbtxt18
-rw-r--r--res/TensorFlowTests/NET_0028/circle_1.0_rel_requirement.rule6
-rw-r--r--res/TensorFlowTests/NET_0028/test.manifest1
-rw-r--r--res/TensorFlowTests/NET_0029/test.info5
-rw-r--r--res/TensorFlowTests/NET_0029/test.manifest1
-rw-r--r--res/TensorFlowTests/NET_0029/test.pbtxt254
-rw-r--r--res/TensorFlowTests/NET_0030/circle_1.0_rel_requirement.rule7
-rw-r--r--res/TensorFlowTests/NET_0030/test.info5
-rw-r--r--res/TensorFlowTests/NET_0030/test.manifest1
-rw-r--r--res/TensorFlowTests/NET_0030/test.pbtxt209
-rw-r--r--res/TensorFlowTests/NET_0031/test.info6
-rw-r--r--res/TensorFlowTests/NET_0031/test.manifest1
-rw-r--r--res/TensorFlowTests/NET_0031/test.pbtxt329
-rw-r--r--res/TensorFlowTests/NET_0032/test.info7
-rw-r--r--res/TensorFlowTests/NET_0032/test.manifest1
-rw-r--r--res/TensorFlowTests/NET_0032/test.pbtxt329
-rw-r--r--res/TensorFlowTests/NET_0033/test.info7
-rw-r--r--res/TensorFlowTests/NET_0033/test.manifest1
-rw-r--r--res/TensorFlowTests/NET_0033/test.pbtxt329
-rw-r--r--res/TensorFlowTests/NET_0034/test.info2
-rw-r--r--res/TensorFlowTests/NET_0034/test.manifest1
-rw-r--r--res/TensorFlowTests/NET_0034/test.pbtxt144
-rw-r--r--res/TensorFlowTests/NET_0035/test.info2
-rw-r--r--res/TensorFlowTests/NET_0035/test.manifest1
-rw-r--r--res/TensorFlowTests/NET_0035/test.pbtxt161
-rw-r--r--res/TensorFlowTests/NET_0036/test.info2
-rw-r--r--res/TensorFlowTests/NET_0036/test.manifest1
-rw-r--r--res/TensorFlowTests/NET_0036/test.pbtxt146
-rw-r--r--res/TensorFlowTests/NET_0037/test.info2
-rw-r--r--res/TensorFlowTests/NET_0037/test.manifest1
-rw-r--r--res/TensorFlowTests/NET_0037/test.pbtxt146
-rw-r--r--res/TensorFlowTests/NET_0038/test.info2
-rw-r--r--res/TensorFlowTests/NET_0038/test.manifest1
-rw-r--r--res/TensorFlowTests/NET_0038/test.pbtxt121
-rw-r--r--res/TensorFlowTests/NET_0039/test.info2
-rw-r--r--res/TensorFlowTests/NET_0039/test.manifest1
-rw-r--r--res/TensorFlowTests/NET_0039/test.pbtxt146
-rw-r--r--res/TensorFlowTests/NET_0040/test.info2
-rw-r--r--res/TensorFlowTests/NET_0040/test.manifest1
-rw-r--r--res/TensorFlowTests/NET_0040/test.pbtxt164
-rw-r--r--res/TensorFlowTests/NET_0041/test.info2
-rw-r--r--res/TensorFlowTests/NET_0041/test.manifest1
-rw-r--r--res/TensorFlowTests/NET_0041/test.pbtxt158
-rw-r--r--res/TensorFlowTests/NET_0042/test.info1
-rw-r--r--res/TensorFlowTests/NET_0042/test.manifest1
-rw-r--r--res/TensorFlowTests/NET_0042/test.pbtxt572
-rw-r--r--res/TensorFlowTests/NET_0043/test.info2
-rw-r--r--res/TensorFlowTests/NET_0043/test.manifest1
-rw-r--r--res/TensorFlowTests/NET_0043/test.pbtxt186
-rw-r--r--res/TensorFlowTests/NET_YUV_TO_RGB/circle.rule5
-rw-r--r--res/TensorFlowTests/NET_YUV_TO_RGB/test.info2
-rw-r--r--res/TensorFlowTests/NET_YUV_TO_RGB/test.manifest1
-rw-r--r--res/TensorFlowTests/NET_YUV_TO_RGB/test.pbtxt184
-rw-r--r--res/TensorFlowTests/NET_YUV_TO_RGB/test.py14
-rw-r--r--res/TensorFlowTests/REGRESSION_0001/test.info2
-rw-r--r--res/TensorFlowTests/REGRESSION_0001/test.manifest1
-rw-r--r--res/TensorFlowTests/REGRESSION_0001/test.pbtxt59
-rw-r--r--res/TensorFlowTests/REGRESSION_0002/test.info2
-rw-r--r--res/TensorFlowTests/REGRESSION_0002/test.manifest1
-rw-r--r--res/TensorFlowTests/REGRESSION_0002/test.pbtxt66
-rw-r--r--res/TensorFlowTests/UI_0000/test.info2
-rw-r--r--res/TensorFlowTests/UI_0000/test.manifest1
-rw-r--r--res/TensorFlowTests/UI_0000/test.pbtxt112
-rw-r--r--res/TensorFlowTests/UI_0001/test.info2
-rw-r--r--res/TensorFlowTests/UI_0001/test.manifest1
-rw-r--r--res/TensorFlowTests/UI_0001/test.pbtxt110
-rw-r--r--res/TensorFlowTests/UI_0002/test.info2
-rw-r--r--res/TensorFlowTests/UI_0002/test.manifest1
-rw-r--r--res/TensorFlowTests/UI_0002/test.pbtxt150
-rw-r--r--res/TensorFlowTests/UI_0003/test.info2
-rw-r--r--res/TensorFlowTests/UI_0003/test.manifest1
-rw-r--r--res/TensorFlowTests/UI_0003/test.pbtxt22
-rw-r--r--res/TensorFlowTests/UI_0004/test.info2
-rw-r--r--res/TensorFlowTests/UI_0004/test.manifest1
-rw-r--r--res/TensorFlowTests/UI_0004/test.pbtxt34
-rw-r--r--res/TensorFlowTests/UI_0005/test.info2
-rw-r--r--res/TensorFlowTests/UI_0005/test.manifest1
-rw-r--r--res/TensorFlowTests/UI_0005/test.pbtxt34
-rw-r--r--res/TensorFlowTests/UI_0006/test.info2
-rw-r--r--res/TensorFlowTests/UI_0006/test.manifest1
-rw-r--r--res/TensorFlowTests/UI_0006/test.pbtxt34
-rw-r--r--res/TensorFlowTests/UI_0007/test.info1
-rw-r--r--res/TensorFlowTests/UI_0007/test.manifest1
-rw-r--r--res/TensorFlowTests/UI_0007/test.pbtxt34
-rw-r--r--res/TensorFlowTests/UI_0008/test.info3
-rw-r--r--res/TensorFlowTests/UI_0008/test.manifest1
-rw-r--r--res/TensorFlowTests/UI_0008/test.pbtxt34
-rw-r--r--res/TensorFlowTests/UI_0009/test.info2
-rw-r--r--res/TensorFlowTests/UI_0009/test.manifest1
-rw-r--r--res/TensorFlowTests/UI_0009/test.pbtxt34
-rw-r--r--res/TensorFlowTests/UI_0010/test.info2
-rw-r--r--res/TensorFlowTests/UI_0010/test.manifest1
-rw-r--r--res/TensorFlowTests/UI_0010/test.pbtxt34
-rw-r--r--res/TensorFlowTests/UI_0011/test.info2
-rw-r--r--res/TensorFlowTests/UI_0011/test.manifest1
-rw-r--r--res/TensorFlowTests/UI_0011/test.pbtxt34
-rw-r--r--res/TensorFlowTests/UI_0012/test.info2
-rw-r--r--res/TensorFlowTests/UI_0012/test.manifest1
-rw-r--r--res/TensorFlowTests/UI_0012/test.pbtxt34
-rw-r--r--res/TensorFlowTests/UNIT_ConcatV2_000/test.info (renamed from res/TensorFlowTests/UNIT_Concat_000/test.info)0
-rw-r--r--res/TensorFlowTests/UNIT_ConcatV2_000/test.pbtxt (renamed from res/TensorFlowTests/UNIT_Concat_000/test.pbtxt)0
-rw-r--r--res/TensorFlowTests/UNIT_ConcatV2_001/test.info (renamed from res/TensorFlowTests/UNIT_Concat_001/test.info)0
-rw-r--r--res/TensorFlowTests/UNIT_ConcatV2_001/test.pbtxt (renamed from res/TensorFlowTests/UNIT_Concat_001/test.pbtxt)0
-rw-r--r--res/TensorFlowTests/UNIT_ConcatV2_002/test.info (renamed from res/TensorFlowTests/UNIT_Concat_002/test.info)0
-rw-r--r--res/TensorFlowTests/UNIT_ConcatV2_002/test.pbtxt (renamed from res/TensorFlowTests/UNIT_Concat_002/test.pbtxt)0
-rw-r--r--res/TensorFlowTests/UNIT_Conv2DBackpropInput_000/test.info2
-rw-r--r--res/TensorFlowTests/UNIT_Conv2DBackpropInput_000/test.manifest1
-rw-r--r--res/TensorFlowTests/UNIT_Conv2DBackpropInput_000/test.pbtxt136
-rw-r--r--res/TensorFlowTests/UNIT_Conv2DBackpropInput_002/test.info2
-rw-r--r--res/TensorFlowTests/UNIT_Conv2DBackpropInput_002/test.manifest1
-rw-r--r--res/TensorFlowTests/UNIT_Conv2DBackpropInput_002/test.pbtxt136
-rw-r--r--res/TensorFlowTests/UNIT_Conv2D_000/test.pbtxt4
-rw-r--r--res/TensorFlowTests/UNIT_Conv2D_001/test.info2
-rw-r--r--res/TensorFlowTests/UNIT_Conv2D_001/test.manifest1
-rw-r--r--res/TensorFlowTests/UNIT_Conv2D_001/test.pbtxt72
-rw-r--r--res/TensorFlowTests/UNIT_Conv2D_002/test.info3
-rw-r--r--res/TensorFlowTests/UNIT_Conv2D_002/test.manifest1
-rw-r--r--res/TensorFlowTests/UNIT_Conv2D_002/test.pbtxt72
-rw-r--r--res/TensorFlowTests/UNIT_DepthwiseConv2dNative_000/test.info (renamed from res/TensorFlowTests/UNIT_DepthwiseConv2D_000/test.info)0
-rw-r--r--res/TensorFlowTests/UNIT_DepthwiseConv2dNative_000/test.pbtxt (renamed from res/TensorFlowTests/UNIT_DepthwiseConv2D_000/test.pbtxt)0
-rw-r--r--res/TensorFlowTests/UNIT_DepthwiseConv2dNative_001/test.info (renamed from res/TensorFlowTests/UNIT_DepthwiseConv2D_001/test.info)0
-rw-r--r--res/TensorFlowTests/UNIT_DepthwiseConv2dNative_001/test.pbtxt (renamed from res/TensorFlowTests/UNIT_DepthwiseConv2D_001/test.pbtxt)0
-rw-r--r--res/TensorFlowTests/UNIT_Maximum_000/test.info3
-rw-r--r--res/TensorFlowTests/UNIT_Maximum_000/test.pbtxt70
-rw-r--r--res/TensorFlowTests/UNIT_Maximum_001/test.info3
-rw-r--r--res/TensorFlowTests/UNIT_Maximum_001/test.pbtxt70
-rw-r--r--res/TensorFlowTests/UNIT_Maximum_002/test.info3
-rw-r--r--res/TensorFlowTests/UNIT_Maximum_002/test.pbtxt61
-rw-r--r--res/TensorFlowTests/UNIT_MirrorPad_000/test.info2
-rw-r--r--res/TensorFlowTests/UNIT_MirrorPad_000/test.manifest1
-rw-r--r--res/TensorFlowTests/UNIT_MirrorPad_000/test.pbtxt87
-rw-r--r--res/TensorFlowTests/UNIT_Pack_000/test.info1
-rw-r--r--res/TensorFlowTests/UNIT_Pack_000/test.manifest1
-rw-r--r--res/TensorFlowTests/UNIT_Pack_000/test.pbtxt110
-rw-r--r--res/TensorFlowTests/UNIT_Pack_001/test.info1
-rw-r--r--res/TensorFlowTests/UNIT_Pack_001/test.manifest1
-rw-r--r--res/TensorFlowTests/UNIT_Pack_001/test.pbtxt78
-rw-r--r--res/TensorFlowTests/UNIT_Pack_002/test.info1
-rw-r--r--res/TensorFlowTests/UNIT_Pack_002/test.manifest1
-rw-r--r--res/TensorFlowTests/UNIT_Pack_002/test.pbtxt78
-rw-r--r--res/TensorFlowTests/UNIT_Pack_003/test.info1
-rw-r--r--res/TensorFlowTests/UNIT_Pack_003/test.manifest1
-rw-r--r--res/TensorFlowTests/UNIT_Pack_003/test.pbtxt78
-rw-r--r--res/TensorFlowTests/UNIT_Pack_004/test.info1
-rw-r--r--res/TensorFlowTests/UNIT_Pack_004/test.manifest1
-rw-r--r--res/TensorFlowTests/UNIT_Pack_004/test.pbtxt78
-rw-r--r--res/TensorFlowTests/UNIT_PadV2_000/test.info2
-rw-r--r--res/TensorFlowTests/UNIT_PadV2_000/test.manifest1
-rw-r--r--res/TensorFlowTests/UNIT_PadV2_000/test.pbtxt103
-rw-r--r--res/TensorFlowTests/UNIT_Pad_000/test.info2
-rw-r--r--res/TensorFlowTests/UNIT_Pad_000/test.manifest8
-rw-r--r--res/TensorFlowTests/UNIT_Pad_000/test.pbtxt81
-rw-r--r--res/TensorFlowTests/UNIT_Placeholder_001/test.info2
-rw-r--r--res/TensorFlowTests/UNIT_Placeholder_001/test.manifest1
-rw-r--r--res/TensorFlowTests/UNIT_Placeholder_001/test.pbtxt40
-rw-r--r--res/TensorFlowTests/UNIT_Placeholder_002/test.info2
-rw-r--r--res/TensorFlowTests/UNIT_Placeholder_002/test.pbtxt21
-rw-r--r--res/TensorFlowTests/UNIT_Placeholder_003/test.info2
-rw-r--r--res/TensorFlowTests/UNIT_Placeholder_003/test.pbtxt28
-rw-r--r--res/TensorFlowTests/UNIT_SquaredDifference_000/circle.rule7
-rw-r--r--res/TensorFlowTests/UNIT_StridedSlice_000/test.info1
-rw-r--r--res/TensorFlowTests/UNIT_StridedSlice_000/test.manifest1
-rw-r--r--res/TensorFlowTests/UNIT_StridedSlice_000/test.pbtxt149
-rwxr-xr-xres/TensorFlowTests/explain.sh47
178 files changed, 6227 insertions, 64 deletions
diff --git a/res/TensorFlowTests/NET_0003/test.pbtxt b/res/TensorFlowTests/NET_0003/test.pbtxt
index cf6b1a7db..3f146c033 100644
--- a/res/TensorFlowTests/NET_0003/test.pbtxt
+++ b/res/TensorFlowTests/NET_0003/test.pbtxt
@@ -106,12 +106,6 @@ node {
}
}
}
- attr {
- key: "use_cudnn_on_gpu"
- value {
- b: true
- }
- }
}
node {
name: "scale"
diff --git a/res/TensorFlowTests/NET_0003/test.py b/res/TensorFlowTests/NET_0003/test.py
index b5bad2dae..b5bad2dae 100644..100755
--- a/res/TensorFlowTests/NET_0003/test.py
+++ b/res/TensorFlowTests/NET_0003/test.py
diff --git a/res/TensorFlowTests/NET_0004/test.py b/res/TensorFlowTests/NET_0004/test.py
index a0c790d79..a0c790d79 100644..100755
--- a/res/TensorFlowTests/NET_0004/test.py
+++ b/res/TensorFlowTests/NET_0004/test.py
diff --git a/res/TensorFlowTests/NET_0007/test.pbtxt b/res/TensorFlowTests/NET_0007/test.pbtxt
index 10f9f35a5..6193c19b9 100644
--- a/res/TensorFlowTests/NET_0007/test.pbtxt
+++ b/res/TensorFlowTests/NET_0007/test.pbtxt
@@ -106,12 +106,6 @@ node {
}
}
}
- attr {
- key: "use_cudnn_on_gpu"
- value {
- b: true
- }
- }
}
node {
name: "mulparam"
diff --git a/res/TensorFlowTests/NET_0008/test.manifest b/res/TensorFlowTests/NET_0008/test.manifest
new file mode 100644
index 000000000..c7de34437
--- /dev/null
+++ b/res/TensorFlowTests/NET_0008/test.manifest
@@ -0,0 +1 @@
+SUMMARY: A simple network that has "Conv2D" + "Add"
diff --git a/res/TensorFlowTests/NET_0008/test.pbtxt b/res/TensorFlowTests/NET_0008/test.pbtxt
index bbaba7ded..dc1407ddf 100644
--- a/res/TensorFlowTests/NET_0008/test.pbtxt
+++ b/res/TensorFlowTests/NET_0008/test.pbtxt
@@ -106,12 +106,6 @@ node {
}
}
}
- attr {
- key: "use_cudnn_on_gpu"
- value {
- b: true
- }
- }
}
node {
name: "addparam"
diff --git a/res/TensorFlowTests/NET_0009/test.manifest b/res/TensorFlowTests/NET_0009/test.manifest
new file mode 100644
index 000000000..80ba28f80
--- /dev/null
+++ b/res/TensorFlowTests/NET_0009/test.manifest
@@ -0,0 +1 @@
+SUMMARY: A simple network that has "Conv2D" + "BiasAdd" + "Add"
diff --git a/res/TensorFlowTests/NET_0009/test.pbtxt b/res/TensorFlowTests/NET_0009/test.pbtxt
index a4eee69ae..719685c64 100644
--- a/res/TensorFlowTests/NET_0009/test.pbtxt
+++ b/res/TensorFlowTests/NET_0009/test.pbtxt
@@ -106,12 +106,6 @@ node {
}
}
}
- attr {
- key: "use_cudnn_on_gpu"
- value {
- b: true
- }
- }
}
node {
name: "BiasAdd/bias"
diff --git a/res/TensorFlowTests/NET_0010/test.manifest b/res/TensorFlowTests/NET_0010/test.manifest
new file mode 100644
index 000000000..74e63bcc8
--- /dev/null
+++ b/res/TensorFlowTests/NET_0010/test.manifest
@@ -0,0 +1 @@
+SUMMARY: "BiasAdd" + "Add"
diff --git a/res/TensorFlowTests/NET_0025/circle_1.0_rel_requirement.rule b/res/TensorFlowTests/NET_0025/circle_1.0_rel_requirement.rule
new file mode 100644
index 000000000..fc3f7af80
--- /dev/null
+++ b/res/TensorFlowTests/NET_0025/circle_1.0_rel_requirement.rule
@@ -0,0 +1,8 @@
+# tf2circle-dredd-pbtxt-test against CBR fusion
+
+RULE "VERIFY_FILE_FORMAT" $(verify_file_format) '=' 1 # 1 means verification is OK
+
+RULE "ALL_OP_COUNT" $(all_op_count) '=' 1
+RULE "OP_COUNT_CONV2D" $(op_count CONV_2D) '=' 1
+RULE "WEIGHT_CONST" $(conv2d_weight_not_constant) '=' 0
+RULE "FILE_SIZE" $(file_size) '<' 1040 # As of 191105, file size is 1016
diff --git a/res/TensorFlowTests/NET_0025/test.manifest b/res/TensorFlowTests/NET_0025/test.manifest
new file mode 100644
index 000000000..99a2c81a0
--- /dev/null
+++ b/res/TensorFlowTests/NET_0025/test.manifest
@@ -0,0 +1 @@
+SUMMARY: Simple CBR(Conv2D + BiasAdd + ReLU) network
diff --git a/res/TensorFlowTests/NET_0025/test.pbtxt b/res/TensorFlowTests/NET_0025/test.pbtxt
index 9b3316dc4..e927864d8 100644
--- a/res/TensorFlowTests/NET_0025/test.pbtxt
+++ b/res/TensorFlowTests/NET_0025/test.pbtxt
@@ -105,12 +105,6 @@ node {
}
}
}
- attr {
- key: "use_cudnn_on_gpu"
- value {
- b: true
- }
- }
}
node {
name: "InceptionV3/InceptionV3/Conv2d_1a_3x3/Conv2D_bn_offset"
diff --git a/res/TensorFlowTests/NET_0025/tflite_1.0_rel_requirement.rule b/res/TensorFlowTests/NET_0025/tflite_1.0_rel_requirement.rule
new file mode 100644
index 000000000..11296c7d9
--- /dev/null
+++ b/res/TensorFlowTests/NET_0025/tflite_1.0_rel_requirement.rule
@@ -0,0 +1,8 @@
+# tf2tflite-dredd-pbtxt-test against NET_0025, which is CBR(Conv2D + BiasAdd + ReLU) network
+# how to write a RULE:
+# RULE rule_name rule_function(actual value) condition expected_value
+
+RULE "ALL_OP_COUNT" $(all_op_count) '=' 1
+RULE "OP_COUNT_CONV2D" $(op_count CONV_2D) '=' 1
+RULE "WEIGHT_CONST" $(conv2d_weight_not_constant) '=' 0
+RULE "FILE_SIZE" $(file_size) '<' 1040 # As of 191105, file size is 1016
diff --git a/res/TensorFlowTests/NET_0026/test.pbtxt b/res/TensorFlowTests/NET_0026/test.pbtxt
index ea0262784..f579f3ef2 100644
--- a/res/TensorFlowTests/NET_0026/test.pbtxt
+++ b/res/TensorFlowTests/NET_0026/test.pbtxt
@@ -105,12 +105,6 @@ node {
}
}
}
- attr {
- key: "use_cudnn_on_gpu"
- value {
- b: true
- }
- }
}
node {
name: "InceptionV3/InceptionV3/Conv2d_1a_3x3/Conv2D_bn_offset"
@@ -243,12 +237,6 @@ node {
}
}
}
- attr {
- key: "use_cudnn_on_gpu"
- value {
- b: true
- }
- }
}
node {
name: "InceptionV3/InceptionV3/Conv2d_2a_3x3/Conv2D_bn_offset"
diff --git a/res/TensorFlowTests/NET_0027/test.pbtxt b/res/TensorFlowTests/NET_0027/test.pbtxt
index af5fa9372..95780969b 100644
--- a/res/TensorFlowTests/NET_0027/test.pbtxt
+++ b/res/TensorFlowTests/NET_0027/test.pbtxt
@@ -105,12 +105,6 @@ node {
}
}
}
- attr {
- key: "use_cudnn_on_gpu"
- value {
- b: true
- }
- }
}
node {
name: "InceptionV3/InceptionV3/Conv2d_1a_3x3/Conv2D_bn_offset"
@@ -243,12 +237,6 @@ node {
}
}
}
- attr {
- key: "use_cudnn_on_gpu"
- value {
- b: true
- }
- }
}
node {
name: "InceptionV3/InceptionV3/Conv2d_2a_3x3/Conv2D_bn_offset"
@@ -348,12 +336,6 @@ node {
}
}
}
- attr {
- key: "use_cudnn_on_gpu"
- value {
- b: true
- }
- }
}
node {
name: "InceptionV3/Conv2d_2b_3x3/weights/read/_11__cf__11"
diff --git a/res/TensorFlowTests/NET_0028/circle_1.0_rel_requirement.rule b/res/TensorFlowTests/NET_0028/circle_1.0_rel_requirement.rule
new file mode 100644
index 000000000..30185e2b3
--- /dev/null
+++ b/res/TensorFlowTests/NET_0028/circle_1.0_rel_requirement.rule
@@ -0,0 +1,6 @@
+# tf2circle-dredd-pbtxt-test against Instance Norm fusion
+
+RULE "VERIFY_FILE_FORMAT" $(verify_file_format) '=' 1 # 1 means verification is OK
+
+RULE "ALL_OP_COUNT" $(all_op_count) '=' 1
+RULE "OP_COUNT_INSTANCE_NORM" $(op_count INSTANCE_NORM) '=' 1
diff --git a/res/TensorFlowTests/NET_0028/test.manifest b/res/TensorFlowTests/NET_0028/test.manifest
new file mode 100644
index 000000000..64ca19d07
--- /dev/null
+++ b/res/TensorFlowTests/NET_0028/test.manifest
@@ -0,0 +1 @@
+SUMMARY: tf.contrib.layers.instance_norm
diff --git a/res/TensorFlowTests/NET_0029/test.info b/res/TensorFlowTests/NET_0029/test.info
new file mode 100644
index 000000000..9b3bf7d26
--- /dev/null
+++ b/res/TensorFlowTests/NET_0029/test.info
@@ -0,0 +1,5 @@
+input, Placeholder:0, TF_FLOAT, [1, 2, 3, 1]
+input, Placeholder_1:0, TF_FLOAT, [1, 2, 3, 1]
+input, Placeholder_2:0, TF_FLOAT, [1, 2, 3, 1]
+input, Placeholder_3:0, TF_FLOAT, [1, 2, 3, 1]
+output, concat_2:0, TF_FLOAT, [1, 2, 3, 4]
diff --git a/res/TensorFlowTests/NET_0029/test.manifest b/res/TensorFlowTests/NET_0029/test.manifest
new file mode 100644
index 000000000..33c689b98
--- /dev/null
+++ b/res/TensorFlowTests/NET_0029/test.manifest
@@ -0,0 +1 @@
+SUMMARY: Multiple concats only with same axes, which are consisted only with 2 inputs
diff --git a/res/TensorFlowTests/NET_0029/test.pbtxt b/res/TensorFlowTests/NET_0029/test.pbtxt
new file mode 100644
index 000000000..22d86d07a
--- /dev/null
+++ b/res/TensorFlowTests/NET_0029/test.pbtxt
@@ -0,0 +1,254 @@
+node {
+ name: "Placeholder"
+ op: "Placeholder"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "shape"
+ value {
+ shape {
+ dim {
+ size: 1
+ }
+ dim {
+ size: 2
+ }
+ dim {
+ size: 3
+ }
+ dim {
+ size: 1
+ }
+ }
+ }
+ }
+}
+node {
+ name: "Placeholder_1"
+ op: "Placeholder"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "shape"
+ value {
+ shape {
+ dim {
+ size: 1
+ }
+ dim {
+ size: 2
+ }
+ dim {
+ size: 3
+ }
+ dim {
+ size: 1
+ }
+ }
+ }
+ }
+}
+node {
+ name: "Placeholder_2"
+ op: "Placeholder"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "shape"
+ value {
+ shape {
+ dim {
+ size: 1
+ }
+ dim {
+ size: 2
+ }
+ dim {
+ size: 3
+ }
+ dim {
+ size: 1
+ }
+ }
+ }
+ }
+}
+node {
+ name: "Placeholder_3"
+ op: "Placeholder"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "shape"
+ value {
+ shape {
+ dim {
+ size: 1
+ }
+ dim {
+ size: 2
+ }
+ dim {
+ size: 3
+ }
+ dim {
+ size: 1
+ }
+ }
+ }
+ }
+}
+node {
+ name: "concat/axis"
+ op: "Const"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_INT32
+ }
+ }
+ attr {
+ key: "value"
+ value {
+ tensor {
+ dtype: DT_INT32
+ tensor_shape {
+ }
+ int_val: 3
+ }
+ }
+ }
+}
+node {
+ name: "concat"
+ op: "ConcatV2"
+ input: "Placeholder"
+ input: "Placeholder_1"
+ input: "concat/axis"
+ attr {
+ key: "N"
+ value {
+ i: 2
+ }
+ }
+ attr {
+ key: "T"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "Tidx"
+ value {
+ type: DT_INT32
+ }
+ }
+}
+node {
+ name: "concat_1/axis"
+ op: "Const"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_INT32
+ }
+ }
+ attr {
+ key: "value"
+ value {
+ tensor {
+ dtype: DT_INT32
+ tensor_shape {
+ }
+ int_val: 3
+ }
+ }
+ }
+}
+node {
+ name: "concat_1"
+ op: "ConcatV2"
+ input: "concat"
+ input: "Placeholder_2"
+ input: "concat_1/axis"
+ attr {
+ key: "N"
+ value {
+ i: 2
+ }
+ }
+ attr {
+ key: "T"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "Tidx"
+ value {
+ type: DT_INT32
+ }
+ }
+}
+node {
+ name: "concat_2/axis"
+ op: "Const"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_INT32
+ }
+ }
+ attr {
+ key: "value"
+ value {
+ tensor {
+ dtype: DT_INT32
+ tensor_shape {
+ }
+ int_val: 3
+ }
+ }
+ }
+}
+node {
+ name: "concat_2"
+ op: "ConcatV2"
+ input: "concat_1"
+ input: "Placeholder_3"
+ input: "concat_2/axis"
+ attr {
+ key: "N"
+ value {
+ i: 2
+ }
+ }
+ attr {
+ key: "T"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "Tidx"
+ value {
+ type: DT_INT32
+ }
+ }
+}
diff --git a/res/TensorFlowTests/NET_0030/circle_1.0_rel_requirement.rule b/res/TensorFlowTests/NET_0030/circle_1.0_rel_requirement.rule
new file mode 100644
index 000000000..9f14051c3
--- /dev/null
+++ b/res/TensorFlowTests/NET_0030/circle_1.0_rel_requirement.rule
@@ -0,0 +1,7 @@
+# tf2circle-dredd-pbtxt-test against two Concat ops with same axis
+
+RULE "VERIFY_FILE_FORMAT" $(verify_file_format) '=' 1 # 1 means verification is OK
+
+RULE "ALL_OP_COUNT" $(all_op_count) '=' 1
+RULE "OP_COUNT_CONCATENATION" $(op_count CONCATENATION) '=' 1
+RULE "FILE_SIZE" $(file_size) '<=' 650 # real size is 616 as of 191105
diff --git a/res/TensorFlowTests/NET_0030/test.info b/res/TensorFlowTests/NET_0030/test.info
new file mode 100644
index 000000000..09ae1ec6d
--- /dev/null
+++ b/res/TensorFlowTests/NET_0030/test.info
@@ -0,0 +1,5 @@
+input, Placeholder:0, TF_FLOAT, [1, 1, 1, 1]
+input, Placeholder_1:0, TF_FLOAT, [1, 1, 1, 2]
+input, Placeholder_2:0, TF_FLOAT, [1, 1, 1, 3]
+input, Placeholder_3:0, TF_FLOAT, [1, 1, 1, 4]
+output, concat_1:0, TF_FLOAT, [1, 1, 1, 10]
diff --git a/res/TensorFlowTests/NET_0030/test.manifest b/res/TensorFlowTests/NET_0030/test.manifest
new file mode 100644
index 000000000..b0496d787
--- /dev/null
+++ b/res/TensorFlowTests/NET_0030/test.manifest
@@ -0,0 +1 @@
+SUMMARY: Multiple concats only with same axes, which are consisted with more than 2 inputs
diff --git a/res/TensorFlowTests/NET_0030/test.pbtxt b/res/TensorFlowTests/NET_0030/test.pbtxt
new file mode 100644
index 000000000..270920d9d
--- /dev/null
+++ b/res/TensorFlowTests/NET_0030/test.pbtxt
@@ -0,0 +1,209 @@
+node {
+ name: "Placeholder"
+ op: "Placeholder"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "shape"
+ value {
+ shape {
+ dim {
+ size: 1
+ }
+ dim {
+ size: 1
+ }
+ dim {
+ size: 1
+ }
+ dim {
+ size: 1
+ }
+ }
+ }
+ }
+}
+node {
+ name: "Placeholder_1"
+ op: "Placeholder"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "shape"
+ value {
+ shape {
+ dim {
+ size: 1
+ }
+ dim {
+ size: 1
+ }
+ dim {
+ size: 1
+ }
+ dim {
+ size: 2
+ }
+ }
+ }
+ }
+}
+node {
+ name: "Placeholder_2"
+ op: "Placeholder"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "shape"
+ value {
+ shape {
+ dim {
+ size: 1
+ }
+ dim {
+ size: 1
+ }
+ dim {
+ size: 1
+ }
+ dim {
+ size: 3
+ }
+ }
+ }
+ }
+}
+node {
+ name: "Placeholder_3"
+ op: "Placeholder"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "shape"
+ value {
+ shape {
+ dim {
+ size: 1
+ }
+ dim {
+ size: 1
+ }
+ dim {
+ size: 1
+ }
+ dim {
+ size: 4
+ }
+ }
+ }
+ }
+}
+node {
+ name: "concat/axis"
+ op: "Const"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_INT32
+ }
+ }
+ attr {
+ key: "value"
+ value {
+ tensor {
+ dtype: DT_INT32
+ tensor_shape {
+ }
+ int_val: 3
+ }
+ }
+ }
+}
+node {
+ name: "concat"
+ op: "ConcatV2"
+ input: "Placeholder_1"
+ input: "Placeholder_2"
+ input: "concat/axis"
+ attr {
+ key: "N"
+ value {
+ i: 2
+ }
+ }
+ attr {
+ key: "T"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "Tidx"
+ value {
+ type: DT_INT32
+ }
+ }
+}
+node {
+ name: "concat_1/axis"
+ op: "Const"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_INT32
+ }
+ }
+ attr {
+ key: "value"
+ value {
+ tensor {
+ dtype: DT_INT32
+ tensor_shape {
+ }
+ int_val: 3
+ }
+ }
+ }
+}
+node {
+ name: "concat_1"
+ op: "ConcatV2"
+ input: "Placeholder"
+ input: "concat"
+ input: "Placeholder_3"
+ input: "concat_1/axis"
+ attr {
+ key: "N"
+ value {
+ i: 3
+ }
+ }
+ attr {
+ key: "T"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "Tidx"
+ value {
+ type: DT_INT32
+ }
+ }
+}
diff --git a/res/TensorFlowTests/NET_0031/test.info b/res/TensorFlowTests/NET_0031/test.info
new file mode 100644
index 000000000..9c2d6364a
--- /dev/null
+++ b/res/TensorFlowTests/NET_0031/test.info
@@ -0,0 +1,6 @@
+input, Placeholder:0, TF_FLOAT, [1, 1, 1, 1]
+input, Placeholder_1:0, TF_FLOAT, [1, 1, 1, 1]
+input, Placeholder_2:0, TF_FLOAT, [1, 1, 2, 1]
+input, Placeholder_3:0, TF_FLOAT, [1, 1, 2, 2]
+input, Placeholder_4:0, TF_FLOAT, [1, 1, 2, 4]
+output, concat_3:0, TF_FLOAT, [1, 2, 2, 4]
diff --git a/res/TensorFlowTests/NET_0031/test.manifest b/res/TensorFlowTests/NET_0031/test.manifest
new file mode 100644
index 000000000..0bb09e5c1
--- /dev/null
+++ b/res/TensorFlowTests/NET_0031/test.manifest
@@ -0,0 +1 @@
+SUMMARY: Multiple concats with different axes. Concats with same axes are non-terminal but possible to merge
diff --git a/res/TensorFlowTests/NET_0031/test.pbtxt b/res/TensorFlowTests/NET_0031/test.pbtxt
new file mode 100644
index 000000000..6c152ea5c
--- /dev/null
+++ b/res/TensorFlowTests/NET_0031/test.pbtxt
@@ -0,0 +1,329 @@
+node {
+ name: "Placeholder"
+ op: "Placeholder"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "shape"
+ value {
+ shape {
+ dim {
+ size: 1
+ }
+ dim {
+ size: 1
+ }
+ dim {
+ size: 1
+ }
+ dim {
+ size: 1
+ }
+ }
+ }
+ }
+}
+node {
+ name: "Placeholder_1"
+ op: "Placeholder"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "shape"
+ value {
+ shape {
+ dim {
+ size: 1
+ }
+ dim {
+ size: 1
+ }
+ dim {
+ size: 1
+ }
+ dim {
+ size: 1
+ }
+ }
+ }
+ }
+}
+node {
+ name: "Placeholder_2"
+ op: "Placeholder"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "shape"
+ value {
+ shape {
+ dim {
+ size: 1
+ }
+ dim {
+ size: 1
+ }
+ dim {
+ size: 2
+ }
+ dim {
+ size: 1
+ }
+ }
+ }
+ }
+}
+node {
+ name: "Placeholder_3"
+ op: "Placeholder"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "shape"
+ value {
+ shape {
+ dim {
+ size: 1
+ }
+ dim {
+ size: 1
+ }
+ dim {
+ size: 2
+ }
+ dim {
+ size: 2
+ }
+ }
+ }
+ }
+}
+node {
+ name: "Placeholder_4"
+ op: "Placeholder"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "shape"
+ value {
+ shape {
+ dim {
+ size: 1
+ }
+ dim {
+ size: 1
+ }
+ dim {
+ size: 2
+ }
+ dim {
+ size: 4
+ }
+ }
+ }
+ }
+}
+node {
+ name: "concat/axis"
+ op: "Const"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_INT32
+ }
+ }
+ attr {
+ key: "value"
+ value {
+ tensor {
+ dtype: DT_INT32
+ tensor_shape {
+ }
+ int_val: 2
+ }
+ }
+ }
+}
+node {
+ name: "concat"
+ op: "ConcatV2"
+ input: "Placeholder"
+ input: "Placeholder_1"
+ input: "concat/axis"
+ attr {
+ key: "N"
+ value {
+ i: 2
+ }
+ }
+ attr {
+ key: "T"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "Tidx"
+ value {
+ type: DT_INT32
+ }
+ }
+}
+node {
+ name: "concat_1/axis"
+ op: "Const"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_INT32
+ }
+ }
+ attr {
+ key: "value"
+ value {
+ tensor {
+ dtype: DT_INT32
+ tensor_shape {
+ }
+ int_val: 3
+ }
+ }
+ }
+}
+node {
+ name: "concat_1"
+ op: "ConcatV2"
+ input: "concat"
+ input: "Placeholder_2"
+ input: "concat_1/axis"
+ attr {
+ key: "N"
+ value {
+ i: 2
+ }
+ }
+ attr {
+ key: "T"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "Tidx"
+ value {
+ type: DT_INT32
+ }
+ }
+}
+node {
+ name: "concat_2/axis"
+ op: "Const"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_INT32
+ }
+ }
+ attr {
+ key: "value"
+ value {
+ tensor {
+ dtype: DT_INT32
+ tensor_shape {
+ }
+ int_val: 3
+ }
+ }
+ }
+}
+node {
+ name: "concat_2"
+ op: "ConcatV2"
+ input: "concat_1"
+ input: "Placeholder_3"
+ input: "concat_2/axis"
+ attr {
+ key: "N"
+ value {
+ i: 2
+ }
+ }
+ attr {
+ key: "T"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "Tidx"
+ value {
+ type: DT_INT32
+ }
+ }
+}
+node {
+ name: "concat_3/axis"
+ op: "Const"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_INT32
+ }
+ }
+ attr {
+ key: "value"
+ value {
+ tensor {
+ dtype: DT_INT32
+ tensor_shape {
+ }
+ int_val: 1
+ }
+ }
+ }
+}
+node {
+ name: "concat_3"
+ op: "ConcatV2"
+ input: "concat_2"
+ input: "Placeholder_4"
+ input: "concat_3/axis"
+ attr {
+ key: "N"
+ value {
+ i: 2
+ }
+ }
+ attr {
+ key: "T"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "Tidx"
+ value {
+ type: DT_INT32
+ }
+ }
+}
diff --git a/res/TensorFlowTests/NET_0032/test.info b/res/TensorFlowTests/NET_0032/test.info
new file mode 100644
index 000000000..d0f91d107
--- /dev/null
+++ b/res/TensorFlowTests/NET_0032/test.info
@@ -0,0 +1,7 @@
+# The number of final concat nodes should be 3
+input, Placeholder:0, TF_FLOAT, [1, 2, 3, 1]
+input, Placeholder_1:0, TF_FLOAT, [1, 2, 3, 1]
+input, Placeholder_2:0, TF_FLOAT, [1, 2, 3, 1]
+input, Placeholder_3:0, TF_FLOAT, [1, 1, 3, 3]
+input, Placeholder_4:0, TF_FLOAT, [1, 1, 3, 3]
+output, concat_3:0, TF_FLOAT, [1, 2, 6, 3]
diff --git a/res/TensorFlowTests/NET_0032/test.manifest b/res/TensorFlowTests/NET_0032/test.manifest
new file mode 100644
index 000000000..714581b0c
--- /dev/null
+++ b/res/TensorFlowTests/NET_0032/test.manifest
@@ -0,0 +1 @@
+SUMMARY: Multiple concats with different axes. Concats with same axes are terminal and possible to merge
diff --git a/res/TensorFlowTests/NET_0032/test.pbtxt b/res/TensorFlowTests/NET_0032/test.pbtxt
new file mode 100644
index 000000000..2ef2c587e
--- /dev/null
+++ b/res/TensorFlowTests/NET_0032/test.pbtxt
@@ -0,0 +1,329 @@
+node {
+ name: "Placeholder"
+ op: "Placeholder"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "shape"
+ value {
+ shape {
+ dim {
+ size: 1
+ }
+ dim {
+ size: 2
+ }
+ dim {
+ size: 3
+ }
+ dim {
+ size: 1
+ }
+ }
+ }
+ }
+}
+node {
+ name: "Placeholder_1"
+ op: "Placeholder"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "shape"
+ value {
+ shape {
+ dim {
+ size: 1
+ }
+ dim {
+ size: 2
+ }
+ dim {
+ size: 3
+ }
+ dim {
+ size: 1
+ }
+ }
+ }
+ }
+}
+node {
+ name: "Placeholder_2"
+ op: "Placeholder"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "shape"
+ value {
+ shape {
+ dim {
+ size: 1
+ }
+ dim {
+ size: 2
+ }
+ dim {
+ size: 3
+ }
+ dim {
+ size: 1
+ }
+ }
+ }
+ }
+}
+node {
+ name: "Placeholder_3"
+ op: "Placeholder"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "shape"
+ value {
+ shape {
+ dim {
+ size: 1
+ }
+ dim {
+ size: 1
+ }
+ dim {
+ size: 3
+ }
+ dim {
+ size: 3
+ }
+ }
+ }
+ }
+}
+node {
+ name: "Placeholder_4"
+ op: "Placeholder"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "shape"
+ value {
+ shape {
+ dim {
+ size: 1
+ }
+ dim {
+ size: 1
+ }
+ dim {
+ size: 3
+ }
+ dim {
+ size: 3
+ }
+ }
+ }
+ }
+}
+node {
+ name: "concat/axis"
+ op: "Const"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_INT32
+ }
+ }
+ attr {
+ key: "value"
+ value {
+ tensor {
+ dtype: DT_INT32
+ tensor_shape {
+ }
+ int_val: 3
+ }
+ }
+ }
+}
+node {
+ name: "concat"
+ op: "ConcatV2"
+ input: "Placeholder"
+ input: "Placeholder_1"
+ input: "concat/axis"
+ attr {
+ key: "N"
+ value {
+ i: 2
+ }
+ }
+ attr {
+ key: "T"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "Tidx"
+ value {
+ type: DT_INT32
+ }
+ }
+}
+node {
+ name: "concat_1/axis"
+ op: "Const"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_INT32
+ }
+ }
+ attr {
+ key: "value"
+ value {
+ tensor {
+ dtype: DT_INT32
+ tensor_shape {
+ }
+ int_val: 3
+ }
+ }
+ }
+}
+node {
+ name: "concat_1"
+ op: "ConcatV2"
+ input: "concat"
+ input: "Placeholder_2"
+ input: "concat_1/axis"
+ attr {
+ key: "N"
+ value {
+ i: 2
+ }
+ }
+ attr {
+ key: "T"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "Tidx"
+ value {
+ type: DT_INT32
+ }
+ }
+}
+node {
+ name: "concat_2/axis"
+ op: "Const"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_INT32
+ }
+ }
+ attr {
+ key: "value"
+ value {
+ tensor {
+ dtype: DT_INT32
+ tensor_shape {
+ }
+ int_val: 1
+ }
+ }
+ }
+}
+node {
+ name: "concat_2"
+ op: "ConcatV2"
+ input: "Placeholder_4"
+ input: "Placeholder_3"
+ input: "concat_2/axis"
+ attr {
+ key: "N"
+ value {
+ i: 2
+ }
+ }
+ attr {
+ key: "T"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "Tidx"
+ value {
+ type: DT_INT32
+ }
+ }
+}
+node {
+ name: "concat_3/axis"
+ op: "Const"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_INT32
+ }
+ }
+ attr {
+ key: "value"
+ value {
+ tensor {
+ dtype: DT_INT32
+ tensor_shape {
+ }
+ int_val: 2
+ }
+ }
+ }
+}
+node {
+ name: "concat_3"
+ op: "ConcatV2"
+ input: "concat_1"
+ input: "concat_2"
+ input: "concat_3/axis"
+ attr {
+ key: "N"
+ value {
+ i: 2
+ }
+ }
+ attr {
+ key: "T"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "Tidx"
+ value {
+ type: DT_INT32
+ }
+ }
+}
diff --git a/res/TensorFlowTests/NET_0033/test.info b/res/TensorFlowTests/NET_0033/test.info
new file mode 100644
index 000000000..30a242554
--- /dev/null
+++ b/res/TensorFlowTests/NET_0033/test.info
@@ -0,0 +1,7 @@
+# The number of final concat node should be 3
+input, Placeholder:0, TF_FLOAT, [1, 2, 3, 1]
+input, Placeholder_1:0, TF_FLOAT, [1, 2, 3, 1]
+input, Placeholder_2:0, TF_FLOAT, [1, 2, 3, 2]
+input, Placeholder_3:0, TF_FLOAT, [1, 2, 3, 2]
+input, Placeholder_4:0, TF_FLOAT, [1, 2, 3, 2]
+output, concat_3:0, TF_FLOAT, [1, 4, 6, 2]
diff --git a/res/TensorFlowTests/NET_0033/test.manifest b/res/TensorFlowTests/NET_0033/test.manifest
new file mode 100644
index 000000000..0c1ddcd4b
--- /dev/null
+++ b/res/TensorFlowTests/NET_0033/test.manifest
@@ -0,0 +1 @@
+SUMMARY: Multiple concats with different axes. Concats with same axes are non-terminal and not possible to merge
diff --git a/res/TensorFlowTests/NET_0033/test.pbtxt b/res/TensorFlowTests/NET_0033/test.pbtxt
new file mode 100644
index 000000000..c43940f0b
--- /dev/null
+++ b/res/TensorFlowTests/NET_0033/test.pbtxt
@@ -0,0 +1,329 @@
+node {
+ name: "Placeholder"
+ op: "Placeholder"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "shape"
+ value {
+ shape {
+ dim {
+ size: 1
+ }
+ dim {
+ size: 2
+ }
+ dim {
+ size: 3
+ }
+ dim {
+ size: 1
+ }
+ }
+ }
+ }
+}
+node {
+ name: "Placeholder_1"
+ op: "Placeholder"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "shape"
+ value {
+ shape {
+ dim {
+ size: 1
+ }
+ dim {
+ size: 2
+ }
+ dim {
+ size: 3
+ }
+ dim {
+ size: 1
+ }
+ }
+ }
+ }
+}
+node {
+ name: "Placeholder_2"
+ op: "Placeholder"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "shape"
+ value {
+ shape {
+ dim {
+ size: 1
+ }
+ dim {
+ size: 2
+ }
+ dim {
+ size: 3
+ }
+ dim {
+ size: 2
+ }
+ }
+ }
+ }
+}
+node {
+ name: "Placeholder_3"
+ op: "Placeholder"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "shape"
+ value {
+ shape {
+ dim {
+ size: 1
+ }
+ dim {
+ size: 2
+ }
+ dim {
+ size: 3
+ }
+ dim {
+ size: 2
+ }
+ }
+ }
+ }
+}
+node {
+ name: "Placeholder_4"
+ op: "Placeholder"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "shape"
+ value {
+ shape {
+ dim {
+ size: 1
+ }
+ dim {
+ size: 2
+ }
+ dim {
+ size: 3
+ }
+ dim {
+ size: 2
+ }
+ }
+ }
+ }
+}
+node {
+ name: "concat/axis"
+ op: "Const"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_INT32
+ }
+ }
+ attr {
+ key: "value"
+ value {
+ tensor {
+ dtype: DT_INT32
+ tensor_shape {
+ }
+ int_val: 3
+ }
+ }
+ }
+}
+node {
+ name: "concat"
+ op: "ConcatV2"
+ input: "Placeholder"
+ input: "Placeholder_1"
+ input: "concat/axis"
+ attr {
+ key: "N"
+ value {
+ i: 2
+ }
+ }
+ attr {
+ key: "T"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "Tidx"
+ value {
+ type: DT_INT32
+ }
+ }
+}
+node {
+ name: "concat_1/axis"
+ op: "Const"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_INT32
+ }
+ }
+ attr {
+ key: "value"
+ value {
+ tensor {
+ dtype: DT_INT32
+ tensor_shape {
+ }
+ int_val: 1
+ }
+ }
+ }
+}
+node {
+ name: "concat_1"
+ op: "ConcatV2"
+ input: "concat"
+ input: "Placeholder_2"
+ input: "concat_1/axis"
+ attr {
+ key: "N"
+ value {
+ i: 2
+ }
+ }
+ attr {
+ key: "T"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "Tidx"
+ value {
+ type: DT_INT32
+ }
+ }
+}
+node {
+ name: "concat_2/axis"
+ op: "Const"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_INT32
+ }
+ }
+ attr {
+ key: "value"
+ value {
+ tensor {
+ dtype: DT_INT32
+ tensor_shape {
+ }
+ int_val: 1
+ }
+ }
+ }
+}
+node {
+ name: "concat_2"
+ op: "ConcatV2"
+ input: "Placeholder_4"
+ input: "Placeholder_3"
+ input: "concat_2/axis"
+ attr {
+ key: "N"
+ value {
+ i: 2
+ }
+ }
+ attr {
+ key: "T"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "Tidx"
+ value {
+ type: DT_INT32
+ }
+ }
+}
+node {
+ name: "concat_3/axis"
+ op: "Const"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_INT32
+ }
+ }
+ attr {
+ key: "value"
+ value {
+ tensor {
+ dtype: DT_INT32
+ tensor_shape {
+ }
+ int_val: 2
+ }
+ }
+ }
+}
+node {
+ name: "concat_3"
+ op: "ConcatV2"
+ input: "concat_1"
+ input: "concat_2"
+ input: "concat_3/axis"
+ attr {
+ key: "N"
+ value {
+ i: 2
+ }
+ }
+ attr {
+ key: "T"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "Tidx"
+ value {
+ type: DT_INT32
+ }
+ }
+}
diff --git a/res/TensorFlowTests/NET_0034/test.info b/res/TensorFlowTests/NET_0034/test.info
new file mode 100644
index 000000000..c3c5e2c7b
--- /dev/null
+++ b/res/TensorFlowTests/NET_0034/test.info
@@ -0,0 +1,2 @@
+input, Placeholder:0, TF_FLOAT, [1, 3, 3, 5]
+output, Sub:0, TF_FLOAT, [1, 3, 3, 2]
diff --git a/res/TensorFlowTests/NET_0034/test.manifest b/res/TensorFlowTests/NET_0034/test.manifest
new file mode 100644
index 000000000..3a49e0442
--- /dev/null
+++ b/res/TensorFlowTests/NET_0034/test.manifest
@@ -0,0 +1 @@
+SUMMARY: A simple network that has "Conv2D" + "Sub"
diff --git a/res/TensorFlowTests/NET_0034/test.pbtxt b/res/TensorFlowTests/NET_0034/test.pbtxt
new file mode 100644
index 000000000..fec15368b
--- /dev/null
+++ b/res/TensorFlowTests/NET_0034/test.pbtxt
@@ -0,0 +1,144 @@
+node {
+ name: "Placeholder"
+ op: "Placeholder"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "shape"
+ value {
+ shape {
+ dim {
+ size: 1
+ }
+ dim {
+ size: 3
+ }
+ dim {
+ size: 3
+ }
+ dim {
+ size: 5
+ }
+ }
+ }
+ }
+}
+node {
+ name: "weights"
+ op: "Const"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "value"
+ value {
+ tensor {
+ dtype: DT_FLOAT
+ tensor_shape {
+ dim {
+ size: 2
+ }
+ dim {
+ size: 2
+ }
+ dim {
+ size: 5
+ }
+ dim {
+ size: 2
+ }
+ }
+ float_val: 1.100000023841858
+ }
+ }
+ }
+}
+node {
+ name: "Conv2D"
+ op: "Conv2D"
+ input: "Placeholder"
+ input: "weights"
+ attr {
+ key: "T"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "data_format"
+ value {
+ s: "NHWC"
+ }
+ }
+ attr {
+ key: "dilations"
+ value {
+ list {
+ i: 1
+ i: 1
+ i: 1
+ i: 1
+ }
+ }
+ }
+ attr {
+ key: "padding"
+ value {
+ s: "SAME"
+ }
+ }
+ attr {
+ key: "strides"
+ value {
+ list {
+ i: 1
+ i: 1
+ i: 1
+ i: 1
+ }
+ }
+ }
+}
+node {
+ name: "subparam"
+ op: "Const"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "value"
+ value {
+ tensor {
+ dtype: DT_FLOAT
+ tensor_shape {
+ dim {
+ size: 2
+ }
+ }
+ float_val: 2.0
+ }
+ }
+ }
+}
+node {
+ name: "Sub"
+ op: "Sub"
+ input: "Conv2D"
+ input: "subparam"
+ attr {
+ key: "T"
+ value {
+ type: DT_FLOAT
+ }
+ }
+}
diff --git a/res/TensorFlowTests/NET_0035/test.info b/res/TensorFlowTests/NET_0035/test.info
new file mode 100644
index 000000000..67e44af48
--- /dev/null
+++ b/res/TensorFlowTests/NET_0035/test.info
@@ -0,0 +1,2 @@
+input, input:0, TF_FLOAT, [1, 5, 5, 3]
+output, out:0, TF_FLOAT, [1, 2, 2, 4]
diff --git a/res/TensorFlowTests/NET_0035/test.manifest b/res/TensorFlowTests/NET_0035/test.manifest
new file mode 100644
index 000000000..f9578c878
--- /dev/null
+++ b/res/TensorFlowTests/NET_0035/test.manifest
@@ -0,0 +1 @@
+SUMMARY: Conv2D + BiasAdd + ReLU6 network
diff --git a/res/TensorFlowTests/NET_0035/test.pbtxt b/res/TensorFlowTests/NET_0035/test.pbtxt
new file mode 100644
index 000000000..ae4913628
--- /dev/null
+++ b/res/TensorFlowTests/NET_0035/test.pbtxt
@@ -0,0 +1,161 @@
+node {
+ name: "kernel"
+ op: "Const"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "value"
+ value {
+ tensor {
+ dtype: DT_FLOAT
+ tensor_shape {
+ dim {
+ size: 3
+ }
+ dim {
+ size: 3
+ }
+ dim {
+ size: 3
+ }
+ dim {
+ size: 4
+ }
+ }
+ float_val: 1.0
+ }
+ }
+ }
+}
+node {
+ name: "input"
+ op: "Placeholder"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "shape"
+ value {
+ shape {
+ dim {
+ size: 1
+ }
+ dim {
+ size: 5
+ }
+ dim {
+ size: 5
+ }
+ dim {
+ size: 3
+ }
+ }
+ }
+ }
+}
+node {
+ name: "conv2d"
+ op: "Conv2D"
+ input: "input:0"
+ input: "kernel"
+ attr {
+ key: "T"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "data_format"
+ value {
+ s: "NHWC"
+ }
+ }
+ attr {
+ key: "dilations"
+ value {
+ list {
+ i: 1
+ i: 1
+ i: 1
+ i: 1
+ }
+ }
+ }
+ attr {
+ key: "padding"
+ value {
+ s: "VALID"
+ }
+ }
+ attr {
+ key: "strides"
+ value {
+ list {
+ i: 1
+ i: 2
+ i: 2
+ i: 1
+ }
+ }
+ }
+}
+node {
+ name: "bias"
+ op: "Const"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "value"
+ value {
+ tensor {
+ dtype: DT_FLOAT
+ tensor_shape {
+ dim {
+ size: 4
+ }
+ }
+ float_val: 1.0
+ }
+ }
+ }
+}
+node {
+ name: "biasadd"
+ op: "BiasAdd"
+ input: "conv2d"
+ input: "bias"
+ attr {
+ key: "T"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "data_format"
+ value {
+ s: "NHWC"
+ }
+ }
+}
+node {
+ name: "out"
+ op: "Relu6"
+ input: "biasadd"
+ attr {
+ key: "T"
+ value {
+ type: DT_FLOAT
+ }
+ }
+}
diff --git a/res/TensorFlowTests/NET_0036/test.info b/res/TensorFlowTests/NET_0036/test.info
new file mode 100644
index 000000000..42e88c141
--- /dev/null
+++ b/res/TensorFlowTests/NET_0036/test.info
@@ -0,0 +1,2 @@
+input, input:0, TF_FLOAT, [1, 5, 5, 3]
+output, relu:0, TF_FLOAT, [1, 2, 2, 4]
diff --git a/res/TensorFlowTests/NET_0036/test.manifest b/res/TensorFlowTests/NET_0036/test.manifest
new file mode 100644
index 000000000..820ab402b
--- /dev/null
+++ b/res/TensorFlowTests/NET_0036/test.manifest
@@ -0,0 +1 @@
+SUMMARY: Conv2D + Add + ReLU where Add's Const operand is a scalar (size 1 tensor)
diff --git a/res/TensorFlowTests/NET_0036/test.pbtxt b/res/TensorFlowTests/NET_0036/test.pbtxt
new file mode 100644
index 000000000..3c9cdecd5
--- /dev/null
+++ b/res/TensorFlowTests/NET_0036/test.pbtxt
@@ -0,0 +1,146 @@
+# Conv2D and its inputs are borrowed from NET_0025.
+node {
+ name: "InceptionV3/Conv2d_1a_3x3/weights/read/_3__cf__3"
+ op: "Const"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "value"
+ value {
+ tensor {
+ dtype: DT_FLOAT
+ tensor_shape {
+ dim {
+ size: 3
+ }
+ dim {
+ size: 3
+ }
+ dim {
+ size: 3
+ }
+ dim {
+ size: 4
+ }
+ }
+ float_val: 1.0
+ }
+ }
+ }
+}
+node {
+ name: "input"
+ op: "Placeholder"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "shape"
+ value {
+ shape {
+ dim {
+ size: 1
+ }
+ dim {
+ size: 5
+ }
+ dim {
+ size: 5
+ }
+ dim {
+ size: 3
+ }
+ }
+ }
+ }
+}
+node {
+ name: "InceptionV3/InceptionV3/Conv2d_1a_3x3/Conv2D"
+ op: "Conv2D"
+ input: "input:0"
+ input: "InceptionV3/Conv2d_1a_3x3/weights/read/_3__cf__3"
+ attr {
+ key: "T"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "data_format"
+ value {
+ s: "NHWC"
+ }
+ }
+ attr {
+ key: "dilations"
+ value {
+ list {
+ i: 1
+ i: 1
+ i: 1
+ i: 1
+ }
+ }
+ }
+ attr {
+ key: "padding"
+ value {
+ s: "VALID"
+ }
+ }
+ attr {
+ key: "strides"
+ value {
+ list {
+ i: 1
+ i: 2
+ i: 2
+ i: 1
+ }
+ }
+ }
+}
+node {
+ name: "add_const"
+ op: "Const"
+ attr {
+ key: "dtype"
+ value { type: DT_FLOAT }
+ }
+ attr {
+ key: "value"
+ value {
+ tensor {
+ dtype: DT_FLOAT
+ tensor_shape { dim { size: 1 } }
+ float_val: 1.0
+ }
+ }
+ }
+}
+node {
+ name: "add"
+ op: "Add"
+ input: "InceptionV3/InceptionV3/Conv2d_1a_3x3/Conv2D"
+ input: "add_const"
+ attr {
+ key: "T"
+ value { type: DT_FLOAT }
+ }
+}
+node {
+ name: "relu"
+ op: "Relu"
+ input: "add"
+ attr {
+ key: "T"
+ value { type: DT_FLOAT }
+ }
+}
diff --git a/res/TensorFlowTests/NET_0037/test.info b/res/TensorFlowTests/NET_0037/test.info
new file mode 100644
index 000000000..42e88c141
--- /dev/null
+++ b/res/TensorFlowTests/NET_0037/test.info
@@ -0,0 +1,2 @@
+input, input:0, TF_FLOAT, [1, 5, 5, 3]
+output, relu:0, TF_FLOAT, [1, 2, 2, 4]
diff --git a/res/TensorFlowTests/NET_0037/test.manifest b/res/TensorFlowTests/NET_0037/test.manifest
new file mode 100644
index 000000000..b82ccb623
--- /dev/null
+++ b/res/TensorFlowTests/NET_0037/test.manifest
@@ -0,0 +1 @@
+SUMMARY: Conv2D + ReLU + Add
diff --git a/res/TensorFlowTests/NET_0037/test.pbtxt b/res/TensorFlowTests/NET_0037/test.pbtxt
new file mode 100644
index 000000000..674366fa6
--- /dev/null
+++ b/res/TensorFlowTests/NET_0037/test.pbtxt
@@ -0,0 +1,146 @@
+# Conv2D and its inputs are borrowed from NET_0025.
+node {
+ name: "InceptionV3/Conv2d_1a_3x3/weights/read/_3__cf__3"
+ op: "Const"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "value"
+ value {
+ tensor {
+ dtype: DT_FLOAT
+ tensor_shape {
+ dim {
+ size: 3
+ }
+ dim {
+ size: 3
+ }
+ dim {
+ size: 3
+ }
+ dim {
+ size: 4
+ }
+ }
+ float_val: 1.0
+ }
+ }
+ }
+}
+node {
+ name: "input"
+ op: "Placeholder"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "shape"
+ value {
+ shape {
+ dim {
+ size: 1
+ }
+ dim {
+ size: 5
+ }
+ dim {
+ size: 5
+ }
+ dim {
+ size: 3
+ }
+ }
+ }
+ }
+}
+node {
+ name: "InceptionV3/InceptionV3/Conv2d_1a_3x3/Conv2D"
+ op: "Conv2D"
+ input: "input:0"
+ input: "InceptionV3/Conv2d_1a_3x3/weights/read/_3__cf__3"
+ attr {
+ key: "T"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "data_format"
+ value {
+ s: "NHWC"
+ }
+ }
+ attr {
+ key: "dilations"
+ value {
+ list {
+ i: 1
+ i: 1
+ i: 1
+ i: 1
+ }
+ }
+ }
+ attr {
+ key: "padding"
+ value {
+ s: "VALID"
+ }
+ }
+ attr {
+ key: "strides"
+ value {
+ list {
+ i: 1
+ i: 2
+ i: 2
+ i: 1
+ }
+ }
+ }
+}
+node {
+ name: "relu"
+ op: "Relu"
+ input: "InceptionV3/InceptionV3/Conv2d_1a_3x3/Conv2D"
+ attr {
+ key: "T"
+ value { type: DT_FLOAT }
+ }
+}
+node {
+ name: "add_const"
+ op: "Const"
+ attr {
+ key: "dtype"
+ value { type: DT_FLOAT }
+ }
+ attr {
+ key: "value"
+ value {
+ tensor {
+ dtype: DT_FLOAT
+ tensor_shape { dim { size: 1 } }
+ float_val: 1.0
+ }
+ }
+ }
+}
+node {
+ name: "add"
+ op: "Add"
+ input: "relu"
+ input: "add_const"
+ attr {
+ key: "T"
+ value { type: DT_FLOAT }
+ }
+}
diff --git a/res/TensorFlowTests/NET_0038/test.info b/res/TensorFlowTests/NET_0038/test.info
new file mode 100644
index 000000000..099f3d613
--- /dev/null
+++ b/res/TensorFlowTests/NET_0038/test.info
@@ -0,0 +1,2 @@
+input, input:0, TF_FLOAT, [1, 11, 7, 3]
+output, output/relu:0, TF_FLOAT, [1, 6, 4, 12]
diff --git a/res/TensorFlowTests/NET_0038/test.manifest b/res/TensorFlowTests/NET_0038/test.manifest
new file mode 100644
index 000000000..929125e7e
--- /dev/null
+++ b/res/TensorFlowTests/NET_0038/test.manifest
@@ -0,0 +1 @@
+SUMMARY: DepthwiseConv2D + Relu
diff --git a/res/TensorFlowTests/NET_0038/test.pbtxt b/res/TensorFlowTests/NET_0038/test.pbtxt
new file mode 100644
index 000000000..b71e58f75
--- /dev/null
+++ b/res/TensorFlowTests/NET_0038/test.pbtxt
@@ -0,0 +1,121 @@
+# DepthwiseConv2dNative node is borrowed from UNIT_DepthwiseConv2dNative_000.
+node {
+ name: "input"
+ op: "Placeholder"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "shape"
+ value {
+ shape {
+ dim {
+ size: 1
+ }
+ dim {
+ size: 11
+ }
+ dim {
+ size: 7
+ }
+ dim {
+ size: 3
+ }
+ }
+ }
+ }
+}
+node {
+ name: "Const"
+ op: "Const"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "value"
+ value {
+ tensor {
+ dtype: DT_FLOAT
+ tensor_shape {
+ dim {
+ size: 2
+ }
+ dim {
+ size: 3
+ }
+ dim {
+ size: 3
+ }
+ dim {
+ size: 4
+ }
+ }
+ float_val: 1.0
+ }
+ }
+ }
+}
+node {
+ name: "DepthwiseConv2dNative"
+ op: "DepthwiseConv2dNative"
+ input: "input"
+ input: "Const"
+ attr {
+ key: "T"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "data_format"
+ value {
+ s: "NHWC"
+ }
+ }
+ attr {
+ key: "dilations"
+ value {
+ list {
+ i: 1
+ i: 1
+ i: 1
+ i: 1
+ }
+ }
+ }
+ attr {
+ key: "padding"
+ value {
+ s: "SAME"
+ }
+ }
+ attr {
+ key: "strides"
+ value {
+ list {
+ i: 1
+ i: 2
+ i: 2
+ i: 1
+ }
+ }
+ }
+}
+
+node {
+ name: "output/relu"
+ op: "Relu"
+ input: "DepthwiseConv2dNative"
+ attr {
+ key: "T"
+ value {
+ type: DT_FLOAT
+ }
+ }
+}
diff --git a/res/TensorFlowTests/NET_0039/test.info b/res/TensorFlowTests/NET_0039/test.info
new file mode 100644
index 000000000..73c44638d
--- /dev/null
+++ b/res/TensorFlowTests/NET_0039/test.info
@@ -0,0 +1,2 @@
+input, input:0, TF_FLOAT, [1, 11, 7, 3]
+output, add:0, TF_FLOAT, [1, 6, 4, 12]
diff --git a/res/TensorFlowTests/NET_0039/test.manifest b/res/TensorFlowTests/NET_0039/test.manifest
new file mode 100644
index 000000000..783207476
--- /dev/null
+++ b/res/TensorFlowTests/NET_0039/test.manifest
@@ -0,0 +1 @@
+SUMMARY: DepthwiseConv2D + Add
diff --git a/res/TensorFlowTests/NET_0039/test.pbtxt b/res/TensorFlowTests/NET_0039/test.pbtxt
new file mode 100644
index 000000000..25f459943
--- /dev/null
+++ b/res/TensorFlowTests/NET_0039/test.pbtxt
@@ -0,0 +1,146 @@
+# DepthwiseConv2dNative node is borrowed from UNIT_DepthwiseConv2dNative_000.
+node {
+ name: "input"
+ op: "Placeholder"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "shape"
+ value {
+ shape {
+ dim {
+ size: 1
+ }
+ dim {
+ size: 11
+ }
+ dim {
+ size: 7
+ }
+ dim {
+ size: 3
+ }
+ }
+ }
+ }
+}
+node {
+ name: "Const"
+ op: "Const"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "value"
+ value {
+ tensor {
+ dtype: DT_FLOAT
+ tensor_shape {
+ dim {
+ size: 2
+ }
+ dim {
+ size: 3
+ }
+ dim {
+ size: 3
+ }
+ dim {
+ size: 4
+ }
+ }
+ float_val: 1.0
+ }
+ }
+ }
+}
+node {
+ name: "DepthwiseConv2dNative"
+ op: "DepthwiseConv2dNative"
+ input: "input"
+ input: "Const"
+ attr {
+ key: "T"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "data_format"
+ value {
+ s: "NHWC"
+ }
+ }
+ attr {
+ key: "dilations"
+ value {
+ list {
+ i: 1
+ i: 1
+ i: 1
+ i: 1
+ }
+ }
+ }
+ attr {
+ key: "padding"
+ value {
+ s: "SAME"
+ }
+ }
+ attr {
+ key: "strides"
+ value {
+ list {
+ i: 1
+ i: 2
+ i: 2
+ i: 1
+ }
+ }
+ }
+}
+
+node {
+ name: "add_const"
+ op: "Const"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "value"
+ value {
+ tensor {
+ dtype: DT_FLOAT
+ tensor_shape {
+ dim {
+ size: 12
+ }
+ }
+ float_val: 1.0
+ }
+ }
+ }
+}
+node {
+ name: "add"
+ op: "Add"
+ input: "DepthwiseConv2dNative"
+ input: "add_const"
+ attr {
+ key: "T"
+ value {
+ type: DT_FLOAT
+ }
+ }
+}
diff --git a/res/TensorFlowTests/NET_0040/test.info b/res/TensorFlowTests/NET_0040/test.info
new file mode 100644
index 000000000..099f3d613
--- /dev/null
+++ b/res/TensorFlowTests/NET_0040/test.info
@@ -0,0 +1,2 @@
+input, input:0, TF_FLOAT, [1, 11, 7, 3]
+output, output/relu:0, TF_FLOAT, [1, 6, 4, 12]
diff --git a/res/TensorFlowTests/NET_0040/test.manifest b/res/TensorFlowTests/NET_0040/test.manifest
new file mode 100644
index 000000000..86bbc60c8
--- /dev/null
+++ b/res/TensorFlowTests/NET_0040/test.manifest
@@ -0,0 +1 @@
+SUMMARY: DepthwiseConv2D + BiasAdd + Relu
diff --git a/res/TensorFlowTests/NET_0040/test.pbtxt b/res/TensorFlowTests/NET_0040/test.pbtxt
new file mode 100644
index 000000000..b35f676cb
--- /dev/null
+++ b/res/TensorFlowTests/NET_0040/test.pbtxt
@@ -0,0 +1,164 @@
+# DepthwiseConv2dNative node is borrowed from UNIT_DepthwiseConv2dNative_000.
+node {
+ name: "input"
+ op: "Placeholder"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "shape"
+ value {
+ shape {
+ dim {
+ size: 1
+ }
+ dim {
+ size: 11
+ }
+ dim {
+ size: 7
+ }
+ dim {
+ size: 3
+ }
+ }
+ }
+ }
+}
+node {
+ name: "Const"
+ op: "Const"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "value"
+ value {
+ tensor {
+ dtype: DT_FLOAT
+ tensor_shape {
+ dim {
+ size: 2
+ }
+ dim {
+ size: 3
+ }
+ dim {
+ size: 3
+ }
+ dim {
+ size: 4
+ }
+ }
+ float_val: 1.0
+ }
+ }
+ }
+}
+node {
+ name: "DepthwiseConv2dNative"
+ op: "DepthwiseConv2dNative"
+ input: "input"
+ input: "Const"
+ attr {
+ key: "T"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "data_format"
+ value {
+ s: "NHWC"
+ }
+ }
+ attr {
+ key: "dilations"
+ value {
+ list {
+ i: 1
+ i: 1
+ i: 1
+ i: 1
+ }
+ }
+ }
+ attr {
+ key: "padding"
+ value {
+ s: "SAME"
+ }
+ }
+ attr {
+ key: "strides"
+ value {
+ list {
+ i: 1
+ i: 2
+ i: 2
+ i: 1
+ }
+ }
+ }
+}
+
+node {
+ name: "bias_const"
+ op: "Const"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "value"
+ value {
+ tensor {
+ dtype: DT_FLOAT
+ tensor_shape {
+ dim {
+ size: 12
+ }
+ }
+ float_val: 1.0
+ }
+ }
+ }
+}
+node {
+ name: "biasadd"
+ op: "BiasAdd"
+ input: "DepthwiseConv2dNative"
+ input: "bias_const"
+ attr {
+ key: "T"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "data_format"
+ value {
+ s: "NHWC"
+ }
+ }
+}
+
+node {
+ name: "output/relu"
+ op: "Relu"
+ input: "biasadd"
+ attr {
+ key: "T"
+ value {
+ type: DT_FLOAT
+ }
+ }
+}
diff --git a/res/TensorFlowTests/NET_0041/test.info b/res/TensorFlowTests/NET_0041/test.info
new file mode 100644
index 000000000..099f3d613
--- /dev/null
+++ b/res/TensorFlowTests/NET_0041/test.info
@@ -0,0 +1,2 @@
+input, input:0, TF_FLOAT, [1, 11, 7, 3]
+output, output/relu:0, TF_FLOAT, [1, 6, 4, 12]
diff --git a/res/TensorFlowTests/NET_0041/test.manifest b/res/TensorFlowTests/NET_0041/test.manifest
new file mode 100644
index 000000000..0e9adb9f5
--- /dev/null
+++ b/res/TensorFlowTests/NET_0041/test.manifest
@@ -0,0 +1 @@
+SUMMARY: DepthwiseConv2D + Sub (scalar) + Relu
diff --git a/res/TensorFlowTests/NET_0041/test.pbtxt b/res/TensorFlowTests/NET_0041/test.pbtxt
new file mode 100644
index 000000000..a328417d9
--- /dev/null
+++ b/res/TensorFlowTests/NET_0041/test.pbtxt
@@ -0,0 +1,158 @@
+# DepthwiseConv2dNative node is borrowed from UNIT_DepthwiseConv2dNative_000.
+node {
+ name: "input"
+ op: "Placeholder"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "shape"
+ value {
+ shape {
+ dim {
+ size: 1
+ }
+ dim {
+ size: 11
+ }
+ dim {
+ size: 7
+ }
+ dim {
+ size: 3
+ }
+ }
+ }
+ }
+}
+node {
+ name: "Const"
+ op: "Const"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "value"
+ value {
+ tensor {
+ dtype: DT_FLOAT
+ tensor_shape {
+ dim {
+ size: 2
+ }
+ dim {
+ size: 3
+ }
+ dim {
+ size: 3
+ }
+ dim {
+ size: 4
+ }
+ }
+ float_val: 1.0
+ }
+ }
+ }
+}
+node {
+ name: "DepthwiseConv2dNative"
+ op: "DepthwiseConv2dNative"
+ input: "input"
+ input: "Const"
+ attr {
+ key: "T"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "data_format"
+ value {
+ s: "NHWC"
+ }
+ }
+ attr {
+ key: "dilations"
+ value {
+ list {
+ i: 1
+ i: 1
+ i: 1
+ i: 1
+ }
+ }
+ }
+ attr {
+ key: "padding"
+ value {
+ s: "SAME"
+ }
+ }
+ attr {
+ key: "strides"
+ value {
+ list {
+ i: 1
+ i: 2
+ i: 2
+ i: 1
+ }
+ }
+ }
+}
+
+node {
+ name: "sub_scalar_const"
+ op: "Const"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "value"
+ value {
+ tensor {
+ dtype: DT_FLOAT
+ tensor_shape {
+ dim {
+ size: 1
+ }
+ }
+ float_val: 1.0
+ }
+ }
+ }
+}
+node {
+ name: "sub"
+ op: "Sub"
+ input: "DepthwiseConv2dNative"
+ input: "sub_scalar_const"
+ attr {
+ key: "T"
+ value {
+ type: DT_FLOAT
+ }
+ }
+}
+
+node {
+ name: "output/relu"
+ op: "Relu"
+ input: "sub"
+ attr {
+ key: "T"
+ value {
+ type: DT_FLOAT
+ }
+ }
+}
diff --git a/res/TensorFlowTests/NET_0042/test.info b/res/TensorFlowTests/NET_0042/test.info
new file mode 100644
index 000000000..04b13ad8f
--- /dev/null
+++ b/res/TensorFlowTests/NET_0042/test.info
@@ -0,0 +1 @@
+output, pack/stack:0, TF_FLOAT, [4]
diff --git a/res/TensorFlowTests/NET_0042/test.manifest b/res/TensorFlowTests/NET_0042/test.manifest
new file mode 100644
index 000000000..79dcdbe71
--- /dev/null
+++ b/res/TensorFlowTests/NET_0042/test.manifest
@@ -0,0 +1 @@
+SUMMARY: Small network that extracts second, third value of input vector with StridedSlice operator, doubles it and reconstruct it with Pack operator.
diff --git a/res/TensorFlowTests/NET_0042/test.pbtxt b/res/TensorFlowTests/NET_0042/test.pbtxt
new file mode 100644
index 000000000..033b09edc
--- /dev/null
+++ b/res/TensorFlowTests/NET_0042/test.pbtxt
@@ -0,0 +1,572 @@
+node {
+ name: "Shape"
+ op: "Const"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "value"
+ value {
+ tensor {
+ dtype: DT_FLOAT
+ tensor_shape {
+ dim {
+ size: 4
+ }
+ }
+ float_val: 1
+ float_val: 5
+ float_val: 5
+ float_val: 64
+ }
+ }
+ }
+}
+node {
+ name: "stack"
+ op: "Const"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_INT32
+ }
+ }
+ attr {
+ key: "value"
+ value {
+ tensor {
+ dtype: DT_INT32
+ tensor_shape {
+ dim {
+ size: 1
+ }
+ }
+ int_val: 0
+ }
+ }
+ }
+}
+node {
+ name: "stack_1"
+ op: "Const"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_INT32
+ }
+ }
+ attr {
+ key: "value"
+ value {
+ tensor {
+ dtype: DT_INT32
+ tensor_shape {
+ dim {
+ size: 1
+ }
+ }
+ int_val: 1
+ }
+ }
+ }
+}
+node {
+ name: "stack_2"
+ op: "Const"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_INT32
+ }
+ }
+ attr {
+ key: "value"
+ value {
+ tensor {
+ dtype: DT_INT32
+ tensor_shape {
+ dim {
+ size: 1
+ }
+ }
+ int_val: 1
+ }
+ }
+ }
+}
+node {
+ name: "strided_slice"
+ op: "StridedSlice"
+ input: "Shape"
+ input: "stack"
+ input: "stack_1"
+ input: "stack_2"
+ attr {
+ key: "Index"
+ value {
+ type: DT_INT32
+ }
+ }
+ attr {
+ key: "T"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "begin_mask"
+ value {
+ i: 0
+ }
+ }
+ attr {
+ key: "ellipsis_mask"
+ value {
+ i: 0
+ }
+ }
+ attr {
+ key: "end_mask"
+ value {
+ i: 0
+ }
+ }
+ attr {
+ key: "new_axis_mask"
+ value {
+ i: 0
+ }
+ }
+ attr {
+ key: "shrink_axis_mask"
+ value {
+ i: 1
+ }
+ }
+}
+node {
+ name: "strided_slice_1/stack"
+ op: "Const"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_INT32
+ }
+ }
+ attr {
+ key: "value"
+ value {
+ tensor {
+ dtype: DT_INT32
+ tensor_shape {
+ dim {
+ size: 1
+ }
+ }
+ int_val: 1
+ }
+ }
+ }
+}
+node {
+ name: "strided_slice_1/stack_1"
+ op: "Const"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_INT32
+ }
+ }
+ attr {
+ key: "value"
+ value {
+ tensor {
+ dtype: DT_INT32
+ tensor_shape {
+ dim {
+ size: 1
+ }
+ }
+ int_val: 2
+ }
+ }
+ }
+}
+node {
+ name: "strided_slice_1/stack_2"
+ op: "Const"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_INT32
+ }
+ }
+ attr {
+ key: "value"
+ value {
+ tensor {
+ dtype: DT_INT32
+ tensor_shape {
+ dim {
+ size: 1
+ }
+ }
+ int_val: 1
+ }
+ }
+ }
+}
+node {
+ name: "strided_slice_1"
+ op: "StridedSlice"
+ input: "Shape"
+ input: "strided_slice_1/stack"
+ input: "strided_slice_1/stack_1"
+ input: "strided_slice_1/stack_2"
+ attr {
+ key: "Index"
+ value {
+ type: DT_INT32
+ }
+ }
+ attr {
+ key: "T"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "begin_mask"
+ value {
+ i: 0
+ }
+ }
+ attr {
+ key: "ellipsis_mask"
+ value {
+ i: 0
+ }
+ }
+ attr {
+ key: "end_mask"
+ value {
+ i: 0
+ }
+ }
+ attr {
+ key: "new_axis_mask"
+ value {
+ i: 0
+ }
+ }
+ attr {
+ key: "shrink_axis_mask"
+ value {
+ i: 1
+ }
+ }
+}
+node {
+ name: "strided_slice_2/stack"
+ op: "Const"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_INT32
+ }
+ }
+ attr {
+ key: "value"
+ value {
+ tensor {
+ dtype: DT_INT32
+ tensor_shape {
+ dim {
+ size: 1
+ }
+ }
+ int_val: 2
+ }
+ }
+ }
+}
+node {
+ name: "strided_slice_2/stack_1"
+ op: "Const"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_INT32
+ }
+ }
+ attr {
+ key: "value"
+ value {
+ tensor {
+ dtype: DT_INT32
+ tensor_shape {
+ dim {
+ size: 1
+ }
+ }
+ int_val: 3
+ }
+ }
+ }
+}
+node {
+ name: "strided_slice_2/stack_2"
+ op: "Const"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_INT32
+ }
+ }
+ attr {
+ key: "value"
+ value {
+ tensor {
+ dtype: DT_INT32
+ tensor_shape {
+ dim {
+ size: 1
+ }
+ }
+ int_val: 1
+ }
+ }
+ }
+}
+node {
+ name: "strided_slice_2"
+ op: "StridedSlice"
+ input: "Shape"
+ input: "strided_slice_2/stack"
+ input: "strided_slice_2/stack_1"
+ input: "strided_slice_2/stack_2"
+ attr {
+ key: "Index"
+ value {
+ type: DT_INT32
+ }
+ }
+ attr {
+ key: "T"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "begin_mask"
+ value {
+ i: 0
+ }
+ }
+ attr {
+ key: "ellipsis_mask"
+ value {
+ i: 0
+ }
+ }
+ attr {
+ key: "end_mask"
+ value {
+ i: 0
+ }
+ }
+ attr {
+ key: "new_axis_mask"
+ value {
+ i: 0
+ }
+ }
+ attr {
+ key: "shrink_axis_mask"
+ value {
+ i: 1
+ }
+ }
+}
+node {
+ name: "mul/y"
+ op: "Const"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "value"
+ value {
+ tensor {
+ dtype: DT_FLOAT
+ tensor_shape {
+ }
+ float_val: 2
+ }
+ }
+ }
+}
+node {
+ name: "mul"
+ op: "Mul"
+ input: "strided_slice_1"
+ input: "mul/y"
+ attr {
+ key: "T"
+ value {
+ type: DT_FLOAT
+ }
+ }
+}
+node {
+ name: "add/y"
+ op: "Const"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "value"
+ value {
+ tensor {
+ dtype: DT_FLOAT
+ tensor_shape {
+ }
+ float_val: 0
+ }
+ }
+ }
+}
+node {
+ name: "add"
+ op: "Add"
+ input: "mul"
+ input: "add/y"
+ attr {
+ key: "T"
+ value {
+ type: DT_FLOAT
+ }
+ }
+}
+node {
+ name: "mul_1/y"
+ op: "Const"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "value"
+ value {
+ tensor {
+ dtype: DT_FLOAT
+ tensor_shape {
+ }
+ float_val: 2
+ }
+ }
+ }
+}
+node {
+ name: "mul_1"
+ op: "Mul"
+ input: "strided_slice_2"
+ input: "mul_1/y"
+ attr {
+ key: "T"
+ value {
+ type: DT_FLOAT
+ }
+ }
+}
+node {
+ name: "add_1/y"
+ op: "Const"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "value"
+ value {
+ tensor {
+ dtype: DT_FLOAT
+ tensor_shape {
+ }
+ float_val: 0
+ }
+ }
+ }
+}
+node {
+ name: "add_1"
+ op: "Add"
+ input: "mul_1"
+ input: "add_1/y"
+ attr {
+ key: "T"
+ value {
+ type: DT_FLOAT
+ }
+ }
+}
+node {
+ name: "pack/stack/3"
+ op: "Const"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "value"
+ value {
+ tensor {
+ dtype: DT_FLOAT
+ tensor_shape {
+ }
+ float_val: 64
+ }
+ }
+ }
+}
+node {
+ name: "pack/stack"
+ op: "Pack"
+ input: "strided_slice"
+ input: "add"
+ input: "add_1"
+ input: "pack/stack/3"
+ attr {
+ key: "N"
+ value {
+ i: 4
+ }
+ }
+ attr {
+ key: "T"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "axis"
+ value {
+ i: 0
+ }
+ }
+}
diff --git a/res/TensorFlowTests/NET_0043/test.info b/res/TensorFlowTests/NET_0043/test.info
new file mode 100644
index 000000000..d4420e849
--- /dev/null
+++ b/res/TensorFlowTests/NET_0043/test.info
@@ -0,0 +1,2 @@
+input, input_shape:0, TF_FLOAT, [4]
+output, add:0, TF_FLOAT, []
diff --git a/res/TensorFlowTests/NET_0043/test.manifest b/res/TensorFlowTests/NET_0043/test.manifest
new file mode 100644
index 000000000..03cd50f89
--- /dev/null
+++ b/res/TensorFlowTests/NET_0043/test.manifest
@@ -0,0 +1 @@
+SUMMARY: Small network with zero dim size tensor
diff --git a/res/TensorFlowTests/NET_0043/test.pbtxt b/res/TensorFlowTests/NET_0043/test.pbtxt
new file mode 100644
index 000000000..178ac3608
--- /dev/null
+++ b/res/TensorFlowTests/NET_0043/test.pbtxt
@@ -0,0 +1,186 @@
+node {
+ name: "input_shape"
+ op: "Placeholder"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_INT32
+ }
+ }
+ attr {
+ key: "shape"
+ value {
+ shape {
+ dim {
+ size: 4
+ }
+ }
+ }
+ }
+}
+node {
+ name: "zeros"
+ op: "Const"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "value"
+ value {
+ tensor {
+ dtype: DT_FLOAT
+ tensor_shape {
+ dim {
+ size: 1
+ }
+ dim {
+ }
+ dim {
+ size: 512
+ }
+ }
+ }
+ }
+ }
+}
+node {
+ name: "reshape/shape"
+ op: "Const"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_INT32
+ }
+ }
+ attr {
+ key: "value"
+ value {
+ tensor {
+ dtype: DT_INT32
+ tensor_shape {
+ dim {
+ size: 4
+ }
+ }
+ int_val: 1
+ int_val: 0
+ int_val: 8
+ int_val: 64
+ }
+ }
+ }
+}
+node {
+ name: "reshape1"
+ op: "Reshape"
+ input: "zeros"
+ input: "reshape/shape"
+ attr {
+ key: "T"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "Tshape"
+ value {
+ type: DT_INT32
+ }
+ }
+}
+node {
+ name: "reshape2"
+ op: "Reshape"
+ input: "zeros"
+ input: "input_shape"
+ attr {
+ key: "T"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "Tshape"
+ value {
+ type: DT_INT32
+ }
+ }
+}
+node {
+ name: "perm"
+ op: "Const"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_INT32
+ }
+ }
+ attr {
+ key: "value"
+ value {
+ tensor {
+ dtype: DT_INT32
+ tensor_shape {
+ dim {
+ size: 4
+ }
+ }
+ int_val: 0
+ int_val: 2
+ int_val: 1
+ int_val: 3
+ }
+ }
+ }
+}
+node {
+ name: "transpose1"
+ op: "Transpose"
+ input: "reshape1"
+ input: "perm"
+ attr {
+ key: "T"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "Tperm"
+ value {
+ type: DT_INT32
+ }
+ }
+}
+node {
+ name: "transpose2"
+ op: "Transpose"
+ input: "reshape2"
+ input: "perm"
+ attr {
+ key: "T"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "Tperm"
+ value {
+ type: DT_INT32
+ }
+ }
+}
+node {
+ name: "add"
+ op: "Add"
+ input: "transpose1"
+ input: "transpose2"
+ attr {
+ key: "T"
+ value {
+ type: DT_FLOAT
+ }
+ }
+}
diff --git a/res/TensorFlowTests/NET_YUV_TO_RGB/circle.rule b/res/TensorFlowTests/NET_YUV_TO_RGB/circle.rule
new file mode 100644
index 000000000..44d52aaff
--- /dev/null
+++ b/res/TensorFlowTests/NET_YUV_TO_RGB/circle.rule
@@ -0,0 +1,5 @@
+# tf2circle-dredd-pbtxt-test for YUV to RGB conversion
+
+RULE "VERIFY_FILE_FORMAT" $(verify_file_format) '=' 1 # 1 means verification is OK
+
+RULE "ALL_OP_COUNT" $(all_op_count) '=' 3
diff --git a/res/TensorFlowTests/NET_YUV_TO_RGB/test.info b/res/TensorFlowTests/NET_YUV_TO_RGB/test.info
new file mode 100644
index 000000000..92e150d86
--- /dev/null
+++ b/res/TensorFlowTests/NET_YUV_TO_RGB/test.info
@@ -0,0 +1,2 @@
+input, x:0, TF_FLOAT, [1, 4, 4, 3]
+output, Identity:0, TF_FLOAT, [1, 4, 4, 3]
diff --git a/res/TensorFlowTests/NET_YUV_TO_RGB/test.manifest b/res/TensorFlowTests/NET_YUV_TO_RGB/test.manifest
new file mode 100644
index 000000000..3d4f7b98a
--- /dev/null
+++ b/res/TensorFlowTests/NET_YUV_TO_RGB/test.manifest
@@ -0,0 +1 @@
+SUMMARY: YUV_TO_RGB test as a graph
diff --git a/res/TensorFlowTests/NET_YUV_TO_RGB/test.pbtxt b/res/TensorFlowTests/NET_YUV_TO_RGB/test.pbtxt
new file mode 100644
index 000000000..3296f9919
--- /dev/null
+++ b/res/TensorFlowTests/NET_YUV_TO_RGB/test.pbtxt
@@ -0,0 +1,184 @@
+node {
+ name: "x"
+ op: "Placeholder"
+ attr {
+ key: "_user_specified_name"
+ value {
+ s: "x"
+ }
+ }
+ attr {
+ key: "dtype"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "shape"
+ value {
+ shape {
+ dim {
+ size: 1
+ }
+ dim {
+ size: 4
+ }
+ dim {
+ size: 4
+ }
+ dim {
+ size: 3
+ }
+ }
+ }
+ }
+}
+node {
+ name: "kernel"
+ op: "Const"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "value"
+ value {
+ tensor {
+ dtype: DT_FLOAT
+ tensor_shape {
+ dim {
+ size: 3
+ }
+ dim {
+ size: 3
+ }
+ }
+ tensor_content: "\000\000\200?\000\000\200?\000\000\200?\000\000\000\000\217\016\312\276M\r\002@\260\347\221?\242\243\024\277\000\000\000\000"
+ }
+ }
+ }
+}
+node {
+ name: "Tensordot/Reshape/shape"
+ op: "Const"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_INT32
+ }
+ }
+ attr {
+ key: "value"
+ value {
+ tensor {
+ dtype: DT_INT32
+ tensor_shape {
+ dim {
+ size: 2
+ }
+ }
+ tensor_content: "\020\000\000\000\003\000\000\000"
+ }
+ }
+ }
+}
+node {
+ name: "Tensordot/Reshape"
+ op: "Reshape"
+ input: "x"
+ input: "Tensordot/Reshape/shape"
+ attr {
+ key: "T"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "Tshape"
+ value {
+ type: DT_INT32
+ }
+ }
+}
+node {
+ name: "Tensordot/MatMul"
+ op: "MatMul"
+ input: "Tensordot/Reshape"
+ input: "kernel"
+ attr {
+ key: "T"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "transpose_a"
+ value {
+ b: false
+ }
+ }
+ attr {
+ key: "transpose_b"
+ value {
+ b: false
+ }
+ }
+}
+node {
+ name: "Tensordot/shape"
+ op: "Const"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_INT32
+ }
+ }
+ attr {
+ key: "value"
+ value {
+ tensor {
+ dtype: DT_INT32
+ tensor_shape {
+ dim {
+ size: 4
+ }
+ }
+ tensor_content: "\001\000\000\000\004\000\000\000\004\000\000\000\003\000\000\000"
+ }
+ }
+ }
+}
+node {
+ name: "Tensordot"
+ op: "Reshape"
+ input: "Tensordot/MatMul"
+ input: "Tensordot/shape"
+ attr {
+ key: "T"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "Tshape"
+ value {
+ type: DT_INT32
+ }
+ }
+}
+node {
+ name: "Identity"
+ op: "Identity"
+ input: "Tensordot"
+ attr {
+ key: "T"
+ value {
+ type: DT_FLOAT
+ }
+ }
+}
+versions {
+ producer: 175
+}
diff --git a/res/TensorFlowTests/NET_YUV_TO_RGB/test.py b/res/TensorFlowTests/NET_YUV_TO_RGB/test.py
new file mode 100644
index 000000000..978976571
--- /dev/null
+++ b/res/TensorFlowTests/NET_YUV_TO_RGB/test.py
@@ -0,0 +1,14 @@
+#used to create test.pbtxt
+# Version info
+# - Tensorflow : 2.2.0
+# - Python : 3.7.7
+
+import tensorflow as tf
+# Construct a basic model.
+root = tf.train.Checkpoint()
+root.f = tf.function(lambda x: tf.image.yuv_to_rgb(x))
+# Create the concrete function.
+input_data = tf.constant(1., shape=[1, 4, 4, 3])
+# dim = tf.constant(12,shape=[2])
+concrete_func = root.f.get_concrete_function(input_data)
+tf.io.write_graph(concrete_func.graph.as_graph_def(), '.', 'test.pbtxt')
diff --git a/res/TensorFlowTests/REGRESSION_0001/test.info b/res/TensorFlowTests/REGRESSION_0001/test.info
new file mode 100644
index 000000000..76e76187c
--- /dev/null
+++ b/res/TensorFlowTests/REGRESSION_0001/test.info
@@ -0,0 +1,2 @@
+input, Placeholder:0, TF_FLOAT, [2, 3]
+output, Add_2:0, TF_FLOAT, [2, 3]
diff --git a/res/TensorFlowTests/REGRESSION_0001/test.manifest b/res/TensorFlowTests/REGRESSION_0001/test.manifest
new file mode 100644
index 000000000..136452d3c
--- /dev/null
+++ b/res/TensorFlowTests/REGRESSION_0001/test.manifest
@@ -0,0 +1 @@
+SUMMARY: Successive Broadcasted Add
diff --git a/res/TensorFlowTests/REGRESSION_0001/test.pbtxt b/res/TensorFlowTests/REGRESSION_0001/test.pbtxt
new file mode 100644
index 000000000..99d276c00
--- /dev/null
+++ b/res/TensorFlowTests/REGRESSION_0001/test.pbtxt
@@ -0,0 +1,59 @@
+node {
+ name: "Placeholder"
+ op: "Placeholder"
+ attr {
+ key: "dtype"
+ value { type: DT_FLOAT }
+ }
+ attr {
+ key: "shape"
+ value {
+ shape {
+ dim { size: 2 }
+ dim { size: 3 }
+ }
+ }
+ }
+}
+node {
+ name: "Const"
+ op: "Const"
+ attr {
+ key: "dtype"
+ value { type: DT_FLOAT }
+ }
+ attr {
+ key: "value"
+ value {
+ tensor {
+ dtype: DT_FLOAT
+ tensor_shape {
+ dim { size: 3 }
+ }
+ float_val: 1.1
+ float_val: 2.2
+ float_val: 3.3
+ }
+ }
+ }
+}
+node {
+ name: "Add_1"
+ op: "Add"
+ input: "Placeholder"
+ input: "Const"
+ attr {
+ key: "T"
+ value { type: DT_FLOAT }
+ }
+}
+node {
+ name: "Add_2"
+ op: "Add"
+ input: "Add_1"
+ input: "Const"
+ attr {
+ key: "T"
+ value { type: DT_FLOAT }
+ }
+}
diff --git a/res/TensorFlowTests/REGRESSION_0002/test.info b/res/TensorFlowTests/REGRESSION_0002/test.info
new file mode 100644
index 000000000..c3e16f6b2
--- /dev/null
+++ b/res/TensorFlowTests/REGRESSION_0002/test.info
@@ -0,0 +1,2 @@
+input, ifm:0, TF_FLOAT, [1, 5, 5, 3]
+output, ofm:0, TF_FLOAT, [1, 4, 4, 2]
diff --git a/res/TensorFlowTests/REGRESSION_0002/test.manifest b/res/TensorFlowTests/REGRESSION_0002/test.manifest
new file mode 100644
index 000000000..55d2852ae
--- /dev/null
+++ b/res/TensorFlowTests/REGRESSION_0002/test.manifest
@@ -0,0 +1 @@
+SUMMARY: Conv2d without dilation attribute is correct according documentation and should be compiled
diff --git a/res/TensorFlowTests/REGRESSION_0002/test.pbtxt b/res/TensorFlowTests/REGRESSION_0002/test.pbtxt
new file mode 100644
index 000000000..e5d60f855
--- /dev/null
+++ b/res/TensorFlowTests/REGRESSION_0002/test.pbtxt
@@ -0,0 +1,66 @@
+node {
+ name: "ifm"
+ op: "Placeholder"
+ attr {
+ key: "dtype"
+ value { type: DT_FLOAT }
+ }
+ attr {
+ key: "shape"
+ value {
+ shape {
+ dim { size: 1 }
+ dim { size: 5 }
+ dim { size: 5 }
+ dim { size: 3 }
+ }
+ }
+ }
+}
+node {
+ name: "ker"
+ op: "Const"
+ attr {
+ key: "dtype"
+ value { type: DT_FLOAT }
+ }
+ attr {
+ key: "value"
+ value {
+ tensor {
+ dtype: DT_FLOAT
+ tensor_shape {
+ dim { size: 2 }
+ dim { size: 2 }
+ dim { size: 3 }
+ dim { size: 2 }
+ }
+ float_val: 1.1
+ }
+ }
+ }
+}
+node {
+ name: "ofm"
+ op: "Conv2D"
+ input: "ifm"
+ input: "ker"
+ attr {
+ key: "T"
+ value { type: DT_FLOAT }
+ }
+ attr {
+ key: "data_format"
+ value { s: "NHWC" }
+ }
+ attr {
+ key: "padding"
+ value { s: "VALID" }
+ }
+ attr {
+ key: "strides"
+ value {
+ list { i: 1 i: 1 i: 1 i: 1 }
+ }
+ }
+}
diff --git a/res/TensorFlowTests/UI_0000/test.info b/res/TensorFlowTests/UI_0000/test.info
new file mode 100644
index 000000000..2ce0c6d38
--- /dev/null
+++ b/res/TensorFlowTests/UI_0000/test.info
@@ -0,0 +1,2 @@
+input, input:0, TF_FLOAT, [1, 5, 5, 3]
+output, InceptionV3/InceptionV3/Conv2d_1a_3x3/Relu:0, TF_FLOAT, [1, 2, 2, 4]
diff --git a/res/TensorFlowTests/UI_0000/test.manifest b/res/TensorFlowTests/UI_0000/test.manifest
new file mode 100644
index 000000000..8e29c13ef
--- /dev/null
+++ b/res/TensorFlowTests/UI_0000/test.manifest
@@ -0,0 +1 @@
+SUMMARY: Wrong network (Kernel input of Conv2D is missing) to see error message
diff --git a/res/TensorFlowTests/UI_0000/test.pbtxt b/res/TensorFlowTests/UI_0000/test.pbtxt
new file mode 100644
index 000000000..f5539ee02
--- /dev/null
+++ b/res/TensorFlowTests/UI_0000/test.pbtxt
@@ -0,0 +1,112 @@
+node {
+ name: "InceptionV3/Conv2d_1a_3x3/weights/read/_3__cf__3"
+ op: "Const"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "value"
+ value {
+ tensor {
+ dtype: DT_FLOAT
+ tensor_shape {
+ dim {
+ size: 3
+ }
+ dim {
+ size: 3
+ }
+ dim {
+ size: 3
+ }
+ dim {
+ size: 4
+ }
+ }
+ float_val: 1.0
+ }
+ }
+ }
+}
+node {
+ name: "input"
+ op: "Placeholder"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "shape"
+ value {
+ shape {
+ dim {
+ size: 1
+ }
+ dim {
+ size: 5
+ }
+ dim {
+ size: 5
+ }
+ dim {
+ size: 3
+ }
+ }
+ }
+ }
+}
+
+node {
+ name: "InceptionV3/InceptionV3/Conv2d_1a_3x3/Conv2D"
+ op: "Conv2D"
+ input: "input:0"
+#
+# intentionally, commented out
+# input: "InceptionV3/Conv2d_1a_3x3/weights/read/_3__cf__3"
+#
+ attr {
+ key: "T"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "data_format"
+ value {
+ s: "NHWC"
+ }
+ }
+ attr {
+ key: "dilations"
+ value {
+ list {
+ i: 1
+ i: 1
+ i: 1
+ i: 1
+ }
+ }
+ }
+ attr {
+ key: "padding"
+ value {
+ s: "VALID"
+ }
+ }
+ attr {
+ key: "strides"
+ value {
+ list {
+ i: 1
+ i: 2
+ i: 2
+ i: 1
+ }
+ }
+ }
+}
diff --git a/res/TensorFlowTests/UI_0001/test.info b/res/TensorFlowTests/UI_0001/test.info
new file mode 100644
index 000000000..2ce0c6d38
--- /dev/null
+++ b/res/TensorFlowTests/UI_0001/test.info
@@ -0,0 +1,2 @@
+input, input:0, TF_FLOAT, [1, 5, 5, 3]
+output, InceptionV3/InceptionV3/Conv2d_1a_3x3/Relu:0, TF_FLOAT, [1, 2, 2, 4]
diff --git a/res/TensorFlowTests/UI_0001/test.manifest b/res/TensorFlowTests/UI_0001/test.manifest
new file mode 100644
index 000000000..4721034a0
--- /dev/null
+++ b/res/TensorFlowTests/UI_0001/test.manifest
@@ -0,0 +1 @@
+SUMMARY: Wrong network : Cannot find a node whose name is used as an input of Conv2D
diff --git a/res/TensorFlowTests/UI_0001/test.pbtxt b/res/TensorFlowTests/UI_0001/test.pbtxt
new file mode 100644
index 000000000..167d7dcb9
--- /dev/null
+++ b/res/TensorFlowTests/UI_0001/test.pbtxt
@@ -0,0 +1,110 @@
+node {
+ name: "InceptionV3/Conv2d_1a_3x3/weights/read/_3__cf__3"
+ op: "Const"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "value"
+ value {
+ tensor {
+ dtype: DT_FLOAT
+ tensor_shape {
+ dim {
+ size: 3
+ }
+ dim {
+ size: 3
+ }
+ dim {
+ size: 3
+ }
+ dim {
+ size: 4
+ }
+ }
+ float_val: 1.0
+ }
+ }
+ }
+}
+node {
+ name: "input"
+ op: "Placeholder"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "shape"
+ value {
+ shape {
+ dim {
+ size: 1
+ }
+ dim {
+ size: 5
+ }
+ dim {
+ size: 5
+ }
+ dim {
+ size: 3
+ }
+ }
+ }
+ }
+}
+node {
+ name: "InceptionV3/InceptionV3/Conv2d_1a_3x3/Conv2D"
+ op: "Conv2D"
+# error -----
+# "nowhere:0" does not exist
+ input: "nowhere:0"
+ input: "InceptionV3/Conv2d_1a_3x3/weights/read/_3__cf__3"
+ attr {
+ key: "T"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "data_format"
+ value {
+ s: "NHWC"
+ }
+ }
+ attr {
+ key: "dilations"
+ value {
+ list {
+ i: 1
+ i: 1
+ i: 1
+ i: 1
+ }
+ }
+ }
+ attr {
+ key: "padding"
+ value {
+ s: "VALID"
+ }
+ }
+ attr {
+ key: "strides"
+ value {
+ list {
+ i: 1
+ i: 2
+ i: 2
+ i: 1
+ }
+ }
+ }
+}
diff --git a/res/TensorFlowTests/UI_0002/test.info b/res/TensorFlowTests/UI_0002/test.info
new file mode 100644
index 000000000..2ce0c6d38
--- /dev/null
+++ b/res/TensorFlowTests/UI_0002/test.info
@@ -0,0 +1,2 @@
+input, input:0, TF_FLOAT, [1, 5, 5, 3]
+output, InceptionV3/InceptionV3/Conv2d_1a_3x3/Relu:0, TF_FLOAT, [1, 2, 2, 4]
diff --git a/res/TensorFlowTests/UI_0002/test.manifest b/res/TensorFlowTests/UI_0002/test.manifest
new file mode 100644
index 000000000..182342655
--- /dev/null
+++ b/res/TensorFlowTests/UI_0002/test.manifest
@@ -0,0 +1 @@
+SUMMARY: Wrong network : Conv2D and biasAdd has a same name
diff --git a/res/TensorFlowTests/UI_0002/test.pbtxt b/res/TensorFlowTests/UI_0002/test.pbtxt
new file mode 100644
index 000000000..e23acac41
--- /dev/null
+++ b/res/TensorFlowTests/UI_0002/test.pbtxt
@@ -0,0 +1,150 @@
+node {
+ name: "InceptionV3/Conv2d_1a_3x3/weights/read/_3__cf__3"
+ op: "Const"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "value"
+ value {
+ tensor {
+ dtype: DT_FLOAT
+ tensor_shape {
+ dim {
+ size: 3
+ }
+ dim {
+ size: 3
+ }
+ dim {
+ size: 3
+ }
+ dim {
+ size: 4
+ }
+ }
+ float_val: 1.0
+ }
+ }
+ }
+}
+node {
+ name: "input"
+ op: "Placeholder"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "shape"
+ value {
+ shape {
+ dim {
+ size: 1
+ }
+ dim {
+ size: 5
+ }
+ dim {
+ size: 5
+ }
+ dim {
+ size: 3
+ }
+ }
+ }
+ }
+}
+node {
+ name: "Duplicate_name"
+ op: "Conv2D"
+ input: "input_wrong:0"
+ input: "InceptionV3/Conv2d_1a_3x3/weights/read/_3__cf__3"
+ attr {
+ key: "T"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "data_format"
+ value {
+ s: "NHWC"
+ }
+ }
+ attr {
+ key: "dilations"
+ value {
+ list {
+ i: 1
+ i: 1
+ i: 1
+ i: 1
+ }
+ }
+ }
+ attr {
+ key: "padding"
+ value {
+ s: "VALID"
+ }
+ }
+ attr {
+ key: "strides"
+ value {
+ list {
+ i: 1
+ i: 2
+ i: 2
+ i: 1
+ }
+ }
+ }
+}
+node {
+ name: "InceptionV3/InceptionV3/Conv2d_1a_3x3/Conv2D_bn_offset"
+ op: "Const"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "value"
+ value {
+ tensor {
+ dtype: DT_FLOAT
+ tensor_shape {
+ dim {
+ size: 4
+ }
+ }
+ float_val: 1.0
+ }
+ }
+ }
+}
+node {
+ name: "Duplicate_name"
+ op: "BiasAdd"
+ input: "InceptionV3/InceptionV3/Conv2d_1a_3x3/Conv2D"
+ input: "InceptionV3/InceptionV3/Conv2d_1a_3x3/Conv2D_bn_offset"
+ attr {
+ key: "T"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "data_format"
+ value {
+ s: "NHWC"
+ }
+ }
+}
diff --git a/res/TensorFlowTests/UI_0003/test.info b/res/TensorFlowTests/UI_0003/test.info
new file mode 100644
index 000000000..738d26831
--- /dev/null
+++ b/res/TensorFlowTests/UI_0003/test.info
@@ -0,0 +1,2 @@
+input, relu1:0, TF_FLOAT, [1, 2]
+output, relu2:0, TF_FLOAT, [1, 2]
diff --git a/res/TensorFlowTests/UI_0003/test.manifest b/res/TensorFlowTests/UI_0003/test.manifest
new file mode 100644
index 000000000..2a6b32242
--- /dev/null
+++ b/res/TensorFlowTests/UI_0003/test.manifest
@@ -0,0 +1 @@
+SUMMARY: Wrong network. Network without proper input (const or placeholder)
diff --git a/res/TensorFlowTests/UI_0003/test.pbtxt b/res/TensorFlowTests/UI_0003/test.pbtxt
new file mode 100644
index 000000000..4d5154e67
--- /dev/null
+++ b/res/TensorFlowTests/UI_0003/test.pbtxt
@@ -0,0 +1,22 @@
+node {
+ name: "relu1"
+ op: "Relu"
+ input: "Placeholder"
+ attr {
+ key: "T"
+ value {
+ type: DT_FLOAT
+ }
+ }
+}
+node {
+ name: "relu2"
+ op: "Relu"
+ input: "relu1"
+ attr {
+ key: "T"
+ value {
+ type: DT_FLOAT
+ }
+ }
+}
diff --git a/res/TensorFlowTests/UI_0004/test.info b/res/TensorFlowTests/UI_0004/test.info
new file mode 100644
index 000000000..5988da939
--- /dev/null
+++ b/res/TensorFlowTests/UI_0004/test.info
@@ -0,0 +1,2 @@
+input, not_existing_input:0, TF_FLOAT, [1, 2]
+output, relu:0, TF_FLOAT, [1, 2]
diff --git a/res/TensorFlowTests/UI_0004/test.manifest b/res/TensorFlowTests/UI_0004/test.manifest
new file mode 100644
index 000000000..be3d615f8
--- /dev/null
+++ b/res/TensorFlowTests/UI_0004/test.manifest
@@ -0,0 +1 @@
+SUMMARY: Wrong info file. Input name in info file does not exist in pb file.
diff --git a/res/TensorFlowTests/UI_0004/test.pbtxt b/res/TensorFlowTests/UI_0004/test.pbtxt
new file mode 100644
index 000000000..d4b7ee125
--- /dev/null
+++ b/res/TensorFlowTests/UI_0004/test.pbtxt
@@ -0,0 +1,34 @@
+node {
+ name: "Placeholder"
+ op: "Placeholder"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "shape"
+ value {
+ shape {
+ dim {
+ size: 1
+ }
+ dim {
+ size: 2
+ }
+ }
+ }
+ }
+}
+node {
+ name: "output/relu"
+ op: "Relu"
+ input: "Placeholder"
+ attr {
+ key: "T"
+ value {
+ type: DT_FLOAT
+ }
+ }
+}
diff --git a/res/TensorFlowTests/UI_0005/test.info b/res/TensorFlowTests/UI_0005/test.info
new file mode 100644
index 000000000..6759094c3
--- /dev/null
+++ b/res/TensorFlowTests/UI_0005/test.info
@@ -0,0 +1,2 @@
+input, Placeholder:0, TF_FLOAT, [1, 2]
+output, not_existing_output_name:0, TF_FLOAT, [1, 2]
diff --git a/res/TensorFlowTests/UI_0005/test.manifest b/res/TensorFlowTests/UI_0005/test.manifest
new file mode 100644
index 000000000..7075344ab
--- /dev/null
+++ b/res/TensorFlowTests/UI_0005/test.manifest
@@ -0,0 +1 @@
+SUMMARY: Wrong info file. Output name in info file does not exist in pb file.
diff --git a/res/TensorFlowTests/UI_0005/test.pbtxt b/res/TensorFlowTests/UI_0005/test.pbtxt
new file mode 100644
index 000000000..d4b7ee125
--- /dev/null
+++ b/res/TensorFlowTests/UI_0005/test.pbtxt
@@ -0,0 +1,34 @@
+node {
+ name: "Placeholder"
+ op: "Placeholder"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "shape"
+ value {
+ shape {
+ dim {
+ size: 1
+ }
+ dim {
+ size: 2
+ }
+ }
+ }
+ }
+}
+node {
+ name: "output/relu"
+ op: "Relu"
+ input: "Placeholder"
+ attr {
+ key: "T"
+ value {
+ type: DT_FLOAT
+ }
+ }
+}
diff --git a/res/TensorFlowTests/UI_0006/test.info b/res/TensorFlowTests/UI_0006/test.info
new file mode 100644
index 000000000..bdf764eab
--- /dev/null
+++ b/res/TensorFlowTests/UI_0006/test.info
@@ -0,0 +1,2 @@
+input, Placeholder:0, TF_FLOAT
+output, relu:0, TF_FLOAT, [1, 2]
diff --git a/res/TensorFlowTests/UI_0006/test.manifest b/res/TensorFlowTests/UI_0006/test.manifest
new file mode 100644
index 000000000..e0ea9b331
--- /dev/null
+++ b/res/TensorFlowTests/UI_0006/test.manifest
@@ -0,0 +1 @@
+SUMMARY: Wrong info file. Missing input shape.
diff --git a/res/TensorFlowTests/UI_0006/test.pbtxt b/res/TensorFlowTests/UI_0006/test.pbtxt
new file mode 100644
index 000000000..5806251fb
--- /dev/null
+++ b/res/TensorFlowTests/UI_0006/test.pbtxt
@@ -0,0 +1,34 @@
+node {
+ name: "Placeholder"
+ op: "Placeholder"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "shape"
+ value {
+ shape {
+ dim {
+ size: 1
+ }
+ dim {
+ size: 2
+ }
+ }
+ }
+ }
+}
+node {
+ name: "relu"
+ op: "Relu"
+ input: "Placeholder"
+ attr {
+ key: "T"
+ value {
+ type: DT_FLOAT
+ }
+ }
+}
diff --git a/res/TensorFlowTests/UI_0007/test.info b/res/TensorFlowTests/UI_0007/test.info
new file mode 100644
index 000000000..ad84e8d38
--- /dev/null
+++ b/res/TensorFlowTests/UI_0007/test.info
@@ -0,0 +1 @@
+input, Placeholder:0, TF_FLOAT, [1, 2]
diff --git a/res/TensorFlowTests/UI_0007/test.manifest b/res/TensorFlowTests/UI_0007/test.manifest
new file mode 100644
index 000000000..94fdce5f8
--- /dev/null
+++ b/res/TensorFlowTests/UI_0007/test.manifest
@@ -0,0 +1 @@
+SUMMARY: Wrong info file. No output in info file
diff --git a/res/TensorFlowTests/UI_0007/test.pbtxt b/res/TensorFlowTests/UI_0007/test.pbtxt
new file mode 100644
index 000000000..5806251fb
--- /dev/null
+++ b/res/TensorFlowTests/UI_0007/test.pbtxt
@@ -0,0 +1,34 @@
+node {
+ name: "Placeholder"
+ op: "Placeholder"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "shape"
+ value {
+ shape {
+ dim {
+ size: 1
+ }
+ dim {
+ size: 2
+ }
+ }
+ }
+ }
+}
+node {
+ name: "relu"
+ op: "Relu"
+ input: "Placeholder"
+ attr {
+ key: "T"
+ value {
+ type: DT_FLOAT
+ }
+ }
+}
diff --git a/res/TensorFlowTests/UI_0008/test.info b/res/TensorFlowTests/UI_0008/test.info
new file mode 100644
index 000000000..94815a520
--- /dev/null
+++ b/res/TensorFlowTests/UI_0008/test.info
@@ -0,0 +1,3 @@
+input, Placeholder:0, TF_FLOAT, [1, 2]
+output, relu:0, TF_FLOAT, [1, 2]
+output, relu:0, TF_FLOAT, [1, 2]
diff --git a/res/TensorFlowTests/UI_0008/test.manifest b/res/TensorFlowTests/UI_0008/test.manifest
new file mode 100644
index 000000000..858aae672
--- /dev/null
+++ b/res/TensorFlowTests/UI_0008/test.manifest
@@ -0,0 +1 @@
+SUMMARY: Multiple output names in info file that have same name
diff --git a/res/TensorFlowTests/UI_0008/test.pbtxt b/res/TensorFlowTests/UI_0008/test.pbtxt
new file mode 100644
index 000000000..5806251fb
--- /dev/null
+++ b/res/TensorFlowTests/UI_0008/test.pbtxt
@@ -0,0 +1,34 @@
+node {
+ name: "Placeholder"
+ op: "Placeholder"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "shape"
+ value {
+ shape {
+ dim {
+ size: 1
+ }
+ dim {
+ size: 2
+ }
+ }
+ }
+ }
+}
+node {
+ name: "relu"
+ op: "Relu"
+ input: "Placeholder"
+ attr {
+ key: "T"
+ value {
+ type: DT_FLOAT
+ }
+ }
+}
diff --git a/res/TensorFlowTests/UI_0009/test.info b/res/TensorFlowTests/UI_0009/test.info
new file mode 100644
index 000000000..8e78a07b9
--- /dev/null
+++ b/res/TensorFlowTests/UI_0009/test.info
@@ -0,0 +1,2 @@
+input, Placeholder:1, TF_FLOAT, [1, 2] # Placeholder:1 does not exist in the model
+output, Placeholder:0, TF_FLOAT, [1, 2]
diff --git a/res/TensorFlowTests/UI_0009/test.manifest b/res/TensorFlowTests/UI_0009/test.manifest
new file mode 100644
index 000000000..78ed75108
--- /dev/null
+++ b/res/TensorFlowTests/UI_0009/test.manifest
@@ -0,0 +1 @@
+SUMMARY: Wrong info file. Index of input tensor name is wrong in info file
diff --git a/res/TensorFlowTests/UI_0009/test.pbtxt b/res/TensorFlowTests/UI_0009/test.pbtxt
new file mode 100644
index 000000000..5806251fb
--- /dev/null
+++ b/res/TensorFlowTests/UI_0009/test.pbtxt
@@ -0,0 +1,34 @@
+node {
+ name: "Placeholder"
+ op: "Placeholder"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "shape"
+ value {
+ shape {
+ dim {
+ size: 1
+ }
+ dim {
+ size: 2
+ }
+ }
+ }
+ }
+}
+node {
+ name: "relu"
+ op: "Relu"
+ input: "Placeholder"
+ attr {
+ key: "T"
+ value {
+ type: DT_FLOAT
+ }
+ }
+}
diff --git a/res/TensorFlowTests/UI_0010/test.info b/res/TensorFlowTests/UI_0010/test.info
new file mode 100644
index 000000000..c8da7cc3e
--- /dev/null
+++ b/res/TensorFlowTests/UI_0010/test.info
@@ -0,0 +1,2 @@
+input Placeholder:0, TF_FLOAT, [1, 2]
+output, relu:0, TF_FLOAT, [1, 2]
diff --git a/res/TensorFlowTests/UI_0010/test.manifest b/res/TensorFlowTests/UI_0010/test.manifest
new file mode 100644
index 000000000..598164e32
--- /dev/null
+++ b/res/TensorFlowTests/UI_0010/test.manifest
@@ -0,0 +1 @@
+SUMMARY: Wrong info file. Missing comma after 'input'.
diff --git a/res/TensorFlowTests/UI_0010/test.pbtxt b/res/TensorFlowTests/UI_0010/test.pbtxt
new file mode 100644
index 000000000..5806251fb
--- /dev/null
+++ b/res/TensorFlowTests/UI_0010/test.pbtxt
@@ -0,0 +1,34 @@
+node {
+ name: "Placeholder"
+ op: "Placeholder"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "shape"
+ value {
+ shape {
+ dim {
+ size: 1
+ }
+ dim {
+ size: 2
+ }
+ }
+ }
+ }
+}
+node {
+ name: "relu"
+ op: "Relu"
+ input: "Placeholder"
+ attr {
+ key: "T"
+ value {
+ type: DT_FLOAT
+ }
+ }
+}
diff --git a/res/TensorFlowTests/UI_0011/test.info b/res/TensorFlowTests/UI_0011/test.info
new file mode 100644
index 000000000..96cca79b9
--- /dev/null
+++ b/res/TensorFlowTests/UI_0011/test.info
@@ -0,0 +1,2 @@
+input, Placeholder:0 TF_FLOAT, [1, 2]
+output, relu:0, TF_FLOAT, [1, 2]
diff --git a/res/TensorFlowTests/UI_0011/test.manifest b/res/TensorFlowTests/UI_0011/test.manifest
new file mode 100644
index 000000000..b0938eb5c
--- /dev/null
+++ b/res/TensorFlowTests/UI_0011/test.manifest
@@ -0,0 +1 @@
+SUMMARY: Wrong info file. Missing comma after input name.
diff --git a/res/TensorFlowTests/UI_0011/test.pbtxt b/res/TensorFlowTests/UI_0011/test.pbtxt
new file mode 100644
index 000000000..5806251fb
--- /dev/null
+++ b/res/TensorFlowTests/UI_0011/test.pbtxt
@@ -0,0 +1,34 @@
+node {
+ name: "Placeholder"
+ op: "Placeholder"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "shape"
+ value {
+ shape {
+ dim {
+ size: 1
+ }
+ dim {
+ size: 2
+ }
+ }
+ }
+ }
+}
+node {
+ name: "relu"
+ op: "Relu"
+ input: "Placeholder"
+ attr {
+ key: "T"
+ value {
+ type: DT_FLOAT
+ }
+ }
+}
diff --git a/res/TensorFlowTests/UI_0012/test.info b/res/TensorFlowTests/UI_0012/test.info
new file mode 100644
index 000000000..b04feac4b
--- /dev/null
+++ b/res/TensorFlowTests/UI_0012/test.info
@@ -0,0 +1,2 @@
+input, Placeholder:0, TF_FLOAT [1, 2]
+output, relu:0, TF_FLOAT, [1, 2]
diff --git a/res/TensorFlowTests/UI_0012/test.manifest b/res/TensorFlowTests/UI_0012/test.manifest
new file mode 100644
index 000000000..e5765aa37
--- /dev/null
+++ b/res/TensorFlowTests/UI_0012/test.manifest
@@ -0,0 +1 @@
+SUMMARY: Wrong info file. Missing comma after dtype.
diff --git a/res/TensorFlowTests/UI_0012/test.pbtxt b/res/TensorFlowTests/UI_0012/test.pbtxt
new file mode 100644
index 000000000..5806251fb
--- /dev/null
+++ b/res/TensorFlowTests/UI_0012/test.pbtxt
@@ -0,0 +1,34 @@
+node {
+ name: "Placeholder"
+ op: "Placeholder"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "shape"
+ value {
+ shape {
+ dim {
+ size: 1
+ }
+ dim {
+ size: 2
+ }
+ }
+ }
+ }
+}
+node {
+ name: "relu"
+ op: "Relu"
+ input: "Placeholder"
+ attr {
+ key: "T"
+ value {
+ type: DT_FLOAT
+ }
+ }
+}
diff --git a/res/TensorFlowTests/UNIT_Concat_000/test.info b/res/TensorFlowTests/UNIT_ConcatV2_000/test.info
index 9ea940f2a..9ea940f2a 100644
--- a/res/TensorFlowTests/UNIT_Concat_000/test.info
+++ b/res/TensorFlowTests/UNIT_ConcatV2_000/test.info
diff --git a/res/TensorFlowTests/UNIT_Concat_000/test.pbtxt b/res/TensorFlowTests/UNIT_ConcatV2_000/test.pbtxt
index 77dbea792..77dbea792 100644
--- a/res/TensorFlowTests/UNIT_Concat_000/test.pbtxt
+++ b/res/TensorFlowTests/UNIT_ConcatV2_000/test.pbtxt
diff --git a/res/TensorFlowTests/UNIT_Concat_001/test.info b/res/TensorFlowTests/UNIT_ConcatV2_001/test.info
index e2add430f..e2add430f 100644
--- a/res/TensorFlowTests/UNIT_Concat_001/test.info
+++ b/res/TensorFlowTests/UNIT_ConcatV2_001/test.info
diff --git a/res/TensorFlowTests/UNIT_Concat_001/test.pbtxt b/res/TensorFlowTests/UNIT_ConcatV2_001/test.pbtxt
index ac3e85581..ac3e85581 100644
--- a/res/TensorFlowTests/UNIT_Concat_001/test.pbtxt
+++ b/res/TensorFlowTests/UNIT_ConcatV2_001/test.pbtxt
diff --git a/res/TensorFlowTests/UNIT_Concat_002/test.info b/res/TensorFlowTests/UNIT_ConcatV2_002/test.info
index 460093bd5..460093bd5 100644
--- a/res/TensorFlowTests/UNIT_Concat_002/test.info
+++ b/res/TensorFlowTests/UNIT_ConcatV2_002/test.info
diff --git a/res/TensorFlowTests/UNIT_Concat_002/test.pbtxt b/res/TensorFlowTests/UNIT_ConcatV2_002/test.pbtxt
index 9a524040a..9a524040a 100644
--- a/res/TensorFlowTests/UNIT_Concat_002/test.pbtxt
+++ b/res/TensorFlowTests/UNIT_ConcatV2_002/test.pbtxt
diff --git a/res/TensorFlowTests/UNIT_Conv2DBackpropInput_000/test.info b/res/TensorFlowTests/UNIT_Conv2DBackpropInput_000/test.info
new file mode 100644
index 000000000..dfed0e296
--- /dev/null
+++ b/res/TensorFlowTests/UNIT_Conv2DBackpropInput_000/test.info
@@ -0,0 +1,2 @@
+input, ifm:0, TF_FLOAT, [1, 8, 6, 3]
+output, ofm:0, TF_FLOAT, [1, 17, 13, 2]
diff --git a/res/TensorFlowTests/UNIT_Conv2DBackpropInput_000/test.manifest b/res/TensorFlowTests/UNIT_Conv2DBackpropInput_000/test.manifest
new file mode 100644
index 000000000..eae8d4baa
--- /dev/null
+++ b/res/TensorFlowTests/UNIT_Conv2DBackpropInput_000/test.manifest
@@ -0,0 +1 @@
+SUMMARY: VALID padding / tight fit case
diff --git a/res/TensorFlowTests/UNIT_Conv2DBackpropInput_000/test.pbtxt b/res/TensorFlowTests/UNIT_Conv2DBackpropInput_000/test.pbtxt
new file mode 100644
index 000000000..6cb0cb71c
--- /dev/null
+++ b/res/TensorFlowTests/UNIT_Conv2DBackpropInput_000/test.pbtxt
@@ -0,0 +1,136 @@
+node {
+ name: "ifm"
+ op: "Placeholder"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "shape"
+ value {
+ shape {
+ dim {
+ size: 1
+ }
+ dim {
+ size: 8
+ }
+ dim {
+ size: 6
+ }
+ dim {
+ size: 3
+ }
+ }
+ }
+ }
+}
+node {
+ name: "weights"
+ op: "Const"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "value"
+ value {
+ tensor {
+ dtype: DT_FLOAT
+ tensor_shape {
+ dim {
+ size: 3
+ }
+ dim {
+ size: 3
+ }
+ dim {
+ size: 2
+ }
+ dim {
+ size: 3
+ }
+ }
+ float_val: 1.0
+ }
+ }
+ }
+}
+node {
+ name: "outshape"
+ op: "Const"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_INT32
+ }
+ }
+ attr {
+ key: "value"
+ value {
+ tensor {
+ dtype: DT_INT32
+ tensor_shape {
+ dim {
+ size: 4
+ }
+ }
+ int_val: 1
+ int_val: 17
+ int_val: 13
+ int_val: 2
+ }
+ }
+ }
+}
+node {
+ name: "ofm"
+ op: "Conv2DBackpropInput"
+ input: "outshape"
+ input: "weights"
+ input: "ifm"
+ attr {
+ key: "T"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "data_format"
+ value {
+ s: "NHWC"
+ }
+ }
+ attr {
+ key: "dilations"
+ value {
+ list {
+ i: 1
+ i: 1
+ i: 1
+ i: 1
+ }
+ }
+ }
+ attr {
+ key: "padding"
+ value {
+ s: "VALID"
+ }
+ }
+ attr {
+ key: "strides"
+ value {
+ list {
+ i: 1
+ i: 2
+ i: 2
+ i: 1
+ }
+ }
+ }
+}
diff --git a/res/TensorFlowTests/UNIT_Conv2DBackpropInput_002/test.info b/res/TensorFlowTests/UNIT_Conv2DBackpropInput_002/test.info
new file mode 100644
index 000000000..130931836
--- /dev/null
+++ b/res/TensorFlowTests/UNIT_Conv2DBackpropInput_002/test.info
@@ -0,0 +1,2 @@
+input, ifm:0, TF_FLOAT, [1, 8, 6, 3]
+output, ofm:0, TF_FLOAT, [1, 18, 14, 2]
diff --git a/res/TensorFlowTests/UNIT_Conv2DBackpropInput_002/test.manifest b/res/TensorFlowTests/UNIT_Conv2DBackpropInput_002/test.manifest
new file mode 100644
index 000000000..8a1df46a5
--- /dev/null
+++ b/res/TensorFlowTests/UNIT_Conv2DBackpropInput_002/test.manifest
@@ -0,0 +1 @@
+SUMMARY: VALID padding and non-tight output shape
diff --git a/res/TensorFlowTests/UNIT_Conv2DBackpropInput_002/test.pbtxt b/res/TensorFlowTests/UNIT_Conv2DBackpropInput_002/test.pbtxt
new file mode 100644
index 000000000..0c6b3be84
--- /dev/null
+++ b/res/TensorFlowTests/UNIT_Conv2DBackpropInput_002/test.pbtxt
@@ -0,0 +1,136 @@
+node {
+ name: "ifm"
+ op: "Placeholder"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "shape"
+ value {
+ shape {
+ dim {
+ size: 1
+ }
+ dim {
+ size: 8
+ }
+ dim {
+ size: 6
+ }
+ dim {
+ size: 3
+ }
+ }
+ }
+ }
+}
+node {
+ name: "weights"
+ op: "Const"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "value"
+ value {
+ tensor {
+ dtype: DT_FLOAT
+ tensor_shape {
+ dim {
+ size: 3
+ }
+ dim {
+ size: 3
+ }
+ dim {
+ size: 2
+ }
+ dim {
+ size: 3
+ }
+ }
+ float_val: 1.0
+ }
+ }
+ }
+}
+node {
+ name: "outshape"
+ op: "Const"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_INT32
+ }
+ }
+ attr {
+ key: "value"
+ value {
+ tensor {
+ dtype: DT_INT32
+ tensor_shape {
+ dim {
+ size: 4
+ }
+ }
+ int_val: 1
+ int_val: 18
+ int_val: 14
+ int_val: 2
+ }
+ }
+ }
+}
+node {
+ name: "ofm"
+ op: "Conv2DBackpropInput"
+ input: "outshape"
+ input: "weights"
+ input: "ifm"
+ attr {
+ key: "T"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "data_format"
+ value {
+ s: "NHWC"
+ }
+ }
+ attr {
+ key: "dilations"
+ value {
+ list {
+ i: 1
+ i: 1
+ i: 1
+ i: 1
+ }
+ }
+ }
+ attr {
+ key: "padding"
+ value {
+ s: "VALID"
+ }
+ }
+ attr {
+ key: "strides"
+ value {
+ list {
+ i: 1
+ i: 2
+ i: 2
+ i: 1
+ }
+ }
+ }
+}
diff --git a/res/TensorFlowTests/UNIT_Conv2D_000/test.pbtxt b/res/TensorFlowTests/UNIT_Conv2D_000/test.pbtxt
index 3649aa827..f537cf4a6 100644
--- a/res/TensorFlowTests/UNIT_Conv2D_000/test.pbtxt
+++ b/res/TensorFlowTests/UNIT_Conv2D_000/test.pbtxt
@@ -69,8 +69,4 @@ node {
list { i: 1 i: 1 i: 1 i: 1 }
}
}
- attr {
- key: "use_cudnn_on_gpu"
- value { b: false }
- }
}
diff --git a/res/TensorFlowTests/UNIT_Conv2D_001/test.info b/res/TensorFlowTests/UNIT_Conv2D_001/test.info
new file mode 100644
index 000000000..2b6d73e5b
--- /dev/null
+++ b/res/TensorFlowTests/UNIT_Conv2D_001/test.info
@@ -0,0 +1,2 @@
+input, ifm:0, TF_FLOAT, [1, 5, 5, 3]
+output, ofm:0, TF_FLOAT, [1, 3, 3, 2]
diff --git a/res/TensorFlowTests/UNIT_Conv2D_001/test.manifest b/res/TensorFlowTests/UNIT_Conv2D_001/test.manifest
new file mode 100644
index 000000000..34c89b172
--- /dev/null
+++ b/res/TensorFlowTests/UNIT_Conv2D_001/test.manifest
@@ -0,0 +1 @@
+SUMMARY: One convolution operation with SAME padding, and [2, 2] strides
diff --git a/res/TensorFlowTests/UNIT_Conv2D_001/test.pbtxt b/res/TensorFlowTests/UNIT_Conv2D_001/test.pbtxt
new file mode 100644
index 000000000..6eb539be8
--- /dev/null
+++ b/res/TensorFlowTests/UNIT_Conv2D_001/test.pbtxt
@@ -0,0 +1,72 @@
+node {
+ name: "ifm"
+ op: "Placeholder"
+ attr {
+ key: "dtype"
+ value { type: DT_FLOAT }
+ }
+ attr {
+ key: "shape"
+ value {
+ shape {
+ dim { size: 1 }
+ dim { size: 5 }
+ dim { size: 5 }
+ dim { size: 3 }
+ }
+ }
+ }
+}
+node {
+ name: "ker"
+ op: "Const"
+ attr {
+ key: "dtype"
+ value { type: DT_FLOAT }
+ }
+ attr {
+ key: "value"
+ value {
+ tensor {
+ dtype: DT_FLOAT
+ tensor_shape {
+ dim { size: 2 }
+ dim { size: 2 }
+ dim { size: 3 }
+ dim { size: 2 }
+ }
+ float_val: 1.1
+ }
+ }
+ }
+}
+node {
+ name: "ofm"
+ op: "Conv2D"
+ input: "ifm"
+ input: "ker"
+ attr {
+ key: "T"
+ value { type: DT_FLOAT }
+ }
+ attr {
+ key: "data_format"
+ value { s: "NHWC" }
+ }
+ attr {
+ key: "dilations"
+ value {
+ list { i: 1 i: 1 i: 1 i: 1 }
+ }
+ }
+ attr {
+ key: "padding"
+ value { s: "SAME" }
+ }
+ attr {
+ key: "strides"
+ value {
+ list { i: 1 i: 2 i: 2 i: 1 }
+ }
+ }
+}
diff --git a/res/TensorFlowTests/UNIT_Conv2D_002/test.info b/res/TensorFlowTests/UNIT_Conv2D_002/test.info
new file mode 100644
index 000000000..8f1dbd45a
--- /dev/null
+++ b/res/TensorFlowTests/UNIT_Conv2D_002/test.info
@@ -0,0 +1,3 @@
+# conv2d with VALID, stride = 2, 2
+input, ifm:0, TF_FLOAT, [1, 5, 5, 3]
+output, ofm:0, TF_FLOAT, [1, 2, 2, 2]
diff --git a/res/TensorFlowTests/UNIT_Conv2D_002/test.manifest b/res/TensorFlowTests/UNIT_Conv2D_002/test.manifest
new file mode 100644
index 000000000..fcabfa148
--- /dev/null
+++ b/res/TensorFlowTests/UNIT_Conv2D_002/test.manifest
@@ -0,0 +1 @@
+SUMMARY: One convolution operation with VALID padding, and [2, 2] strides
diff --git a/res/TensorFlowTests/UNIT_Conv2D_002/test.pbtxt b/res/TensorFlowTests/UNIT_Conv2D_002/test.pbtxt
new file mode 100644
index 000000000..ae2eb364d
--- /dev/null
+++ b/res/TensorFlowTests/UNIT_Conv2D_002/test.pbtxt
@@ -0,0 +1,72 @@
+node {
+ name: "ifm"
+ op: "Placeholder"
+ attr {
+ key: "dtype"
+ value { type: DT_FLOAT }
+ }
+ attr {
+ key: "shape"
+ value {
+ shape {
+ dim { size: 1 }
+ dim { size: 5 }
+ dim { size: 5 }
+ dim { size: 3 }
+ }
+ }
+ }
+}
+node {
+ name: "ker"
+ op: "Const"
+ attr {
+ key: "dtype"
+ value { type: DT_FLOAT }
+ }
+ attr {
+ key: "value"
+ value {
+ tensor {
+ dtype: DT_FLOAT
+ tensor_shape {
+ dim { size: 2 }
+ dim { size: 2 }
+ dim { size: 3 }
+ dim { size: 2 }
+ }
+ float_val: 1.1
+ }
+ }
+ }
+}
+node {
+ name: "ofm"
+ op: "Conv2D"
+ input: "ifm"
+ input: "ker"
+ attr {
+ key: "T"
+ value { type: DT_FLOAT }
+ }
+ attr {
+ key: "data_format"
+ value { s: "NHWC" }
+ }
+ attr {
+ key: "dilations"
+ value {
+ list { i: 1 i: 1 i: 1 i: 1 }
+ }
+ }
+ attr {
+ key: "padding"
+ value { s: "VALID" }
+ }
+ attr {
+ key: "strides"
+ value {
+ list { i: 1 i: 2 i: 2 i: 1 }
+ }
+ }
+}
diff --git a/res/TensorFlowTests/UNIT_DepthwiseConv2D_000/test.info b/res/TensorFlowTests/UNIT_DepthwiseConv2dNative_000/test.info
index 96a2b1403..96a2b1403 100644
--- a/res/TensorFlowTests/UNIT_DepthwiseConv2D_000/test.info
+++ b/res/TensorFlowTests/UNIT_DepthwiseConv2dNative_000/test.info
diff --git a/res/TensorFlowTests/UNIT_DepthwiseConv2D_000/test.pbtxt b/res/TensorFlowTests/UNIT_DepthwiseConv2dNative_000/test.pbtxt
index 1d8fcaa00..1d8fcaa00 100644
--- a/res/TensorFlowTests/UNIT_DepthwiseConv2D_000/test.pbtxt
+++ b/res/TensorFlowTests/UNIT_DepthwiseConv2dNative_000/test.pbtxt
diff --git a/res/TensorFlowTests/UNIT_DepthwiseConv2D_001/test.info b/res/TensorFlowTests/UNIT_DepthwiseConv2dNative_001/test.info
index c17595388..c17595388 100644
--- a/res/TensorFlowTests/UNIT_DepthwiseConv2D_001/test.info
+++ b/res/TensorFlowTests/UNIT_DepthwiseConv2dNative_001/test.info
diff --git a/res/TensorFlowTests/UNIT_DepthwiseConv2D_001/test.pbtxt b/res/TensorFlowTests/UNIT_DepthwiseConv2dNative_001/test.pbtxt
index 9a9717611..9a9717611 100644
--- a/res/TensorFlowTests/UNIT_DepthwiseConv2D_001/test.pbtxt
+++ b/res/TensorFlowTests/UNIT_DepthwiseConv2dNative_001/test.pbtxt
diff --git a/res/TensorFlowTests/UNIT_Maximum_000/test.info b/res/TensorFlowTests/UNIT_Maximum_000/test.info
new file mode 100644
index 000000000..f8f74e382
--- /dev/null
+++ b/res/TensorFlowTests/UNIT_Maximum_000/test.info
@@ -0,0 +1,3 @@
+input, input_01:0, TF_FLOAT, [1, 3, 3, 1]
+input, input_02:0, TF_FLOAT, [1, 3, 3, 1]
+output, maximum:0, TF_FLOAT, [1, 3, 3, 1]
diff --git a/res/TensorFlowTests/UNIT_Maximum_000/test.pbtxt b/res/TensorFlowTests/UNIT_Maximum_000/test.pbtxt
new file mode 100644
index 000000000..9ab81b52b
--- /dev/null
+++ b/res/TensorFlowTests/UNIT_Maximum_000/test.pbtxt
@@ -0,0 +1,70 @@
+node {
+ name: "input_01"
+ op: "Placeholder"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "shape"
+ value {
+ shape {
+ dim {
+ size: 1
+ }
+ dim {
+ size: 3
+ }
+ dim {
+ size: 3
+ }
+ dim {
+ size: 1
+ }
+ }
+ }
+ }
+}
+node {
+ name: "input_02"
+ op: "Placeholder"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "shape"
+ value {
+ shape {
+ dim {
+ size: 1
+ }
+ dim {
+ size: 3
+ }
+ dim {
+ size: 3
+ }
+ dim {
+ size: 1
+ }
+ }
+ }
+ }
+}
+node {
+ name: "maximum"
+ op: "Maximum"
+ input: "input_01"
+ input: "input_02"
+ attr {
+ key: "T"
+ value {
+ type: DT_FLOAT
+ }
+ }
+}
diff --git a/res/TensorFlowTests/UNIT_Maximum_001/test.info b/res/TensorFlowTests/UNIT_Maximum_001/test.info
new file mode 100644
index 000000000..24dc2be07
--- /dev/null
+++ b/res/TensorFlowTests/UNIT_Maximum_001/test.info
@@ -0,0 +1,3 @@
+input, input_01:0, TF_FLOAT, [1, 3, 3, 5]
+input, input_02:0, TF_FLOAT, [1, 1, 1, 5]
+output, maximum:0, TF_FLOAT, [1, 3, 3, 5]
diff --git a/res/TensorFlowTests/UNIT_Maximum_001/test.pbtxt b/res/TensorFlowTests/UNIT_Maximum_001/test.pbtxt
new file mode 100644
index 000000000..29e90ab2f
--- /dev/null
+++ b/res/TensorFlowTests/UNIT_Maximum_001/test.pbtxt
@@ -0,0 +1,70 @@
+node {
+ name: "input_01"
+ op: "Placeholder"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "shape"
+ value {
+ shape {
+ dim {
+ size: 1
+ }
+ dim {
+ size: 3
+ }
+ dim {
+ size: 3
+ }
+ dim {
+ size: 5
+ }
+ }
+ }
+ }
+}
+node {
+ name: "input_02"
+ op: "Placeholder"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "shape"
+ value {
+ shape {
+ dim {
+ size: 1
+ }
+ dim {
+ size: 1
+ }
+ dim {
+ size: 1
+ }
+ dim {
+ size: 5
+ }
+ }
+ }
+ }
+}
+node {
+ name: "maximum"
+ op: "Maximum"
+ input: "input_01"
+ input: "input_02"
+ attr {
+ key: "T"
+ value {
+ type: DT_FLOAT
+ }
+ }
+}
diff --git a/res/TensorFlowTests/UNIT_Maximum_002/test.info b/res/TensorFlowTests/UNIT_Maximum_002/test.info
new file mode 100644
index 000000000..44ddd085a
--- /dev/null
+++ b/res/TensorFlowTests/UNIT_Maximum_002/test.info
@@ -0,0 +1,3 @@
+input, input_01:0, TF_FLOAT, [1, 3, 3, 5]
+input, input_02:0, TF_FLOAT, [5]
+output, maximum:0, TF_FLOAT, [1, 3, 3, 5]
diff --git a/res/TensorFlowTests/UNIT_Maximum_002/test.pbtxt b/res/TensorFlowTests/UNIT_Maximum_002/test.pbtxt
new file mode 100644
index 000000000..ca4ae80de
--- /dev/null
+++ b/res/TensorFlowTests/UNIT_Maximum_002/test.pbtxt
@@ -0,0 +1,61 @@
+node {
+ name: "input_01"
+ op: "Placeholder"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "shape"
+ value {
+ shape {
+ dim {
+ size: 1
+ }
+ dim {
+ size: 3
+ }
+ dim {
+ size: 3
+ }
+ dim {
+ size: 5
+ }
+ }
+ }
+ }
+}
+node {
+ name: "input_02"
+ op: "Placeholder"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "shape"
+ value {
+ shape {
+ dim {
+ size: 5
+ }
+ }
+ }
+ }
+}
+node {
+ name: "maximum"
+ op: "Maximum"
+ input: "input_01"
+ input: "input_02"
+ attr {
+ key: "T"
+ value {
+ type: DT_FLOAT
+ }
+ }
+}
diff --git a/res/TensorFlowTests/UNIT_MirrorPad_000/test.info b/res/TensorFlowTests/UNIT_MirrorPad_000/test.info
new file mode 100644
index 000000000..c6db4607f
--- /dev/null
+++ b/res/TensorFlowTests/UNIT_MirrorPad_000/test.info
@@ -0,0 +1,2 @@
+input, input:0, TF_FLOAT, [1, 3, 2, 4]
+output, MirrorPad:0, TF_FLOAT, [1, 3, 4, 9]
diff --git a/res/TensorFlowTests/UNIT_MirrorPad_000/test.manifest b/res/TensorFlowTests/UNIT_MirrorPad_000/test.manifest
new file mode 100644
index 000000000..06e7567c2
--- /dev/null
+++ b/res/TensorFlowTests/UNIT_MirrorPad_000/test.manifest
@@ -0,0 +1 @@
+SUMMARY: A network that has MirrorPad with REFLECT mode.
diff --git a/res/TensorFlowTests/UNIT_MirrorPad_000/test.pbtxt b/res/TensorFlowTests/UNIT_MirrorPad_000/test.pbtxt
new file mode 100644
index 000000000..7a2bbccd7
--- /dev/null
+++ b/res/TensorFlowTests/UNIT_MirrorPad_000/test.pbtxt
@@ -0,0 +1,87 @@
+node {
+ name: "input"
+ op: "Placeholder"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "shape"
+ value {
+ shape {
+ dim {
+ size: 1
+ }
+ dim {
+ size: 3
+ }
+ dim {
+ size: 2
+ }
+ dim {
+ size: 4
+ }
+ }
+ }
+ }
+}
+node {
+ name: "Const"
+ op: "Const"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_INT32
+ }
+ }
+ attr {
+ key: "value"
+ value {
+ tensor {
+ dtype: DT_INT32
+ tensor_shape {
+ dim {
+ size: 4
+ }
+ dim {
+ size: 2
+ }
+ }
+ int_val: 0
+ int_val: 0
+ int_val: 0
+ int_val: 0
+ int_val: 1
+ int_val: 1
+ int_val: 2
+ int_val: 3
+ }
+ }
+ }
+}
+node {
+ name: "MirrorPad"
+ op: "MirrorPad"
+ input: "input"
+ input: "Const"
+ attr {
+ key: "T"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "Tpaddings"
+ value {
+ type: DT_INT32
+ }
+ }
+ attr {
+ key: "mode"
+ value {
+ s: "REFLECT"
+ }
+ }
+}
diff --git a/res/TensorFlowTests/UNIT_Pack_000/test.info b/res/TensorFlowTests/UNIT_Pack_000/test.info
new file mode 100644
index 000000000..756eb6bf4
--- /dev/null
+++ b/res/TensorFlowTests/UNIT_Pack_000/test.info
@@ -0,0 +1 @@
+output, Pack:0, TF_FLOAT, [4]
diff --git a/res/TensorFlowTests/UNIT_Pack_000/test.manifest b/res/TensorFlowTests/UNIT_Pack_000/test.manifest
new file mode 100644
index 000000000..6501a8041
--- /dev/null
+++ b/res/TensorFlowTests/UNIT_Pack_000/test.manifest
@@ -0,0 +1 @@
+SUMMARY: A simple network with one Pack from four scalar Constant inputs
diff --git a/res/TensorFlowTests/UNIT_Pack_000/test.pbtxt b/res/TensorFlowTests/UNIT_Pack_000/test.pbtxt
new file mode 100644
index 000000000..ba3365e19
--- /dev/null
+++ b/res/TensorFlowTests/UNIT_Pack_000/test.pbtxt
@@ -0,0 +1,110 @@
+node {
+ name: "val_1"
+ op: "Const"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "value"
+ value {
+ tensor {
+ dtype: DT_FLOAT
+ tensor_shape {
+ }
+ float_val: 1
+ }
+ }
+ }
+}
+node {
+ name: "val_2"
+ op: "Const"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "value"
+ value {
+ tensor {
+ dtype: DT_FLOAT
+ tensor_shape {
+ }
+ float_val: 2
+ }
+ }
+ }
+}
+node {
+ name: "val_3"
+ op: "Const"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "value"
+ value {
+ tensor {
+ dtype: DT_FLOAT
+ tensor_shape {
+ }
+ float_val: 3
+ }
+ }
+ }
+}
+node {
+ name: "val_4"
+ op: "Const"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "value"
+ value {
+ tensor {
+ dtype: DT_FLOAT
+ tensor_shape {
+ }
+ float_val: 4
+ }
+ }
+ }
+}
+node {
+ name: "Pack"
+ op: "Pack"
+ input: "val_1"
+ input: "val_2"
+ input: "val_3"
+ input: "val_4"
+ attr {
+ key: "N"
+ value {
+ i: 4
+ }
+ }
+ attr {
+ key: "T"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "axis"
+ value {
+ i: 0
+ }
+ }
+}
diff --git a/res/TensorFlowTests/UNIT_Pack_001/test.info b/res/TensorFlowTests/UNIT_Pack_001/test.info
new file mode 100644
index 000000000..ee0d55651
--- /dev/null
+++ b/res/TensorFlowTests/UNIT_Pack_001/test.info
@@ -0,0 +1 @@
+output, pack_0:0, TF_FLOAT, [2, 5, 3]
diff --git a/res/TensorFlowTests/UNIT_Pack_001/test.manifest b/res/TensorFlowTests/UNIT_Pack_001/test.manifest
new file mode 100644
index 000000000..e4b21c426
--- /dev/null
+++ b/res/TensorFlowTests/UNIT_Pack_001/test.manifest
@@ -0,0 +1 @@
+SUMMARY: A simple network with one Pack from two Tensor Constant inputs
diff --git a/res/TensorFlowTests/UNIT_Pack_001/test.pbtxt b/res/TensorFlowTests/UNIT_Pack_001/test.pbtxt
new file mode 100644
index 000000000..fab3132ff
--- /dev/null
+++ b/res/TensorFlowTests/UNIT_Pack_001/test.pbtxt
@@ -0,0 +1,78 @@
+node {
+ name: "val_1"
+ op: "Const"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "value"
+ value {
+ tensor {
+ dtype: DT_FLOAT
+ tensor_shape {
+ dim {
+ size: 5
+ }
+ dim {
+ size: 3
+ }
+ }
+ float_val: 0
+ }
+ }
+ }
+}
+node {
+ name: "val_2"
+ op: "Const"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "value"
+ value {
+ tensor {
+ dtype: DT_FLOAT
+ tensor_shape {
+ dim {
+ size: 5
+ }
+ dim {
+ size: 3
+ }
+ }
+ float_val: 1
+ }
+ }
+ }
+}
+node {
+ name: "pack_0"
+ op: "Pack"
+ input: "val_1"
+ input: "val_2"
+ attr {
+ key: "N"
+ value {
+ i: 2
+ }
+ }
+ attr {
+ key: "T"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "axis"
+ value {
+ i: 0
+ }
+ }
+}
diff --git a/res/TensorFlowTests/UNIT_Pack_002/test.info b/res/TensorFlowTests/UNIT_Pack_002/test.info
new file mode 100644
index 000000000..68db8a511
--- /dev/null
+++ b/res/TensorFlowTests/UNIT_Pack_002/test.info
@@ -0,0 +1 @@
+output, pack_0:0, TF_FLOAT, [5, 3, 2]
diff --git a/res/TensorFlowTests/UNIT_Pack_002/test.manifest b/res/TensorFlowTests/UNIT_Pack_002/test.manifest
new file mode 100644
index 000000000..8445ed3c5
--- /dev/null
+++ b/res/TensorFlowTests/UNIT_Pack_002/test.manifest
@@ -0,0 +1 @@
+SUMMARY: A simple network with one Pack from two Tensor Constant inputs with Pack axis set to 2
diff --git a/res/TensorFlowTests/UNIT_Pack_002/test.pbtxt b/res/TensorFlowTests/UNIT_Pack_002/test.pbtxt
new file mode 100644
index 000000000..6693ef29e
--- /dev/null
+++ b/res/TensorFlowTests/UNIT_Pack_002/test.pbtxt
@@ -0,0 +1,78 @@
+node {
+ name: "val_1"
+ op: "Const"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "value"
+ value {
+ tensor {
+ dtype: DT_FLOAT
+ tensor_shape {
+ dim {
+ size: 5
+ }
+ dim {
+ size: 3
+ }
+ }
+ float_val: 0
+ }
+ }
+ }
+}
+node {
+ name: "val_2"
+ op: "Const"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "value"
+ value {
+ tensor {
+ dtype: DT_FLOAT
+ tensor_shape {
+ dim {
+ size: 5
+ }
+ dim {
+ size: 3
+ }
+ }
+ float_val: 1
+ }
+ }
+ }
+}
+node {
+ name: "pack_0"
+ op: "Pack"
+ input: "val_1"
+ input: "val_2"
+ attr {
+ key: "N"
+ value {
+ i: 2
+ }
+ }
+ attr {
+ key: "T"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "axis"
+ value {
+ i: 2
+ }
+ }
+}
diff --git a/res/TensorFlowTests/UNIT_Pack_003/test.info b/res/TensorFlowTests/UNIT_Pack_003/test.info
new file mode 100644
index 000000000..62cad00d1
--- /dev/null
+++ b/res/TensorFlowTests/UNIT_Pack_003/test.info
@@ -0,0 +1 @@
+output, pack_0:0, TF_FLOAT, [5, 2, 3]
diff --git a/res/TensorFlowTests/UNIT_Pack_003/test.manifest b/res/TensorFlowTests/UNIT_Pack_003/test.manifest
new file mode 100644
index 000000000..013c2c511
--- /dev/null
+++ b/res/TensorFlowTests/UNIT_Pack_003/test.manifest
@@ -0,0 +1 @@
+SUMMARY: A simple network with one Pack from two Tensor Constant inputs with Pack axis set to -2
diff --git a/res/TensorFlowTests/UNIT_Pack_003/test.pbtxt b/res/TensorFlowTests/UNIT_Pack_003/test.pbtxt
new file mode 100644
index 000000000..73b278c02
--- /dev/null
+++ b/res/TensorFlowTests/UNIT_Pack_003/test.pbtxt
@@ -0,0 +1,78 @@
+node {
+ name: "val_1"
+ op: "Const"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "value"
+ value {
+ tensor {
+ dtype: DT_FLOAT
+ tensor_shape {
+ dim {
+ size: 5
+ }
+ dim {
+ size: 3
+ }
+ }
+ float_val: 0
+ }
+ }
+ }
+}
+node {
+ name: "val_2"
+ op: "Const"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "value"
+ value {
+ tensor {
+ dtype: DT_FLOAT
+ tensor_shape {
+ dim {
+ size: 5
+ }
+ dim {
+ size: 3
+ }
+ }
+ float_val: 1
+ }
+ }
+ }
+}
+node {
+ name: "pack_0"
+ op: "Pack"
+ input: "val_1"
+ input: "val_2"
+ attr {
+ key: "N"
+ value {
+ i: 2
+ }
+ }
+ attr {
+ key: "T"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "axis"
+ value {
+ i: -2
+ }
+ }
+}
diff --git a/res/TensorFlowTests/UNIT_Pack_004/test.info b/res/TensorFlowTests/UNIT_Pack_004/test.info
new file mode 100644
index 000000000..16ff5b9e9
--- /dev/null
+++ b/res/TensorFlowTests/UNIT_Pack_004/test.info
@@ -0,0 +1 @@
+output, pack_0:0, TF_FLOAT, [2, 5, 3]
diff --git a/res/TensorFlowTests/UNIT_Pack_004/test.manifest b/res/TensorFlowTests/UNIT_Pack_004/test.manifest
new file mode 100644
index 000000000..dfd369dfd
--- /dev/null
+++ b/res/TensorFlowTests/UNIT_Pack_004/test.manifest
@@ -0,0 +1 @@
+SUMMARY: A simple network with one Pack from two Tensor Constant inputs with Pack axis set to -3
diff --git a/res/TensorFlowTests/UNIT_Pack_004/test.pbtxt b/res/TensorFlowTests/UNIT_Pack_004/test.pbtxt
new file mode 100644
index 000000000..04dd52fa7
--- /dev/null
+++ b/res/TensorFlowTests/UNIT_Pack_004/test.pbtxt
@@ -0,0 +1,78 @@
+node {
+ name: "val_1"
+ op: "Const"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "value"
+ value {
+ tensor {
+ dtype: DT_FLOAT
+ tensor_shape {
+ dim {
+ size: 5
+ }
+ dim {
+ size: 3
+ }
+ }
+ float_val: 0
+ }
+ }
+ }
+}
+node {
+ name: "val_2"
+ op: "Const"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "value"
+ value {
+ tensor {
+ dtype: DT_FLOAT
+ tensor_shape {
+ dim {
+ size: 5
+ }
+ dim {
+ size: 3
+ }
+ }
+ float_val: 1
+ }
+ }
+ }
+}
+node {
+ name: "pack_0"
+ op: "Pack"
+ input: "val_1"
+ input: "val_2"
+ attr {
+ key: "N"
+ value {
+ i: 2
+ }
+ }
+ attr {
+ key: "T"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "axis"
+ value {
+ i: -3
+ }
+ }
+}
diff --git a/res/TensorFlowTests/UNIT_PadV2_000/test.info b/res/TensorFlowTests/UNIT_PadV2_000/test.info
new file mode 100644
index 000000000..accae4857
--- /dev/null
+++ b/res/TensorFlowTests/UNIT_PadV2_000/test.info
@@ -0,0 +1,2 @@
+input, input:0, TF_FLOAT, [1, 3, 4, 4]
+output, PadV2:0, TF_FLOAT, [1, 3, 8, 6]
diff --git a/res/TensorFlowTests/UNIT_PadV2_000/test.manifest b/res/TensorFlowTests/UNIT_PadV2_000/test.manifest
new file mode 100644
index 000000000..1d00241f2
--- /dev/null
+++ b/res/TensorFlowTests/UNIT_PadV2_000/test.manifest
@@ -0,0 +1 @@
+SUMMARY: A simple network that has Constant mode Pad with constant values.
diff --git a/res/TensorFlowTests/UNIT_PadV2_000/test.pbtxt b/res/TensorFlowTests/UNIT_PadV2_000/test.pbtxt
new file mode 100644
index 000000000..cf80fe559
--- /dev/null
+++ b/res/TensorFlowTests/UNIT_PadV2_000/test.pbtxt
@@ -0,0 +1,103 @@
+node {
+ name: "input"
+ op: "Placeholder"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "shape"
+ value {
+ shape {
+ dim {
+ size: 1
+ }
+ dim {
+ size: 3
+ }
+ dim {
+ size: 4
+ }
+ dim {
+ size: 4
+ }
+ }
+ }
+ }
+}
+node {
+ name: "Const"
+ op: "Const"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_INT32
+ }
+ }
+ attr {
+ key: "value"
+ value {
+ tensor {
+ dtype: DT_INT32
+ tensor_shape {
+ dim {
+ size: 4
+ }
+ dim {
+ size: 2
+ }
+ }
+ int_val: 0
+ int_val: 0
+ int_val: 0
+ int_val: 0
+ int_val: 2
+ int_val: 2
+ int_val: 1
+ int_val: 1
+ }
+ }
+ }
+}
+node {
+ name: "PadV2/constant_values"
+ op: "Const"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "value"
+ value {
+ tensor {
+ dtype: DT_FLOAT
+ tensor_shape {
+ }
+ float_val: 2
+ }
+ }
+ }
+}
+node {
+ name: "PadV2"
+ op: "PadV2"
+ input: "input"
+ input: "Const"
+ input: "PadV2/constant_values"
+ attr {
+ key: "T"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "Tpaddings"
+ value {
+ type: DT_INT32
+ }
+ }
+}
diff --git a/res/TensorFlowTests/UNIT_Pad_000/test.info b/res/TensorFlowTests/UNIT_Pad_000/test.info
new file mode 100644
index 000000000..e9fd5fce2
--- /dev/null
+++ b/res/TensorFlowTests/UNIT_Pad_000/test.info
@@ -0,0 +1,2 @@
+input, input:0, TF_FLOAT, [1, 3, 4, 4]
+output, Pad:0, TF_FLOAT, [1, 3, 8, 6]
diff --git a/res/TensorFlowTests/UNIT_Pad_000/test.manifest b/res/TensorFlowTests/UNIT_Pad_000/test.manifest
new file mode 100644
index 000000000..d3001df34
--- /dev/null
+++ b/res/TensorFlowTests/UNIT_Pad_000/test.manifest
@@ -0,0 +1,8 @@
+SUMMARY: A simple network that has Constant mode Pad with default value(constant_values=0)
+
+# HOW TO GENERATE:
+# import tensorflow as tf
+# input = tf.placeholder(tf.float32, shape=[1,3,4,4], name="input")
+# paddings = tf.constant([[0,0],[0,0],[2,2],[1,1]])
+# pad_const = tf.pad(input, paddings, "CONSTANT")
+# tf.get_default_graph().as_graph_def()
diff --git a/res/TensorFlowTests/UNIT_Pad_000/test.pbtxt b/res/TensorFlowTests/UNIT_Pad_000/test.pbtxt
new file mode 100644
index 000000000..8d6a5c8aa
--- /dev/null
+++ b/res/TensorFlowTests/UNIT_Pad_000/test.pbtxt
@@ -0,0 +1,81 @@
+node {
+ name: "input"
+ op: "Placeholder"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "shape"
+ value {
+ shape {
+ dim {
+ size: 1
+ }
+ dim {
+ size: 3
+ }
+ dim {
+ size: 4
+ }
+ dim {
+ size: 4
+ }
+ }
+ }
+ }
+}
+node {
+ name: "Const"
+ op: "Const"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_INT32
+ }
+ }
+ attr {
+ key: "value"
+ value {
+ tensor {
+ dtype: DT_INT32
+ tensor_shape {
+ dim {
+ size: 4
+ }
+ dim {
+ size: 2
+ }
+ }
+ int_val: 0
+ int_val: 0
+ int_val: 0
+ int_val: 0
+ int_val: 2
+ int_val: 2
+ int_val: 1
+ int_val: 1
+ }
+ }
+ }
+}
+node {
+ name: "Pad"
+ op: "Pad"
+ input: "input"
+ input: "Const"
+ attr {
+ key: "T"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "Tpaddings"
+ value {
+ type: DT_INT32
+ }
+ }
+}
diff --git a/res/TensorFlowTests/UNIT_Placeholder_001/test.info b/res/TensorFlowTests/UNIT_Placeholder_001/test.info
new file mode 100644
index 000000000..f5e08fb5b
--- /dev/null
+++ b/res/TensorFlowTests/UNIT_Placeholder_001/test.info
@@ -0,0 +1,2 @@
+input, Placeholder:0, TF_FLOAT, [1, 2, 3, 4]
+output, Identity:0, TF_FLOAT, [1, 2, 3, 4]
diff --git a/res/TensorFlowTests/UNIT_Placeholder_001/test.manifest b/res/TensorFlowTests/UNIT_Placeholder_001/test.manifest
new file mode 100644
index 000000000..232ba50a3
--- /dev/null
+++ b/res/TensorFlowTests/UNIT_Placeholder_001/test.manifest
@@ -0,0 +1 @@
+SUMMARY: A simple network of placeholder with unknown dimension.
diff --git a/res/TensorFlowTests/UNIT_Placeholder_001/test.pbtxt b/res/TensorFlowTests/UNIT_Placeholder_001/test.pbtxt
new file mode 100644
index 000000000..0913d28e3
--- /dev/null
+++ b/res/TensorFlowTests/UNIT_Placeholder_001/test.pbtxt
@@ -0,0 +1,40 @@
+node {
+ name: "Placeholder"
+ op: "Placeholder"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "shape"
+ value {
+ shape {
+ dim {
+ size: 1
+ }
+ dim {
+ size: 2
+ }
+ dim {
+ size: 3
+ }
+ dim {
+ size: -1
+ }
+ }
+ }
+ }
+}
+node {
+ name: "Identity"
+ op: "Identity"
+ input: "Placeholder"
+ attr {
+ key: "T"
+ value {
+ type: DT_FLOAT
+ }
+ }
+}
diff --git a/res/TensorFlowTests/UNIT_Placeholder_002/test.info b/res/TensorFlowTests/UNIT_Placeholder_002/test.info
new file mode 100644
index 000000000..f5e08fb5b
--- /dev/null
+++ b/res/TensorFlowTests/UNIT_Placeholder_002/test.info
@@ -0,0 +1,2 @@
+input, Placeholder:0, TF_FLOAT, [1, 2, 3, 4]
+output, Identity:0, TF_FLOAT, [1, 2, 3, 4]
diff --git a/res/TensorFlowTests/UNIT_Placeholder_002/test.pbtxt b/res/TensorFlowTests/UNIT_Placeholder_002/test.pbtxt
new file mode 100644
index 000000000..e3b468275
--- /dev/null
+++ b/res/TensorFlowTests/UNIT_Placeholder_002/test.pbtxt
@@ -0,0 +1,21 @@
+node {
+ name: "Placeholder"
+ op: "Placeholder"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_FLOAT
+ }
+ }
+}
+node {
+ name: "Identity"
+ op: "Identity"
+ input: "Placeholder"
+ attr {
+ key: "T"
+ value {
+ type: DT_FLOAT
+ }
+ }
+}
diff --git a/res/TensorFlowTests/UNIT_Placeholder_003/test.info b/res/TensorFlowTests/UNIT_Placeholder_003/test.info
new file mode 100644
index 000000000..f5e08fb5b
--- /dev/null
+++ b/res/TensorFlowTests/UNIT_Placeholder_003/test.info
@@ -0,0 +1,2 @@
+input, Placeholder:0, TF_FLOAT, [1, 2, 3, 4]
+output, Identity:0, TF_FLOAT, [1, 2, 3, 4]
diff --git a/res/TensorFlowTests/UNIT_Placeholder_003/test.pbtxt b/res/TensorFlowTests/UNIT_Placeholder_003/test.pbtxt
new file mode 100644
index 000000000..28955d383
--- /dev/null
+++ b/res/TensorFlowTests/UNIT_Placeholder_003/test.pbtxt
@@ -0,0 +1,28 @@
+node {
+ name: "Placeholder"
+ op: "Placeholder"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "shape"
+ value {
+ shape {
+ }
+ }
+ }
+}
+node {
+ name: "Identity"
+ op: "Identity"
+ input: "Placeholder"
+ attr {
+ key: "T"
+ value {
+ type: DT_FLOAT
+ }
+ }
+}
diff --git a/res/TensorFlowTests/UNIT_SquaredDifference_000/circle.rule b/res/TensorFlowTests/UNIT_SquaredDifference_000/circle.rule
new file mode 100644
index 000000000..bff2459a1
--- /dev/null
+++ b/res/TensorFlowTests/UNIT_SquaredDifference_000/circle.rule
@@ -0,0 +1,7 @@
+# To check tf2circle's result has Squared Difference Op, not divided into Sub and Div.
+
+RULE "VERIFY_FILE_FORMAT" $(verify_file_format) '=' 1
+
+RULE "SQUARED_DIFF_EXIST" $(op_count SQUARED_DIFFERENCE) '=' 1
+RULE "NO_SUB_EXIST" $(op_count SUB) '=' 0
+RULE "NO_MUL_EXIST" $(op_count MUL) '=' 0
diff --git a/res/TensorFlowTests/UNIT_StridedSlice_000/test.info b/res/TensorFlowTests/UNIT_StridedSlice_000/test.info
new file mode 100644
index 000000000..614bdb208
--- /dev/null
+++ b/res/TensorFlowTests/UNIT_StridedSlice_000/test.info
@@ -0,0 +1 @@
+output, strided_slice:0, TF_FLOAT, [1]
diff --git a/res/TensorFlowTests/UNIT_StridedSlice_000/test.manifest b/res/TensorFlowTests/UNIT_StridedSlice_000/test.manifest
new file mode 100644
index 000000000..c02e14a74
--- /dev/null
+++ b/res/TensorFlowTests/UNIT_StridedSlice_000/test.manifest
@@ -0,0 +1 @@
+SUMMARY: A simple network that has one StridedSlice with shrink_axis_mask 1
diff --git a/res/TensorFlowTests/UNIT_StridedSlice_000/test.pbtxt b/res/TensorFlowTests/UNIT_StridedSlice_000/test.pbtxt
new file mode 100644
index 000000000..db7b12b5b
--- /dev/null
+++ b/res/TensorFlowTests/UNIT_StridedSlice_000/test.pbtxt
@@ -0,0 +1,149 @@
+node {
+ name: "input"
+ op: "Const"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "value"
+ value {
+ tensor {
+ dtype: DT_FLOAT
+ tensor_shape {
+ dim {
+ size: 4
+ }
+ }
+ float_val: 1
+ float_val: 5
+ float_val: 5
+ float_val: 256
+ }
+ }
+ }
+}
+node {
+ name: "begin"
+ op: "Const"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_INT32
+ }
+ }
+ attr {
+ key: "value"
+ value {
+ tensor {
+ dtype: DT_INT32
+ tensor_shape {
+ dim {
+ size: 1
+ }
+ }
+ int_val: 1
+ }
+ }
+ }
+}
+node {
+ name: "end"
+ op: "Const"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_INT32
+ }
+ }
+ attr {
+ key: "value"
+ value {
+ tensor {
+ dtype: DT_INT32
+ tensor_shape {
+ dim {
+ size: 1
+ }
+ }
+ int_val: 2
+ }
+ }
+ }
+}
+node {
+ name: "strides"
+ op: "Const"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_INT32
+ }
+ }
+ attr {
+ key: "value"
+ value {
+ tensor {
+ dtype: DT_INT32
+ tensor_shape {
+ dim {
+ size: 1
+ }
+ }
+ int_val: 1
+ }
+ }
+ }
+}
+node {
+ name: "strided_slice"
+ op: "StridedSlice"
+ input: "input"
+ input: "begin"
+ input: "end"
+ input: "strides"
+ attr {
+ key: "Index"
+ value {
+ type: DT_INT32
+ }
+ }
+ attr {
+ key: "T"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "begin_mask"
+ value {
+ i: 0
+ }
+ }
+ attr {
+ key: "ellipsis_mask"
+ value {
+ i: 0
+ }
+ }
+ attr {
+ key: "end_mask"
+ value {
+ i: 0
+ }
+ }
+ attr {
+ key: "new_axis_mask"
+ value {
+ i: 0
+ }
+ }
+ attr {
+ key: "shrink_axis_mask"
+ value {
+ i: 1
+ }
+ }
+}
diff --git a/res/TensorFlowTests/explain.sh b/res/TensorFlowTests/explain.sh
new file mode 100755
index 000000000..9d6903327
--- /dev/null
+++ b/res/TensorFlowTests/explain.sh
@@ -0,0 +1,47 @@
+#!/bin/bash
+
+TESTCASE_REPO="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
+
+### Parse Command-line Arguments
+SHOW_PATH=0
+
+while true; do
+ case "$1" in
+ -p | --path)
+ SHOW_PATH=1;
+ shift
+ ;;
+ *)
+ break
+ ;;
+ esac
+done
+
+### Generate Report
+(
+ # Print HEADER
+ echo -n "NAME"
+ echo -n ",SUMMARY"
+ if [[ ${SHOW_PATH} -ne 0 ]]; then
+ echo -n ",PATH"
+ fi
+ echo
+
+ # Print ROW(s)
+ for PREFIX in $(cd "${TESTCASE_REPO}"; ls */test.info | xargs -i dirname {} | sort); do
+ TESTCASE_DIR="${TESTCASE_REPO}/${PREFIX}"
+ TESTCASE_MANIFEST_FILE="${TESTCASE_DIR}/test.manifest"
+ TESTCASE_GRAPHDEF_FILE="${TESTCASE_DIR}/test.pbtxt"
+
+ echo -n "${PREFIX}"
+ if [[ -f "${TESTCASE_MANIFEST_FILE}" ]]; then
+ echo -n ",$(cat "${TESTCASE_MANIFEST_FILE}" | grep '^SUMMARY: ' | head -n1 | sed 's/^SUMMARY://g' | xargs)"
+ else
+ echo -n ",-"
+ fi
+ if [[ ${SHOW_PATH} -ne 0 ]]; then
+ echo -n ",${TESTCASE_GRAPHDEF_FILE}"
+ fi
+ echo
+ done
+) | column -t -s ,