summaryrefslogtreecommitdiff
path: root/res/TensorFlowTests
diff options
context:
space:
mode:
Diffstat (limited to 'res/TensorFlowTests')
-rw-r--r--res/TensorFlowTests/NET_0000/test.info3
-rw-r--r--res/TensorFlowTests/NET_0000/test.pbtxt102
-rw-r--r--res/TensorFlowTests/NET_0001/test.info2
-rw-r--r--res/TensorFlowTests/NET_0001/test.pbtxt160
-rw-r--r--res/TensorFlowTests/NET_0002/test.info2
-rw-r--r--res/TensorFlowTests/NET_0002/test.pbtxt135
-rw-r--r--res/TensorFlowTests/NET_0003/test.info2
-rw-r--r--res/TensorFlowTests/NET_0003/test.pbtxt244
-rw-r--r--res/TensorFlowTests/NET_0003/test.py15
-rw-r--r--res/TensorFlowTests/NET_0004/test.info2
-rw-r--r--res/TensorFlowTests/NET_0004/test.pbtxt218
-rw-r--r--res/TensorFlowTests/NET_0004/test.py16
-rw-r--r--res/TensorFlowTests/NET_0005/test.info2
-rw-r--r--res/TensorFlowTests/NET_0005/test.pbtxt120
-rw-r--r--res/TensorFlowTests/NET_0006/test.info2
-rw-r--r--res/TensorFlowTests/NET_0006/test.pbtxt149
-rw-r--r--res/TensorFlowTests/NET_0007/test.info2
-rw-r--r--res/TensorFlowTests/NET_0007/test.pbtxt151
-rw-r--r--res/TensorFlowTests/NET_0008/test.info2
-rw-r--r--res/TensorFlowTests/NET_0008/test.pbtxt151
-rw-r--r--res/TensorFlowTests/NET_0009/test.info2
-rw-r--r--res/TensorFlowTests/NET_0009/test.pbtxt194
-rw-r--r--res/TensorFlowTests/NET_0010/test.info2
-rw-r--r--res/TensorFlowTests/NET_0010/test.pbtxt109
-rw-r--r--res/TensorFlowTests/NET_0011/test.info2
-rw-r--r--res/TensorFlowTests/NET_0011/test.pbtxt129
-rw-r--r--res/TensorFlowTests/NET_0012/test.info2
-rw-r--r--res/TensorFlowTests/NET_0012/test.pbtxt52
-rw-r--r--res/TensorFlowTests/NET_0013/test.info2
-rw-r--r--res/TensorFlowTests/NET_0013/test.pbtxt72
-rw-r--r--res/TensorFlowTests/NET_0014/test.info2
-rw-r--r--res/TensorFlowTests/NET_0014/test.pbtxt106
-rw-r--r--res/TensorFlowTests/NET_0015/test.info2
-rw-r--r--res/TensorFlowTests/NET_0015/test.pbtxt74
-rw-r--r--res/TensorFlowTests/NET_0016/test.info2
-rw-r--r--res/TensorFlowTests/NET_0016/test.pbtxt271
-rw-r--r--res/TensorFlowTests/NET_0017/test.info2
-rw-r--r--res/TensorFlowTests/NET_0017/test.pbtxt61
-rw-r--r--res/TensorFlowTests/NET_0018/test.info2
-rw-r--r--res/TensorFlowTests/NET_0018/test.pbtxt63
-rw-r--r--res/TensorFlowTests/NET_0019/test.info2
-rw-r--r--res/TensorFlowTests/NET_0019/test.pbtxt89
-rw-r--r--res/TensorFlowTests/NET_0020/test.info2
-rw-r--r--res/TensorFlowTests/NET_0020/test.pbtxt112
-rw-r--r--res/TensorFlowTests/NET_0021/test.info2
-rw-r--r--res/TensorFlowTests/NET_0021/test.pbtxt65
-rw-r--r--res/TensorFlowTests/NET_0022/test.info5
-rw-r--r--res/TensorFlowTests/NET_0022/test.pbtxt70
-rw-r--r--res/TensorFlowTests/NET_0023/test.info2
-rw-r--r--res/TensorFlowTests/NET_0023/test.pbtxt72
-rw-r--r--res/TensorFlowTests/NET_0024/test.info3
-rw-r--r--res/TensorFlowTests/NET_0024/test.pbtxt76
-rw-r--r--res/TensorFlowTests/NET_0025/test.info3
-rw-r--r--res/TensorFlowTests/NET_0025/test.pbtxt167
-rw-r--r--res/TensorFlowTests/NET_0026/test.info3
-rw-r--r--res/TensorFlowTests/NET_0026/test.pbtxt305
-rw-r--r--res/TensorFlowTests/NET_0027/test.info3
-rw-r--r--res/TensorFlowTests/NET_0027/test.pbtxt488
-rw-r--r--res/TensorFlowTests/NET_0028/test.info3
-rw-r--r--res/TensorFlowTests/NET_0028/test.pbtxt373
-rw-r--r--res/TensorFlowTests/REGRESSION_0000/test.info2
-rw-r--r--res/TensorFlowTests/REGRESSION_0000/test.pbtxt68
-rw-r--r--res/TensorFlowTests/UNIT_Add_000/test.info3
-rw-r--r--res/TensorFlowTests/UNIT_Add_000/test.pbtxt70
-rw-r--r--res/TensorFlowTests/UNIT_Add_001/test.info3
-rw-r--r--res/TensorFlowTests/UNIT_Add_001/test.pbtxt70
-rw-r--r--res/TensorFlowTests/UNIT_Add_002/test.info3
-rw-r--r--res/TensorFlowTests/UNIT_Add_002/test.pbtxt61
-rw-r--r--res/TensorFlowTests/UNIT_Add_003/test.info3
-rw-r--r--res/TensorFlowTests/UNIT_Add_003/test.pbtxt58
-rw-r--r--res/TensorFlowTests/UNIT_Add_004/test.info2
-rw-r--r--res/TensorFlowTests/UNIT_Add_004/test.pbtxt62
-rw-r--r--res/TensorFlowTests/UNIT_Add_005/test.info3
-rw-r--r--res/TensorFlowTests/UNIT_Add_005/test.pbtxt49
-rw-r--r--res/TensorFlowTests/UNIT_AvgPool_000/test.info2
-rw-r--r--res/TensorFlowTests/UNIT_AvgPool_000/test.pbtxt74
-rw-r--r--res/TensorFlowTests/UNIT_AvgPool_001/test.info2
-rw-r--r--res/TensorFlowTests/UNIT_AvgPool_001/test.pbtxt74
-rw-r--r--res/TensorFlowTests/UNIT_BiasAdd_000/test.info1
-rw-r--r--res/TensorFlowTests/UNIT_BiasAdd_000/test.pbtxt57
-rw-r--r--res/TensorFlowTests/UNIT_BiasAdd_001/test.info1
-rw-r--r--res/TensorFlowTests/UNIT_BiasAdd_001/test.pbtxt57
-rw-r--r--res/TensorFlowTests/UNIT_BiasAdd_002/test.info2
-rw-r--r--res/TensorFlowTests/UNIT_BiasAdd_002/test.pbtxt51
-rw-r--r--res/TensorFlowTests/UNIT_Concat_000/test.info1
-rw-r--r--res/TensorFlowTests/UNIT_Concat_000/test.pbtxt110
-rw-r--r--res/TensorFlowTests/UNIT_Concat_001/test.info1
-rw-r--r--res/TensorFlowTests/UNIT_Concat_001/test.pbtxt143
-rw-r--r--res/TensorFlowTests/UNIT_Concat_002/test.info3
-rw-r--r--res/TensorFlowTests/UNIT_Concat_002/test.pbtxt92
-rw-r--r--res/TensorFlowTests/UNIT_Const_000/test.info1
-rw-r--r--res/TensorFlowTests/UNIT_Const_000/test.pbtxt32
-rw-r--r--res/TensorFlowTests/UNIT_Const_001/test.info1
-rw-r--r--res/TensorFlowTests/UNIT_Const_001/test.pbtxt32
-rw-r--r--res/TensorFlowTests/UNIT_Conv2DBackpropInput_001/test.info2
-rw-r--r--res/TensorFlowTests/UNIT_Conv2DBackpropInput_001/test.pbtxt136
-rw-r--r--res/TensorFlowTests/UNIT_Conv2D_000/test.info3
-rw-r--r--res/TensorFlowTests/UNIT_Conv2D_000/test.pbtxt76
-rw-r--r--res/TensorFlowTests/UNIT_CustomOp_000/customop.conf22
-rw-r--r--res/TensorFlowTests/UNIT_CustomOp_000/test.info2
-rw-r--r--res/TensorFlowTests/UNIT_CustomOp_000/test.pbtxt53
-rw-r--r--res/TensorFlowTests/UNIT_CustomOp_001/customop.conf19
-rw-r--r--res/TensorFlowTests/UNIT_CustomOp_001/test.info2
-rw-r--r--res/TensorFlowTests/UNIT_CustomOp_001/test.pbtxt38
-rw-r--r--res/TensorFlowTests/UNIT_DepthwiseConv2D_000/test.info2
-rw-r--r--res/TensorFlowTests/UNIT_DepthwiseConv2D_000/test.pbtxt115
-rw-r--r--res/TensorFlowTests/UNIT_DepthwiseConv2D_001/test.info2
-rw-r--r--res/TensorFlowTests/UNIT_DepthwiseConv2D_001/test.pbtxt115
-rw-r--r--res/TensorFlowTests/UNIT_FusedBatchNorm_000/test.info3
-rw-r--r--res/TensorFlowTests/UNIT_FusedBatchNorm_000/test.pbtxt158
-rw-r--r--res/TensorFlowTests/UNIT_FusedBatchNorm_001/test.info3
-rw-r--r--res/TensorFlowTests/UNIT_FusedBatchNorm_001/test.pbtxt158
-rw-r--r--res/TensorFlowTests/UNIT_MaxPool_000/test.info2
-rw-r--r--res/TensorFlowTests/UNIT_MaxPool_000/test.pbtxt74
-rw-r--r--res/TensorFlowTests/UNIT_MaxPool_001/test.info2
-rw-r--r--res/TensorFlowTests/UNIT_MaxPool_001/test.pbtxt48
-rw-r--r--res/TensorFlowTests/UNIT_Mean_000/test.info2
-rw-r--r--res/TensorFlowTests/UNIT_Mean_000/test.pbtxt68
-rw-r--r--res/TensorFlowTests/UNIT_Mean_001/test.info2
-rw-r--r--res/TensorFlowTests/UNIT_Mean_001/test.pbtxt68
-rw-r--r--res/TensorFlowTests/UNIT_Mean_002/test.info2
-rw-r--r--res/TensorFlowTests/UNIT_Mean_002/test.pbtxt68
-rw-r--r--res/TensorFlowTests/UNIT_Mean_003/test.info2
-rw-r--r--res/TensorFlowTests/UNIT_Mean_003/test.pbtxt68
-rw-r--r--res/TensorFlowTests/UNIT_Mul_000/test.info3
-rw-r--r--res/TensorFlowTests/UNIT_Mul_000/test.pbtxt70
-rw-r--r--res/TensorFlowTests/UNIT_Mul_001/test.info3
-rw-r--r--res/TensorFlowTests/UNIT_Mul_001/test.pbtxt70
-rw-r--r--res/TensorFlowTests/UNIT_Mul_002/test.info3
-rw-r--r--res/TensorFlowTests/UNIT_Mul_002/test.pbtxt61
-rw-r--r--res/TensorFlowTests/UNIT_Placeholder_000/test.info2
-rw-r--r--res/TensorFlowTests/UNIT_Placeholder_000/test.pbtxt40
-rw-r--r--res/TensorFlowTests/UNIT_RealDiv_000/test.info3
-rw-r--r--res/TensorFlowTests/UNIT_RealDiv_000/test.pbtxt70
-rw-r--r--res/TensorFlowTests/UNIT_RealDiv_001/test.info3
-rw-r--r--res/TensorFlowTests/UNIT_RealDiv_001/test.pbtxt61
-rw-r--r--res/TensorFlowTests/UNIT_Relu6_000/test.info2
-rw-r--r--res/TensorFlowTests/UNIT_Relu6_000/test.pbtxt30
-rw-r--r--res/TensorFlowTests/UNIT_Relu_000/test.info2
-rw-r--r--res/TensorFlowTests/UNIT_Relu_000/test.pbtxt40
-rw-r--r--res/TensorFlowTests/UNIT_Reshape_000/test.info2
-rw-r--r--res/TensorFlowTests/UNIT_Reshape_000/test.pbtxt63
-rw-r--r--res/TensorFlowTests/UNIT_Rsqrt_000/test.info2
-rw-r--r--res/TensorFlowTests/UNIT_Rsqrt_000/test.pbtxt40
-rw-r--r--res/TensorFlowTests/UNIT_Shape_000/test.info1
-rw-r--r--res/TensorFlowTests/UNIT_Shape_000/test.pbtxt41
-rw-r--r--res/TensorFlowTests/UNIT_Softmax_000/test.info2
-rw-r--r--res/TensorFlowTests/UNIT_Softmax_000/test.pbtxt32
-rw-r--r--res/TensorFlowTests/UNIT_Softmax_001/test.info2
-rw-r--r--res/TensorFlowTests/UNIT_Softmax_001/test.pbtxt35
-rw-r--r--res/TensorFlowTests/UNIT_Softmax_002/test.info2
-rw-r--r--res/TensorFlowTests/UNIT_Softmax_002/test.pbtxt38
-rw-r--r--res/TensorFlowTests/UNIT_Softmax_003/test.info2
-rw-r--r--res/TensorFlowTests/UNIT_Softmax_003/test.pbtxt41
-rw-r--r--res/TensorFlowTests/UNIT_Sqrt_000/test.info2
-rw-r--r--res/TensorFlowTests/UNIT_Sqrt_000/test.pbtxt40
-rw-r--r--res/TensorFlowTests/UNIT_SquaredDifference_000/test.info3
-rw-r--r--res/TensorFlowTests/UNIT_SquaredDifference_000/test.pbtxt70
-rw-r--r--res/TensorFlowTests/UNIT_SquaredDifference_001/test.info3
-rw-r--r--res/TensorFlowTests/UNIT_SquaredDifference_001/test.pbtxt70
-rw-r--r--res/TensorFlowTests/UNIT_Squeeze_000/test.info2
-rw-r--r--res/TensorFlowTests/UNIT_Squeeze_000/test.pbtxt28
-rw-r--r--res/TensorFlowTests/UNIT_Squeeze_001/test.info2
-rw-r--r--res/TensorFlowTests/UNIT_Squeeze_001/test.pbtxt35
-rw-r--r--res/TensorFlowTests/UNIT_Squeeze_002/test.info2
-rw-r--r--res/TensorFlowTests/UNIT_Squeeze_002/test.pbtxt35
-rw-r--r--res/TensorFlowTests/UNIT_Squeeze_003/test.info2
-rw-r--r--res/TensorFlowTests/UNIT_Squeeze_003/test.pbtxt35
-rw-r--r--res/TensorFlowTests/UNIT_StopGradient_000/test.info2
-rw-r--r--res/TensorFlowTests/UNIT_StopGradient_000/test.pbtxt34
-rw-r--r--res/TensorFlowTests/UNIT_StopGradient_001/test.info2
-rw-r--r--res/TensorFlowTests/UNIT_StopGradient_001/test.pbtxt40
-rw-r--r--res/TensorFlowTests/UNIT_Sub_000/test.info3
-rw-r--r--res/TensorFlowTests/UNIT_Sub_000/test.pbtxt70
-rw-r--r--res/TensorFlowTests/UNIT_Sub_001/test.info3
-rw-r--r--res/TensorFlowTests/UNIT_Sub_001/test.pbtxt61
-rw-r--r--res/TensorFlowTests/UNIT_Tanh_000/test.info2
-rw-r--r--res/TensorFlowTests/UNIT_Tanh_000/test.pbtxt40
178 files changed, 8337 insertions, 0 deletions
diff --git a/res/TensorFlowTests/NET_0000/test.info b/res/TensorFlowTests/NET_0000/test.info
new file mode 100644
index 000000000..bdde9126b
--- /dev/null
+++ b/res/TensorFlowTests/NET_0000/test.info
@@ -0,0 +1,3 @@
+# conv2d with VALID, stride = 1, 1
+input, ifm:0, TF_FLOAT, [1, 5, 5, 3]
+output, maxpool:0, TF_FLOAT, [1, 4, 4, 2]
diff --git a/res/TensorFlowTests/NET_0000/test.pbtxt b/res/TensorFlowTests/NET_0000/test.pbtxt
new file mode 100644
index 000000000..5aafa31db
--- /dev/null
+++ b/res/TensorFlowTests/NET_0000/test.pbtxt
@@ -0,0 +1,102 @@
+# Small Conv2D-MaxPool network
+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: 1 i: 1 i: 1 }
+ }
+ }
+}
+node {
+ name: "maxpool"
+ op: "MaxPool"
+ input: "ofm"
+ attr {
+ key: "T"
+ value { type: DT_FLOAT }
+ }
+ attr {
+ key: "data_format"
+ value { s: "NHWC" }
+ }
+ attr {
+ key: "ksize"
+ value {
+ list { i: 1 i: 1 i: 1 i: 1 }
+ }
+ }
+ attr {
+ key: "padding"
+ value { s: "VALID" }
+ }
+ attr {
+ key: "strides"
+ value {
+ list { i: 1 i: 1 i: 1 i: 1 }
+ }
+ }
+}
diff --git a/res/TensorFlowTests/NET_0001/test.info b/res/TensorFlowTests/NET_0001/test.info
new file mode 100644
index 000000000..0e8caae1c
--- /dev/null
+++ b/res/TensorFlowTests/NET_0001/test.info
@@ -0,0 +1,2 @@
+input, in:0, TF_FLOAT, [1, 5, 5, 3]
+output, out:0, TF_FLOAT, [1, 4, 4, 5]
diff --git a/res/TensorFlowTests/NET_0001/test.pbtxt b/res/TensorFlowTests/NET_0001/test.pbtxt
new file mode 100644
index 000000000..fc84d61a6
--- /dev/null
+++ b/res/TensorFlowTests/NET_0001/test.pbtxt
@@ -0,0 +1,160 @@
+# Small Conv2D-BiasAdd-Conv2D network
+node {
+ name: "in"
+ op: "Placeholder"
+ attr {
+ key: "dtype"
+ value { type: DT_FLOAT }
+ }
+ attr {
+ key: "shape"
+ value {
+ shape {
+ dim { size: 1 } # N
+ dim { size: 5 } # H
+ dim { size: 5 } # W
+ dim { size: 3 } # C
+ }
+ }
+ }
+}
+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 } # H
+ dim { size: 2 } # W
+ dim { size: 3 } # I
+ dim { size: 2 } # O
+ }
+ float_val: 1.1
+ }
+ }
+ }
+}
+node {
+ name: "conv"
+ op: "Conv2D"
+ input: "in"
+ 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: 1 i: 1 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: 2 }
+ }
+ float_val: 1.1
+ }
+ }
+ }
+}
+node {
+ name: "badd"
+ op: "BiasAdd"
+ input: "conv"
+ input: "bias"
+ attr {
+ key: "T"
+ value { type: DT_FLOAT }
+ }
+ attr {
+ key: "data_format"
+ value { s: "NHWC" }
+ }
+}
+node {
+ name: "ker1"
+ op: "Const"
+ attr {
+ key: "dtype"
+ value { type: DT_FLOAT }
+ }
+ attr {
+ key: "value"
+ value {
+ tensor {
+ dtype: DT_FLOAT
+ tensor_shape {
+ dim { size: 1 } # H
+ dim { size: 1 } # W
+ dim { size: 2 } # I
+ dim { size: 5 } # O
+ }
+ float_val: 1.1
+ }
+ }
+ }
+}
+node {
+ name: "out"
+ op: "Conv2D"
+ input: "badd"
+ input: "ker1"
+ 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: 1 i: 1 i: 1 }
+ }
+ }
+}
diff --git a/res/TensorFlowTests/NET_0002/test.info b/res/TensorFlowTests/NET_0002/test.info
new file mode 100644
index 000000000..0e8caae1c
--- /dev/null
+++ b/res/TensorFlowTests/NET_0002/test.info
@@ -0,0 +1,2 @@
+input, in:0, TF_FLOAT, [1, 5, 5, 3]
+output, out:0, TF_FLOAT, [1, 4, 4, 5]
diff --git a/res/TensorFlowTests/NET_0002/test.pbtxt b/res/TensorFlowTests/NET_0002/test.pbtxt
new file mode 100644
index 000000000..692651aa4
--- /dev/null
+++ b/res/TensorFlowTests/NET_0002/test.pbtxt
@@ -0,0 +1,135 @@
+# Small Conv2D-ReLU-Conv2D network
+node {
+ name: "in"
+ op: "Placeholder"
+ attr {
+ key: "dtype"
+ value { type: DT_FLOAT }
+ }
+ attr {
+ key: "shape"
+ value {
+ shape {
+ dim { size: 1 } # N
+ dim { size: 5 } # H
+ dim { size: 5 } # W
+ dim { size: 3 } # C
+ }
+ }
+ }
+}
+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 } # H
+ dim { size: 2 } # W
+ dim { size: 3 } # I
+ dim { size: 2 } # O
+ }
+ float_val: 1.1
+ }
+ }
+ }
+}
+node {
+ name: "conv"
+ op: "Conv2D"
+ input: "in"
+ 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: 1 i: 1 i: 1 }
+ }
+ }
+}
+node {
+ name: "relu"
+ op: "Relu"
+ input: "conv"
+ attr {
+ key: "T"
+ value { type: DT_FLOAT }
+ }
+}
+node {
+ name: "ker1"
+ op: "Const"
+ attr {
+ key: "dtype"
+ value { type: DT_FLOAT }
+ }
+ attr {
+ key: "value"
+ value {
+ tensor {
+ dtype: DT_FLOAT
+ tensor_shape {
+ dim { size: 1 } # H
+ dim { size: 1 } # W
+ dim { size: 2 } # I
+ dim { size: 5 } # O
+ }
+ float_val: 1.1
+ }
+ }
+ }
+}
+node {
+ name: "out"
+ op: "Conv2D"
+ input: "relu"
+ input: "ker1"
+ 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: 1 i: 1 i: 1 }
+ }
+ }
+}
diff --git a/res/TensorFlowTests/NET_0003/test.info b/res/TensorFlowTests/NET_0003/test.info
new file mode 100644
index 000000000..ee7d13cd1
--- /dev/null
+++ b/res/TensorFlowTests/NET_0003/test.info
@@ -0,0 +1,2 @@
+input, Placeholder:0, TF_FLOAT, [1, 3, 3, 5]
+output, FusedBatchNorm:0, TF_FLOAT, [1, 3, 3, 1]
diff --git a/res/TensorFlowTests/NET_0003/test.pbtxt b/res/TensorFlowTests/NET_0003/test.pbtxt
new file mode 100644
index 000000000..cf6b1a7db
--- /dev/null
+++ b/res/TensorFlowTests/NET_0003/test.pbtxt
@@ -0,0 +1,244 @@
+# Small Conv2D + FusedBatchNorm network
+node {
+ name: "Placeholder"
+ op: "Placeholder"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "shape"
+ value {
+ shape {
+ dim {
+ size: 1 # N
+ }
+ dim {
+ size: 3 # H
+ }
+ dim {
+ size: 3 # W
+ }
+ dim {
+ size: 5 # C
+ }
+ }
+ }
+ }
+}
+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 # H
+ }
+ dim {
+ size: 2 # W
+ }
+ dim {
+ size: 5 # I
+ }
+ dim {
+ size: 1 # O
+ }
+ }
+ float_val: 1.0
+ }
+ }
+ }
+}
+node {
+ name: "Conv2D"
+ op: "Conv2D"
+ input: "Placeholder"
+ 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: 1
+ i: 1
+ i: 1
+ }
+ }
+ }
+ attr {
+ key: "use_cudnn_on_gpu"
+ value {
+ b: true
+ }
+ }
+}
+node {
+ name: "scale"
+ 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: "offset"
+ op: "Const"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "value"
+ value {
+ tensor {
+ dtype: DT_FLOAT
+ tensor_shape {
+ dim {
+ size: 1
+ }
+ }
+ float_val: 0.0
+ }
+ }
+ }
+}
+node {
+ name: "FusedBatchNorm/mean"
+ op: "Const"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "value"
+ value {
+ tensor {
+ dtype: DT_FLOAT
+ tensor_shape {
+ dim {
+ size: 1
+ }
+ }
+ float_val: 0.0
+ }
+ }
+ }
+}
+node {
+ name: "FusedBatchNorm/variance"
+ 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: "FusedBatchNorm"
+ op: "FusedBatchNorm"
+ input: "Conv2D"
+ input: "scale"
+ input: "offset"
+ input: "FusedBatchNorm/mean"
+ input: "FusedBatchNorm/variance"
+ attr {
+ key: "T"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "data_format"
+ value {
+ s: "NHWC"
+ }
+ }
+ attr {
+ key: "epsilon"
+ value {
+ f: 0.0010000000474974513
+ }
+ }
+ attr {
+ key: "is_training"
+ value {
+ b: false
+ }
+ }
+}
diff --git a/res/TensorFlowTests/NET_0003/test.py b/res/TensorFlowTests/NET_0003/test.py
new file mode 100644
index 000000000..b5bad2dae
--- /dev/null
+++ b/res/TensorFlowTests/NET_0003/test.py
@@ -0,0 +1,15 @@
+# TF_SMALL_NET_0003/test.pbtxt is create with below script
+
+# Version info
+# - Tensorflow : 1.13.1
+# - Python : 3.5.2
+
+import tensorflow as tf
+
+input0 = tf.placeholder(tf.float32, [1, 3, 3, 5])
+filter0 = tf.constant(1.0, shape=[2, 2, 5, 1])
+conv = tf.nn.conv2d(input0, filter=filter0, strides=[1, 1, 1, 1], padding='SAME')
+fbn = tf.nn.fused_batch_norm(
+ conv, scale=[1.0], offset=[0.0], mean=[0.0], variance=[1.0], is_training=False)
+
+print(tf.get_default_graph().as_graph_def())
diff --git a/res/TensorFlowTests/NET_0004/test.info b/res/TensorFlowTests/NET_0004/test.info
new file mode 100644
index 000000000..75a892250
--- /dev/null
+++ b/res/TensorFlowTests/NET_0004/test.info
@@ -0,0 +1,2 @@
+input, Placeholder:0, TF_FLOAT, [1, 3, 3, 5]
+output, FusedBatchNorm:0, TF_FLOAT, [1, 3, 3, 10]
diff --git a/res/TensorFlowTests/NET_0004/test.pbtxt b/res/TensorFlowTests/NET_0004/test.pbtxt
new file mode 100644
index 000000000..18cdd65ff
--- /dev/null
+++ b/res/TensorFlowTests/NET_0004/test.pbtxt
@@ -0,0 +1,218 @@
+# Small DepthwiseConv2D + FusedBatchNorm network
+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: "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: 2
+ }
+ dim {
+ size: 5
+ }
+ dim {
+ size: 2
+ }
+ }
+ float_val: 1
+ }
+ }
+ }
+}
+node {
+ name: "depthwise/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: 2
+ int_val: 2
+ int_val: 5
+ int_val: 2
+ }
+ }
+ }
+}
+node {
+ name: "depthwise/dilation_rate"
+ op: "Const"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_INT32
+ }
+ }
+ attr {
+ key: "value"
+ value {
+ tensor {
+ dtype: DT_INT32
+ tensor_shape {
+ dim {
+ size: 2
+ }
+ }
+ int_val: 1
+ int_val: 1
+ }
+ }
+ }
+}
+node {
+ name: "depthwise"
+ op: "DepthwiseConv2dNative"
+ input: "Placeholder"
+ 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: 1
+ i: 1
+ i: 1
+ }
+ }
+ }
+}
+node {
+ name: "Const_1"
+ op: "Const"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "value"
+ value {
+ tensor {
+ dtype: DT_FLOAT
+ tensor_shape {
+ dim {
+ size: 10
+ }
+ }
+ float_val: 2
+ }
+ }
+ }
+}
+node {
+ name: "FusedBatchNorm"
+ op: "FusedBatchNorm"
+ input: "depthwise"
+ input: "Const_1"
+ input: "Const_1"
+ input: "Const_1"
+ input: "Const_1"
+ attr {
+ key: "T"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "data_format"
+ value {
+ s: "NHWC"
+ }
+ }
+ attr {
+ key: "epsilon"
+ value {
+ f: 0.001
+ }
+ }
+ attr {
+ key: "is_training"
+ value {
+ b: false
+ }
+ }
+}
diff --git a/res/TensorFlowTests/NET_0004/test.py b/res/TensorFlowTests/NET_0004/test.py
new file mode 100644
index 000000000..a0c790d79
--- /dev/null
+++ b/res/TensorFlowTests/NET_0004/test.py
@@ -0,0 +1,16 @@
+# TF_SMALL_NET_0004/test.pbtxt is create with below script
+
+# Version info
+# - Tensorflow : 1.13.1
+# - Python : 3.5.2
+
+import tensorflow as tf
+
+input0 = tf.placeholder(tf.float32, [1, 3, 3, 5])
+filter0 = tf.constant(1.0, shape=[2, 2, 5, 2])
+dconv = tf.nn.depthwise_conv2d(input0, filter0, [1, 1, 1, 1], 'SAME')
+const = tf.constant(2.0, shape=[10])
+fbn = tf.nn.fused_batch_norm(
+ x=dconv, scale=const, offset=const, mean=const, variance=const, is_training=False)
+
+print(tf.get_default_graph().as_graph_def())
diff --git a/res/TensorFlowTests/NET_0005/test.info b/res/TensorFlowTests/NET_0005/test.info
new file mode 100644
index 000000000..379959c05
--- /dev/null
+++ b/res/TensorFlowTests/NET_0005/test.info
@@ -0,0 +1,2 @@
+input, Placeholder:0, TF_FLOAT, [1, 2, 3, 2]
+output, Reshape2:0, TF_FLOAT, [1, 2, 3, 2]
diff --git a/res/TensorFlowTests/NET_0005/test.pbtxt b/res/TensorFlowTests/NET_0005/test.pbtxt
new file mode 100644
index 000000000..16cc44005
--- /dev/null
+++ b/res/TensorFlowTests/NET_0005/test.pbtxt
@@ -0,0 +1,120 @@
+# Small Shape + Reshape network
+# This test is quite similar with the last part of InceptionV3
+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: 2
+ }
+ }
+ }
+ }
+}
+node {
+ name: "Shape"
+ op: "Shape"
+ input: "Placeholder"
+ attr {
+ key: "T"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "out_type"
+ value {
+ type: DT_INT32
+ }
+ }
+}
+node {
+ name: "Const"
+ op: "Const"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_INT32
+ }
+ }
+ attr {
+ key: "value"
+ value {
+ tensor {
+ dtype: DT_INT32
+ tensor_shape {
+ dim {
+ size: 2
+ }
+ }
+ int_val: 3
+ int_val: 4
+ }
+ }
+ }
+}
+node {
+ name: "Reshape1"
+ op: "Reshape"
+ input: "Placeholder"
+ input: "Const"
+ attr {
+ key: "T"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "Tshape"
+ value {
+ type: DT_INT32
+ }
+ }
+}
+node {
+ name: "Relu"
+ op: "Relu"
+ input: "Reshape1"
+ attr {
+ key: "T"
+ value {
+ type: DT_FLOAT
+ }
+ }
+}
+node {
+ name: "Reshape2"
+ op: "Reshape"
+ input: "Relu"
+ input: "Shape"
+ attr {
+ key: "T"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "Tshape"
+ value {
+ type: DT_INT32
+ }
+ }
+}
diff --git a/res/TensorFlowTests/NET_0006/test.info b/res/TensorFlowTests/NET_0006/test.info
new file mode 100644
index 000000000..f0b1e20ea
--- /dev/null
+++ b/res/TensorFlowTests/NET_0006/test.info
@@ -0,0 +1,2 @@
+input, placeholder:0, TF_FLOAT, [1, 7, 7, 1]
+output, maxpool:0, TF_FLOAT, [1, 7, 7, 2]
diff --git a/res/TensorFlowTests/NET_0006/test.pbtxt b/res/TensorFlowTests/NET_0006/test.pbtxt
new file mode 100644
index 000000000..e92b60629
--- /dev/null
+++ b/res/TensorFlowTests/NET_0006/test.pbtxt
@@ -0,0 +1,149 @@
+# A simple network that has "Concat" in between feature operations.
+#
+# Placeholder -+-> MaxPool2D -+-> Concat -> MaxPool2D
+# | |
+# +-> MaxPool2D -+
+#
+node {
+ name: "placeholder"
+ op: "Placeholder"
+ attr {
+ key: "dtype"
+ value { type: DT_FLOAT }
+ }
+ attr {
+ key: "shape"
+ value {
+ shape {
+ dim { size: 1 } # N
+ dim { size: 7 } # H
+ dim { size: 7 } # W
+ dim { size: 1 } # C
+ }
+ }
+ }
+}
+node {
+ name: "maxpool_1"
+ op: "MaxPool"
+ input: "placeholder"
+ attr {
+ key: "T"
+ value { type: DT_FLOAT }
+ }
+ attr {
+ key: "data_format"
+ value { s: "NHWC" }
+ }
+ attr {
+ key: "ksize"
+ value {
+ list { i: 1 i: 1 i: 1 i: 1 }
+ }
+ }
+ attr {
+ key: "padding"
+ value { s: "VALID" }
+ }
+ attr {
+ key: "strides"
+ value {
+ list { i: 1 i: 1 i: 1 i: 1 }
+ }
+ }
+}
+node {
+ name: "maxpool_2"
+ op: "MaxPool"
+ input: "placeholder"
+ attr {
+ key: "T"
+ value { type: DT_FLOAT }
+ }
+ attr {
+ key: "data_format"
+ value { s: "NHWC" }
+ }
+ attr {
+ key: "ksize"
+ value {
+ list { i: 1 i: 1 i: 1 i: 1 }
+ }
+ }
+ attr {
+ key: "padding"
+ value { s: "VALID" }
+ }
+ attr {
+ key: "strides"
+ value {
+ list { i: 1 i: 1 i: 1 i: 1 }
+ }
+ }
+}
+node {
+ name: "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: "maxpool_1"
+ input: "maxpool_2"
+ input: "axis"
+ attr {
+ key: "N"
+ value { i: 2 }
+ }
+ attr {
+ key: "T"
+ value { type: DT_FLOAT }
+ }
+ attr {
+ key: "Tidx"
+ value { type: DT_INT32 }
+ }
+}
+node {
+ name: "maxpool"
+ op: "MaxPool"
+ input: "concat"
+ attr {
+ key: "T"
+ value { type: DT_FLOAT }
+ }
+ attr {
+ key: "data_format"
+ value { s: "NHWC" }
+ }
+ attr {
+ key: "ksize"
+ value {
+ list { i: 1 i: 1 i: 1 i: 1 }
+ }
+ }
+ attr {
+ key: "padding"
+ value { s: "VALID" }
+ }
+ attr {
+ key: "strides"
+ value {
+ list { i: 1 i: 1 i: 1 i: 1 }
+ }
+ }
+}
diff --git a/res/TensorFlowTests/NET_0007/test.info b/res/TensorFlowTests/NET_0007/test.info
new file mode 100644
index 000000000..59c3f6122
--- /dev/null
+++ b/res/TensorFlowTests/NET_0007/test.info
@@ -0,0 +1,2 @@
+input, Placeholder:0, TF_FLOAT, [1, 3, 3, 5]
+output, Mul:0, TF_FLOAT, [1, 3, 3, 2]
diff --git a/res/TensorFlowTests/NET_0007/test.pbtxt b/res/TensorFlowTests/NET_0007/test.pbtxt
new file mode 100644
index 000000000..10f9f35a5
--- /dev/null
+++ b/res/TensorFlowTests/NET_0007/test.pbtxt
@@ -0,0 +1,151 @@
+# A simple network that has "Conv2D" + "Mul"
+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
+ }
+ }
+ }
+ attr {
+ key: "use_cudnn_on_gpu"
+ value {
+ b: true
+ }
+ }
+}
+node {
+ name: "mulparam"
+ 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: "Mul"
+ op: "Mul"
+ input: "Conv2D"
+ input: "mulparam"
+ attr {
+ key: "T"
+ value {
+ type: DT_FLOAT
+ }
+ }
+}
diff --git a/res/TensorFlowTests/NET_0008/test.info b/res/TensorFlowTests/NET_0008/test.info
new file mode 100644
index 000000000..ccdd6fd44
--- /dev/null
+++ b/res/TensorFlowTests/NET_0008/test.info
@@ -0,0 +1,2 @@
+input, Placeholder:0, TF_FLOAT, [1, 3, 3, 5]
+output, Add:0, TF_FLOAT, [1, 3, 3, 2]
diff --git a/res/TensorFlowTests/NET_0008/test.pbtxt b/res/TensorFlowTests/NET_0008/test.pbtxt
new file mode 100644
index 000000000..bbaba7ded
--- /dev/null
+++ b/res/TensorFlowTests/NET_0008/test.pbtxt
@@ -0,0 +1,151 @@
+# A simple network that has "Conv2D" + "Add"
+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
+ }
+ }
+ }
+ attr {
+ key: "use_cudnn_on_gpu"
+ value {
+ b: true
+ }
+ }
+}
+node {
+ name: "addparam"
+ 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: "Add"
+ op: "Add"
+ input: "Conv2D"
+ input: "addparam"
+ attr {
+ key: "T"
+ value {
+ type: DT_FLOAT
+ }
+ }
+}
diff --git a/res/TensorFlowTests/NET_0009/test.info b/res/TensorFlowTests/NET_0009/test.info
new file mode 100644
index 000000000..ccdd6fd44
--- /dev/null
+++ b/res/TensorFlowTests/NET_0009/test.info
@@ -0,0 +1,2 @@
+input, Placeholder:0, TF_FLOAT, [1, 3, 3, 5]
+output, Add:0, TF_FLOAT, [1, 3, 3, 2]
diff --git a/res/TensorFlowTests/NET_0009/test.pbtxt b/res/TensorFlowTests/NET_0009/test.pbtxt
new file mode 100644
index 000000000..a4eee69ae
--- /dev/null
+++ b/res/TensorFlowTests/NET_0009/test.pbtxt
@@ -0,0 +1,194 @@
+# A simple network that has "Conv2D" + "BiasAdd" + "Add"
+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
+ }
+ }
+ }
+ attr {
+ key: "use_cudnn_on_gpu"
+ value {
+ b: true
+ }
+ }
+}
+node {
+ name: "BiasAdd/bias"
+ op: "Const"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "value"
+ value {
+ tensor {
+ dtype: DT_FLOAT
+ tensor_shape {
+ dim {
+ size: 2
+ }
+ }
+ float_val: 1.0
+ float_val: 1.0
+ }
+ }
+ }
+}
+node {
+ name: "BiasAdd"
+ op: "BiasAdd"
+ input: "Conv2D"
+ input: "BiasAdd/bias"
+ attr {
+ key: "T"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "data_format"
+ value {
+ s: "NHWC"
+ }
+ }
+}
+node {
+ name: "addparam"
+ 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: "Add"
+ op: "Add"
+ input: "BiasAdd"
+ input: "addparam"
+ attr {
+ key: "T"
+ value {
+ type: DT_FLOAT
+ }
+ }
+}
diff --git a/res/TensorFlowTests/NET_0010/test.info b/res/TensorFlowTests/NET_0010/test.info
new file mode 100644
index 000000000..bcbc41892
--- /dev/null
+++ b/res/TensorFlowTests/NET_0010/test.info
@@ -0,0 +1,2 @@
+input, Placeholder:0, TF_FLOAT, [1, 3, 3, 2]
+output, Add:0, TF_FLOAT, [1, 3, 3, 2]
diff --git a/res/TensorFlowTests/NET_0010/test.pbtxt b/res/TensorFlowTests/NET_0010/test.pbtxt
new file mode 100644
index 000000000..b9c6c9987
--- /dev/null
+++ b/res/TensorFlowTests/NET_0010/test.pbtxt
@@ -0,0 +1,109 @@
+# A simple network that has "BiasAdd" + "Add"
+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: 2
+ }
+ }
+ }
+ }
+}
+node {
+ name: "bias_add_01/bias"
+ op: "Const"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "value"
+ value {
+ tensor {
+ dtype: DT_FLOAT
+ tensor_shape {
+ dim {
+ size: 2
+ }
+ }
+ float_val: 1.0
+ float_val: -1.0
+ }
+ }
+ }
+}
+node {
+ name: "bias_add_01"
+ op: "BiasAdd"
+ input: "Placeholder"
+ input: "bias_add_01/bias"
+ attr {
+ key: "T"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "data_format"
+ value {
+ s: "NHWC"
+ }
+ }
+}
+node {
+ name: "addparam"
+ 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: "Add"
+ op: "Add"
+ input: "bias_add_01"
+ input: "addparam"
+ attr {
+ key: "T"
+ value {
+ type: DT_FLOAT
+ }
+ }
+}
diff --git a/res/TensorFlowTests/NET_0011/test.info b/res/TensorFlowTests/NET_0011/test.info
new file mode 100644
index 000000000..7fb5ec2c0
--- /dev/null
+++ b/res/TensorFlowTests/NET_0011/test.info
@@ -0,0 +1,2 @@
+input, placeholder:0, TF_FLOAT, [2]
+output, concat_out:0, TF_FLOAT, [6]
diff --git a/res/TensorFlowTests/NET_0011/test.pbtxt b/res/TensorFlowTests/NET_0011/test.pbtxt
new file mode 100644
index 000000000..a44aba783
--- /dev/null
+++ b/res/TensorFlowTests/NET_0011/test.pbtxt
@@ -0,0 +1,129 @@
+# A simple network that includes constant foldable subgraph
+# (note: [] indicates shape, () indicates real value)
+#
+# input1 (const) -- relu -+ placeholder --+
+# (-1, 1) (0, 1) | shape [2] |
+# | |
+# input2 (const) -+-- concat -------- concat_out
+# (2, 3) | (0, 1, 2, 3) |
+# | |
+# axis (const)-+-------------------+
+#
+# will be the following after constant folding:
+#
+# Pull --+
+# shape [2] |
+# |
+# ConstGen------- TensorConcat -- Push
+# (0, 1, 2, 3) shape [6]
+#
+node {
+ name: "input1"
+ op: "Const"
+ attr {
+ key: "dtype" value { type: DT_FLOAT }
+ }
+ attr {
+ key: "value"
+ value {
+ tensor {
+ dtype: DT_FLOAT
+ tensor_shape { dim { size: 2 } }
+ float_val: -1
+ float_val: 1
+ }
+ }
+ }
+}
+node {
+ name: "relu"
+ op: "Relu"
+ input: "input1"
+ attr { key: "T" value { type: DT_FLOAT } }
+}
+node {
+ name: "input2"
+ 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
+ float_val: 3
+ }
+ }
+ }
+}
+node {
+ name: "axis"
+ op: "Const"
+ attr { key: "dtype" value { type: DT_INT32 } }
+ attr {
+ key: "value"
+ value {
+ tensor {
+ dtype: DT_INT32
+ tensor_shape { }
+ int_val: 0
+ }
+ }
+ }
+}
+node {
+ name: "concat"
+ op: "ConcatV2"
+ input: "relu"
+ input: "input2"
+ input: "axis"
+ attr {
+ key: "N"
+ value { i: 2 }
+ }
+ attr {
+ key: "T"
+ value { type: DT_FLOAT }
+ }
+ attr {
+ key: "Tidx"
+ value { type: DT_INT32 }
+ }
+}
+node {
+ name: "placeholder"
+ op: "Placeholder"
+ attr {
+ key: "dtype" value { type: DT_FLOAT }
+ }
+ attr {
+ key: "shape"
+ value {
+ shape {
+ dim { size: 2 }
+ }
+ }
+ }
+}
+node {
+ name: "concat_out"
+ op: "ConcatV2"
+ input: "concat"
+ input: "placeholder"
+ input: "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_0012/test.info b/res/TensorFlowTests/NET_0012/test.info
new file mode 100644
index 000000000..b210407fb
--- /dev/null
+++ b/res/TensorFlowTests/NET_0012/test.info
@@ -0,0 +1,2 @@
+input, placeholder:0, TF_FLOAT, [6]
+output, reshape:0, TF_FLOAT, [3, 2]
diff --git a/res/TensorFlowTests/NET_0012/test.pbtxt b/res/TensorFlowTests/NET_0012/test.pbtxt
new file mode 100644
index 000000000..387dc92f6
--- /dev/null
+++ b/res/TensorFlowTests/NET_0012/test.pbtxt
@@ -0,0 +1,52 @@
+# Network with dynamic reshape which has resolvable wildcard dimension
+node {
+ name: "placeholder"
+ op: "Placeholder"
+ attr {
+ key: "dtype"
+ value { type: DT_FLOAT }
+ }
+ attr {
+ key: "shape"
+ value {
+ shape {
+ dim { size: 6 }
+ }
+ }
+ }
+}
+node {
+ name: "shape"
+ op: "Const"
+ attr {
+ key: "dtype"
+ value { type: DT_INT32 }
+ }
+ attr {
+ key: "value"
+ value {
+ tensor {
+ dtype: DT_INT32
+ tensor_shape {
+ dim { size: 2 }
+ }
+ int_val: -1
+ int_val: 2
+ }
+ }
+ }
+}
+node {
+ name: "reshape"
+ op: "Reshape"
+ input: "placeholder"
+ input: "shape"
+ attr {
+ key: "T"
+ value { type: DT_FLOAT }
+ }
+ attr {
+ key: "Tshape"
+ value { type: DT_INT32 }
+ }
+}
diff --git a/res/TensorFlowTests/NET_0013/test.info b/res/TensorFlowTests/NET_0013/test.info
new file mode 100644
index 000000000..137cdfa8c
--- /dev/null
+++ b/res/TensorFlowTests/NET_0013/test.info
@@ -0,0 +1,2 @@
+input, Placeholder:0, TF_FLOAT, [6]
+output, Reshape:0, TF_FLOAT, [2, 3]
diff --git a/res/TensorFlowTests/NET_0013/test.pbtxt b/res/TensorFlowTests/NET_0013/test.pbtxt
new file mode 100644
index 000000000..a9c6aff98
--- /dev/null
+++ b/res/TensorFlowTests/NET_0013/test.pbtxt
@@ -0,0 +1,72 @@
+# Network containing Shape node, which becomes Reshape's 'shape' input
+# Note that this is a work-around to test Shape
+#
+# (tensor)
+# Placeholder ---------- Reshape
+# /
+# Const --- Shape ---
+# (shape)
+node {
+ name: "Placeholder"
+ op: "Placeholder"
+ attr {
+ key: "dtype"
+ value { type: DT_FLOAT }
+ }
+ attr {
+ key: "shape"
+ value {
+ shape {
+ dim { size: 6 }
+ }
+ }
+ }
+}
+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 }
+ }
+ float_val: 1.0
+ }
+ }
+ }
+}
+node {
+ name: "Shape"
+ op: "Shape"
+ input: "Const"
+ attr {
+ key: "T"
+ value { type: DT_FLOAT }
+ }
+ attr {
+ key: "out_type"
+ value { type: DT_INT32 }
+ }
+}
+node {
+ name: "Reshape"
+ op: "Reshape"
+ input: "Placeholder"
+ input: "Shape"
+ attr {
+ key: "T"
+ value { type: DT_FLOAT }
+ }
+ attr {
+ key: "Tshape"
+ value { type: DT_INT32 }
+ }
+}
diff --git a/res/TensorFlowTests/NET_0014/test.info b/res/TensorFlowTests/NET_0014/test.info
new file mode 100644
index 000000000..d3ea85a10
--- /dev/null
+++ b/res/TensorFlowTests/NET_0014/test.info
@@ -0,0 +1,2 @@
+input, placeholder:0, TF_FLOAT, [2, 1, 1, 3]
+output, reshape_2:0, TF_FLOAT, [2, 3]
diff --git a/res/TensorFlowTests/NET_0014/test.pbtxt b/res/TensorFlowTests/NET_0014/test.pbtxt
new file mode 100644
index 000000000..d4bc8e698
--- /dev/null
+++ b/res/TensorFlowTests/NET_0014/test.pbtxt
@@ -0,0 +1,106 @@
+# Mock of the Epilogue, using ReLU instead of Softmax
+node {
+ name: "placeholder"
+ op: "Placeholder"
+ attr {
+ key: "dtype"
+ value { type: DT_FLOAT }
+ }
+ attr {
+ key: "shape"
+ value {
+ shape {
+ dim { size: 2 }
+ dim { size: 1 }
+ dim { size: 1 }
+ dim { size: 3 }
+ }
+ }
+ }
+}
+node {
+ name: "squeeze"
+ op: "Squeeze"
+ input: "placeholder"
+ attr {
+ key: "T"
+ value { type: DT_FLOAT }
+ }
+ attr {
+ key: "squeeze_dims"
+ value {
+ list { i: 1 i: 2 }
+ }
+ }
+}
+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: 2 }
+ }
+ int_val: -1
+ int_val: 3
+ }
+ }
+ }
+}
+node {
+ name: "reshape_1"
+ op: "Reshape"
+ input: "squeeze"
+ input: "Reshape/shape"
+ attr {
+ key: "T"
+ value { type: DT_FLOAT }
+ }
+ attr {
+ key: "Tshape"
+ value { type: DT_INT32 }
+ }
+}
+node {
+ name: "relu"
+ op: "Relu"
+ input: "reshape_1"
+ attr {
+ key: "T"
+ value { type: DT_FLOAT }
+ }
+}
+node {
+ name: "shape"
+ op: "Shape"
+ input: "squeeze"
+ attr {
+ key: "T"
+ value { type: DT_FLOAT }
+ }
+ attr {
+ key: "out_type"
+ value { type: DT_INT32 }
+ }
+}
+node {
+ name: "reshape_2"
+ op: "Reshape"
+ input: "relu"
+ input: "shape"
+ attr {
+ key: "T"
+ value { type: DT_FLOAT }
+ }
+ attr {
+ key: "Tshape"
+ value { type: DT_INT32 }
+ }
+}
diff --git a/res/TensorFlowTests/NET_0015/test.info b/res/TensorFlowTests/NET_0015/test.info
new file mode 100644
index 000000000..dbbef9b3a
--- /dev/null
+++ b/res/TensorFlowTests/NET_0015/test.info
@@ -0,0 +1,2 @@
+input, Placeholder:0, TF_FLOAT, [2, 3]
+output, as_rsqrt:0, TF_FLOAT, [2, 3]
diff --git a/res/TensorFlowTests/NET_0015/test.pbtxt b/res/TensorFlowTests/NET_0015/test.pbtxt
new file mode 100644
index 000000000..3d994e8d5
--- /dev/null
+++ b/res/TensorFlowTests/NET_0015/test.pbtxt
@@ -0,0 +1,74 @@
+# A simple network that simulates Rsqrt: 1.0 / Sqrt(input)
+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: "SQRT_02"
+ op: "Sqrt"
+ input: "Placeholder"
+ attr {
+ key: "T"
+ value {
+ type: DT_FLOAT
+ }
+ }
+}
+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
+ }
+ }
+ float_val: 1.0
+ }
+ }
+ }
+}
+node {
+ name: "as_rsqrt"
+ op: "RealDiv"
+ input: "Const"
+ input: "SQRT_02"
+ attr {
+ key: "T"
+ value {
+ type: DT_FLOAT
+ }
+ }
+}
diff --git a/res/TensorFlowTests/NET_0016/test.info b/res/TensorFlowTests/NET_0016/test.info
new file mode 100644
index 000000000..ee7d13cd1
--- /dev/null
+++ b/res/TensorFlowTests/NET_0016/test.info
@@ -0,0 +1,2 @@
+input, Placeholder:0, TF_FLOAT, [1, 3, 3, 5]
+output, FusedBatchNorm:0, TF_FLOAT, [1, 3, 3, 1]
diff --git a/res/TensorFlowTests/NET_0016/test.pbtxt b/res/TensorFlowTests/NET_0016/test.pbtxt
new file mode 100644
index 000000000..64e5c4194
--- /dev/null
+++ b/res/TensorFlowTests/NET_0016/test.pbtxt
@@ -0,0 +1,271 @@
+# Small Conv2D + FusedBatchNorm network with Identity
+node {
+ name: "Placeholder"
+ op: "Placeholder"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "shape"
+ value {
+ shape {
+ dim {
+ size: 1 # N
+ }
+ dim {
+ size: 3 # H
+ }
+ dim {
+ size: 3 # W
+ }
+ dim {
+ size: 5 # C
+ }
+ }
+ }
+ }
+}
+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 # H
+ }
+ dim {
+ size: 2 # W
+ }
+ dim {
+ size: 5 # I
+ }
+ dim {
+ size: 1 # O
+ }
+ }
+ float_val: 1.0
+ }
+ }
+ }
+}
+node {
+ name: "Conv2D"
+ op: "Conv2D"
+ input: "Placeholder"
+ 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: 1
+ i: 1
+ i: 1
+ }
+ }
+ }
+}
+node {
+ name: "scale"
+ 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: "offset"
+ op: "Const"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "value"
+ value {
+ tensor {
+ dtype: DT_FLOAT
+ tensor_shape {
+ dim {
+ size: 1
+ }
+ }
+ float_val: 0.0
+ }
+ }
+ }
+}
+node {
+ name: "FusedBatchNorm/mean"
+ op: "Const"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "value"
+ value {
+ tensor {
+ dtype: DT_FLOAT
+ tensor_shape {
+ dim {
+ size: 1
+ }
+ }
+ float_val: 0.0
+ }
+ }
+ }
+}
+node {
+ name: "FusedBatchNorm/variance"
+ 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: "offset/id"
+ op: "Identity"
+ input: "offset"
+ attr {
+ key: "T"
+ value {
+ type: DT_FLOAT
+ }
+ }
+}
+node {
+ name: "FusedBatchNorm/mean/id"
+ op: "Identity"
+ input: "FusedBatchNorm/mean"
+ attr {
+ key: "T"
+ value {
+ type: DT_FLOAT
+ }
+ }
+}
+node {
+ name: "FusedBatchNorm/variance/id"
+ op: "Identity"
+ input: "FusedBatchNorm/variance"
+ attr {
+ key: "T"
+ value {
+ type: DT_FLOAT
+ }
+ }
+}
+node {
+ name: "FusedBatchNorm"
+ op: "FusedBatchNorm"
+ input: "Conv2D"
+ input: "scale"
+ input: "offset/id"
+ input: "FusedBatchNorm/mean/id"
+ input: "FusedBatchNorm/variance/id"
+ attr {
+ key: "T"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "data_format"
+ value {
+ s: "NHWC"
+ }
+ }
+ attr {
+ key: "epsilon"
+ value {
+ f: 0.0010000000474974513
+ }
+ }
+ attr {
+ key: "is_training"
+ value {
+ b: false
+ }
+ }
+}
diff --git a/res/TensorFlowTests/NET_0017/test.info b/res/TensorFlowTests/NET_0017/test.info
new file mode 100644
index 000000000..e9413cb98
--- /dev/null
+++ b/res/TensorFlowTests/NET_0017/test.info
@@ -0,0 +1,2 @@
+input, placeholder:0, TF_FLOAT, [1, 8, 8, 1]
+output, avgpool2d:0, TF_FLOAT, [1, 1, 1, 1]
diff --git a/res/TensorFlowTests/NET_0017/test.pbtxt b/res/TensorFlowTests/NET_0017/test.pbtxt
new file mode 100644
index 000000000..e8cc76b70
--- /dev/null
+++ b/res/TensorFlowTests/NET_0017/test.pbtxt
@@ -0,0 +1,61 @@
+# HOW TO GENERATE:
+#
+# import tensorflow as tf
+# value = tf.placeholder(dtype=tf.float32, shape=[1, 8, 8, 1], name='placeholder')
+# output = tf.nn.avg_pool(value, [1, 8, 8, 1], [1, 1, 1, 1], 'VALID', name='avgpool2d')
+# tf.get_default_graph().as_graph_def()
+#
+# NOTE 1. The output shape is 1x1x1x1
+#
+# >>> tf.graph_util.tensor_shape_from_node_def_name(tf.get_default_graph(), 'avgpool2d')
+# TensorShape([Dimension(1), Dimension(1), Dimension(1), Dimension(1)])
+#
+# NOTE 2. This test corresponds to the last AvgPool node inception v3 2018.04.27.
+node {
+ name: "placeholder"
+ op: "Placeholder"
+ attr {
+ key: "dtype"
+ value { type: DT_FLOAT }
+ }
+ attr {
+ key: "shape"
+ value {
+ shape {
+ dim { size: 1 }
+ dim { size: 8 }
+ dim { size: 8 }
+ dim { size: 1 }
+ }
+ }
+ }
+}
+node {
+ name: "avgpool2d"
+ op: "AvgPool"
+ input: "placeholder"
+ attr {
+ key: "T"
+ value { type: DT_FLOAT }
+ }
+ attr {
+ key: "data_format"
+ value { s: "NHWC" }
+ }
+ attr {
+ key: "ksize"
+ value {
+ list { i: 1 i: 8 i: 8 i: 1 }
+ }
+ }
+ attr {
+ key: "padding"
+ value { s: "VALID" }
+ }
+ attr {
+ key: "strides"
+ value {
+ list { i: 1 i: 1 i: 1 i: 1 }
+ }
+ }
+}
diff --git a/res/TensorFlowTests/NET_0018/test.info b/res/TensorFlowTests/NET_0018/test.info
new file mode 100644
index 000000000..87f6fa795
--- /dev/null
+++ b/res/TensorFlowTests/NET_0018/test.info
@@ -0,0 +1,2 @@
+input, placeholder:0, TF_FLOAT, [1, 4, 4, 1]
+output, avgpool2d:0, TF_FLOAT, [1, 4, 4, 1]
diff --git a/res/TensorFlowTests/NET_0018/test.pbtxt b/res/TensorFlowTests/NET_0018/test.pbtxt
new file mode 100644
index 000000000..3b8a15ef8
--- /dev/null
+++ b/res/TensorFlowTests/NET_0018/test.pbtxt
@@ -0,0 +1,63 @@
+# HOW TO GENERATE:
+#
+# import tensorflow as tf
+# value = tf.placeholder(dtype=tf.float32, shape=[1, 4, 4, 1], name='placeholder')
+# output = tf.nn.avg_pool(value, [1, 3, 3, 1], [1, 1, 1, 1], 'SAME', name='avgpool2d')
+# tf.get_default_graph().as_graph_def()
+#
+# NOTE 1. The output shape is 1x4x4x1
+#
+# >>> tf.graph_util.tensor_shape_from_node_def_name(tf.get_default_graph(), 'avgpool2d')
+# TensorShape([Dimension(1), Dimension(4), Dimension(4), Dimension(1)])
+#
+# NOTE 2. Almost all the AvgPool nodes in inception v3 2018.04.27 use this configuration.
+#
+# The only exception is "InceptionV3/Logits/AvgPool_1a_8x8/AvgPool" which performs global average pooling.
+node {
+ name: "placeholder"
+ op: "Placeholder"
+ attr {
+ key: "dtype"
+ value { type: DT_FLOAT }
+ }
+ attr {
+ key: "shape"
+ value {
+ shape {
+ dim { size: 1 }
+ dim { size: 4 }
+ dim { size: 4 }
+ dim { size: 1 }
+ }
+ }
+ }
+}
+node {
+ name: "avgpool2d"
+ op: "AvgPool"
+ input: "placeholder"
+ attr {
+ key: "T"
+ value { type: DT_FLOAT }
+ }
+ attr {
+ key: "data_format"
+ value { s: "NHWC" }
+ }
+ attr {
+ key: "ksize"
+ value {
+ list { i: 1 i: 3 i: 3 i: 1 }
+ }
+ }
+ attr {
+ key: "padding"
+ value { s: "SAME" }
+ }
+ attr {
+ key: "strides"
+ value {
+ list { i: 1 i: 1 i: 1 i: 1 }
+ }
+ }
+}
diff --git a/res/TensorFlowTests/NET_0019/test.info b/res/TensorFlowTests/NET_0019/test.info
new file mode 100644
index 000000000..908883475
--- /dev/null
+++ b/res/TensorFlowTests/NET_0019/test.info
@@ -0,0 +1,2 @@
+input, ifm:0, TF_FLOAT, [1, 7, 7, 4]
+output, ofm:0, TF_FLOAT, [1, 3, 3, 6]
diff --git a/res/TensorFlowTests/NET_0019/test.pbtxt b/res/TensorFlowTests/NET_0019/test.pbtxt
new file mode 100644
index 000000000..076f4f619
--- /dev/null
+++ b/res/TensorFlowTests/NET_0019/test.pbtxt
@@ -0,0 +1,89 @@
+# HOW TO GENERATE:
+#
+# import tensorflow as tf
+# I = 4
+# O = 6
+# ifm = tf.placeholder(dtype=tf.float32, shape=[1, 7, 7, I], name='ifm')
+# ker = tf.constant(dtype=tf.float32, shape=[3, 3, I, O], name='ker', value=1.1)
+# ofm = tf.nn.conv2d(input=ifm, filter=ker, strides=[1, 2, 2, 1], padding='VALID', name='ofm')
+# tf.get_default_graph().as_graph_def()
+#
+# NOTE 1. The output shape is 1x3x3x6
+#
+# >>> tf.graph_util.tensor_shape_from_node_def_name(tf.get_default_graph(), 'ofm')
+# TensorShape([Dimension(1), Dimension(3), Dimension(3), Dimension(6)])
+#
+# NOTE 2. This test corresponds to "InceptionV3/InceptionV3/Conv2d_1a_3x3/Conv2D" node
+#
+node {
+ name: "ifm"
+ op: "Placeholder"
+ attr {
+ key: "dtype"
+ value { type: DT_FLOAT }
+ }
+ attr {
+ key: "shape"
+ value {
+ shape {
+ dim { size: 1 }
+ dim { size: 7 }
+ dim { size: 7 }
+ dim { size: 4 }
+ }
+ }
+ }
+}
+node {
+ name: "ker"
+ 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: 4 }
+ dim { size: 6 }
+ }
+ 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/NET_0020/test.info b/res/TensorFlowTests/NET_0020/test.info
new file mode 100644
index 000000000..d3ea85a10
--- /dev/null
+++ b/res/TensorFlowTests/NET_0020/test.info
@@ -0,0 +1,2 @@
+input, placeholder:0, TF_FLOAT, [2, 1, 1, 3]
+output, reshape_2:0, TF_FLOAT, [2, 3]
diff --git a/res/TensorFlowTests/NET_0020/test.pbtxt b/res/TensorFlowTests/NET_0020/test.pbtxt
new file mode 100644
index 000000000..efd18d132
--- /dev/null
+++ b/res/TensorFlowTests/NET_0020/test.pbtxt
@@ -0,0 +1,112 @@
+# The Epilogue, or endmost part of inception v3 comprised of Squeeze,
+# Reshape, Shape and Softmax
+#
+# Only difference from original is input shape:
+# - original has unknown batch and 1001 channels [?, 1, 1, 1001]
+# - this test has 2 batches and 3 channels [2, 1, 1, 3]
+
+node {
+ name: "placeholder"
+ op: "Placeholder"
+ attr {
+ key: "dtype"
+ value { type: DT_FLOAT }
+ }
+ attr {
+ key: "shape"
+ value {
+ shape {
+ dim { size: 2 }
+ dim { size: 1 }
+ dim { size: 1 }
+ dim { size: 3 }
+ }
+ }
+ }
+}
+node {
+ name: "squeeze"
+ op: "Squeeze"
+ input: "placeholder"
+ attr {
+ key: "T"
+ value { type: DT_FLOAT }
+ }
+ attr {
+ key: "squeeze_dims"
+ value {
+ list { i: 1 i: 2 }
+ }
+ }
+}
+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: 2 }
+ }
+ int_val: -1
+ int_val: 3
+ }
+ }
+ }
+}
+node {
+ name: "reshape_1"
+ op: "Reshape"
+ input: "squeeze"
+ input: "Reshape/shape"
+ attr {
+ key: "T"
+ value { type: DT_FLOAT }
+ }
+ attr {
+ key: "Tshape"
+ value { type: DT_INT32 }
+ }
+}
+node {
+ name: "softmax"
+ op: "Softmax"
+ input: "reshape_1"
+ attr {
+ key: "T"
+ value { type: DT_FLOAT }
+ }
+}
+node {
+ name: "shape"
+ op: "Shape"
+ input: "squeeze"
+ attr {
+ key: "T"
+ value { type: DT_FLOAT }
+ }
+ attr {
+ key: "out_type"
+ value { type: DT_INT32 }
+ }
+}
+node {
+ name: "reshape_2"
+ op: "Reshape"
+ input: "softmax"
+ input: "shape"
+ attr {
+ key: "T"
+ value { type: DT_FLOAT }
+ }
+ attr {
+ key: "Tshape"
+ value { type: DT_INT32 }
+ }
+}
diff --git a/res/TensorFlowTests/NET_0021/test.info b/res/TensorFlowTests/NET_0021/test.info
new file mode 100644
index 000000000..059b21cca
--- /dev/null
+++ b/res/TensorFlowTests/NET_0021/test.info
@@ -0,0 +1,2 @@
+input, placeholder:0, TF_FLOAT, [1, 7, 7, 1]
+output, maxpool2d:0, TF_FLOAT, [1, 3, 3, 1]
diff --git a/res/TensorFlowTests/NET_0021/test.pbtxt b/res/TensorFlowTests/NET_0021/test.pbtxt
new file mode 100644
index 000000000..b1eadccd9
--- /dev/null
+++ b/res/TensorFlowTests/NET_0021/test.pbtxt
@@ -0,0 +1,65 @@
+# HOW TO GENERATE:
+#
+# import tensorflow as tf
+# value = tf.placeholder(dtype=tf.float32, shape=[1, 7, 7, 1], name='placeholder')
+# output = tf.nn.max_pool(value, [1, 3, 3, 1], [1, 2, 2, 1], 'VALID', name='maxpool2d')
+# tf.get_default_graph().as_graph_def()
+#
+# NOTE 1. The output shape is 1x3x3x1
+#
+# >>> tf.graph_util.tensor_shape_from_node_def_name(tf.get_default_graph(), 'maxpool2d')
+# TensorShape([Dimension(1), Dimension(3), Dimension(3), Dimension(1)])
+#
+# NOTE 2. All the MaxPool nodes in inception v3 2018.04.27 use this configuration.
+# - InceptionV3/InceptionV3/MaxPool_3a_3x3/MaxPool
+# - InceptionV3/InceptionV3/MaxPool_5a_3x3/MaxPool
+# - InceptionV3/InceptionV3/Mixed_6a/Branch_2/MaxPool_1a_3x3/MaxPool
+# - InceptionV3/InceptionV3/Mixed_7a/Branch_2/MaxPool_1a_3x3/MaxPool
+node {
+ name: "placeholder"
+ op: "Placeholder"
+ attr {
+ key: "dtype"
+ value { type: DT_FLOAT }
+ }
+ attr {
+ key: "shape"
+ value {
+ shape {
+ dim { size: 1 }
+ dim { size: 7 }
+ dim { size: 7 }
+ dim { size: 1 }
+ }
+ }
+ }
+}
+node {
+ name: "maxpool2d"
+ op: "MaxPool"
+ input: "placeholder"
+ attr {
+ key: "T"
+ value { type: DT_FLOAT }
+ }
+ attr {
+ key: "data_format"
+ value { s: "NHWC" }
+ }
+ attr {
+ key: "ksize"
+ value {
+ list { i: 1 i: 3 i: 3 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/NET_0022/test.info b/res/TensorFlowTests/NET_0022/test.info
new file mode 100644
index 000000000..89c33ee9c
--- /dev/null
+++ b/res/TensorFlowTests/NET_0022/test.info
@@ -0,0 +1,5 @@
+# this has two inputs and two outputs. Let's make our code to handle multiple inputs and outputs.
+input, input_1:0, TF_FLOAT, [2, 2]
+input, input_2:0, TF_FLOAT, [2, 2]
+output, output_1:0, TF_FLOAT, [2, 2]
+output, output_2:0, TF_FLOAT, [2, 2]
diff --git a/res/TensorFlowTests/NET_0022/test.pbtxt b/res/TensorFlowTests/NET_0022/test.pbtxt
new file mode 100644
index 000000000..c8879e84f
--- /dev/null
+++ b/res/TensorFlowTests/NET_0022/test.pbtxt
@@ -0,0 +1,70 @@
+node {
+ name: "input_1"
+ op: "Placeholder"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "shape"
+ value {
+ shape {
+ dim {
+ size: 2
+ }
+ dim {
+ size: 2
+ }
+ }
+ }
+ }
+}
+node {
+ name: "input_2"
+ op: "Placeholder"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "shape"
+ value {
+ shape {
+ dim {
+ size: 2
+ }
+ dim {
+ size: 2
+ }
+ }
+ }
+ }
+}
+node {
+ name: "output_1"
+ op: "Add"
+ input: "input_1"
+ input: "input_2"
+ attr {
+ key: "T"
+ value {
+ type: DT_FLOAT
+ }
+ }
+}
+node {
+ name: "output_2"
+ op: "Add"
+ input: "input_1"
+ input: "input_2"
+ attr {
+ key: "T"
+ value {
+ type: DT_FLOAT
+ }
+ }
+}
diff --git a/res/TensorFlowTests/NET_0023/test.info b/res/TensorFlowTests/NET_0023/test.info
new file mode 100644
index 000000000..856de94d4
--- /dev/null
+++ b/res/TensorFlowTests/NET_0023/test.info
@@ -0,0 +1,2 @@
+# this has no input
+output, out:0, TF_FLOAT, [2, 2]
diff --git a/res/TensorFlowTests/NET_0023/test.pbtxt b/res/TensorFlowTests/NET_0023/test.pbtxt
new file mode 100644
index 000000000..2ef5a0b99
--- /dev/null
+++ b/res/TensorFlowTests/NET_0023/test.pbtxt
@@ -0,0 +1,72 @@
+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: 2
+ }
+ }
+ float_val: 1
+ float_val: 2
+ float_val: 3
+ float_val: 4
+ }
+ }
+ }
+}
+node {
+ name: "Const_1"
+ 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
+ }
+ }
+ float_val: 1
+ float_val: 2
+ float_val: 3
+ float_val: 4
+ }
+ }
+ }
+}
+node {
+ name: "out"
+ op: "Add"
+ input: "Const"
+ input: "Const_1"
+ attr {
+ key: "T"
+ value {
+ type: DT_FLOAT
+ }
+ }
+}
diff --git a/res/TensorFlowTests/NET_0024/test.info b/res/TensorFlowTests/NET_0024/test.info
new file mode 100644
index 000000000..f049f9d43
--- /dev/null
+++ b/res/TensorFlowTests/NET_0024/test.info
@@ -0,0 +1,3 @@
+input, fst:0, TF_FLOAT, [1, 6, 1, 1]
+input, snd:0, TF_FLOAT, [1, 3, 1, 1]
+output, out:0, TF_FLOAT, [1, 9, 1, 1]
diff --git a/res/TensorFlowTests/NET_0024/test.pbtxt b/res/TensorFlowTests/NET_0024/test.pbtxt
new file mode 100644
index 000000000..ee3f99dd9
--- /dev/null
+++ b/res/TensorFlowTests/NET_0024/test.pbtxt
@@ -0,0 +1,76 @@
+# This example intentionally declares "snd" node before "fst" node
+node {
+ name: "snd"
+ op: "Placeholder"
+ attr {
+ key: "dtype"
+ value { type: DT_FLOAT }
+ }
+ attr {
+ key: "shape"
+ value {
+ shape {
+ dim { size: 1 }
+ dim { size: 3 }
+ dim { size: 1 }
+ dim { size: 1 }
+ }
+ }
+ }
+}
+node {
+ name: "fst"
+ op: "Placeholder"
+ attr {
+ key: "dtype"
+ value { type: DT_FLOAT }
+ }
+ attr {
+ key: "shape"
+ value {
+ shape {
+ dim { size: 1 }
+ dim { size: 6 }
+ dim { size: 1 }
+ dim { size: 1 }
+ }
+ }
+ }
+}
+node {
+ name: "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: "out"
+ op: "ConcatV2"
+ input: "fst"
+ input: "snd"
+ input: "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_0025/test.info b/res/TensorFlowTests/NET_0025/test.info
new file mode 100644
index 000000000..6c5eafde7
--- /dev/null
+++ b/res/TensorFlowTests/NET_0025/test.info
@@ -0,0 +1,3 @@
+# This is a slim version of first 4 nodes in inception v3 (from Placeholder to the first RelU)
+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/NET_0025/test.pbtxt b/res/TensorFlowTests/NET_0025/test.pbtxt
new file mode 100644
index 000000000..9b3316dc4
--- /dev/null
+++ b/res/TensorFlowTests/NET_0025/test.pbtxt
@@ -0,0 +1,167 @@
+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
+ }
+ }
+ }
+ attr {
+ key: "use_cudnn_on_gpu"
+ value {
+ b: true
+ }
+ }
+}
+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: "InceptionV3/InceptionV3/Conv2d_1a_3x3/BatchNorm/FusedBatchNorm"
+ 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"
+ }
+ }
+}
+node {
+ name: "InceptionV3/InceptionV3/Conv2d_1a_3x3/Relu"
+ op: "Relu"
+ input: "InceptionV3/InceptionV3/Conv2d_1a_3x3/BatchNorm/FusedBatchNorm"
+ attr {
+ key: "T"
+ value {
+ type: DT_FLOAT
+ }
+ }
+}
diff --git a/res/TensorFlowTests/NET_0026/test.info b/res/TensorFlowTests/NET_0026/test.info
new file mode 100644
index 000000000..b96ff35b8
--- /dev/null
+++ b/res/TensorFlowTests/NET_0026/test.info
@@ -0,0 +1,3 @@
+# This is a slim version of first 7 nodes in inception v3 (from Placeholder to the second ReLU)
+input, input:0, TF_FLOAT, [1, 9, 9, 3]
+output, InceptionV3/InceptionV3/Conv2d_2a_3x3/Relu:0, TF_FLOAT, [1, 2, 2, 4]
diff --git a/res/TensorFlowTests/NET_0026/test.pbtxt b/res/TensorFlowTests/NET_0026/test.pbtxt
new file mode 100644
index 000000000..ea0262784
--- /dev/null
+++ b/res/TensorFlowTests/NET_0026/test.pbtxt
@@ -0,0 +1,305 @@
+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: 9
+ }
+ dim {
+ size: 9
+ }
+ 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
+ }
+ }
+ }
+ attr {
+ key: "use_cudnn_on_gpu"
+ value {
+ b: true
+ }
+ }
+}
+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: "InceptionV3/InceptionV3/Conv2d_1a_3x3/BatchNorm/FusedBatchNorm"
+ 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"
+ }
+ }
+}
+node {
+ name: "InceptionV3/InceptionV3/Conv2d_1a_3x3/Relu"
+ op: "Relu"
+ input: "InceptionV3/InceptionV3/Conv2d_1a_3x3/BatchNorm/FusedBatchNorm"
+ attr {
+ key: "T"
+ value {
+ type: DT_FLOAT
+ }
+ }
+}
+node {
+ name: "InceptionV3/Conv2d_2a_3x3/weights/read/_7__cf__7"
+ 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: 4
+ }
+ dim {
+ size: 4
+ }
+ }
+ float_val: 1.0
+ }
+ }
+ }
+}
+node {
+ name: "InceptionV3/InceptionV3/Conv2d_2a_3x3/Conv2D"
+ op: "Conv2D"
+ input: "InceptionV3/InceptionV3/Conv2d_1a_3x3/Relu"
+ input: "InceptionV3/Conv2d_2a_3x3/weights/read/_7__cf__7"
+ 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: 1
+ i: 1
+ i: 1
+ }
+ }
+ }
+ attr {
+ key: "use_cudnn_on_gpu"
+ value {
+ b: true
+ }
+ }
+}
+node {
+ name: "InceptionV3/InceptionV3/Conv2d_2a_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: "InceptionV3/InceptionV3/Conv2d_2a_3x3/BatchNorm/FusedBatchNorm"
+ op: "BiasAdd"
+ input: "InceptionV3/InceptionV3/Conv2d_2a_3x3/Conv2D"
+ input: "InceptionV3/InceptionV3/Conv2d_2a_3x3/Conv2D_bn_offset"
+ attr {
+ key: "T"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "data_format"
+ value {
+ s: "NHWC"
+ }
+ }
+}
+node {
+ name: "InceptionV3/InceptionV3/Conv2d_2a_3x3/Relu"
+ op: "Relu"
+ input: "InceptionV3/InceptionV3/Conv2d_2a_3x3/BatchNorm/FusedBatchNorm"
+ attr {
+ key: "T"
+ value {
+ type: DT_FLOAT
+ }
+ }
+}
diff --git a/res/TensorFlowTests/NET_0027/test.info b/res/TensorFlowTests/NET_0027/test.info
new file mode 100644
index 000000000..db97c4603
--- /dev/null
+++ b/res/TensorFlowTests/NET_0027/test.info
@@ -0,0 +1,3 @@
+# This is a slim version of first 10 nodes in inception v3 (from Placeholder to MaxPool2D)
+input, input:0, TF_FLOAT, [1, 15, 15, 3]
+output, InceptionV3/InceptionV3/MaxPool_3a_3x3/MaxPool:0, TF_FLOAT, [1, 2, 2, 5]
diff --git a/res/TensorFlowTests/NET_0027/test.pbtxt b/res/TensorFlowTests/NET_0027/test.pbtxt
new file mode 100644
index 000000000..af5fa9372
--- /dev/null
+++ b/res/TensorFlowTests/NET_0027/test.pbtxt
@@ -0,0 +1,488 @@
+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: 15
+ }
+ dim {
+ size: 15
+ }
+ 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
+ }
+ }
+ }
+ attr {
+ key: "use_cudnn_on_gpu"
+ value {
+ b: true
+ }
+ }
+}
+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: "InceptionV3/InceptionV3/Conv2d_1a_3x3/BatchNorm/FusedBatchNorm"
+ 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"
+ }
+ }
+}
+node {
+ name: "InceptionV3/InceptionV3/Conv2d_1a_3x3/Relu"
+ op: "Relu"
+ input: "InceptionV3/InceptionV3/Conv2d_1a_3x3/BatchNorm/FusedBatchNorm"
+ attr {
+ key: "T"
+ value {
+ type: DT_FLOAT
+ }
+ }
+}
+node {
+ name: "InceptionV3/Conv2d_2a_3x3/weights/read/_7__cf__7"
+ 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: 4
+ }
+ dim {
+ size: 4
+ }
+ }
+ float_val: 1.0
+ }
+ }
+ }
+}
+node {
+ name: "InceptionV3/InceptionV3/Conv2d_2a_3x3/Conv2D"
+ op: "Conv2D"
+ input: "InceptionV3/InceptionV3/Conv2d_1a_3x3/Relu"
+ input: "InceptionV3/Conv2d_2a_3x3/weights/read/_7__cf__7"
+ 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: 1
+ i: 1
+ i: 1
+ }
+ }
+ }
+ attr {
+ key: "use_cudnn_on_gpu"
+ value {
+ b: true
+ }
+ }
+}
+node {
+ name: "InceptionV3/InceptionV3/Conv2d_2a_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: "InceptionV3/InceptionV3/Conv2d_2a_3x3/BatchNorm/FusedBatchNorm"
+ op: "BiasAdd"
+ input: "InceptionV3/InceptionV3/Conv2d_2a_3x3/Conv2D"
+ input: "InceptionV3/InceptionV3/Conv2d_2a_3x3/Conv2D_bn_offset"
+ attr {
+ key: "T"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "data_format"
+ value {
+ s: "NHWC"
+ }
+ }
+}
+node {
+ name: "InceptionV3/InceptionV3/Conv2d_2a_3x3/Relu"
+ op: "Relu"
+ input: "InceptionV3/InceptionV3/Conv2d_2a_3x3/BatchNorm/FusedBatchNorm"
+ attr {
+ key: "T"
+ value {
+ type: DT_FLOAT
+ }
+ }
+}
+node {
+ name: "InceptionV3/InceptionV3/Conv2d_2b_3x3/Conv2D"
+ op: "Conv2D"
+ input: "InceptionV3/InceptionV3/Conv2d_2a_3x3/Relu"
+ input: "InceptionV3/Conv2d_2b_3x3/weights/read/_11__cf__11"
+ 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
+ }
+ }
+ }
+ attr {
+ key: "use_cudnn_on_gpu"
+ value {
+ b: true
+ }
+ }
+}
+node {
+ name: "InceptionV3/Conv2d_2b_3x3/weights/read/_11__cf__11"
+ 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: 4
+ }
+ dim {
+ size: 5
+ }
+ }
+ float_val: 1.0
+ }
+ }
+ }
+}
+node {
+ name: "InceptionV3/InceptionV3/Conv2d_2b_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: 5
+ }
+ }
+ float_val: 1.0
+ }
+ }
+ }
+}
+node {
+ name: "InceptionV3/InceptionV3/Conv2d_2b_3x3/BatchNorm/FusedBatchNorm"
+ op: "BiasAdd"
+ input: "InceptionV3/InceptionV3/Conv2d_2b_3x3/Conv2D"
+ input: "InceptionV3/InceptionV3/Conv2d_2b_3x3/Conv2D_bn_offset"
+ attr {
+ key: "T"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "data_format"
+ value {
+ s: "NHWC"
+ }
+ }
+}
+node {
+ name: "InceptionV3/InceptionV3/Conv2d_2b_3x3/Relu"
+ op: "Relu"
+ input: "InceptionV3/InceptionV3/Conv2d_2b_3x3/BatchNorm/FusedBatchNorm"
+ attr {
+ key: "T"
+ value {
+ type: DT_FLOAT
+ }
+ }
+}
+node {
+ name: "InceptionV3/InceptionV3/MaxPool_3a_3x3/MaxPool"
+ op: "MaxPool"
+ input: "InceptionV3/InceptionV3/Conv2d_2b_3x3/Relu"
+ attr {
+ key: "T"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "data_format"
+ value {
+ s: "NHWC"
+ }
+ }
+ attr {
+ key: "ksize"
+ value {
+ list {
+ i: 1
+ i: 3
+ i: 3
+ 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/NET_0028/test.info b/res/TensorFlowTests/NET_0028/test.info
new file mode 100644
index 000000000..d09ce02da
--- /dev/null
+++ b/res/TensorFlowTests/NET_0028/test.info
@@ -0,0 +1,3 @@
+# This is a slim version of Instance Normalizartion
+input, Input:0, TF_FLOAT, [1, 8, 6, 12]
+output, Relu:0, TF_FLOAT, [1, 8, 6, 12]
diff --git a/res/TensorFlowTests/NET_0028/test.pbtxt b/res/TensorFlowTests/NET_0028/test.pbtxt
new file mode 100644
index 000000000..48a5bccd3
--- /dev/null
+++ b/res/TensorFlowTests/NET_0028/test.pbtxt
@@ -0,0 +1,373 @@
+node {
+ name: "Input"
+ 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: 12
+ }
+ }
+ }
+ }
+}
+node {
+ name: "InstanceNorm/beta"
+ 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.97139931
+ float_val: 1.45169675
+ float_val: 1.2031461
+ float_val: 0.287978739
+ float_val: 0.161815107
+ float_val: -0.281398058
+ float_val: 2.70276475
+ float_val: -0.166961521
+ float_val: 0.266388983
+ float_val: 0.890943348
+ float_val: -0.279832929
+ float_val: 1.82808423
+ }
+ }
+ }
+}
+node {
+ name: "InstanceNorm/beta/read"
+ op: "Identity"
+ input: "InstanceNorm/beta"
+ attr {
+ key: "T"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "_class"
+ value {
+ list {
+ s: "loc:@InstanceNorm/beta"
+ }
+ }
+ }
+}
+node {
+ name: "InstanceNorm/gamma"
+ op: "Const"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "value"
+ value {
+ tensor {
+ dtype: DT_FLOAT
+ tensor_shape {
+ dim {
+ size: 12
+ }
+ }
+ float_val: 0.574708045
+ float_val: 0.387735426
+ float_val: 0.899499536
+ float_val: 0.484296113
+ float_val: 2.35850787
+ float_val: 1.06661248
+ float_val: 0.343602151
+ float_val: 2.27582788
+ float_val: 1.14559281
+ float_val: 0.690169275
+ float_val: 1.20440173
+ float_val: 0.350952208
+ }
+ }
+ }
+}
+node {
+ name: "InstanceNorm/gamma/read"
+ op: "Identity"
+ input: "InstanceNorm/gamma"
+ attr {
+ key: "T"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "_class"
+ value {
+ list {
+ s: "loc:@InstanceNorm/gamma"
+ }
+ }
+ }
+}
+node {
+ name: "InstanceNorm/moments/mean/reduction_indices"
+ op: "Const"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_INT32
+ }
+ }
+ attr {
+ key: "value"
+ value {
+ tensor {
+ dtype: DT_INT32
+ tensor_shape {
+ dim {
+ size: 2
+ }
+ }
+ int_val: 1
+ int_val: 2
+ }
+ }
+ }
+}
+node {
+ name: "InstanceNorm/moments/mean"
+ op: "Mean"
+ input: "Input"
+ input: "InstanceNorm/moments/mean/reduction_indices"
+ attr {
+ key: "T"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "Tidx"
+ value {
+ type: DT_INT32
+ }
+ }
+ attr {
+ key: "keep_dims"
+ value {
+ b: true
+ }
+ }
+}
+node {
+ name: "InstanceNorm/moments/StopGradient"
+ op: "StopGradient"
+ input: "InstanceNorm/moments/mean"
+ attr {
+ key: "T"
+ value {
+ type: DT_FLOAT
+ }
+ }
+}
+node {
+ name: "InstanceNorm/moments/SquaredDifference"
+ op: "SquaredDifference"
+ input: "Input"
+ input: "InstanceNorm/moments/StopGradient"
+ attr {
+ key: "T"
+ value {
+ type: DT_FLOAT
+ }
+ }
+}
+node {
+ name: "InstanceNorm/moments/variance/reduction_indices"
+ op: "Const"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_INT32
+ }
+ }
+ attr {
+ key: "value"
+ value {
+ tensor {
+ dtype: DT_INT32
+ tensor_shape {
+ dim {
+ size: 2
+ }
+ }
+ int_val: 1
+ int_val: 2
+ }
+ }
+ }
+}
+node {
+ name: "InstanceNorm/moments/variance"
+ op: "Mean"
+ input: "InstanceNorm/moments/SquaredDifference"
+ input: "InstanceNorm/moments/variance/reduction_indices"
+ attr {
+ key: "T"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "Tidx"
+ value {
+ type: DT_INT32
+ }
+ }
+ attr {
+ key: "keep_dims"
+ value {
+ b: true
+ }
+ }
+}
+node {
+ name: "InstanceNorm/instancenorm/add/y"
+ op: "Const"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "value"
+ value {
+ tensor {
+ dtype: DT_FLOAT
+ tensor_shape {
+ }
+ float_val: 0.001
+ }
+ }
+ }
+}
+node {
+ name: "InstanceNorm/instancenorm/add"
+ op: "Add"
+ input: "InstanceNorm/moments/variance"
+ input: "InstanceNorm/instancenorm/add/y"
+ attr {
+ key: "T"
+ value {
+ type: DT_FLOAT
+ }
+ }
+}
+node {
+ name: "InstanceNorm/instancenorm/Rsqrt"
+ op: "Rsqrt"
+ input: "InstanceNorm/instancenorm/add"
+ attr {
+ key: "T"
+ value {
+ type: DT_FLOAT
+ }
+ }
+}
+node {
+ name: "InstanceNorm/instancenorm/mul"
+ op: "Mul"
+ input: "InstanceNorm/instancenorm/Rsqrt"
+ input: "InstanceNorm/gamma/read"
+ attr {
+ key: "T"
+ value {
+ type: DT_FLOAT
+ }
+ }
+}
+node {
+ name: "InstanceNorm/instancenorm/mul_1"
+ op: "Mul"
+ input: "Input"
+ input: "InstanceNorm/instancenorm/mul"
+ attr {
+ key: "T"
+ value {
+ type: DT_FLOAT
+ }
+ }
+}
+node {
+ name: "InstanceNorm/instancenorm/mul_2"
+ op: "Mul"
+ input: "InstanceNorm/moments/mean"
+ input: "InstanceNorm/instancenorm/mul"
+ attr {
+ key: "T"
+ value {
+ type: DT_FLOAT
+ }
+ }
+}
+node {
+ name: "InstanceNorm/instancenorm/sub"
+ op: "Sub"
+ input: "InstanceNorm/beta/read"
+ input: "InstanceNorm/instancenorm/mul_2"
+ attr {
+ key: "T"
+ value {
+ type: DT_FLOAT
+ }
+ }
+}
+node {
+ name: "InstanceNorm/instancenorm/add_1"
+ op: "Add"
+ input: "InstanceNorm/instancenorm/mul_1"
+ input: "InstanceNorm/instancenorm/sub"
+ attr {
+ key: "T"
+ value {
+ type: DT_FLOAT
+ }
+ }
+}
+node {
+ name: "Relu"
+ op: "Relu"
+ input: "InstanceNorm/instancenorm/add_1"
+ attr {
+ key: "T"
+ value {
+ type: DT_FLOAT
+ }
+ }
+}
diff --git a/res/TensorFlowTests/REGRESSION_0000/test.info b/res/TensorFlowTests/REGRESSION_0000/test.info
new file mode 100644
index 000000000..1012f87e8
--- /dev/null
+++ b/res/TensorFlowTests/REGRESSION_0000/test.info
@@ -0,0 +1,2 @@
+input, Placeholder:0, TF_FLOAT, [2, 3]
+output, Add:0, TF_FLOAT, [2, 3]
diff --git a/res/TensorFlowTests/REGRESSION_0000/test.pbtxt b/res/TensorFlowTests/REGRESSION_0000/test.pbtxt
new file mode 100644
index 000000000..aa552ce65
--- /dev/null
+++ b/res/TensorFlowTests/REGRESSION_0000/test.pbtxt
@@ -0,0 +1,68 @@
+# Add network with Placeholder and Const as arguments
+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: 2
+ }
+ dim {
+ size: 3
+ }
+ }
+ float_val: 1.1
+ float_val: 2.2
+ float_val: 3.3
+ float_val: 4.4
+ float_val: 5.5
+ float_val: 6.6
+ }
+ }
+ }
+}
+node {
+ name: "Add"
+ op: "Add"
+ input: "Placeholder"
+ input: "Const"
+ attr {
+ key: "T"
+ value {
+ type: DT_FLOAT
+ }
+ }
+}
diff --git a/res/TensorFlowTests/UNIT_Add_000/test.info b/res/TensorFlowTests/UNIT_Add_000/test.info
new file mode 100644
index 000000000..77c2dbe0d
--- /dev/null
+++ b/res/TensorFlowTests/UNIT_Add_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, add:0, TF_FLOAT, [1, 3, 3, 1]
diff --git a/res/TensorFlowTests/UNIT_Add_000/test.pbtxt b/res/TensorFlowTests/UNIT_Add_000/test.pbtxt
new file mode 100644
index 000000000..b03826840
--- /dev/null
+++ b/res/TensorFlowTests/UNIT_Add_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: "add"
+ op: "Add"
+ input: "input_01"
+ input: "input_02"
+ attr {
+ key: "T"
+ value {
+ type: DT_FLOAT
+ }
+ }
+}
diff --git a/res/TensorFlowTests/UNIT_Add_001/test.info b/res/TensorFlowTests/UNIT_Add_001/test.info
new file mode 100644
index 000000000..f99f0f808
--- /dev/null
+++ b/res/TensorFlowTests/UNIT_Add_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, add:0, TF_FLOAT, [1, 3, 3, 5]
diff --git a/res/TensorFlowTests/UNIT_Add_001/test.pbtxt b/res/TensorFlowTests/UNIT_Add_001/test.pbtxt
new file mode 100644
index 000000000..ff89686b8
--- /dev/null
+++ b/res/TensorFlowTests/UNIT_Add_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: "add"
+ op: "Add"
+ input: "input_01"
+ input: "input_02"
+ attr {
+ key: "T"
+ value {
+ type: DT_FLOAT
+ }
+ }
+}
diff --git a/res/TensorFlowTests/UNIT_Add_002/test.info b/res/TensorFlowTests/UNIT_Add_002/test.info
new file mode 100644
index 000000000..4471cff17
--- /dev/null
+++ b/res/TensorFlowTests/UNIT_Add_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, add:0, TF_FLOAT, [1, 3, 3, 5]
diff --git a/res/TensorFlowTests/UNIT_Add_002/test.pbtxt b/res/TensorFlowTests/UNIT_Add_002/test.pbtxt
new file mode 100644
index 000000000..5e320a413
--- /dev/null
+++ b/res/TensorFlowTests/UNIT_Add_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: "add"
+ op: "Add"
+ input: "input_01"
+ input: "input_02"
+ attr {
+ key: "T"
+ value {
+ type: DT_FLOAT
+ }
+ }
+}
diff --git a/res/TensorFlowTests/UNIT_Add_003/test.info b/res/TensorFlowTests/UNIT_Add_003/test.info
new file mode 100644
index 000000000..8c87db7ea
--- /dev/null
+++ b/res/TensorFlowTests/UNIT_Add_003/test.info
@@ -0,0 +1,3 @@
+input, input_01:0, TF_FLOAT, [1, 3, 3, 5]
+input, input_02:0, TF_FLOAT, []
+output, add:0, TF_FLOAT, [1, 3, 3, 5]
diff --git a/res/TensorFlowTests/UNIT_Add_003/test.pbtxt b/res/TensorFlowTests/UNIT_Add_003/test.pbtxt
new file mode 100644
index 000000000..96b9219af
--- /dev/null
+++ b/res/TensorFlowTests/UNIT_Add_003/test.pbtxt
@@ -0,0 +1,58 @@
+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 {
+ }
+ }
+ }
+}
+node {
+ name: "add"
+ op: "Add"
+ input: "input_01"
+ input: "input_02"
+ attr {
+ key: "T"
+ value {
+ type: DT_FLOAT
+ }
+ }
+}
diff --git a/res/TensorFlowTests/UNIT_Add_004/test.info b/res/TensorFlowTests/UNIT_Add_004/test.info
new file mode 100644
index 000000000..201dfd6fc
--- /dev/null
+++ b/res/TensorFlowTests/UNIT_Add_004/test.info
@@ -0,0 +1,2 @@
+input, input_01:0, TF_FLOAT, [1, 3, 3, 5]
+output, add:0, TF_FLOAT, [1, 3, 3, 5]
diff --git a/res/TensorFlowTests/UNIT_Add_004/test.pbtxt b/res/TensorFlowTests/UNIT_Add_004/test.pbtxt
new file mode 100644
index 000000000..ca9295022
--- /dev/null
+++ b/res/TensorFlowTests/UNIT_Add_004/test.pbtxt
@@ -0,0 +1,62 @@
+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: "scala"
+ op: "Const"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "value"
+ value {
+ tensor {
+ dtype: DT_FLOAT
+ tensor_shape {
+ }
+ float_val: 1.0
+ }
+ }
+ }
+}
+node {
+ name: "add"
+ op: "Add"
+ input: "input_01"
+ input: "scala"
+ attr {
+ key: "T"
+ value {
+ type: DT_FLOAT
+ }
+ }
+}
diff --git a/res/TensorFlowTests/UNIT_Add_005/test.info b/res/TensorFlowTests/UNIT_Add_005/test.info
new file mode 100644
index 000000000..7cd730ae6
--- /dev/null
+++ b/res/TensorFlowTests/UNIT_Add_005/test.info
@@ -0,0 +1,3 @@
+input, input_01:0, TF_FLOAT, [1, 1, 1, 5]
+input, input_02:0, TF_FLOAT, [1, 3, 3, 5]
+output, add:0, TF_FLOAT, [1, 3, 3, 5]
diff --git a/res/TensorFlowTests/UNIT_Add_005/test.pbtxt b/res/TensorFlowTests/UNIT_Add_005/test.pbtxt
new file mode 100644
index 000000000..cc28366b7
--- /dev/null
+++ b/res/TensorFlowTests/UNIT_Add_005/test.pbtxt
@@ -0,0 +1,49 @@
+# LHS broadcasting
+node {
+ name: "input_01"
+ 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: "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: 5 }
+ }
+ }
+ }
+}
+node {
+ name: "add"
+ op: "Add"
+ input: "input_01"
+ input: "input_02"
+ attr {
+ key: "T"
+ value { type: DT_FLOAT }
+ }
+}
diff --git a/res/TensorFlowTests/UNIT_AvgPool_000/test.info b/res/TensorFlowTests/UNIT_AvgPool_000/test.info
new file mode 100644
index 000000000..31c94cffa
--- /dev/null
+++ b/res/TensorFlowTests/UNIT_AvgPool_000/test.info
@@ -0,0 +1,2 @@
+input, placeholder:0, TF_FLOAT, [1, 3, 3, 1]
+output, avgpool2d:0, TF_FLOAT, [1, 3, 3, 1]
diff --git a/res/TensorFlowTests/UNIT_AvgPool_000/test.pbtxt b/res/TensorFlowTests/UNIT_AvgPool_000/test.pbtxt
new file mode 100644
index 000000000..8c71f0b9e
--- /dev/null
+++ b/res/TensorFlowTests/UNIT_AvgPool_000/test.pbtxt
@@ -0,0 +1,74 @@
+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: 1
+ }
+ }
+ }
+ }
+}
+node {
+ name: "avgpool2d"
+ op: "AvgPool"
+ input: "placeholder"
+ attr {
+ key: "T"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "data_format"
+ value {
+ s: "NHWC"
+ }
+ }
+ attr {
+ key: "ksize"
+ value {
+ list {
+ i: 1
+ i: 3
+ i: 3
+ i: 1
+ }
+ }
+ }
+ attr {
+ key: "padding"
+ value {
+ s: "SAME"
+ }
+ }
+ attr {
+ key: "strides"
+ value {
+ list {
+ i: 1
+ i: 1
+ i: 1
+ i: 1
+ }
+ }
+ }
+}
diff --git a/res/TensorFlowTests/UNIT_AvgPool_001/test.info b/res/TensorFlowTests/UNIT_AvgPool_001/test.info
new file mode 100644
index 000000000..2cf5bfe34
--- /dev/null
+++ b/res/TensorFlowTests/UNIT_AvgPool_001/test.info
@@ -0,0 +1,2 @@
+input, placeholder:0, TF_FLOAT, [1, 4, 4, 1]
+output, avgpool2d:0, TF_FLOAT, [1, 2, 2, 1]
diff --git a/res/TensorFlowTests/UNIT_AvgPool_001/test.pbtxt b/res/TensorFlowTests/UNIT_AvgPool_001/test.pbtxt
new file mode 100644
index 000000000..faf117ca4
--- /dev/null
+++ b/res/TensorFlowTests/UNIT_AvgPool_001/test.pbtxt
@@ -0,0 +1,74 @@
+node {
+ name: "placeholder"
+ op: "Placeholder"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "shape"
+ value {
+ shape {
+ dim {
+ size: 1
+ }
+ dim {
+ size: 4
+ }
+ dim {
+ size: 4
+ }
+ dim {
+ size: 1
+ }
+ }
+ }
+ }
+}
+node {
+ name: "avgpool2d"
+ op: "AvgPool"
+ input: "placeholder"
+ attr {
+ key: "T"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "data_format"
+ value {
+ s: "NHWC"
+ }
+ }
+ attr {
+ key: "ksize"
+ value {
+ list {
+ i: 1
+ i: 2
+ i: 2
+ 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_BiasAdd_000/test.info b/res/TensorFlowTests/UNIT_BiasAdd_000/test.info
new file mode 100644
index 000000000..cbb4f38dd
--- /dev/null
+++ b/res/TensorFlowTests/UNIT_BiasAdd_000/test.info
@@ -0,0 +1 @@
+output, out:0, TF_FLOAT, [1, 5, 5, 3]
diff --git a/res/TensorFlowTests/UNIT_BiasAdd_000/test.pbtxt b/res/TensorFlowTests/UNIT_BiasAdd_000/test.pbtxt
new file mode 100644
index 000000000..642eac655
--- /dev/null
+++ b/res/TensorFlowTests/UNIT_BiasAdd_000/test.pbtxt
@@ -0,0 +1,57 @@
+node {
+ name: "val"
+ op: "Const"
+ attr {
+ key: "dtype"
+ value { type: DT_FLOAT }
+ }
+ attr {
+ key: "value"
+ value {
+ tensor {
+ dtype: DT_FLOAT
+ tensor_shape {
+ dim { size: 1 }
+ dim { size: 5 }
+ dim { size: 5 }
+ dim { size: 3 }
+ }
+ float_val: 2.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: 3 }
+ }
+ float_val: 1.1
+ }
+ }
+ }
+}
+node {
+ name: "out"
+ op: "BiasAdd"
+ input: "val"
+ input: "bias"
+ attr {
+ key: "T"
+ value { type: DT_FLOAT }
+ }
+ attr {
+ key: "data_format"
+ value { s: "NHWC" }
+ }
+}
diff --git a/res/TensorFlowTests/UNIT_BiasAdd_001/test.info b/res/TensorFlowTests/UNIT_BiasAdd_001/test.info
new file mode 100644
index 000000000..04c89d69c
--- /dev/null
+++ b/res/TensorFlowTests/UNIT_BiasAdd_001/test.info
@@ -0,0 +1 @@
+output, out:0, TF_FLOAT, [1, 3, 4, 4]
diff --git a/res/TensorFlowTests/UNIT_BiasAdd_001/test.pbtxt b/res/TensorFlowTests/UNIT_BiasAdd_001/test.pbtxt
new file mode 100644
index 000000000..6b543084d
--- /dev/null
+++ b/res/TensorFlowTests/UNIT_BiasAdd_001/test.pbtxt
@@ -0,0 +1,57 @@
+node {
+ name: "val"
+ op: "Const"
+ attr {
+ key: "dtype"
+ value { type: DT_FLOAT }
+ }
+ attr {
+ key: "value"
+ value {
+ tensor {
+ dtype: DT_FLOAT
+ tensor_shape {
+ dim { size: 1 }
+ dim { size: 3 }
+ dim { size: 4 }
+ dim { size: 4 }
+ }
+ float_val: 2.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: 3 }
+ }
+ float_val: 1.1
+ }
+ }
+ }
+}
+node {
+ name: "out"
+ op: "BiasAdd"
+ input: "val"
+ input: "bias"
+ attr {
+ key: "T"
+ value { type: DT_FLOAT }
+ }
+ attr {
+ key: "data_format"
+ value { s: "NCHW" }
+ }
+}
diff --git a/res/TensorFlowTests/UNIT_BiasAdd_002/test.info b/res/TensorFlowTests/UNIT_BiasAdd_002/test.info
new file mode 100644
index 000000000..2133df438
--- /dev/null
+++ b/res/TensorFlowTests/UNIT_BiasAdd_002/test.info
@@ -0,0 +1,2 @@
+input, input:0, TF_FLOAT, [1, 16, 16, 2]
+output, output:0, TF_FLOAT, [1, 16, 16, 2]
diff --git a/res/TensorFlowTests/UNIT_BiasAdd_002/test.pbtxt b/res/TensorFlowTests/UNIT_BiasAdd_002/test.pbtxt
new file mode 100644
index 000000000..336a10338
--- /dev/null
+++ b/res/TensorFlowTests/UNIT_BiasAdd_002/test.pbtxt
@@ -0,0 +1,51 @@
+node {
+ name: "input"
+ op: "Placeholder"
+ attr {
+ key: "dtype"
+ value { type: DT_FLOAT }
+ }
+ attr {
+ key: "shape"
+ value {
+ shape {
+ dim { size: 1 }
+ dim { size: 16 }
+ dim { size: 16 }
+ dim { size: 2 }
+ }
+ }
+ }
+}
+node {
+ name: "bias"
+ op: "Const"
+ attr {
+ key: "dtype"
+ value { type: DT_FLOAT }
+ }
+ attr {
+ key: "value"
+ value {
+ tensor {
+ dtype: DT_FLOAT
+ tensor_shape { dim { size: 2 } }
+ float_val: 1.0
+ }
+ }
+ }
+}
+node {
+ name: "output"
+ op: "BiasAdd"
+ input: "input"
+ input: "bias"
+ attr {
+ key: "T"
+ value { type: DT_FLOAT }
+ }
+ attr {
+ key: "data_format"
+ value { s: "NHWC" }
+ }
+}
diff --git a/res/TensorFlowTests/UNIT_Concat_000/test.info b/res/TensorFlowTests/UNIT_Concat_000/test.info
new file mode 100644
index 000000000..9ea940f2a
--- /dev/null
+++ b/res/TensorFlowTests/UNIT_Concat_000/test.info
@@ -0,0 +1 @@
+output, Concat:0, TF_FLOAT, [4, 3]
diff --git a/res/TensorFlowTests/UNIT_Concat_000/test.pbtxt b/res/TensorFlowTests/UNIT_Concat_000/test.pbtxt
new file mode 100644
index 000000000..77dbea792
--- /dev/null
+++ b/res/TensorFlowTests/UNIT_Concat_000/test.pbtxt
@@ -0,0 +1,110 @@
+node {
+ name: "Input01"
+ 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
+ }
+ }
+ float_val: 1
+ float_val: 2
+ float_val: 3
+ float_val: 4
+ float_val: 5
+ float_val: 6
+ }
+ }
+ }
+}
+node {
+ name: "Input02"
+ 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
+ }
+ }
+ float_val: 7
+ float_val: 8
+ float_val: 9
+ float_val: 10
+ float_val: 11
+ float_val: 12
+ }
+ }
+ }
+}
+node {
+ name: "Axis"
+ op: "Const"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_INT32
+ }
+ }
+ attr {
+ key: "value"
+ value {
+ tensor {
+ dtype: DT_INT32
+ tensor_shape {
+ }
+ int_val: 0
+ }
+ }
+ }
+}
+node {
+ name: "Concat"
+ op: "ConcatV2"
+ input: "Input01"
+ input: "Input02"
+ input: "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/UNIT_Concat_001/test.info b/res/TensorFlowTests/UNIT_Concat_001/test.info
new file mode 100644
index 000000000..e2add430f
--- /dev/null
+++ b/res/TensorFlowTests/UNIT_Concat_001/test.info
@@ -0,0 +1 @@
+output, Concat:0, TF_FLOAT, [6, 3]
diff --git a/res/TensorFlowTests/UNIT_Concat_001/test.pbtxt b/res/TensorFlowTests/UNIT_Concat_001/test.pbtxt
new file mode 100644
index 000000000..ac3e85581
--- /dev/null
+++ b/res/TensorFlowTests/UNIT_Concat_001/test.pbtxt
@@ -0,0 +1,143 @@
+node {
+ name: "Input01"
+ 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
+ }
+ }
+ float_val: 1
+ float_val: 2
+ float_val: 3
+ float_val: 4
+ float_val: 5
+ float_val: 6
+ }
+ }
+ }
+}
+node {
+ name: "Input02"
+ 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
+ }
+ }
+ float_val: 7
+ float_val: 8
+ float_val: 9
+ float_val: 10
+ float_val: 11
+ float_val: 12
+ }
+ }
+ }
+}
+node {
+ name: "Input03"
+ 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
+ }
+ }
+ float_val: 13
+ float_val: 14
+ float_val: 15
+ float_val: 16
+ float_val: 17
+ float_val: 18
+ }
+ }
+ }
+}
+node {
+ name: "Axis"
+ op: "Const"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_INT32
+ }
+ }
+ attr {
+ key: "value"
+ value {
+ tensor {
+ dtype: DT_INT32
+ tensor_shape {
+ }
+ int_val: 0
+ }
+ }
+ }
+}
+node {
+ name: "Concat"
+ op: "ConcatV2"
+ input: "Input01"
+ input: "Input02"
+ input: "Input03"
+ input: "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/UNIT_Concat_002/test.info b/res/TensorFlowTests/UNIT_Concat_002/test.info
new file mode 100644
index 000000000..460093bd5
--- /dev/null
+++ b/res/TensorFlowTests/UNIT_Concat_002/test.info
@@ -0,0 +1,3 @@
+input, Input01:0, TF_FLOAT, [2, 3]
+input, Input02:0, TF_FLOAT, [2, 3]
+output, Concat:0, TF_FLOAT, [2, 6]
diff --git a/res/TensorFlowTests/UNIT_Concat_002/test.pbtxt b/res/TensorFlowTests/UNIT_Concat_002/test.pbtxt
new file mode 100644
index 000000000..9a524040a
--- /dev/null
+++ b/res/TensorFlowTests/UNIT_Concat_002/test.pbtxt
@@ -0,0 +1,92 @@
+node {
+ name: "Input01"
+ op: "Placeholder"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "shape"
+ value {
+ shape {
+ dim {
+ size: 2
+ }
+ dim {
+ size: 3
+ }
+ }
+ }
+ }
+}
+node {
+ name: "Input02"
+ op: "Placeholder"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "shape"
+ value {
+ shape {
+ dim {
+ size: 2
+ }
+ dim {
+ size: 3
+ }
+ }
+ }
+ }
+}
+node {
+ name: "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"
+ op: "ConcatV2"
+ input: "Input01"
+ input: "Input02"
+ input: "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/UNIT_Const_000/test.info b/res/TensorFlowTests/UNIT_Const_000/test.info
new file mode 100644
index 000000000..43b4f06a5
--- /dev/null
+++ b/res/TensorFlowTests/UNIT_Const_000/test.info
@@ -0,0 +1 @@
+output, const/float:0, TF_FLOAT, [2, 3]
diff --git a/res/TensorFlowTests/UNIT_Const_000/test.pbtxt b/res/TensorFlowTests/UNIT_Const_000/test.pbtxt
new file mode 100644
index 000000000..b91ade2f3
--- /dev/null
+++ b/res/TensorFlowTests/UNIT_Const_000/test.pbtxt
@@ -0,0 +1,32 @@
+node {
+ name: "const/float"
+ 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
+ }
+ }
+ float_val: 1.1
+ float_val: 2.2
+ float_val: 3.3
+ float_val: 4.4
+ float_val: 5.5
+ float_val: 6.6
+ }
+ }
+ }
+}
diff --git a/res/TensorFlowTests/UNIT_Const_001/test.info b/res/TensorFlowTests/UNIT_Const_001/test.info
new file mode 100644
index 000000000..445b34b67
--- /dev/null
+++ b/res/TensorFlowTests/UNIT_Const_001/test.info
@@ -0,0 +1 @@
+output, const/int32:0, TF_INT32, [2, 3]
diff --git a/res/TensorFlowTests/UNIT_Const_001/test.pbtxt b/res/TensorFlowTests/UNIT_Const_001/test.pbtxt
new file mode 100644
index 000000000..bec7dfb92
--- /dev/null
+++ b/res/TensorFlowTests/UNIT_Const_001/test.pbtxt
@@ -0,0 +1,32 @@
+node {
+ name: "const/int32"
+ op: "Const"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_INT32
+ }
+ }
+ attr {
+ key: "value"
+ value {
+ tensor {
+ dtype: DT_INT32
+ tensor_shape {
+ dim {
+ size: 2
+ }
+ dim {
+ size: 3
+ }
+ }
+ int_val: 1
+ int_val: 2
+ int_val: 3
+ int_val: 4
+ int_val: 5
+ int_val: 6
+ }
+ }
+ }
+}
diff --git a/res/TensorFlowTests/UNIT_Conv2DBackpropInput_001/test.info b/res/TensorFlowTests/UNIT_Conv2DBackpropInput_001/test.info
new file mode 100644
index 000000000..2537d0732
--- /dev/null
+++ b/res/TensorFlowTests/UNIT_Conv2DBackpropInput_001/test.info
@@ -0,0 +1,2 @@
+input, ifm:0, TF_FLOAT, [1, 8, 6, 3]
+output, ofm:0, TF_FLOAT, [1, 16, 12, 2]
diff --git a/res/TensorFlowTests/UNIT_Conv2DBackpropInput_001/test.pbtxt b/res/TensorFlowTests/UNIT_Conv2DBackpropInput_001/test.pbtxt
new file mode 100644
index 000000000..8930c4221
--- /dev/null
+++ b/res/TensorFlowTests/UNIT_Conv2DBackpropInput_001/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: 16
+ int_val: 12
+ 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: "SAME"
+ }
+ }
+ attr {
+ key: "strides"
+ value {
+ list {
+ i: 1
+ i: 2
+ i: 2
+ i: 1
+ }
+ }
+ }
+}
diff --git a/res/TensorFlowTests/UNIT_Conv2D_000/test.info b/res/TensorFlowTests/UNIT_Conv2D_000/test.info
new file mode 100644
index 000000000..22facc3fb
--- /dev/null
+++ b/res/TensorFlowTests/UNIT_Conv2D_000/test.info
@@ -0,0 +1,3 @@
+# conv2d with VALID, stride = 1, 1
+input, ifm:0, TF_FLOAT, [1, 5, 5, 3]
+output, ofm:0, TF_FLOAT, [1, 4, 4, 2]
diff --git a/res/TensorFlowTests/UNIT_Conv2D_000/test.pbtxt b/res/TensorFlowTests/UNIT_Conv2D_000/test.pbtxt
new file mode 100644
index 000000000..3649aa827
--- /dev/null
+++ b/res/TensorFlowTests/UNIT_Conv2D_000/test.pbtxt
@@ -0,0 +1,76 @@
+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: 1 i: 1 i: 1 }
+ }
+ }
+ attr {
+ key: "use_cudnn_on_gpu"
+ value { b: false }
+ }
+}
diff --git a/res/TensorFlowTests/UNIT_CustomOp_000/customop.conf b/res/TensorFlowTests/UNIT_CustomOp_000/customop.conf
new file mode 100644
index 000000000..08ba0f09a
--- /dev/null
+++ b/res/TensorFlowTests/UNIT_CustomOp_000/customop.conf
@@ -0,0 +1,22 @@
+# defining a list of custom ops for this compilation
+custom_op {
+ name: "my/customOp/000"
+ op: "new_custom_op"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "output_shape"
+ value {
+ shape {
+ dim { size: 1 }
+ dim { size: 2 }
+ dim { size: 1 }
+ dim { size: 2 }
+ }
+ }
+ }
+}
diff --git a/res/TensorFlowTests/UNIT_CustomOp_000/test.info b/res/TensorFlowTests/UNIT_CustomOp_000/test.info
new file mode 100644
index 000000000..e3e2b176e
--- /dev/null
+++ b/res/TensorFlowTests/UNIT_CustomOp_000/test.info
@@ -0,0 +1,2 @@
+input, Placeholder:0, TF_FLOAT, [1, 2, 1, 2]
+output, output/relu:0, TF_FLOAT, [1, 2, 1, 2]
diff --git a/res/TensorFlowTests/UNIT_CustomOp_000/test.pbtxt b/res/TensorFlowTests/UNIT_CustomOp_000/test.pbtxt
new file mode 100644
index 000000000..373f5b845
--- /dev/null
+++ b/res/TensorFlowTests/UNIT_CustomOp_000/test.pbtxt
@@ -0,0 +1,53 @@
+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: 1 }
+ dim { size: 2 }
+ }
+ }
+ }
+}
+node {
+ name: "my/customOp/000"
+ op: "new_custom_op"
+ input: "Placeholder"
+ attr {
+ key: "T"
+ value { type: DT_FLOAT }
+ }
+ attr {
+ key: "my_string"
+ value { s: "Hello World" }
+ }
+ attr {
+ key: "my_float"
+ value { f: 0.001 }
+ }
+ attr {
+ key: "my_int"
+ value { i: 111 }
+ }
+ attr {
+ key: "my_bool"
+ value { b: false }
+ }
+}
+node {
+ name: "output/relu"
+ op: "Relu"
+ input: "my/customOp/000"
+ attr {
+ key: "T"
+ value {
+ type: DT_FLOAT
+ }
+ }
+}
diff --git a/res/TensorFlowTests/UNIT_CustomOp_001/customop.conf b/res/TensorFlowTests/UNIT_CustomOp_001/customop.conf
new file mode 100644
index 000000000..92c0dd2f2
--- /dev/null
+++ b/res/TensorFlowTests/UNIT_CustomOp_001/customop.conf
@@ -0,0 +1,19 @@
+# defining a list of custom ops for this compilation
+custom_op {
+ name: "FillFrom"
+ op: "FillFrom"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "output_shape"
+ value {
+ shape {
+ dim { size: 10 }
+ }
+ }
+ }
+}
diff --git a/res/TensorFlowTests/UNIT_CustomOp_001/test.info b/res/TensorFlowTests/UNIT_CustomOp_001/test.info
new file mode 100644
index 000000000..473374cd1
--- /dev/null
+++ b/res/TensorFlowTests/UNIT_CustomOp_001/test.info
@@ -0,0 +1,2 @@
+input, input_00:0, TF_FLOAT, [10]
+output, FillFrom:0, TF_FLOAT, [10]
diff --git a/res/TensorFlowTests/UNIT_CustomOp_001/test.pbtxt b/res/TensorFlowTests/UNIT_CustomOp_001/test.pbtxt
new file mode 100644
index 000000000..ad673e0a7
--- /dev/null
+++ b/res/TensorFlowTests/UNIT_CustomOp_001/test.pbtxt
@@ -0,0 +1,38 @@
+# test case discussed in https://github.sec.samsung.net/STAR/nnfw/issues/5607
+node {
+ name: "input_00"
+ op: "Placeholder"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "shape"
+ value {
+ shape {
+ dim {
+ size: 10
+ }
+ }
+ }
+ }
+}
+node {
+ name: "FillFrom"
+ op: "FillFrom"
+ input: "input_00"
+ attr {
+ key: "idx"
+ value {
+ i: 3
+ }
+ }
+ attr {
+ key: "val"
+ value {
+ f: 1.1
+ }
+ }
+}
diff --git a/res/TensorFlowTests/UNIT_DepthwiseConv2D_000/test.info b/res/TensorFlowTests/UNIT_DepthwiseConv2D_000/test.info
new file mode 100644
index 000000000..96a2b1403
--- /dev/null
+++ b/res/TensorFlowTests/UNIT_DepthwiseConv2D_000/test.info
@@ -0,0 +1,2 @@
+input, input:0, TF_FLOAT, [1, 11, 7, 3]
+output, DepthwiseConv2dNative:0, TF_FLOAT, [1, 6, 4, 12]
diff --git a/res/TensorFlowTests/UNIT_DepthwiseConv2D_000/test.pbtxt b/res/TensorFlowTests/UNIT_DepthwiseConv2D_000/test.pbtxt
new file mode 100644
index 000000000..1d8fcaa00
--- /dev/null
+++ b/res/TensorFlowTests/UNIT_DepthwiseConv2D_000/test.pbtxt
@@ -0,0 +1,115 @@
+# A simple network that has DepthwiseConv2dNative with 'SAME' padding and strides.
+# HOW TO GENERATE:
+# import tensorflow as tf
+# input = tf.placeholder(tf.float32, shape=[1,11,7,3], name="input")
+# filter = tf.constant(1.0, shape=[2,3,3,4], dtype=tf.float32)
+# dwconv = tf.nn.depthwise_conv2d_native(input,filter,[1,2,2,1],'SAME')
+# tf.get_default_graph().as_graph_def()
+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
+ }
+ }
+ }
+}
diff --git a/res/TensorFlowTests/UNIT_DepthwiseConv2D_001/test.info b/res/TensorFlowTests/UNIT_DepthwiseConv2D_001/test.info
new file mode 100644
index 000000000..c17595388
--- /dev/null
+++ b/res/TensorFlowTests/UNIT_DepthwiseConv2D_001/test.info
@@ -0,0 +1,2 @@
+input, input:0, TF_FLOAT, [1, 4, 4, 3]
+output, DepthwiseConv2dNative:0, TF_FLOAT, [1, 3, 3, 6]
diff --git a/res/TensorFlowTests/UNIT_DepthwiseConv2D_001/test.pbtxt b/res/TensorFlowTests/UNIT_DepthwiseConv2D_001/test.pbtxt
new file mode 100644
index 000000000..9a9717611
--- /dev/null
+++ b/res/TensorFlowTests/UNIT_DepthwiseConv2D_001/test.pbtxt
@@ -0,0 +1,115 @@
+# A simple network that has DepthwiseConv2dNative with input(Placeholder) and filter(Const)
+# HOW TO GENERATE:
+# import tensorflow as tf
+# input = tf.placeholder(tf.float32, shape=[1,4,4,3], name="input")
+# filter = tf.constant(1.0, shape=[2,2,3,2], dtype=tf.float32)
+# dwconv = tf.nn.depthwise_conv2d_native(input,filter,[1,1,1,1],'VALID')
+# tf.get_default_graph().as_graph_def()
+node {
+ name: "input"
+ op: "Placeholder"
+ 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: "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: 2
+ }
+ dim {
+ size: 3
+ }
+ dim {
+ size: 2
+ }
+ }
+ 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: "VALID"
+ }
+ }
+ attr {
+ key: "strides"
+ value {
+ list {
+ i: 1
+ i: 1
+ i: 1
+ i: 1
+ }
+ }
+ }
+}
diff --git a/res/TensorFlowTests/UNIT_FusedBatchNorm_000/test.info b/res/TensorFlowTests/UNIT_FusedBatchNorm_000/test.info
new file mode 100644
index 000000000..30840e8e3
--- /dev/null
+++ b/res/TensorFlowTests/UNIT_FusedBatchNorm_000/test.info
@@ -0,0 +1,3 @@
+# FusedBatchNorm
+input, placeholder:0, TF_FLOAT, [1, 4, 4, 1]
+output, FBN_01:0, TF_FLOAT, [1, 4, 4, 1]
diff --git a/res/TensorFlowTests/UNIT_FusedBatchNorm_000/test.pbtxt b/res/TensorFlowTests/UNIT_FusedBatchNorm_000/test.pbtxt
new file mode 100644
index 000000000..40cec4abc
--- /dev/null
+++ b/res/TensorFlowTests/UNIT_FusedBatchNorm_000/test.pbtxt
@@ -0,0 +1,158 @@
+node {
+ name: "placeholder"
+ op: "Placeholder"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "shape"
+ value {
+ shape {
+ dim {
+ size: 1
+ }
+ dim {
+ size: 4
+ }
+ dim {
+ size: 4
+ }
+ dim {
+ size: 1
+ }
+ }
+ }
+ }
+}
+node {
+ name: "scale"
+ 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: "offset"
+ op: "Const"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "value"
+ value {
+ tensor {
+ dtype: DT_FLOAT
+ tensor_shape {
+ dim {
+ size: 1
+ }
+ }
+ float_val: 0.0
+ }
+ }
+ }
+}
+node {
+ name: "FBN_01/mean"
+ op: "Const"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "value"
+ value {
+ tensor {
+ dtype: DT_FLOAT
+ tensor_shape {
+ dim {
+ size: 1
+ }
+ }
+ float_val: 0.0
+ }
+ }
+ }
+}
+node {
+ name: "FBN_01/variance"
+ 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: "FBN_01"
+ op: "FusedBatchNorm"
+ input: "placeholder"
+ input: "scale"
+ input: "offset"
+ input: "FBN_01/mean"
+ input: "FBN_01/variance"
+ attr {
+ key: "T"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "data_format"
+ value {
+ s: "NHWC"
+ }
+ }
+ attr {
+ key: "epsilon"
+ value {
+ f: 0.001
+ }
+ }
+ attr {
+ key: "is_training"
+ value {
+ b: false
+ }
+ }
+}
diff --git a/res/TensorFlowTests/UNIT_FusedBatchNorm_001/test.info b/res/TensorFlowTests/UNIT_FusedBatchNorm_001/test.info
new file mode 100644
index 000000000..09141a44e
--- /dev/null
+++ b/res/TensorFlowTests/UNIT_FusedBatchNorm_001/test.info
@@ -0,0 +1,3 @@
+# FusedBatchNorm
+input, placeholder:0, TF_FLOAT, [1, 4, 4, 3]
+output, FBN_01:0, TF_FLOAT, [1, 4, 4, 3]
diff --git a/res/TensorFlowTests/UNIT_FusedBatchNorm_001/test.pbtxt b/res/TensorFlowTests/UNIT_FusedBatchNorm_001/test.pbtxt
new file mode 100644
index 000000000..9ebeadf70
--- /dev/null
+++ b/res/TensorFlowTests/UNIT_FusedBatchNorm_001/test.pbtxt
@@ -0,0 +1,158 @@
+node {
+ name: "placeholder"
+ op: "Placeholder"
+ 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: "scale"
+ 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.5
+ }
+ }
+ }
+}
+node {
+ name: "offset"
+ op: "Const"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "value"
+ value {
+ tensor {
+ dtype: DT_FLOAT
+ tensor_shape {
+ dim {
+ size: 3
+ }
+ }
+ float_val: 2.5
+ }
+ }
+ }
+}
+node {
+ name: "FBN_01/mean"
+ op: "Const"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "value"
+ value {
+ tensor {
+ dtype: DT_FLOAT
+ tensor_shape {
+ dim {
+ size: 3
+ }
+ }
+ float_val: 3.5
+ }
+ }
+ }
+}
+node {
+ name: "FBN_01/variance"
+ op: "Const"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "value"
+ value {
+ tensor {
+ dtype: DT_FLOAT
+ tensor_shape {
+ dim {
+ size: 3
+ }
+ }
+ float_val: 4.5
+ }
+ }
+ }
+}
+node {
+ name: "FBN_01"
+ op: "FusedBatchNorm"
+ input: "placeholder"
+ input: "scale"
+ input: "offset"
+ input: "FBN_01/mean"
+ input: "FBN_01/variance"
+ attr {
+ key: "T"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "data_format"
+ value {
+ s: "NHWC"
+ }
+ }
+ attr {
+ key: "epsilon"
+ value {
+ f: 0.001
+ }
+ }
+ attr {
+ key: "is_training"
+ value {
+ b: false
+ }
+ }
+}
diff --git a/res/TensorFlowTests/UNIT_MaxPool_000/test.info b/res/TensorFlowTests/UNIT_MaxPool_000/test.info
new file mode 100644
index 000000000..c94e2e7fb
--- /dev/null
+++ b/res/TensorFlowTests/UNIT_MaxPool_000/test.info
@@ -0,0 +1,2 @@
+input, placeholder:0, TF_FLOAT, [1, 3, 3, 1]
+output, maxpool2d:0, TF_FLOAT, [1, 2, 2, 1]
diff --git a/res/TensorFlowTests/UNIT_MaxPool_000/test.pbtxt b/res/TensorFlowTests/UNIT_MaxPool_000/test.pbtxt
new file mode 100644
index 000000000..81da5bbd5
--- /dev/null
+++ b/res/TensorFlowTests/UNIT_MaxPool_000/test.pbtxt
@@ -0,0 +1,74 @@
+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: 1
+ }
+ }
+ }
+ }
+}
+node {
+ name: "maxpool2d"
+ op: "MaxPool"
+ input: "placeholder"
+ attr {
+ key: "T"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "data_format"
+ value {
+ s: "NHWC"
+ }
+ }
+ attr {
+ key: "ksize"
+ value {
+ list {
+ i: 1
+ i: 2
+ i: 2
+ i: 1
+ }
+ }
+ }
+ attr {
+ key: "padding"
+ value {
+ s: "VALID"
+ }
+ }
+ attr {
+ key: "strides"
+ value {
+ list {
+ i: 1
+ i: 1
+ i: 1
+ i: 1
+ }
+ }
+ }
+}
diff --git a/res/TensorFlowTests/UNIT_MaxPool_001/test.info b/res/TensorFlowTests/UNIT_MaxPool_001/test.info
new file mode 100644
index 000000000..513a83c84
--- /dev/null
+++ b/res/TensorFlowTests/UNIT_MaxPool_001/test.info
@@ -0,0 +1,2 @@
+input, placeholder:0, TF_FLOAT, [1, 4, 4, 1]
+output, maxpool2d:0, TF_FLOAT, [1, 3, 3, 1]
diff --git a/res/TensorFlowTests/UNIT_MaxPool_001/test.pbtxt b/res/TensorFlowTests/UNIT_MaxPool_001/test.pbtxt
new file mode 100644
index 000000000..dfa58d440
--- /dev/null
+++ b/res/TensorFlowTests/UNIT_MaxPool_001/test.pbtxt
@@ -0,0 +1,48 @@
+node {
+ name: "placeholder"
+ op: "Placeholder"
+ attr {
+ key: "dtype"
+ value { type: DT_FLOAT }
+ }
+ attr {
+ key: "shape"
+ value {
+ shape {
+ dim { size: 1 }
+ dim { size: 4 }
+ dim { size: 4 }
+ dim { size: 1 }
+ }
+ }
+ }
+}
+node {
+ name: "maxpool2d"
+ op: "MaxPool"
+ input: "placeholder"
+ attr {
+ key: "T"
+ value { type: DT_FLOAT }
+ }
+ attr {
+ key: "data_format"
+ value { s: "NHWC" }
+ }
+ attr {
+ key: "ksize"
+ value {
+ list { i: 1 i: 2 i: 2 i: 1 }
+ }
+ }
+ attr {
+ key: "padding"
+ value { s: "VALID" }
+ }
+ attr {
+ key: "strides"
+ value {
+ list { i: 1 i: 1 i: 1 i: 1 }
+ }
+ }
+}
diff --git a/res/TensorFlowTests/UNIT_Mean_000/test.info b/res/TensorFlowTests/UNIT_Mean_000/test.info
new file mode 100644
index 000000000..fed1cbd60
--- /dev/null
+++ b/res/TensorFlowTests/UNIT_Mean_000/test.info
@@ -0,0 +1,2 @@
+input, Placeholder:0, TF_FLOAT, [1, 3, 3, 2]
+output, Mean:0, TF_FLOAT, [1, 1, 1, 2]
diff --git a/res/TensorFlowTests/UNIT_Mean_000/test.pbtxt b/res/TensorFlowTests/UNIT_Mean_000/test.pbtxt
new file mode 100644
index 000000000..8a9f7848f
--- /dev/null
+++ b/res/TensorFlowTests/UNIT_Mean_000/test.pbtxt
@@ -0,0 +1,68 @@
+# Reference Python code:
+#
+# import tensorflow as tf
+#
+# inp = tf.placeholder(tf.float32, [1,3,3,2])
+# mean = tf.math.reduce_mean(inp, keepdims=True, axis=[1,2])
+#
+# print(tf.get_default_graph().as_graph_def())
+#
+# WARNING! Below GraphDef is modified to make it easy to read
+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: 2 }
+ }
+ }
+ }
+}
+node {
+ name: "Mean/reduction_indices"
+ op: "Const"
+ attr {
+ key: "dtype"
+ value { type: DT_INT32 }
+ }
+ attr {
+ key: "value"
+ value {
+ tensor {
+ dtype: DT_INT32
+ tensor_shape {
+ dim { size: 2 }
+ }
+ int_val: 1
+ int_val: 2
+ }
+ }
+ }
+}
+node {
+ name: "Mean"
+ op: "Mean"
+ input: "Placeholder"
+ input: "Mean/reduction_indices"
+ attr {
+ key: "T"
+ value { type: DT_FLOAT }
+ }
+ attr {
+ key: "Tidx"
+ value { type: DT_INT32 }
+ }
+ attr {
+ key: "keep_dims"
+ value { b: true }
+ }
+}
diff --git a/res/TensorFlowTests/UNIT_Mean_001/test.info b/res/TensorFlowTests/UNIT_Mean_001/test.info
new file mode 100644
index 000000000..682e7cb20
--- /dev/null
+++ b/res/TensorFlowTests/UNIT_Mean_001/test.info
@@ -0,0 +1,2 @@
+input, Placeholder:0, TF_FLOAT, [1, 3, 3, 2]
+output, Mean:0, TF_FLOAT, [1, 2]
diff --git a/res/TensorFlowTests/UNIT_Mean_001/test.pbtxt b/res/TensorFlowTests/UNIT_Mean_001/test.pbtxt
new file mode 100644
index 000000000..a579b2c9b
--- /dev/null
+++ b/res/TensorFlowTests/UNIT_Mean_001/test.pbtxt
@@ -0,0 +1,68 @@
+# Reference Python code:
+#
+# import tensorflow as tf
+#
+# inp = tf.placeholder(tf.float32, [1,3,3,2])
+# mean = tf.math.reduce_mean(inp, keepdims=False, axis=[1,2])
+#
+# print(tf.get_default_graph().as_graph_def())
+#
+# WARNING! Below GraphDef is modified to make it easy to read
+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: 2 }
+ }
+ }
+ }
+}
+node {
+ name: "Mean/reduction_indices"
+ op: "Const"
+ attr {
+ key: "dtype"
+ value { type: DT_INT32 }
+ }
+ attr {
+ key: "value"
+ value {
+ tensor {
+ dtype: DT_INT32
+ tensor_shape {
+ dim { size: 2 }
+ }
+ int_val: 1
+ int_val: 2
+ }
+ }
+ }
+}
+node {
+ name: "Mean"
+ op: "Mean"
+ input: "Placeholder"
+ input: "Mean/reduction_indices"
+ attr {
+ key: "T"
+ value { type: DT_FLOAT }
+ }
+ attr {
+ key: "Tidx"
+ value { type: DT_INT32 }
+ }
+ attr {
+ key: "keep_dims"
+ value { b: false }
+ }
+}
diff --git a/res/TensorFlowTests/UNIT_Mean_002/test.info b/res/TensorFlowTests/UNIT_Mean_002/test.info
new file mode 100644
index 000000000..682e7cb20
--- /dev/null
+++ b/res/TensorFlowTests/UNIT_Mean_002/test.info
@@ -0,0 +1,2 @@
+input, Placeholder:0, TF_FLOAT, [1, 3, 3, 2]
+output, Mean:0, TF_FLOAT, [1, 2]
diff --git a/res/TensorFlowTests/UNIT_Mean_002/test.pbtxt b/res/TensorFlowTests/UNIT_Mean_002/test.pbtxt
new file mode 100644
index 000000000..1d129f9a2
--- /dev/null
+++ b/res/TensorFlowTests/UNIT_Mean_002/test.pbtxt
@@ -0,0 +1,68 @@
+# Reference Python code:
+#
+# import tensorflow as tf
+#
+# inp = tf.placeholder(tf.float32, [1,3,3,2])
+# mean = tf.math.reduce_mean(inp, keepdims=False, axis=[-2,-3])
+#
+# print(tf.get_default_graph().as_graph_def())
+#
+# WARNING! Below GraphDef is modified to make it easy to read
+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: 2 }
+ }
+ }
+ }
+}
+node {
+ name: "Mean/reduction_indices"
+ op: "Const"
+ attr {
+ key: "dtype"
+ value { type: DT_INT32 }
+ }
+ attr {
+ key: "value"
+ value {
+ tensor {
+ dtype: DT_INT32
+ tensor_shape {
+ dim { size: 2 }
+ }
+ int_val: -2
+ int_val: -3
+ }
+ }
+ }
+}
+node {
+ name: "Mean"
+ op: "Mean"
+ input: "Placeholder"
+ input: "Mean/reduction_indices"
+ attr {
+ key: "T"
+ value { type: DT_FLOAT }
+ }
+ attr {
+ key: "Tidx"
+ value { type: DT_INT32 }
+ }
+ attr {
+ key: "keep_dims"
+ value { b: false }
+ }
+}
diff --git a/res/TensorFlowTests/UNIT_Mean_003/test.info b/res/TensorFlowTests/UNIT_Mean_003/test.info
new file mode 100644
index 000000000..fed1cbd60
--- /dev/null
+++ b/res/TensorFlowTests/UNIT_Mean_003/test.info
@@ -0,0 +1,2 @@
+input, Placeholder:0, TF_FLOAT, [1, 3, 3, 2]
+output, Mean:0, TF_FLOAT, [1, 1, 1, 2]
diff --git a/res/TensorFlowTests/UNIT_Mean_003/test.pbtxt b/res/TensorFlowTests/UNIT_Mean_003/test.pbtxt
new file mode 100644
index 000000000..383a1f2ea
--- /dev/null
+++ b/res/TensorFlowTests/UNIT_Mean_003/test.pbtxt
@@ -0,0 +1,68 @@
+# Reference Python code:
+#
+# import tensorflow as tf
+#
+# inp = tf.placeholder(tf.float32, [1,3,3,2])
+# mean = tf.math.reduce_mean(inp, keepdims=True, axis=[-2,-3])
+#
+# print(tf.get_default_graph().as_graph_def())
+#
+# WARNING! Below GraphDef is modified to make it easy to read
+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: 2 }
+ }
+ }
+ }
+}
+node {
+ name: "Mean/reduction_indices"
+ op: "Const"
+ attr {
+ key: "dtype"
+ value { type: DT_INT32 }
+ }
+ attr {
+ key: "value"
+ value {
+ tensor {
+ dtype: DT_INT32
+ tensor_shape {
+ dim { size: 2 }
+ }
+ int_val: -2
+ int_val: -3
+ }
+ }
+ }
+}
+node {
+ name: "Mean"
+ op: "Mean"
+ input: "Placeholder"
+ input: "Mean/reduction_indices"
+ attr {
+ key: "T"
+ value { type: DT_FLOAT }
+ }
+ attr {
+ key: "Tidx"
+ value { type: DT_INT32 }
+ }
+ attr {
+ key: "keep_dims"
+ value { b: true }
+ }
+}
diff --git a/res/TensorFlowTests/UNIT_Mul_000/test.info b/res/TensorFlowTests/UNIT_Mul_000/test.info
new file mode 100644
index 000000000..b3cb3ff70
--- /dev/null
+++ b/res/TensorFlowTests/UNIT_Mul_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, mul:0, TF_FLOAT, [1, 3, 3, 1]
diff --git a/res/TensorFlowTests/UNIT_Mul_000/test.pbtxt b/res/TensorFlowTests/UNIT_Mul_000/test.pbtxt
new file mode 100644
index 000000000..fe6dbc330
--- /dev/null
+++ b/res/TensorFlowTests/UNIT_Mul_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: "mul"
+ op: "Mul"
+ input: "input_01"
+ input: "input_02"
+ attr {
+ key: "T"
+ value {
+ type: DT_FLOAT
+ }
+ }
+}
diff --git a/res/TensorFlowTests/UNIT_Mul_001/test.info b/res/TensorFlowTests/UNIT_Mul_001/test.info
new file mode 100644
index 000000000..9de3a648a
--- /dev/null
+++ b/res/TensorFlowTests/UNIT_Mul_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, mul:0, TF_FLOAT, [1, 3, 3, 5]
diff --git a/res/TensorFlowTests/UNIT_Mul_001/test.pbtxt b/res/TensorFlowTests/UNIT_Mul_001/test.pbtxt
new file mode 100644
index 000000000..a96c9ae5a
--- /dev/null
+++ b/res/TensorFlowTests/UNIT_Mul_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: "mul"
+ op: "Mul"
+ input: "input_01"
+ input: "input_02"
+ attr {
+ key: "T"
+ value {
+ type: DT_FLOAT
+ }
+ }
+}
diff --git a/res/TensorFlowTests/UNIT_Mul_002/test.info b/res/TensorFlowTests/UNIT_Mul_002/test.info
new file mode 100644
index 000000000..241ccd9df
--- /dev/null
+++ b/res/TensorFlowTests/UNIT_Mul_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, mul:0, TF_FLOAT, [1, 3, 3, 5]
diff --git a/res/TensorFlowTests/UNIT_Mul_002/test.pbtxt b/res/TensorFlowTests/UNIT_Mul_002/test.pbtxt
new file mode 100644
index 000000000..9ad65c9f5
--- /dev/null
+++ b/res/TensorFlowTests/UNIT_Mul_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: "mul"
+ op: "Mul"
+ input: "input_01"
+ input: "input_02"
+ attr {
+ key: "T"
+ value {
+ type: DT_FLOAT
+ }
+ }
+}
diff --git a/res/TensorFlowTests/UNIT_Placeholder_000/test.info b/res/TensorFlowTests/UNIT_Placeholder_000/test.info
new file mode 100644
index 000000000..0d0a8ccc0
--- /dev/null
+++ b/res/TensorFlowTests/UNIT_Placeholder_000/test.info
@@ -0,0 +1,2 @@
+input, Placeholder:0, TF_FLOAT, [1, 2, 1, 2]
+output, output/identity:0, TF_FLOAT, [1, 2, 1, 2]
diff --git a/res/TensorFlowTests/UNIT_Placeholder_000/test.pbtxt b/res/TensorFlowTests/UNIT_Placeholder_000/test.pbtxt
new file mode 100644
index 000000000..593fbb2d4
--- /dev/null
+++ b/res/TensorFlowTests/UNIT_Placeholder_000/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: 1
+ }
+ dim {
+ size: 2
+ }
+ }
+ }
+ }
+}
+node {
+ name: "output/identity"
+ op: "Identity"
+ input: "Placeholder"
+ attr {
+ key: "T"
+ value {
+ type: DT_FLOAT
+ }
+ }
+}
diff --git a/res/TensorFlowTests/UNIT_RealDiv_000/test.info b/res/TensorFlowTests/UNIT_RealDiv_000/test.info
new file mode 100644
index 000000000..b98f2a338
--- /dev/null
+++ b/res/TensorFlowTests/UNIT_RealDiv_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, div:0, TF_FLOAT, [1, 3, 3, 1]
diff --git a/res/TensorFlowTests/UNIT_RealDiv_000/test.pbtxt b/res/TensorFlowTests/UNIT_RealDiv_000/test.pbtxt
new file mode 100644
index 000000000..e17d48326
--- /dev/null
+++ b/res/TensorFlowTests/UNIT_RealDiv_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: "div"
+ op: "RealDiv"
+ input: "input_01"
+ input: "input_02"
+ attr {
+ key: "T"
+ value {
+ type: DT_FLOAT
+ }
+ }
+}
diff --git a/res/TensorFlowTests/UNIT_RealDiv_001/test.info b/res/TensorFlowTests/UNIT_RealDiv_001/test.info
new file mode 100644
index 000000000..ecc4cc5a3
--- /dev/null
+++ b/res/TensorFlowTests/UNIT_RealDiv_001/test.info
@@ -0,0 +1,3 @@
+input, input_01:0, TF_FLOAT, [1, 3, 3, 5]
+input, input_02:0, TF_FLOAT, [5]
+output, div:0, TF_FLOAT, [1, 3, 3, 5]
diff --git a/res/TensorFlowTests/UNIT_RealDiv_001/test.pbtxt b/res/TensorFlowTests/UNIT_RealDiv_001/test.pbtxt
new file mode 100644
index 000000000..4ee3bb898
--- /dev/null
+++ b/res/TensorFlowTests/UNIT_RealDiv_001/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: "div"
+ op: "RealDiv"
+ input: "input_01"
+ input: "input_02"
+ attr {
+ key: "T"
+ value {
+ type: DT_FLOAT
+ }
+ }
+}
diff --git a/res/TensorFlowTests/UNIT_Relu6_000/test.info b/res/TensorFlowTests/UNIT_Relu6_000/test.info
new file mode 100644
index 000000000..329172400
--- /dev/null
+++ b/res/TensorFlowTests/UNIT_Relu6_000/test.info
@@ -0,0 +1,2 @@
+input, Placeholder:0, TF_FLOAT, [1, 4, 4, 3]
+output, Relu6:0, TF_FLOAT, [1, 4, 4, 3]
diff --git a/res/TensorFlowTests/UNIT_Relu6_000/test.pbtxt b/res/TensorFlowTests/UNIT_Relu6_000/test.pbtxt
new file mode 100644
index 000000000..b2989916c
--- /dev/null
+++ b/res/TensorFlowTests/UNIT_Relu6_000/test.pbtxt
@@ -0,0 +1,30 @@
+node {
+ name: "Placeholder"
+ op: "Placeholder"
+ 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: "Relu6"
+ op: "Relu6"
+ input: "Placeholder"
+ attr {
+ key: "T"
+ value { type: DT_FLOAT }
+ }
+}
diff --git a/res/TensorFlowTests/UNIT_Relu_000/test.info b/res/TensorFlowTests/UNIT_Relu_000/test.info
new file mode 100644
index 000000000..e3e2b176e
--- /dev/null
+++ b/res/TensorFlowTests/UNIT_Relu_000/test.info
@@ -0,0 +1,2 @@
+input, Placeholder:0, TF_FLOAT, [1, 2, 1, 2]
+output, output/relu:0, TF_FLOAT, [1, 2, 1, 2]
diff --git a/res/TensorFlowTests/UNIT_Relu_000/test.pbtxt b/res/TensorFlowTests/UNIT_Relu_000/test.pbtxt
new file mode 100644
index 000000000..96f21d5de
--- /dev/null
+++ b/res/TensorFlowTests/UNIT_Relu_000/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: 1
+ }
+ dim {
+ size: 2
+ }
+ }
+ }
+ }
+}
+node {
+ name: "output/relu"
+ op: "Relu"
+ input: "Placeholder"
+ attr {
+ key: "T"
+ value {
+ type: DT_FLOAT
+ }
+ }
+}
diff --git a/res/TensorFlowTests/UNIT_Reshape_000/test.info b/res/TensorFlowTests/UNIT_Reshape_000/test.info
new file mode 100644
index 000000000..137cdfa8c
--- /dev/null
+++ b/res/TensorFlowTests/UNIT_Reshape_000/test.info
@@ -0,0 +1,2 @@
+input, Placeholder:0, TF_FLOAT, [6]
+output, Reshape:0, TF_FLOAT, [2, 3]
diff --git a/res/TensorFlowTests/UNIT_Reshape_000/test.pbtxt b/res/TensorFlowTests/UNIT_Reshape_000/test.pbtxt
new file mode 100644
index 000000000..a648fb43c
--- /dev/null
+++ b/res/TensorFlowTests/UNIT_Reshape_000/test.pbtxt
@@ -0,0 +1,63 @@
+node {
+ name: "Placeholder"
+ op: "Placeholder"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "shape"
+ value {
+ shape {
+ dim {
+ size: 6
+ }
+ }
+ }
+ }
+}
+node {
+ name: "New_shape"
+ op: "Const"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_INT32
+ }
+ }
+ attr {
+ key: "value"
+ value {
+ tensor {
+ dtype: DT_INT32
+ tensor_shape {
+ dim {
+ size: 2
+ }
+ }
+ int_val: 2
+ int_val: 3
+ }
+ }
+ }
+}
+node {
+ name: "Reshape"
+ op: "Reshape"
+ input: "Placeholder"
+ input: "New_shape"
+ attr {
+ key: "T"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "Tshape"
+ value {
+ type: DT_INT32
+ }
+ }
+}
diff --git a/res/TensorFlowTests/UNIT_Rsqrt_000/test.info b/res/TensorFlowTests/UNIT_Rsqrt_000/test.info
new file mode 100644
index 000000000..b87da7e44
--- /dev/null
+++ b/res/TensorFlowTests/UNIT_Rsqrt_000/test.info
@@ -0,0 +1,2 @@
+input, Placeholder:0, TF_FLOAT, [1, 2, 1, 2]
+output, output/rsqrt:0, TF_FLOAT, [1, 2, 1, 2]
diff --git a/res/TensorFlowTests/UNIT_Rsqrt_000/test.pbtxt b/res/TensorFlowTests/UNIT_Rsqrt_000/test.pbtxt
new file mode 100644
index 000000000..babfc3702
--- /dev/null
+++ b/res/TensorFlowTests/UNIT_Rsqrt_000/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: 1
+ }
+ dim {
+ size: 2
+ }
+ }
+ }
+ }
+}
+node {
+ name: "output/rsqrt"
+ op: "Rsqrt"
+ input: "Placeholder"
+ attr {
+ key: "T"
+ value {
+ type: DT_FLOAT
+ }
+ }
+}
diff --git a/res/TensorFlowTests/UNIT_Shape_000/test.info b/res/TensorFlowTests/UNIT_Shape_000/test.info
new file mode 100644
index 000000000..330c6c22c
--- /dev/null
+++ b/res/TensorFlowTests/UNIT_Shape_000/test.info
@@ -0,0 +1 @@
+output, Shape:0, TF_INT32, [2]
diff --git a/res/TensorFlowTests/UNIT_Shape_000/test.pbtxt b/res/TensorFlowTests/UNIT_Shape_000/test.pbtxt
new file mode 100644
index 000000000..7a6cab72b
--- /dev/null
+++ b/res/TensorFlowTests/UNIT_Shape_000/test.pbtxt
@@ -0,0 +1,41 @@
+# Simple Shape network
+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
+ }
+ }
+ float_val: 1.0
+ }
+ }
+ }
+}
+node {
+ name: "Shape"
+ op: "Shape"
+ input: "Const"
+ attr {
+ key: "T"
+ value { type: DT_FLOAT }
+ }
+ attr {
+ key: "out_type"
+ value { type: DT_INT32 }
+ }
+}
diff --git a/res/TensorFlowTests/UNIT_Softmax_000/test.info b/res/TensorFlowTests/UNIT_Softmax_000/test.info
new file mode 100644
index 000000000..66536b561
--- /dev/null
+++ b/res/TensorFlowTests/UNIT_Softmax_000/test.info
@@ -0,0 +1,2 @@
+input, Placeholder:0, TF_FLOAT, [2]
+output, Softmax:0, TF_FLOAT, [2]
diff --git a/res/TensorFlowTests/UNIT_Softmax_000/test.pbtxt b/res/TensorFlowTests/UNIT_Softmax_000/test.pbtxt
new file mode 100644
index 000000000..78451d0b3
--- /dev/null
+++ b/res/TensorFlowTests/UNIT_Softmax_000/test.pbtxt
@@ -0,0 +1,32 @@
+# Softmax with rank-1 tensor
+node {
+ name: "Placeholder"
+ op: "Placeholder"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "shape"
+ value {
+ shape {
+ dim {
+ size: 2
+ }
+ }
+ }
+ }
+}
+node {
+ name: "Softmax"
+ op: "Softmax"
+ input: "Placeholder"
+ attr {
+ key: "T"
+ value {
+ type: DT_FLOAT
+ }
+ }
+}
diff --git a/res/TensorFlowTests/UNIT_Softmax_001/test.info b/res/TensorFlowTests/UNIT_Softmax_001/test.info
new file mode 100644
index 000000000..fe582132c
--- /dev/null
+++ b/res/TensorFlowTests/UNIT_Softmax_001/test.info
@@ -0,0 +1,2 @@
+input, Placeholder:0, TF_FLOAT, [2, 3]
+output, Softmax:0, TF_FLOAT, [2, 3]
diff --git a/res/TensorFlowTests/UNIT_Softmax_001/test.pbtxt b/res/TensorFlowTests/UNIT_Softmax_001/test.pbtxt
new file mode 100644
index 000000000..ec6e030bc
--- /dev/null
+++ b/res/TensorFlowTests/UNIT_Softmax_001/test.pbtxt
@@ -0,0 +1,35 @@
+# Softmax with rank-2 tensor
+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: "Softmax"
+ op: "Softmax"
+ input: "Placeholder"
+ attr {
+ key: "T"
+ value {
+ type: DT_FLOAT
+ }
+ }
+}
diff --git a/res/TensorFlowTests/UNIT_Softmax_002/test.info b/res/TensorFlowTests/UNIT_Softmax_002/test.info
new file mode 100644
index 000000000..ae4dcd6a4
--- /dev/null
+++ b/res/TensorFlowTests/UNIT_Softmax_002/test.info
@@ -0,0 +1,2 @@
+input, Placeholder:0, TF_FLOAT, [2, 3, 4]
+output, Softmax:0, TF_FLOAT, [2, 3, 4]
diff --git a/res/TensorFlowTests/UNIT_Softmax_002/test.pbtxt b/res/TensorFlowTests/UNIT_Softmax_002/test.pbtxt
new file mode 100644
index 000000000..e84d73c78
--- /dev/null
+++ b/res/TensorFlowTests/UNIT_Softmax_002/test.pbtxt
@@ -0,0 +1,38 @@
+# Softmax with rank-3 tensor
+node {
+ name: "Placeholder"
+ op: "Placeholder"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "shape"
+ value {
+ shape {
+ dim {
+ size: 2
+ }
+ dim {
+ size: 3
+ }
+ dim {
+ size: 4
+ }
+ }
+ }
+ }
+}
+node {
+ name: "Softmax"
+ op: "Softmax"
+ input: "Placeholder"
+ attr {
+ key: "T"
+ value {
+ type: DT_FLOAT
+ }
+ }
+}
diff --git a/res/TensorFlowTests/UNIT_Softmax_003/test.info b/res/TensorFlowTests/UNIT_Softmax_003/test.info
new file mode 100644
index 000000000..97b3574f5
--- /dev/null
+++ b/res/TensorFlowTests/UNIT_Softmax_003/test.info
@@ -0,0 +1,2 @@
+input, Placeholder:0, TF_FLOAT, [2, 2, 3, 4]
+output, Softmax:0, TF_FLOAT, [2, 2, 3, 4]
diff --git a/res/TensorFlowTests/UNIT_Softmax_003/test.pbtxt b/res/TensorFlowTests/UNIT_Softmax_003/test.pbtxt
new file mode 100644
index 000000000..c4b5ca27f
--- /dev/null
+++ b/res/TensorFlowTests/UNIT_Softmax_003/test.pbtxt
@@ -0,0 +1,41 @@
+# Softmax with rank-4 tensor
+node {
+ name: "Placeholder"
+ op: "Placeholder"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "shape"
+ value {
+ shape {
+ dim {
+ size: 2
+ }
+ dim {
+ size: 2
+ }
+ dim {
+ size: 3
+ }
+ dim {
+ size: 4
+ }
+ }
+ }
+ }
+}
+node {
+ name: "Softmax"
+ op: "Softmax"
+ input: "Placeholder"
+ attr {
+ key: "T"
+ value {
+ type: DT_FLOAT
+ }
+ }
+}
diff --git a/res/TensorFlowTests/UNIT_Sqrt_000/test.info b/res/TensorFlowTests/UNIT_Sqrt_000/test.info
new file mode 100644
index 000000000..9abb96a0c
--- /dev/null
+++ b/res/TensorFlowTests/UNIT_Sqrt_000/test.info
@@ -0,0 +1,2 @@
+input, Placeholder:0, TF_FLOAT, [1, 2, 1, 2]
+output, output/sqrt:0, TF_FLOAT, [1, 2, 1, 2]
diff --git a/res/TensorFlowTests/UNIT_Sqrt_000/test.pbtxt b/res/TensorFlowTests/UNIT_Sqrt_000/test.pbtxt
new file mode 100644
index 000000000..0324220e9
--- /dev/null
+++ b/res/TensorFlowTests/UNIT_Sqrt_000/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: 1
+ }
+ dim {
+ size: 2
+ }
+ }
+ }
+ }
+}
+node {
+ name: "output/sqrt"
+ op: "Sqrt"
+ input: "Placeholder"
+ attr {
+ key: "T"
+ value {
+ type: DT_FLOAT
+ }
+ }
+}
diff --git a/res/TensorFlowTests/UNIT_SquaredDifference_000/test.info b/res/TensorFlowTests/UNIT_SquaredDifference_000/test.info
new file mode 100644
index 000000000..cca181d7d
--- /dev/null
+++ b/res/TensorFlowTests/UNIT_SquaredDifference_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, squared_difference:0, TF_FLOAT, [1, 3, 3, 1]
diff --git a/res/TensorFlowTests/UNIT_SquaredDifference_000/test.pbtxt b/res/TensorFlowTests/UNIT_SquaredDifference_000/test.pbtxt
new file mode 100644
index 000000000..0fca18f0e
--- /dev/null
+++ b/res/TensorFlowTests/UNIT_SquaredDifference_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: "squared_difference"
+ op: "SquaredDifference"
+ input: "input_01"
+ input: "input_02"
+ attr {
+ key: "T"
+ value {
+ type: DT_FLOAT
+ }
+ }
+}
diff --git a/res/TensorFlowTests/UNIT_SquaredDifference_001/test.info b/res/TensorFlowTests/UNIT_SquaredDifference_001/test.info
new file mode 100644
index 000000000..8dfd36065
--- /dev/null
+++ b/res/TensorFlowTests/UNIT_SquaredDifference_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, squared_difference:0, TF_FLOAT, [1, 3, 3, 5]
diff --git a/res/TensorFlowTests/UNIT_SquaredDifference_001/test.pbtxt b/res/TensorFlowTests/UNIT_SquaredDifference_001/test.pbtxt
new file mode 100644
index 000000000..5ef69e22f
--- /dev/null
+++ b/res/TensorFlowTests/UNIT_SquaredDifference_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: "squared_difference"
+ op: "SquaredDifference"
+ input: "input_01"
+ input: "input_02"
+ attr {
+ key: "T"
+ value {
+ type: DT_FLOAT
+ }
+ }
+}
diff --git a/res/TensorFlowTests/UNIT_Squeeze_000/test.info b/res/TensorFlowTests/UNIT_Squeeze_000/test.info
new file mode 100644
index 000000000..fd07403f2
--- /dev/null
+++ b/res/TensorFlowTests/UNIT_Squeeze_000/test.info
@@ -0,0 +1,2 @@
+input, Placeholder:0, TF_FLOAT, [1, 4, 4, 3]
+output, Squeeze:0, TF_FLOAT, [4, 4, 3]
diff --git a/res/TensorFlowTests/UNIT_Squeeze_000/test.pbtxt b/res/TensorFlowTests/UNIT_Squeeze_000/test.pbtxt
new file mode 100644
index 000000000..5ad75fca6
--- /dev/null
+++ b/res/TensorFlowTests/UNIT_Squeeze_000/test.pbtxt
@@ -0,0 +1,28 @@
+node {
+ name: "Placeholder"
+ op: "Placeholder"
+ 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: "Squeeze"
+ op: "Squeeze"
+ input: "Placeholder"
+ attr {
+ key: "T"
+ value { type: DT_FLOAT }
+ }
+}
diff --git a/res/TensorFlowTests/UNIT_Squeeze_001/test.info b/res/TensorFlowTests/UNIT_Squeeze_001/test.info
new file mode 100644
index 000000000..f71e97f93
--- /dev/null
+++ b/res/TensorFlowTests/UNIT_Squeeze_001/test.info
@@ -0,0 +1,2 @@
+input, Placeholder:0, TF_FLOAT, [2, 1, 3, 1]
+output, Squeeze:0, TF_FLOAT, [2, 3, 1]
diff --git a/res/TensorFlowTests/UNIT_Squeeze_001/test.pbtxt b/res/TensorFlowTests/UNIT_Squeeze_001/test.pbtxt
new file mode 100644
index 000000000..641300c10
--- /dev/null
+++ b/res/TensorFlowTests/UNIT_Squeeze_001/test.pbtxt
@@ -0,0 +1,35 @@
+# Network with Squeeze that has selective squeeze dimension
+node {
+ name: "Placeholder"
+ op: "Placeholder"
+ attr {
+ key: "dtype"
+ value { type: DT_FLOAT }
+ }
+ attr {
+ key: "shape"
+ value {
+ shape {
+ dim { size: 2 }
+ dim { size: 1 }
+ dim { size: 3 }
+ dim { size: 1 }
+ }
+ }
+ }
+}
+node {
+ name: "Squeeze"
+ op: "Squeeze"
+ input: "Placeholder"
+ attr {
+ key: "T"
+ value { type: DT_FLOAT }
+ }
+ attr {
+ key: "squeeze_dims"
+ value {
+ list { i: 1 }
+ }
+ }
+}
diff --git a/res/TensorFlowTests/UNIT_Squeeze_002/test.info b/res/TensorFlowTests/UNIT_Squeeze_002/test.info
new file mode 100644
index 000000000..401e102aa
--- /dev/null
+++ b/res/TensorFlowTests/UNIT_Squeeze_002/test.info
@@ -0,0 +1,2 @@
+input, Placeholder:0, TF_FLOAT, [2, 1, 3, 1]
+output, Squeeze:0, TF_FLOAT, [2, 1, 3]
diff --git a/res/TensorFlowTests/UNIT_Squeeze_002/test.pbtxt b/res/TensorFlowTests/UNIT_Squeeze_002/test.pbtxt
new file mode 100644
index 000000000..06d09014a
--- /dev/null
+++ b/res/TensorFlowTests/UNIT_Squeeze_002/test.pbtxt
@@ -0,0 +1,35 @@
+# Network with Squeeze that has negative squeeze dimension
+node {
+ name: "Placeholder"
+ op: "Placeholder"
+ attr {
+ key: "dtype"
+ value { type: DT_FLOAT }
+ }
+ attr {
+ key: "shape"
+ value {
+ shape {
+ dim { size: 2 }
+ dim { size: 1 }
+ dim { size: 3 }
+ dim { size: 1 }
+ }
+ }
+ }
+}
+node {
+ name: "Squeeze"
+ op: "Squeeze"
+ input: "Placeholder"
+ attr {
+ key: "T"
+ value { type: DT_FLOAT }
+ }
+ attr {
+ key: "squeeze_dims"
+ value {
+ list { i: -1 }
+ }
+ }
+}
diff --git a/res/TensorFlowTests/UNIT_Squeeze_003/test.info b/res/TensorFlowTests/UNIT_Squeeze_003/test.info
new file mode 100644
index 000000000..7cc93f354
--- /dev/null
+++ b/res/TensorFlowTests/UNIT_Squeeze_003/test.info
@@ -0,0 +1,2 @@
+input, Placeholder:0, TF_FLOAT, [2, 1, 3, 1]
+output, Squeeze:0, TF_FLOAT, [2, 3]
diff --git a/res/TensorFlowTests/UNIT_Squeeze_003/test.pbtxt b/res/TensorFlowTests/UNIT_Squeeze_003/test.pbtxt
new file mode 100644
index 000000000..1c760c87f
--- /dev/null
+++ b/res/TensorFlowTests/UNIT_Squeeze_003/test.pbtxt
@@ -0,0 +1,35 @@
+# Network with Squeeze that have multiple negative squeeze dimensions
+node {
+ name: "Placeholder"
+ op: "Placeholder"
+ attr {
+ key: "dtype"
+ value { type: DT_FLOAT }
+ }
+ attr {
+ key: "shape"
+ value {
+ shape {
+ dim { size: 2 }
+ dim { size: 1 }
+ dim { size: 3 }
+ dim { size: 1 }
+ }
+ }
+ }
+}
+node {
+ name: "Squeeze"
+ op: "Squeeze"
+ input: "Placeholder"
+ attr {
+ key: "T"
+ value { type: DT_FLOAT }
+ }
+ attr {
+ key: "squeeze_dims"
+ value {
+ list { i: -1 i: -3 }
+ }
+ }
+}
diff --git a/res/TensorFlowTests/UNIT_StopGradient_000/test.info b/res/TensorFlowTests/UNIT_StopGradient_000/test.info
new file mode 100644
index 000000000..2315306d0
--- /dev/null
+++ b/res/TensorFlowTests/UNIT_StopGradient_000/test.info
@@ -0,0 +1,2 @@
+input, Placeholder:0, TF_FLOAT, [2, 3]
+output, StopGradient:0, TF_FLOAT, [2, 3]
diff --git a/res/TensorFlowTests/UNIT_StopGradient_000/test.pbtxt b/res/TensorFlowTests/UNIT_StopGradient_000/test.pbtxt
new file mode 100644
index 000000000..dae572323
--- /dev/null
+++ b/res/TensorFlowTests/UNIT_StopGradient_000/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: 2
+ }
+ dim {
+ size: 3
+ }
+ }
+ }
+ }
+}
+node {
+ name: "StopGradient"
+ op: "StopGradient"
+ input: "Placeholder"
+ attr {
+ key: "T"
+ value {
+ type: DT_FLOAT
+ }
+ }
+}
diff --git a/res/TensorFlowTests/UNIT_StopGradient_001/test.info b/res/TensorFlowTests/UNIT_StopGradient_001/test.info
new file mode 100644
index 000000000..8f87a218f
--- /dev/null
+++ b/res/TensorFlowTests/UNIT_StopGradient_001/test.info
@@ -0,0 +1,2 @@
+input, Placeholder:0, TF_FLOAT, [1, 3, 3, 2]
+output, StopGradient:0, TF_FLOAT, [1, 3, 3, 2]
diff --git a/res/TensorFlowTests/UNIT_StopGradient_001/test.pbtxt b/res/TensorFlowTests/UNIT_StopGradient_001/test.pbtxt
new file mode 100644
index 000000000..95e7c358c
--- /dev/null
+++ b/res/TensorFlowTests/UNIT_StopGradient_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: 3
+ }
+ dim {
+ size: 3
+ }
+ dim {
+ size: 2
+ }
+ }
+ }
+ }
+}
+node {
+ name: "StopGradient"
+ op: "StopGradient"
+ input: "Placeholder"
+ attr {
+ key: "T"
+ value {
+ type: DT_FLOAT
+ }
+ }
+}
diff --git a/res/TensorFlowTests/UNIT_Sub_000/test.info b/res/TensorFlowTests/UNIT_Sub_000/test.info
new file mode 100644
index 000000000..4a6ba8b83
--- /dev/null
+++ b/res/TensorFlowTests/UNIT_Sub_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, sub:0, TF_FLOAT, [1, 3, 3, 1]
diff --git a/res/TensorFlowTests/UNIT_Sub_000/test.pbtxt b/res/TensorFlowTests/UNIT_Sub_000/test.pbtxt
new file mode 100644
index 000000000..61ecd0221
--- /dev/null
+++ b/res/TensorFlowTests/UNIT_Sub_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: "sub"
+ op: "Sub"
+ input: "input_01"
+ input: "input_02"
+ attr {
+ key: "T"
+ value {
+ type: DT_FLOAT
+ }
+ }
+}
diff --git a/res/TensorFlowTests/UNIT_Sub_001/test.info b/res/TensorFlowTests/UNIT_Sub_001/test.info
new file mode 100644
index 000000000..313581754
--- /dev/null
+++ b/res/TensorFlowTests/UNIT_Sub_001/test.info
@@ -0,0 +1,3 @@
+input, input_01:0, TF_FLOAT, [1, 3, 3, 5]
+input, input_02:0, TF_FLOAT, [5]
+output, sub:0, TF_FLOAT, [1, 3, 3, 5]
diff --git a/res/TensorFlowTests/UNIT_Sub_001/test.pbtxt b/res/TensorFlowTests/UNIT_Sub_001/test.pbtxt
new file mode 100644
index 000000000..a0ab396f9
--- /dev/null
+++ b/res/TensorFlowTests/UNIT_Sub_001/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: "sub"
+ op: "Sub"
+ input: "input_01"
+ input: "input_02"
+ attr {
+ key: "T"
+ value {
+ type: DT_FLOAT
+ }
+ }
+}
diff --git a/res/TensorFlowTests/UNIT_Tanh_000/test.info b/res/TensorFlowTests/UNIT_Tanh_000/test.info
new file mode 100644
index 000000000..6655a9ff6
--- /dev/null
+++ b/res/TensorFlowTests/UNIT_Tanh_000/test.info
@@ -0,0 +1,2 @@
+input, Placeholder:0, TF_FLOAT, [1, 2, 1, 2]
+output, output/tanh:0, TF_FLOAT, [1, 2, 1, 2]
diff --git a/res/TensorFlowTests/UNIT_Tanh_000/test.pbtxt b/res/TensorFlowTests/UNIT_Tanh_000/test.pbtxt
new file mode 100644
index 000000000..7b3d28527
--- /dev/null
+++ b/res/TensorFlowTests/UNIT_Tanh_000/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: 1
+ }
+ dim {
+ size: 2
+ }
+ }
+ }
+ }
+}
+node {
+ name: "output/tanh"
+ op: "Tanh"
+ input: "Placeholder"
+ attr {
+ key: "T"
+ value {
+ type: DT_FLOAT
+ }
+ }
+}