summaryrefslogtreecommitdiff
path: root/res
diff options
context:
space:
mode:
Diffstat (limited to 'res')
-rw-r--r--res/BVLCCaffeTests/BatchNorm_000/INFERENCE0
-rw-r--r--res/BVLCCaffeTests/BatchNorm_000/test.prototxt17
-rw-r--r--res/BVLCCaffeTests/Concat_000/INFERENCE0
-rw-r--r--res/BVLCCaffeTests/Concat_000/test.prototxt23
-rw-r--r--res/BVLCCaffeTests/Convolution_000/INFERENCE0
-rw-r--r--res/BVLCCaffeTests/Convolution_000/test.prototxt23
-rw-r--r--res/BVLCCaffeTests/Convolution_001/INFERENCE0
-rw-r--r--res/BVLCCaffeTests/Convolution_001/test.prototxt24
-rw-r--r--res/BVLCCaffeTests/Convolution_002/INFERENCE0
-rw-r--r--res/BVLCCaffeTests/Convolution_002/test.prototxt24
-rw-r--r--res/BVLCCaffeTests/Convolution_003/INFERENCE0
-rw-r--r--res/BVLCCaffeTests/Convolution_003/test.prototxt25
-rw-r--r--res/BVLCCaffeTests/Convolution_004/INFERENCE0
-rw-r--r--res/BVLCCaffeTests/Convolution_004/test.prototxt24
-rw-r--r--res/BVLCCaffeTests/Convolution_005/INFERENCE0
-rw-r--r--res/BVLCCaffeTests/Convolution_005/test.prototxt21
-rw-r--r--res/BVLCCaffeTests/Convolution_006/INFERENCE0
-rw-r--r--res/BVLCCaffeTests/Convolution_006/test.prototxt24
-rw-r--r--res/BVLCCaffeTests/Convolution_007/INFERENCE0
-rw-r--r--res/BVLCCaffeTests/Convolution_007/test.prototxt26
-rw-r--r--res/BVLCCaffeTests/Eltwise_000/INFERENCE0
-rw-r--r--res/BVLCCaffeTests/Eltwise_000/test.prototxt20
-rw-r--r--res/BVLCCaffeTests/Eltwise_001/INFERENCE0
-rw-r--r--res/BVLCCaffeTests/Eltwise_001/test.prototxt20
-rw-r--r--res/BVLCCaffeTests/Input_000/INFERENCE0
-rw-r--r--res/BVLCCaffeTests/Input_000/test.prototxt8
-rw-r--r--res/BVLCCaffeTests/Input_001/INFERENCE0
-rw-r--r--res/BVLCCaffeTests/Input_001/test.prototxt12
-rw-r--r--res/BVLCCaffeTests/Pooling_000/INFERENCE0
-rw-r--r--res/BVLCCaffeTests/Pooling_000/test.prototxt16
-rw-r--r--res/BVLCCaffeTests/Pooling_001/INFERENCE0
-rw-r--r--res/BVLCCaffeTests/Pooling_001/test.prototxt17
-rw-r--r--res/BVLCCaffeTests/Pooling_002/INFERENCE0
-rw-r--r--res/BVLCCaffeTests/Pooling_002/test.prototxt16
-rw-r--r--res/BVLCCaffeTests/Pooling_003/INFERENCE0
-rw-r--r--res/BVLCCaffeTests/Pooling_003/test.prototxt17
-rw-r--r--res/BVLCCaffeTests/Pooling_004/INFERENCE0
-rw-r--r--res/BVLCCaffeTests/Pooling_004/test.prototxt17
-rw-r--r--res/BVLCCaffeTests/Pooling_005/INFERENCE0
-rw-r--r--res/BVLCCaffeTests/Pooling_005/test.prototxt17
-rw-r--r--res/BVLCCaffeTests/ReLU_000/INFERENCE0
-rw-r--r--res/BVLCCaffeTests/ReLU_000/test.prototxt14
-rw-r--r--res/BVLCCaffeTests/Regression_0000/INFERENCE0
-rw-r--r--res/BVLCCaffeTests/Regression_0000/test.prototxt17
-rw-r--r--res/BVLCCaffeTests/Scale_000/INFERENCE0
-rw-r--r--res/BVLCCaffeTests/Scale_000/test.prototxt16
-rw-r--r--res/BVLCCaffeTests/Scale_001/INFERENCE0
-rw-r--r--res/BVLCCaffeTests/Scale_001/test.prototxt17
-rw-r--r--res/BVLCCaffeTests/inception_c1/INFERENCE0
-rw-r--r--res/BVLCCaffeTests/inception_c1/test.prototxt252
-rw-r--r--res/BVLCCaffeTests/residual/INFERENCE0
-rw-r--r--res/BVLCCaffeTests/residual/test.prototxt72
-rw-r--r--res/BVLCCaffeTests/residual_bn/INFERENCE0
-rw-r--r--res/BVLCCaffeTests/residual_bn/test.prototxt110
-rw-r--r--res/ONNXTests/UNIT_Identity_000/test.pbtxt47
-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.pbtxt238
-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.pbtxt145
-rw-r--r--res/TensorFlowTests/NET_0008/test.info2
-rw-r--r--res/TensorFlowTests/NET_0008/test.manifest1
-rw-r--r--res/TensorFlowTests/NET_0008/test.pbtxt145
-rw-r--r--res/TensorFlowTests/NET_0009/test.info2
-rw-r--r--res/TensorFlowTests/NET_0009/test.manifest1
-rw-r--r--res/TensorFlowTests/NET_0009/test.pbtxt188
-rw-r--r--res/TensorFlowTests/NET_0010/test.info2
-rw-r--r--res/TensorFlowTests/NET_0010/test.manifest1
-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/circle_1.0_rel_requirement.rule8
-rw-r--r--res/TensorFlowTests/NET_0025/test.info3
-rw-r--r--res/TensorFlowTests/NET_0025/test.manifest1
-rw-r--r--res/TensorFlowTests/NET_0025/test.pbtxt161
-rw-r--r--res/TensorFlowTests/NET_0025/tflite_1.0_rel_requirement.rule8
-rw-r--r--res/TensorFlowTests/NET_0026/test.info3
-rw-r--r--res/TensorFlowTests/NET_0026/test.pbtxt293
-rw-r--r--res/TensorFlowTests/NET_0027/test.info3
-rw-r--r--res/TensorFlowTests/NET_0027/test.pbtxt470
-rw-r--r--res/TensorFlowTests/NET_0028/circle_1.0_rel_requirement.rule6
-rw-r--r--res/TensorFlowTests/NET_0028/test.info3
-rw-r--r--res/TensorFlowTests/NET_0028/test.manifest1
-rw-r--r--res/TensorFlowTests/NET_0028/test.pbtxt373
-rw-r--r--res/TensorFlowTests/NET_0029/test.info5
-rw-r--r--res/TensorFlowTests/NET_0029/test.manifest1
-rw-r--r--res/TensorFlowTests/NET_0029/test.pbtxt254
-rw-r--r--res/TensorFlowTests/NET_0030/circle_1.0_rel_requirement.rule7
-rw-r--r--res/TensorFlowTests/NET_0030/test.info5
-rw-r--r--res/TensorFlowTests/NET_0030/test.manifest1
-rw-r--r--res/TensorFlowTests/NET_0030/test.pbtxt209
-rw-r--r--res/TensorFlowTests/NET_0031/test.info6
-rw-r--r--res/TensorFlowTests/NET_0031/test.manifest1
-rw-r--r--res/TensorFlowTests/NET_0031/test.pbtxt329
-rw-r--r--res/TensorFlowTests/NET_0032/test.info7
-rw-r--r--res/TensorFlowTests/NET_0032/test.manifest1
-rw-r--r--res/TensorFlowTests/NET_0032/test.pbtxt329
-rw-r--r--res/TensorFlowTests/NET_0033/test.info7
-rw-r--r--res/TensorFlowTests/NET_0033/test.manifest1
-rw-r--r--res/TensorFlowTests/NET_0033/test.pbtxt329
-rw-r--r--res/TensorFlowTests/NET_0034/test.info2
-rw-r--r--res/TensorFlowTests/NET_0034/test.manifest1
-rw-r--r--res/TensorFlowTests/NET_0034/test.pbtxt144
-rw-r--r--res/TensorFlowTests/NET_0035/test.info2
-rw-r--r--res/TensorFlowTests/NET_0035/test.manifest1
-rw-r--r--res/TensorFlowTests/NET_0035/test.pbtxt161
-rw-r--r--res/TensorFlowTests/NET_0036/test.info2
-rw-r--r--res/TensorFlowTests/NET_0036/test.manifest1
-rw-r--r--res/TensorFlowTests/NET_0036/test.pbtxt146
-rw-r--r--res/TensorFlowTests/NET_0037/test.info2
-rw-r--r--res/TensorFlowTests/NET_0037/test.manifest1
-rw-r--r--res/TensorFlowTests/NET_0037/test.pbtxt146
-rw-r--r--res/TensorFlowTests/NET_0038/test.info2
-rw-r--r--res/TensorFlowTests/NET_0038/test.manifest1
-rw-r--r--res/TensorFlowTests/NET_0038/test.pbtxt121
-rw-r--r--res/TensorFlowTests/NET_0039/test.info2
-rw-r--r--res/TensorFlowTests/NET_0039/test.manifest1
-rw-r--r--res/TensorFlowTests/NET_0039/test.pbtxt146
-rw-r--r--res/TensorFlowTests/NET_0040/test.info2
-rw-r--r--res/TensorFlowTests/NET_0040/test.manifest1
-rw-r--r--res/TensorFlowTests/NET_0040/test.pbtxt164
-rw-r--r--res/TensorFlowTests/NET_0041/test.info2
-rw-r--r--res/TensorFlowTests/NET_0041/test.manifest1
-rw-r--r--res/TensorFlowTests/NET_0041/test.pbtxt158
-rw-r--r--res/TensorFlowTests/NET_0042/test.info1
-rw-r--r--res/TensorFlowTests/NET_0042/test.manifest1
-rw-r--r--res/TensorFlowTests/NET_0042/test.pbtxt572
-rw-r--r--res/TensorFlowTests/REGRESSION_0000/test.info2
-rw-r--r--res/TensorFlowTests/REGRESSION_0000/test.pbtxt68
-rw-r--r--res/TensorFlowTests/REGRESSION_0001/test.info2
-rw-r--r--res/TensorFlowTests/REGRESSION_0001/test.manifest1
-rw-r--r--res/TensorFlowTests/REGRESSION_0001/test.pbtxt59
-rw-r--r--res/TensorFlowTests/REGRESSION_0002/test.info2
-rw-r--r--res/TensorFlowTests/REGRESSION_0002/test.manifest1
-rw-r--r--res/TensorFlowTests/REGRESSION_0002/test.pbtxt66
-rw-r--r--res/TensorFlowTests/UI_0000/test.info2
-rw-r--r--res/TensorFlowTests/UI_0000/test.manifest1
-rw-r--r--res/TensorFlowTests/UI_0000/test.pbtxt112
-rw-r--r--res/TensorFlowTests/UI_0001/test.info2
-rw-r--r--res/TensorFlowTests/UI_0001/test.manifest1
-rw-r--r--res/TensorFlowTests/UI_0001/test.pbtxt110
-rw-r--r--res/TensorFlowTests/UI_0002/test.info2
-rw-r--r--res/TensorFlowTests/UI_0002/test.manifest1
-rw-r--r--res/TensorFlowTests/UI_0002/test.pbtxt150
-rw-r--r--res/TensorFlowTests/UI_0003/test.info2
-rw-r--r--res/TensorFlowTests/UI_0003/test.manifest1
-rw-r--r--res/TensorFlowTests/UI_0003/test.pbtxt22
-rw-r--r--res/TensorFlowTests/UI_0004/test.info2
-rw-r--r--res/TensorFlowTests/UI_0004/test.manifest1
-rw-r--r--res/TensorFlowTests/UI_0004/test.pbtxt34
-rw-r--r--res/TensorFlowTests/UI_0005/test.info2
-rw-r--r--res/TensorFlowTests/UI_0005/test.manifest1
-rw-r--r--res/TensorFlowTests/UI_0005/test.pbtxt34
-rw-r--r--res/TensorFlowTests/UI_0006/test.info2
-rw-r--r--res/TensorFlowTests/UI_0006/test.manifest1
-rw-r--r--res/TensorFlowTests/UI_0006/test.pbtxt34
-rw-r--r--res/TensorFlowTests/UI_0007/test.info1
-rw-r--r--res/TensorFlowTests/UI_0007/test.manifest1
-rw-r--r--res/TensorFlowTests/UI_0007/test.pbtxt34
-rw-r--r--res/TensorFlowTests/UI_0008/test.info3
-rw-r--r--res/TensorFlowTests/UI_0008/test.manifest1
-rw-r--r--res/TensorFlowTests/UI_0008/test.pbtxt34
-rw-r--r--res/TensorFlowTests/UI_0009/test.info2
-rw-r--r--res/TensorFlowTests/UI_0009/test.manifest1
-rw-r--r--res/TensorFlowTests/UI_0009/test.pbtxt34
-rw-r--r--res/TensorFlowTests/UI_0010/test.info2
-rw-r--r--res/TensorFlowTests/UI_0010/test.manifest1
-rw-r--r--res/TensorFlowTests/UI_0010/test.pbtxt34
-rw-r--r--res/TensorFlowTests/UI_0011/test.info2
-rw-r--r--res/TensorFlowTests/UI_0011/test.manifest1
-rw-r--r--res/TensorFlowTests/UI_0011/test.pbtxt34
-rw-r--r--res/TensorFlowTests/UI_0012/test.info2
-rw-r--r--res/TensorFlowTests/UI_0012/test.manifest1
-rw-r--r--res/TensorFlowTests/UI_0012/test.pbtxt34
-rw-r--r--res/TensorFlowTests/UNIT_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_ConcatV2_000/test.info1
-rw-r--r--res/TensorFlowTests/UNIT_ConcatV2_000/test.pbtxt110
-rw-r--r--res/TensorFlowTests/UNIT_ConcatV2_001/test.info1
-rw-r--r--res/TensorFlowTests/UNIT_ConcatV2_001/test.pbtxt143
-rw-r--r--res/TensorFlowTests/UNIT_ConcatV2_002/test.info3
-rw-r--r--res/TensorFlowTests/UNIT_ConcatV2_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_000/test.info2
-rw-r--r--res/TensorFlowTests/UNIT_Conv2DBackpropInput_000/test.manifest1
-rw-r--r--res/TensorFlowTests/UNIT_Conv2DBackpropInput_000/test.pbtxt136
-rw-r--r--res/TensorFlowTests/UNIT_Conv2DBackpropInput_001/test.info2
-rw-r--r--res/TensorFlowTests/UNIT_Conv2DBackpropInput_001/test.pbtxt136
-rw-r--r--res/TensorFlowTests/UNIT_Conv2DBackpropInput_002/test.info2
-rw-r--r--res/TensorFlowTests/UNIT_Conv2DBackpropInput_002/test.manifest1
-rw-r--r--res/TensorFlowTests/UNIT_Conv2DBackpropInput_002/test.pbtxt136
-rw-r--r--res/TensorFlowTests/UNIT_Conv2D_000/test.info3
-rw-r--r--res/TensorFlowTests/UNIT_Conv2D_000/test.pbtxt72
-rw-r--r--res/TensorFlowTests/UNIT_Conv2D_001/test.info2
-rw-r--r--res/TensorFlowTests/UNIT_Conv2D_001/test.manifest1
-rw-r--r--res/TensorFlowTests/UNIT_Conv2D_001/test.pbtxt72
-rw-r--r--res/TensorFlowTests/UNIT_Conv2D_002/test.info3
-rw-r--r--res/TensorFlowTests/UNIT_Conv2D_002/test.manifest1
-rw-r--r--res/TensorFlowTests/UNIT_Conv2D_002/test.pbtxt72
-rw-r--r--res/TensorFlowTests/UNIT_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_DepthwiseConv2dNative_000/test.info2
-rw-r--r--res/TensorFlowTests/UNIT_DepthwiseConv2dNative_000/test.pbtxt115
-rw-r--r--res/TensorFlowTests/UNIT_DepthwiseConv2dNative_001/test.info2
-rw-r--r--res/TensorFlowTests/UNIT_DepthwiseConv2dNative_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_MirrorPad_000/test.info2
-rw-r--r--res/TensorFlowTests/UNIT_MirrorPad_000/test.manifest1
-rw-r--r--res/TensorFlowTests/UNIT_MirrorPad_000/test.pbtxt87
-rw-r--r--res/TensorFlowTests/UNIT_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_Pack_000/test.info1
-rw-r--r--res/TensorFlowTests/UNIT_Pack_000/test.manifest1
-rw-r--r--res/TensorFlowTests/UNIT_Pack_000/test.pbtxt110
-rw-r--r--res/TensorFlowTests/UNIT_Pack_001/test.info1
-rw-r--r--res/TensorFlowTests/UNIT_Pack_001/test.manifest1
-rw-r--r--res/TensorFlowTests/UNIT_Pack_001/test.pbtxt78
-rw-r--r--res/TensorFlowTests/UNIT_Pack_002/test.info1
-rw-r--r--res/TensorFlowTests/UNIT_Pack_002/test.manifest1
-rw-r--r--res/TensorFlowTests/UNIT_Pack_002/test.pbtxt78
-rw-r--r--res/TensorFlowTests/UNIT_Pack_003/test.info1
-rw-r--r--res/TensorFlowTests/UNIT_Pack_003/test.manifest1
-rw-r--r--res/TensorFlowTests/UNIT_Pack_003/test.pbtxt78
-rw-r--r--res/TensorFlowTests/UNIT_Pack_004/test.info1
-rw-r--r--res/TensorFlowTests/UNIT_Pack_004/test.manifest1
-rw-r--r--res/TensorFlowTests/UNIT_Pack_004/test.pbtxt78
-rw-r--r--res/TensorFlowTests/UNIT_PadV2_000/test.info2
-rw-r--r--res/TensorFlowTests/UNIT_PadV2_000/test.manifest1
-rw-r--r--res/TensorFlowTests/UNIT_PadV2_000/test.pbtxt103
-rw-r--r--res/TensorFlowTests/UNIT_Pad_000/test.info2
-rw-r--r--res/TensorFlowTests/UNIT_Pad_000/test.manifest8
-rw-r--r--res/TensorFlowTests/UNIT_Pad_000/test.pbtxt81
-rw-r--r--res/TensorFlowTests/UNIT_Placeholder_000/test.info2
-rw-r--r--res/TensorFlowTests/UNIT_Placeholder_000/test.pbtxt40
-rw-r--r--res/TensorFlowTests/UNIT_Placeholder_001/test.info2
-rw-r--r--res/TensorFlowTests/UNIT_Placeholder_001/test.manifest1
-rw-r--r--res/TensorFlowTests/UNIT_Placeholder_001/test.pbtxt40
-rw-r--r--res/TensorFlowTests/UNIT_Placeholder_002/test.info2
-rw-r--r--res/TensorFlowTests/UNIT_Placeholder_002/test.pbtxt21
-rw-r--r--res/TensorFlowTests/UNIT_Placeholder_003/test.info2
-rw-r--r--res/TensorFlowTests/UNIT_Placeholder_003/test.pbtxt28
-rw-r--r--res/TensorFlowTests/UNIT_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/circle.rule7
-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_StridedSlice_000/test.info1
-rw-r--r--res/TensorFlowTests/UNIT_StridedSlice_000/test.manifest1
-rw-r--r--res/TensorFlowTests/UNIT_StridedSlice_000/test.pbtxt149
-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
-rwxr-xr-xres/TensorFlowTests/explain.sh47
377 files changed, 14831 insertions, 0 deletions
diff --git a/res/BVLCCaffeTests/BatchNorm_000/INFERENCE b/res/BVLCCaffeTests/BatchNorm_000/INFERENCE
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/res/BVLCCaffeTests/BatchNorm_000/INFERENCE
diff --git a/res/BVLCCaffeTests/BatchNorm_000/test.prototxt b/res/BVLCCaffeTests/BatchNorm_000/test.prototxt
new file mode 100644
index 000000000..7c0f19ddf
--- /dev/null
+++ b/res/BVLCCaffeTests/BatchNorm_000/test.prototxt
@@ -0,0 +1,17 @@
+layer {
+ name: "data"
+ type: "Input"
+ top: "data"
+ input_param {
+ shape: { dim: 1 dim: 3 dim: 4 dim: 4 }
+ }
+}
+layer {
+ name: "batchnorm"
+ type: "BatchNorm"
+ bottom: "data"
+ top: "batchnorm"
+ batch_norm_param {
+ use_global_stats: true
+ }
+}
diff --git a/res/BVLCCaffeTests/Concat_000/INFERENCE b/res/BVLCCaffeTests/Concat_000/INFERENCE
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/res/BVLCCaffeTests/Concat_000/INFERENCE
diff --git a/res/BVLCCaffeTests/Concat_000/test.prototxt b/res/BVLCCaffeTests/Concat_000/test.prototxt
new file mode 100644
index 000000000..0c2ee899c
--- /dev/null
+++ b/res/BVLCCaffeTests/Concat_000/test.prototxt
@@ -0,0 +1,23 @@
+layer {
+ name: "data"
+ type: "Input"
+ top: "data1"
+ top: "data2"
+ top: "data3"
+ top: "data4"
+ input_param {
+ shape: { dim: 1 dim: 1 dim: 4 dim: 4 }
+ shape: { dim: 1 dim: 2 dim: 4 dim: 4 }
+ shape: { dim: 1 dim: 3 dim: 4 dim: 4 }
+ shape: { dim: 1 dim: 4 dim: 4 dim: 4 }
+ }
+}
+layer {
+ name: "concat"
+ type: "Concat"
+ bottom: "data1"
+ bottom: "data2"
+ bottom: "data3"
+ bottom: "data4"
+ top: "concat"
+}
diff --git a/res/BVLCCaffeTests/Convolution_000/INFERENCE b/res/BVLCCaffeTests/Convolution_000/INFERENCE
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/res/BVLCCaffeTests/Convolution_000/INFERENCE
diff --git a/res/BVLCCaffeTests/Convolution_000/test.prototxt b/res/BVLCCaffeTests/Convolution_000/test.prototxt
new file mode 100644
index 000000000..b56731c06
--- /dev/null
+++ b/res/BVLCCaffeTests/Convolution_000/test.prototxt
@@ -0,0 +1,23 @@
+layer {
+ name: "data"
+ type: "Input"
+ top: "data"
+ input_param {
+ shape: { dim: 1 dim: 3 dim: 4 dim: 4 }
+ }
+}
+layer {
+ name: "conv"
+ type: "Convolution"
+ bottom: "data"
+ top: "conv"
+ convolution_param {
+ bias_term: false
+ num_output: 2
+ kernel_size: 1
+ weight_filler {
+ type: "gaussian"
+ std: 0.01
+ }
+ }
+}
diff --git a/res/BVLCCaffeTests/Convolution_001/INFERENCE b/res/BVLCCaffeTests/Convolution_001/INFERENCE
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/res/BVLCCaffeTests/Convolution_001/INFERENCE
diff --git a/res/BVLCCaffeTests/Convolution_001/test.prototxt b/res/BVLCCaffeTests/Convolution_001/test.prototxt
new file mode 100644
index 000000000..5b6b5c811
--- /dev/null
+++ b/res/BVLCCaffeTests/Convolution_001/test.prototxt
@@ -0,0 +1,24 @@
+layer {
+ name: "data"
+ type: "Input"
+ top: "data"
+ input_param {
+ shape: { dim: 1 dim: 3 dim: 15 dim: 15 }
+ }
+}
+layer {
+ name: "conv"
+ type: "Convolution"
+ bottom: "data"
+ top: "conv"
+ convolution_param {
+ bias_term: false
+ num_output: 2
+ stride: 2
+ kernel_size: 3
+ weight_filler {
+ type: "gaussian"
+ std: 0.01
+ }
+ }
+}
diff --git a/res/BVLCCaffeTests/Convolution_002/INFERENCE b/res/BVLCCaffeTests/Convolution_002/INFERENCE
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/res/BVLCCaffeTests/Convolution_002/INFERENCE
diff --git a/res/BVLCCaffeTests/Convolution_002/test.prototxt b/res/BVLCCaffeTests/Convolution_002/test.prototxt
new file mode 100644
index 000000000..7cd59be3e
--- /dev/null
+++ b/res/BVLCCaffeTests/Convolution_002/test.prototxt
@@ -0,0 +1,24 @@
+layer {
+ name: "data"
+ type: "Input"
+ top: "data"
+ input_param {
+ shape: { dim: 1 dim: 3 dim: 16 dim: 16 }
+ }
+}
+layer {
+ name: "conv"
+ type: "Convolution"
+ bottom: "data"
+ top: "conv"
+ convolution_param {
+ bias_term: false
+ num_output: 2
+ pad: 1
+ kernel_size: 3
+ weight_filler {
+ type: "gaussian"
+ std: 0.01
+ }
+ }
+}
diff --git a/res/BVLCCaffeTests/Convolution_003/INFERENCE b/res/BVLCCaffeTests/Convolution_003/INFERENCE
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/res/BVLCCaffeTests/Convolution_003/INFERENCE
diff --git a/res/BVLCCaffeTests/Convolution_003/test.prototxt b/res/BVLCCaffeTests/Convolution_003/test.prototxt
new file mode 100644
index 000000000..38c4ebdf9
--- /dev/null
+++ b/res/BVLCCaffeTests/Convolution_003/test.prototxt
@@ -0,0 +1,25 @@
+layer {
+ name: "data"
+ type: "Input"
+ top: "data"
+ input_param {
+ shape: { dim: 1 dim: 3 dim: 16 dim: 16 }
+ }
+}
+layer {
+ name: "conv"
+ type: "Convolution"
+ bottom: "data"
+ top: "conv"
+ convolution_param {
+ bias_term: false
+ num_output: 2
+ pad: 1
+ pad: 2
+ kernel_size: 3
+ weight_filler {
+ type: "gaussian"
+ std: 0.01
+ }
+ }
+}
diff --git a/res/BVLCCaffeTests/Convolution_004/INFERENCE b/res/BVLCCaffeTests/Convolution_004/INFERENCE
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/res/BVLCCaffeTests/Convolution_004/INFERENCE
diff --git a/res/BVLCCaffeTests/Convolution_004/test.prototxt b/res/BVLCCaffeTests/Convolution_004/test.prototxt
new file mode 100644
index 000000000..76b1039c5
--- /dev/null
+++ b/res/BVLCCaffeTests/Convolution_004/test.prototxt
@@ -0,0 +1,24 @@
+layer {
+ name: "data"
+ type: "Input"
+ top: "data"
+ input_param {
+ shape: { dim: 1 dim: 3 dim: 16 dim: 16 }
+ }
+}
+layer {
+ name: "conv"
+ type: "Convolution"
+ bottom: "data"
+ top: "conv"
+ convolution_param {
+ bias_term: false
+ num_output: 2
+ kernel_h: 3
+ kernel_w: 1
+ weight_filler {
+ type: "gaussian"
+ std: 0.01
+ }
+ }
+}
diff --git a/res/BVLCCaffeTests/Convolution_005/INFERENCE b/res/BVLCCaffeTests/Convolution_005/INFERENCE
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/res/BVLCCaffeTests/Convolution_005/INFERENCE
diff --git a/res/BVLCCaffeTests/Convolution_005/test.prototxt b/res/BVLCCaffeTests/Convolution_005/test.prototxt
new file mode 100644
index 000000000..93104fee8
--- /dev/null
+++ b/res/BVLCCaffeTests/Convolution_005/test.prototxt
@@ -0,0 +1,21 @@
+layer {
+ name: "data"
+ type: "Input"
+ top: "data"
+ input_param {
+ shape: { dim: 1 dim: 3 dim: 15 dim: 15 }
+ }
+}
+layer {
+ name: "conv"
+ type: "Convolution"
+ bottom: "data"
+ top: "conv"
+ convolution_param {
+ bias_term: false
+ num_output: 2
+ pad_h: 0
+ pad_w: 3
+ kernel_size: 7
+ }
+}
diff --git a/res/BVLCCaffeTests/Convolution_006/INFERENCE b/res/BVLCCaffeTests/Convolution_006/INFERENCE
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/res/BVLCCaffeTests/Convolution_006/INFERENCE
diff --git a/res/BVLCCaffeTests/Convolution_006/test.prototxt b/res/BVLCCaffeTests/Convolution_006/test.prototxt
new file mode 100644
index 000000000..f50a0070f
--- /dev/null
+++ b/res/BVLCCaffeTests/Convolution_006/test.prototxt
@@ -0,0 +1,24 @@
+layer {
+ name: "data"
+ type: "Input"
+ top: "data"
+ input_param {
+ shape: { dim: 1 dim: 3 dim: 16 dim: 16 }
+ }
+}
+layer {
+ name: "dconv"
+ type: "Convolution"
+ bottom: "data"
+ top: "dconv"
+ convolution_param {
+ group: 3
+ num_output: 3
+ bias_term: false
+ kernel_size: 3
+ weight_filler {
+ type: "gaussian"
+ std: 0.01
+ }
+ }
+}
diff --git a/res/BVLCCaffeTests/Convolution_007/INFERENCE b/res/BVLCCaffeTests/Convolution_007/INFERENCE
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/res/BVLCCaffeTests/Convolution_007/INFERENCE
diff --git a/res/BVLCCaffeTests/Convolution_007/test.prototxt b/res/BVLCCaffeTests/Convolution_007/test.prototxt
new file mode 100644
index 000000000..78009fe27
--- /dev/null
+++ b/res/BVLCCaffeTests/Convolution_007/test.prototxt
@@ -0,0 +1,26 @@
+layer {
+ name: "data"
+ type: "Input"
+ top: "data"
+ input_param {
+ shape: { dim: 1 dim: 3 dim: 4 dim: 4 }
+ }
+}
+layer {
+ name: "conv"
+ type: "Convolution"
+ bottom: "data"
+ top: "conv"
+ convolution_param {
+ num_output: 2
+ kernel_size: 1
+ weight_filler {
+ type: "gaussian"
+ std: 0.01
+ }
+ bias_filler {
+ type: "gaussian"
+ std: 0.01
+ }
+ }
+}
diff --git a/res/BVLCCaffeTests/Eltwise_000/INFERENCE b/res/BVLCCaffeTests/Eltwise_000/INFERENCE
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/res/BVLCCaffeTests/Eltwise_000/INFERENCE
diff --git a/res/BVLCCaffeTests/Eltwise_000/test.prototxt b/res/BVLCCaffeTests/Eltwise_000/test.prototxt
new file mode 100644
index 000000000..09b85c390
--- /dev/null
+++ b/res/BVLCCaffeTests/Eltwise_000/test.prototxt
@@ -0,0 +1,20 @@
+layer {
+ name: "data"
+ type: "Input"
+ top: "lhs"
+ top: "rhs"
+ input_param {
+ shape: { dim: 1 dim: 3 dim: 16 dim: 16 }
+ shape: { dim: 1 dim: 3 dim: 16 dim: 16 }
+ }
+}
+layer {
+ name: "sum"
+ type: "Eltwise"
+ bottom: "lhs"
+ bottom: "rhs"
+ top: "sum"
+ eltwise_param {
+ operation: SUM
+ }
+}
diff --git a/res/BVLCCaffeTests/Eltwise_001/INFERENCE b/res/BVLCCaffeTests/Eltwise_001/INFERENCE
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/res/BVLCCaffeTests/Eltwise_001/INFERENCE
diff --git a/res/BVLCCaffeTests/Eltwise_001/test.prototxt b/res/BVLCCaffeTests/Eltwise_001/test.prototxt
new file mode 100644
index 000000000..3eef071f9
--- /dev/null
+++ b/res/BVLCCaffeTests/Eltwise_001/test.prototxt
@@ -0,0 +1,20 @@
+layer {
+ name: "data"
+ type: "Input"
+ top: "lhs"
+ top: "rhs"
+ input_param {
+ shape: { dim: 1 dim: 3 dim: 16 dim: 16 }
+ shape: { dim: 1 dim: 3 dim: 16 dim: 16 }
+ }
+}
+layer {
+ name: "prod"
+ type: "Eltwise"
+ bottom: "lhs"
+ bottom: "rhs"
+ top: "prod"
+ eltwise_param {
+ operation: PROD
+ }
+}
diff --git a/res/BVLCCaffeTests/Input_000/INFERENCE b/res/BVLCCaffeTests/Input_000/INFERENCE
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/res/BVLCCaffeTests/Input_000/INFERENCE
diff --git a/res/BVLCCaffeTests/Input_000/test.prototxt b/res/BVLCCaffeTests/Input_000/test.prototxt
new file mode 100644
index 000000000..2d0571382
--- /dev/null
+++ b/res/BVLCCaffeTests/Input_000/test.prototxt
@@ -0,0 +1,8 @@
+layer {
+ name: "data"
+ type: "Input"
+ top: "data"
+ input_param {
+ shape: { dim: 1 dim: 3 dim: 244 dim: 244 }
+ }
+}
diff --git a/res/BVLCCaffeTests/Input_001/INFERENCE b/res/BVLCCaffeTests/Input_001/INFERENCE
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/res/BVLCCaffeTests/Input_001/INFERENCE
diff --git a/res/BVLCCaffeTests/Input_001/test.prototxt b/res/BVLCCaffeTests/Input_001/test.prototxt
new file mode 100644
index 000000000..eece8b77c
--- /dev/null
+++ b/res/BVLCCaffeTests/Input_001/test.prototxt
@@ -0,0 +1,12 @@
+layer {
+ name: "data1"
+ type: "Input"
+ top: "data1"
+ input_param { shape: { dim: 1 dim: 3 dim: 15 dim: 15 } }
+}
+layer {
+ name: "data2"
+ type: "Input"
+ top: "data2"
+ input_param { shape: { dim: 1 dim: 3 dim: 15 dim: 15 } }
+}
diff --git a/res/BVLCCaffeTests/Pooling_000/INFERENCE b/res/BVLCCaffeTests/Pooling_000/INFERENCE
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/res/BVLCCaffeTests/Pooling_000/INFERENCE
diff --git a/res/BVLCCaffeTests/Pooling_000/test.prototxt b/res/BVLCCaffeTests/Pooling_000/test.prototxt
new file mode 100644
index 000000000..8ed0c3828
--- /dev/null
+++ b/res/BVLCCaffeTests/Pooling_000/test.prototxt
@@ -0,0 +1,16 @@
+layer {
+ name: "data"
+ type: "Input"
+ top: "data"
+ input_param { shape: { dim: 1 dim: 3 dim: 16 dim: 16 } }
+}
+layer {
+ name: "pool"
+ type: "Pooling"
+ bottom: "data"
+ top: "pool"
+ pooling_param {
+ pool: MAX
+ kernel_size: 3
+ }
+}
diff --git a/res/BVLCCaffeTests/Pooling_001/INFERENCE b/res/BVLCCaffeTests/Pooling_001/INFERENCE
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/res/BVLCCaffeTests/Pooling_001/INFERENCE
diff --git a/res/BVLCCaffeTests/Pooling_001/test.prototxt b/res/BVLCCaffeTests/Pooling_001/test.prototxt
new file mode 100644
index 000000000..1ecbb96bc
--- /dev/null
+++ b/res/BVLCCaffeTests/Pooling_001/test.prototxt
@@ -0,0 +1,17 @@
+layer {
+ name: "data"
+ type: "Input"
+ top: "data"
+ input_param { shape: { dim: 1 dim: 3 dim: 15 dim: 15 } }
+}
+layer {
+ name: "pool"
+ type: "Pooling"
+ bottom: "data"
+ top: "pool"
+ pooling_param {
+ pool: MAX
+ kernel_size: 3
+ stride: 2
+ }
+}
diff --git a/res/BVLCCaffeTests/Pooling_002/INFERENCE b/res/BVLCCaffeTests/Pooling_002/INFERENCE
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/res/BVLCCaffeTests/Pooling_002/INFERENCE
diff --git a/res/BVLCCaffeTests/Pooling_002/test.prototxt b/res/BVLCCaffeTests/Pooling_002/test.prototxt
new file mode 100644
index 000000000..f199bdc60
--- /dev/null
+++ b/res/BVLCCaffeTests/Pooling_002/test.prototxt
@@ -0,0 +1,16 @@
+layer {
+ name: "data"
+ type: "Input"
+ top: "data"
+ input_param { shape: { dim: 1 dim: 3 dim: 16 dim: 16 } }
+}
+layer {
+ name: "pool"
+ type: "Pooling"
+ bottom: "data"
+ top: "pool"
+ pooling_param {
+ pool: AVE
+ kernel_size: 3
+ }
+}
diff --git a/res/BVLCCaffeTests/Pooling_003/INFERENCE b/res/BVLCCaffeTests/Pooling_003/INFERENCE
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/res/BVLCCaffeTests/Pooling_003/INFERENCE
diff --git a/res/BVLCCaffeTests/Pooling_003/test.prototxt b/res/BVLCCaffeTests/Pooling_003/test.prototxt
new file mode 100644
index 000000000..e25855fa8
--- /dev/null
+++ b/res/BVLCCaffeTests/Pooling_003/test.prototxt
@@ -0,0 +1,17 @@
+layer {
+ name: "data"
+ type: "Input"
+ top: "data"
+ input_param { shape: { dim: 1 dim: 3 dim: 15 dim: 15 } }
+}
+layer {
+ name: "pool"
+ type: "Pooling"
+ bottom: "data"
+ top: "pool"
+ pooling_param {
+ pool: AVE
+ kernel_size: 3
+ stride: 2
+ }
+}
diff --git a/res/BVLCCaffeTests/Pooling_004/INFERENCE b/res/BVLCCaffeTests/Pooling_004/INFERENCE
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/res/BVLCCaffeTests/Pooling_004/INFERENCE
diff --git a/res/BVLCCaffeTests/Pooling_004/test.prototxt b/res/BVLCCaffeTests/Pooling_004/test.prototxt
new file mode 100644
index 000000000..533a01c88
--- /dev/null
+++ b/res/BVLCCaffeTests/Pooling_004/test.prototxt
@@ -0,0 +1,17 @@
+layer {
+ name: "data"
+ type: "Input"
+ top: "data"
+ input_param { shape: { dim: 1 dim: 3 dim: 16 dim: 16 } }
+}
+layer {
+ name: "pool"
+ type: "Pooling"
+ bottom: "data"
+ top: "pool"
+ pooling_param {
+ pool: MAX
+ kernel_size: 3
+ pad: 1
+ }
+}
diff --git a/res/BVLCCaffeTests/Pooling_005/INFERENCE b/res/BVLCCaffeTests/Pooling_005/INFERENCE
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/res/BVLCCaffeTests/Pooling_005/INFERENCE
diff --git a/res/BVLCCaffeTests/Pooling_005/test.prototxt b/res/BVLCCaffeTests/Pooling_005/test.prototxt
new file mode 100644
index 000000000..36475c71e
--- /dev/null
+++ b/res/BVLCCaffeTests/Pooling_005/test.prototxt
@@ -0,0 +1,17 @@
+layer {
+ name: "data"
+ type: "Input"
+ top: "data"
+ input_param { shape: { dim: 1 dim: 3 dim: 15 dim: 15 } }
+}
+layer {
+ name: "pool"
+ type: "Pooling"
+ bottom: "data"
+ top: "pool"
+ pooling_param {
+ pool: AVE
+ kernel_size: 3
+ pad: 1
+ }
+}
diff --git a/res/BVLCCaffeTests/ReLU_000/INFERENCE b/res/BVLCCaffeTests/ReLU_000/INFERENCE
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/res/BVLCCaffeTests/ReLU_000/INFERENCE
diff --git a/res/BVLCCaffeTests/ReLU_000/test.prototxt b/res/BVLCCaffeTests/ReLU_000/test.prototxt
new file mode 100644
index 000000000..5fe2a938e
--- /dev/null
+++ b/res/BVLCCaffeTests/ReLU_000/test.prototxt
@@ -0,0 +1,14 @@
+layer {
+ name: "data"
+ type: "Input"
+ top: "data"
+ input_param {
+ shape: { dim: 1 dim: 2 dim: 5 dim: 3 }
+ }
+}
+layer {
+ name: "relu"
+ type: "ReLU"
+ bottom: "data"
+ top: "data"
+}
diff --git a/res/BVLCCaffeTests/Regression_0000/INFERENCE b/res/BVLCCaffeTests/Regression_0000/INFERENCE
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/res/BVLCCaffeTests/Regression_0000/INFERENCE
diff --git a/res/BVLCCaffeTests/Regression_0000/test.prototxt b/res/BVLCCaffeTests/Regression_0000/test.prototxt
new file mode 100644
index 000000000..5927d692f
--- /dev/null
+++ b/res/BVLCCaffeTests/Regression_0000/test.prototxt
@@ -0,0 +1,17 @@
+layer {
+ name: "data"
+ type: "Input"
+ top: "data"
+ input_param { shape: { dim: 1 dim: 3 dim: 15 dim: 15 } }
+}
+layer {
+ name: "pool"
+ type: "Pooling"
+ bottom: "data"
+ top: "pool"
+ pooling_param {
+ pool: AVE
+ kernel_h: 3
+ kernel_w: 1
+ }
+}
diff --git a/res/BVLCCaffeTests/Scale_000/INFERENCE b/res/BVLCCaffeTests/Scale_000/INFERENCE
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/res/BVLCCaffeTests/Scale_000/INFERENCE
diff --git a/res/BVLCCaffeTests/Scale_000/test.prototxt b/res/BVLCCaffeTests/Scale_000/test.prototxt
new file mode 100644
index 000000000..2f628ec6c
--- /dev/null
+++ b/res/BVLCCaffeTests/Scale_000/test.prototxt
@@ -0,0 +1,16 @@
+layer {
+ name: "data"
+ type: "Input"
+ top: "data"
+ input_param { shape: { dim: 1 dim: 3 dim: 16 dim: 16 } }
+}
+layer {
+ name: "scale"
+ type: "Scale"
+ bottom: "data"
+ top: "scale"
+ scale_param {
+ filler { type: "gaussian" std: 0.01 }
+ bias_term: false
+ }
+}
diff --git a/res/BVLCCaffeTests/Scale_001/INFERENCE b/res/BVLCCaffeTests/Scale_001/INFERENCE
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/res/BVLCCaffeTests/Scale_001/INFERENCE
diff --git a/res/BVLCCaffeTests/Scale_001/test.prototxt b/res/BVLCCaffeTests/Scale_001/test.prototxt
new file mode 100644
index 000000000..d15be8ff3
--- /dev/null
+++ b/res/BVLCCaffeTests/Scale_001/test.prototxt
@@ -0,0 +1,17 @@
+layer {
+ name: "data"
+ type: "Input"
+ top: "data"
+ input_param { shape: { dim: 1 dim: 3 dim: 16 dim: 16 } }
+}
+layer {
+ name: "scale"
+ type: "Scale"
+ bottom: "data"
+ top: "scale"
+ scale_param {
+ filler { type: "gaussian" std: 0.01 }
+ bias_term: true
+ bias_filler { type: "gaussian" std: 0.01 }
+ }
+}
diff --git a/res/BVLCCaffeTests/inception_c1/INFERENCE b/res/BVLCCaffeTests/inception_c1/INFERENCE
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/res/BVLCCaffeTests/inception_c1/INFERENCE
diff --git a/res/BVLCCaffeTests/inception_c1/test.prototxt b/res/BVLCCaffeTests/inception_c1/test.prototxt
new file mode 100644
index 000000000..7f2df4571
--- /dev/null
+++ b/res/BVLCCaffeTests/inception_c1/test.prototxt
@@ -0,0 +1,252 @@
+name: "inception_c1"
+layer {
+ name: "input"
+ type: "Input"
+ top: "reduction_b_concat"
+ input_param {
+ shape {
+ dim: 1
+ dim: 3
+ dim: 32
+ dim: 32
+ }
+ }
+}
+layer {
+ name: "inception_c1_1x1_2"
+ type: "Convolution"
+ bottom: "reduction_b_concat"
+ top: "inception_c1_1x1_2"
+ convolution_param {
+ bias_term: false
+ num_output: 2
+ pad: 0
+ kernel_size: 1
+ stride: 1
+ weight_filler {
+ type: "gaussian"
+ std: 0.01
+ }
+ }
+}
+layer {
+ name: "inception_c1_1x1_2_relu"
+ type: "ReLU"
+ bottom: "inception_c1_1x1_2"
+ top: "inception_c1_1x1_2"
+}
+layer {
+ name: "inception_c1_1x3_reduce"
+ type: "Convolution"
+ bottom: "reduction_b_concat"
+ top: "inception_c1_1x3_reduce"
+ convolution_param {
+ bias_term: false
+ num_output: 3
+ pad: 0
+ kernel_size: 1
+ stride: 1
+ weight_filler {
+ type: "gaussian"
+ std: 0.01
+ }
+ }
+}
+layer {
+ name: "inception_c1_1x3_reduce_relu"
+ type: "ReLU"
+ bottom: "inception_c1_1x3_reduce"
+ top: "inception_c1_1x3_reduce"
+}
+layer {
+ name: "inception_c1_1x3"
+ type: "Convolution"
+ bottom: "inception_c1_1x3_reduce"
+ top: "inception_c1_1x3"
+ convolution_param {
+ bias_term: false
+ num_output: 4
+ stride: 1
+ pad_h: 0
+ pad_w: 1
+ kernel_h: 1
+ kernel_w: 3
+ weight_filler {
+ type: "gaussian"
+ std: 0.01
+ }
+ }
+}
+layer {
+ name: "inception_c1_1x3_relu"
+ type: "ReLU"
+ bottom: "inception_c1_1x3"
+ top: "inception_c1_1x3"
+}
+layer {
+ name: "inception_c1_3x1"
+ type: "Convolution"
+ bottom: "inception_c1_1x3_reduce"
+ top: "inception_c1_3x1"
+ convolution_param {
+ bias_term: false
+ num_output: 5
+ stride: 1
+ pad_h: 1
+ pad_w: 0
+ kernel_h: 3
+ kernel_w: 1
+ weight_filler {
+ type: "gaussian"
+ std: 0.01
+ }
+ }
+}
+layer {
+ name: "inception_c1_3x1_relu"
+ type: "ReLU"
+ bottom: "inception_c1_3x1"
+ top: "inception_c1_3x1"
+}
+layer {
+ name: "inception_c1_3x3_reduce"
+ type: "Convolution"
+ bottom: "reduction_b_concat"
+ top: "inception_c1_3x3_reduce"
+ convolution_param {
+ bias_term: false
+ num_output: 5
+ pad: 0
+ kernel_size: 1
+ stride: 1
+ weight_filler {
+ type: "gaussian"
+ std: 0.01
+ }
+ }
+}
+layer {
+ name: "inception_c1_3x3_reduce_relu"
+ type: "ReLU"
+ bottom: "inception_c1_3x3_reduce"
+ top: "inception_c1_3x3_reduce"
+}
+layer {
+ name: "inception_c1_3x3"
+ type: "Convolution"
+ bottom: "inception_c1_3x3_reduce"
+ top: "inception_c1_3x3"
+ convolution_param {
+ bias_term: false
+ num_output: 6
+ pad: 1
+ kernel_size: 3
+ stride: 1
+ weight_filler {
+ type: "gaussian"
+ std: 0.01
+ }
+ }
+}
+layer {
+ name: "inception_c1_3x3_relu"
+ type: "ReLU"
+ bottom: "inception_c1_3x3"
+ top: "inception_c1_3x3"
+}
+layer {
+ name: "inception_c1_1x3_2"
+ type: "Convolution"
+ bottom: "inception_c1_3x3"
+ top: "inception_c1_1x3_2"
+ convolution_param {
+ bias_term: false
+ num_output: 7
+ stride: 1
+ pad_h: 0
+ pad_w: 1
+ kernel_h: 1
+ kernel_w: 3
+ weight_filler {
+ type: "gaussian"
+ std: 0.01
+ }
+ }
+}
+layer {
+ name: "inception_c1_1x3_2_relu"
+ type: "ReLU"
+ bottom: "inception_c1_1x3_2"
+ top: "inception_c1_1x3_2"
+}
+layer {
+ name: "inception_c1_3x1_2"
+ type: "Convolution"
+ bottom: "inception_c1_3x3"
+ top: "inception_c1_3x1_2"
+ convolution_param {
+ bias_term: false
+ num_output: 8
+ stride: 1
+ pad_h: 1
+ pad_w: 0
+ kernel_h: 3
+ kernel_w: 1
+ weight_filler {
+ type: "gaussian"
+ std: 0.01
+ }
+ }
+}
+layer {
+ name: "inception_c1_3x1_2_relu"
+ type: "ReLU"
+ bottom: "inception_c1_3x1_2"
+ top: "inception_c1_3x1_2"
+}
+layer {
+ name: "inception_c1_pool"
+ type: "Pooling"
+ bottom: "reduction_b_concat"
+ top: "inception_c1_pool"
+ pooling_param {
+ pool: AVE
+ kernel_size: 3
+ stride: 1
+ pad: 1
+ }
+}
+layer {
+ name: "inception_c1_1x1"
+ type: "Convolution"
+ bottom: "inception_c1_pool"
+ top: "inception_c1_1x1"
+ convolution_param {
+ bias_term: false
+ num_output: 10
+ pad: 0
+ kernel_size: 1
+ stride: 1
+ weight_filler {
+ type: "gaussian"
+ std: 0.01
+ }
+ }
+}
+layer {
+ name: "inception_c1_1x1_relu"
+ type: "ReLU"
+ bottom: "inception_c1_1x1"
+ top: "inception_c1_1x1"
+}
+layer {
+ name: "inception_c1_concat"
+ type: "Concat"
+ bottom: "inception_c1_1x1_2"
+ bottom: "inception_c1_1x3"
+ bottom: "inception_c1_3x1"
+ bottom: "inception_c1_1x3_2"
+ bottom: "inception_c1_3x1_2"
+ bottom: "inception_c1_1x1"
+ top: "inception_c1_concat"
+}
diff --git a/res/BVLCCaffeTests/residual/INFERENCE b/res/BVLCCaffeTests/residual/INFERENCE
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/res/BVLCCaffeTests/residual/INFERENCE
diff --git a/res/BVLCCaffeTests/residual/test.prototxt b/res/BVLCCaffeTests/residual/test.prototxt
new file mode 100644
index 000000000..8ced8b6d5
--- /dev/null
+++ b/res/BVLCCaffeTests/residual/test.prototxt
@@ -0,0 +1,72 @@
+name: "residual"
+layer {
+ name: "input"
+ type: "Input"
+ top: "data"
+ input_param {
+ shape {
+ dim: 1
+ dim: 3
+ dim: 31
+ dim: 31
+ }
+ }
+}
+layer {
+ name: "MaxPool2dBackward4"
+ type: "Pooling"
+ bottom: "data"
+ top: "MaxPool2dBackward4"
+ pooling_param {
+ pool: MAX
+ kernel_size: 3
+ stride: 2
+ pad: 1
+ }
+}
+layer {
+ name: "ConvNdBackward5"
+ type: "Convolution"
+ bottom: "MaxPool2dBackward4"
+ top: "ConvNdBackward5"
+ convolution_param {
+ num_output: 5
+ pad_h: 1
+ pad_w: 1
+ kernel_h: 3
+ kernel_w: 3
+ stride: 1
+ bias_term: false
+ }
+}
+layer {
+ name: "ThresholdBackward7"
+ type: "ReLU"
+ bottom: "ConvNdBackward5"
+ top: "ConvNdBackward5"
+}
+layer {
+ name: "ConvNdBackward8"
+ type: "Convolution"
+ bottom: "ConvNdBackward5"
+ top: "ConvNdBackward8"
+ convolution_param {
+ num_output: 3
+ pad_h: 1
+ pad_w: 1
+ kernel_h: 3
+ kernel_w: 3
+ stride: 1
+ bias_term: false
+ }
+}
+layer {
+ name: "AddBackward11"
+ type: "Eltwise"
+ bottom: "ConvNdBackward8"
+ bottom: "MaxPool2dBackward4"
+ top: "AddBackward11"
+ eltwise_param {
+ operation: SUM
+ }
+}
diff --git a/res/BVLCCaffeTests/residual_bn/INFERENCE b/res/BVLCCaffeTests/residual_bn/INFERENCE
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/res/BVLCCaffeTests/residual_bn/INFERENCE
diff --git a/res/BVLCCaffeTests/residual_bn/test.prototxt b/res/BVLCCaffeTests/residual_bn/test.prototxt
new file mode 100644
index 000000000..eaa321e8d
--- /dev/null
+++ b/res/BVLCCaffeTests/residual_bn/test.prototxt
@@ -0,0 +1,110 @@
+name: "residual_bn"
+layer {
+ name: "input"
+ type: "Input"
+ top: "data"
+ input_param {
+ shape {
+ dim: 1
+ dim: 3
+ dim: 31
+ dim: 31
+ }
+ }
+}
+layer {
+ name: "MaxPool2dBackward4"
+ type: "Pooling"
+ bottom: "data"
+ top: "MaxPool2dBackward4"
+ pooling_param {
+ pool: MAX
+ kernel_size: 3
+ stride: 2
+ pad: 1
+ }
+}
+layer {
+ name: "ConvNdBackward5"
+ type: "Convolution"
+ bottom: "MaxPool2dBackward4"
+ top: "ConvNdBackward5"
+ convolution_param {
+ num_output: 5
+ pad_h: 1
+ pad_w: 1
+ kernel_h: 3
+ kernel_w: 3
+ stride: 1
+ bias_term: false
+ }
+}
+layer {
+ name: "BatchNormBackward6_bn"
+ type: "BatchNorm"
+ bottom: "ConvNdBackward5"
+ top: "BatchNormBackward6"
+ batch_norm_param {
+ use_global_stats: true
+ eps: 1e-05
+ }
+}
+layer {
+ name: "BatchNormBackward6_scale"
+ type: "Scale"
+ bottom: "BatchNormBackward6"
+ top: "BatchNormBackward6"
+ scale_param {
+ bias_term: true
+ }
+}
+layer {
+ name: "ThresholdBackward7"
+ type: "ReLU"
+ bottom: "BatchNormBackward6"
+ top: "BatchNormBackward6"
+}
+layer {
+ name: "ConvNdBackward8"
+ type: "Convolution"
+ bottom: "BatchNormBackward6"
+ top: "ConvNdBackward8"
+ convolution_param {
+ num_output: 3
+ pad_h: 1
+ pad_w: 1
+ kernel_h: 3
+ kernel_w: 3
+ stride: 1
+ bias_term: false
+ }
+}
+layer {
+ name: "BatchNormBackward9_bn"
+ type: "BatchNorm"
+ bottom: "ConvNdBackward8"
+ top: "BatchNormBackward9"
+ batch_norm_param {
+ use_global_stats: true
+ eps: 1e-05
+ }
+}
+layer {
+ name: "BatchNormBackward9_scale"
+ type: "Scale"
+ bottom: "BatchNormBackward9"
+ top: "BatchNormBackward9"
+ scale_param {
+ bias_term: true
+ }
+}
+layer {
+ name: "AddBackward11"
+ type: "Eltwise"
+ bottom: "BatchNormBackward9"
+ bottom: "MaxPool2dBackward4"
+ top: "AddBackward11"
+ eltwise_param {
+ operation: SUM
+ }
+}
diff --git a/res/ONNXTests/UNIT_Identity_000/test.pbtxt b/res/ONNXTests/UNIT_Identity_000/test.pbtxt
new file mode 100644
index 000000000..0e72c011b
--- /dev/null
+++ b/res/ONNXTests/UNIT_Identity_000/test.pbtxt
@@ -0,0 +1,47 @@
+# This testcase is compatible with ONNX 1.4.1 or newer
+ir_version: 4
+
+opset_import {
+ version: 9
+}
+
+graph {
+ name: "Identity_000"
+
+ node {
+ input: "input"
+ output: "output"
+ name: "identity_node"
+ op_type: "Identity"
+ }
+
+ input {
+ name: "input"
+ type {
+ tensor_type {
+ elem_type: 1 # FLOAT type
+ shape {
+ dim { dim_value: 1 }
+ dim { dim_value: 2 }
+ dim { dim_value: 1 }
+ dim { dim_value: 2 }
+ }
+ }
+ }
+ }
+
+ output {
+ name: "output"
+ type {
+ tensor_type {
+ elem_type: 1 # FLOAT type
+ shape {
+ dim { dim_value: 1 }
+ dim { dim_value: 2 }
+ dim { dim_value: 1 }
+ dim { dim_value: 2 }
+ }
+ }
+ }
+ }
+}
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..3f146c033
--- /dev/null
+++ b/res/TensorFlowTests/NET_0003/test.pbtxt
@@ -0,0 +1,238 @@
+# 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
+ }
+ }
+ }
+}
+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..6193c19b9
--- /dev/null
+++ b/res/TensorFlowTests/NET_0007/test.pbtxt
@@ -0,0 +1,145 @@
+# 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
+ }
+ }
+ }
+}
+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.manifest b/res/TensorFlowTests/NET_0008/test.manifest
new file mode 100644
index 000000000..c7de34437
--- /dev/null
+++ b/res/TensorFlowTests/NET_0008/test.manifest
@@ -0,0 +1 @@
+SUMMARY: A simple network that has "Conv2D" + "Add"
diff --git a/res/TensorFlowTests/NET_0008/test.pbtxt b/res/TensorFlowTests/NET_0008/test.pbtxt
new file mode 100644
index 000000000..dc1407ddf
--- /dev/null
+++ b/res/TensorFlowTests/NET_0008/test.pbtxt
@@ -0,0 +1,145 @@
+# 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
+ }
+ }
+ }
+}
+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.manifest b/res/TensorFlowTests/NET_0009/test.manifest
new file mode 100644
index 000000000..80ba28f80
--- /dev/null
+++ b/res/TensorFlowTests/NET_0009/test.manifest
@@ -0,0 +1 @@
+SUMMARY: A simple network that has "Conv2D" + "BiasAdd" + "Add"
diff --git a/res/TensorFlowTests/NET_0009/test.pbtxt b/res/TensorFlowTests/NET_0009/test.pbtxt
new file mode 100644
index 000000000..719685c64
--- /dev/null
+++ b/res/TensorFlowTests/NET_0009/test.pbtxt
@@ -0,0 +1,188 @@
+# 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
+ }
+ }
+ }
+}
+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.manifest b/res/TensorFlowTests/NET_0010/test.manifest
new file mode 100644
index 000000000..74e63bcc8
--- /dev/null
+++ b/res/TensorFlowTests/NET_0010/test.manifest
@@ -0,0 +1 @@
+SUMMARY: "BiasAdd" + "Add"
diff --git a/res/TensorFlowTests/NET_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/circle_1.0_rel_requirement.rule b/res/TensorFlowTests/NET_0025/circle_1.0_rel_requirement.rule
new file mode 100644
index 000000000..fc3f7af80
--- /dev/null
+++ b/res/TensorFlowTests/NET_0025/circle_1.0_rel_requirement.rule
@@ -0,0 +1,8 @@
+# tf2circle-dredd-pbtxt-test against CBR fusion
+
+RULE "VERIFY_FILE_FORMAT" $(verify_file_format) '=' 1 # 1 means verification is OK
+
+RULE "ALL_OP_COUNT" $(all_op_count) '=' 1
+RULE "OP_COUNT_CONV2D" $(op_count CONV_2D) '=' 1
+RULE "WEIGHT_CONST" $(conv2d_weight_not_constant) '=' 0
+RULE "FILE_SIZE" $(file_size) '<' 1040 # As of 191105, file size is 1016
diff --git a/res/TensorFlowTests/NET_0025/test.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.manifest b/res/TensorFlowTests/NET_0025/test.manifest
new file mode 100644
index 000000000..99a2c81a0
--- /dev/null
+++ b/res/TensorFlowTests/NET_0025/test.manifest
@@ -0,0 +1 @@
+SUMMARY: Simple CBR(Conv2D + BiasAdd + ReLU) network
diff --git a/res/TensorFlowTests/NET_0025/test.pbtxt b/res/TensorFlowTests/NET_0025/test.pbtxt
new file mode 100644
index 000000000..e927864d8
--- /dev/null
+++ b/res/TensorFlowTests/NET_0025/test.pbtxt
@@ -0,0 +1,161 @@
+node {
+ name: "InceptionV3/Conv2d_1a_3x3/weights/read/_3__cf__3"
+ op: "Const"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "value"
+ value {
+ tensor {
+ dtype: DT_FLOAT
+ tensor_shape {
+ dim {
+ size: 3
+ }
+ dim {
+ size: 3
+ }
+ dim {
+ size: 3
+ }
+ dim {
+ size: 4
+ }
+ }
+ float_val: 1.0
+ }
+ }
+ }
+}
+node {
+ name: "input"
+ op: "Placeholder"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "shape"
+ value {
+ shape {
+ dim {
+ size: 1
+ }
+ dim {
+ size: 5
+ }
+ dim {
+ size: 5
+ }
+ dim {
+ size: 3
+ }
+ }
+ }
+ }
+}
+node {
+ name: "InceptionV3/InceptionV3/Conv2d_1a_3x3/Conv2D"
+ op: "Conv2D"
+ input: "input:0"
+ input: "InceptionV3/Conv2d_1a_3x3/weights/read/_3__cf__3"
+ attr {
+ key: "T"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "data_format"
+ value {
+ s: "NHWC"
+ }
+ }
+ attr {
+ key: "dilations"
+ value {
+ list {
+ i: 1
+ i: 1
+ i: 1
+ i: 1
+ }
+ }
+ }
+ attr {
+ key: "padding"
+ value {
+ s: "VALID"
+ }
+ }
+ attr {
+ key: "strides"
+ value {
+ list {
+ i: 1
+ i: 2
+ i: 2
+ i: 1
+ }
+ }
+ }
+}
+node {
+ name: "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_0025/tflite_1.0_rel_requirement.rule b/res/TensorFlowTests/NET_0025/tflite_1.0_rel_requirement.rule
new file mode 100644
index 000000000..11296c7d9
--- /dev/null
+++ b/res/TensorFlowTests/NET_0025/tflite_1.0_rel_requirement.rule
@@ -0,0 +1,8 @@
+# tf2tflite-dredd-pbtxt-test against NET_0025, which is CBR(Conv2D + BiasAdd + ReLU) network
+# how to write a RULE:
+# RULE rule_name rule_function(actual value) condition expected_value
+
+RULE "ALL_OP_COUNT" $(all_op_count) '=' 1
+RULE "OP_COUNT_CONV2D" $(op_count CONV_2D) '=' 1
+RULE "WEIGHT_CONST" $(conv2d_weight_not_constant) '=' 0
+RULE "FILE_SIZE" $(file_size) '<' 1040 # As of 191105, file size is 1016
diff --git a/res/TensorFlowTests/NET_0026/test.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..f579f3ef2
--- /dev/null
+++ b/res/TensorFlowTests/NET_0026/test.pbtxt
@@ -0,0 +1,293 @@
+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
+ }
+ }
+ }
+}
+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
+ }
+ }
+ }
+}
+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..95780969b
--- /dev/null
+++ b/res/TensorFlowTests/NET_0027/test.pbtxt
@@ -0,0 +1,470 @@
+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
+ }
+ }
+ }
+}
+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
+ }
+ }
+ }
+}
+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
+ }
+ }
+ }
+}
+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/circle_1.0_rel_requirement.rule b/res/TensorFlowTests/NET_0028/circle_1.0_rel_requirement.rule
new file mode 100644
index 000000000..30185e2b3
--- /dev/null
+++ b/res/TensorFlowTests/NET_0028/circle_1.0_rel_requirement.rule
@@ -0,0 +1,6 @@
+# tf2circle-dredd-pbtxt-test against Instance Norm fusion
+
+RULE "VERIFY_FILE_FORMAT" $(verify_file_format) '=' 1 # 1 means verification is OK
+
+RULE "ALL_OP_COUNT" $(all_op_count) '=' 1
+RULE "OP_COUNT_INSTANCE_NORM" $(op_count INSTANCE_NORM) '=' 1
diff --git a/res/TensorFlowTests/NET_0028/test.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.manifest b/res/TensorFlowTests/NET_0028/test.manifest
new file mode 100644
index 000000000..64ca19d07
--- /dev/null
+++ b/res/TensorFlowTests/NET_0028/test.manifest
@@ -0,0 +1 @@
+SUMMARY: tf.contrib.layers.instance_norm
diff --git a/res/TensorFlowTests/NET_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/NET_0029/test.info b/res/TensorFlowTests/NET_0029/test.info
new file mode 100644
index 000000000..9b3bf7d26
--- /dev/null
+++ b/res/TensorFlowTests/NET_0029/test.info
@@ -0,0 +1,5 @@
+input, Placeholder:0, TF_FLOAT, [1, 2, 3, 1]
+input, Placeholder_1:0, TF_FLOAT, [1, 2, 3, 1]
+input, Placeholder_2:0, TF_FLOAT, [1, 2, 3, 1]
+input, Placeholder_3:0, TF_FLOAT, [1, 2, 3, 1]
+output, concat_2:0, TF_FLOAT, [1, 2, 3, 4]
diff --git a/res/TensorFlowTests/NET_0029/test.manifest b/res/TensorFlowTests/NET_0029/test.manifest
new file mode 100644
index 000000000..33c689b98
--- /dev/null
+++ b/res/TensorFlowTests/NET_0029/test.manifest
@@ -0,0 +1 @@
+SUMMARY: Multiple concats only with same axes, which are consisted only with 2 inputs
diff --git a/res/TensorFlowTests/NET_0029/test.pbtxt b/res/TensorFlowTests/NET_0029/test.pbtxt
new file mode 100644
index 000000000..22d86d07a
--- /dev/null
+++ b/res/TensorFlowTests/NET_0029/test.pbtxt
@@ -0,0 +1,254 @@
+node {
+ name: "Placeholder"
+ op: "Placeholder"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "shape"
+ value {
+ shape {
+ dim {
+ size: 1
+ }
+ dim {
+ size: 2
+ }
+ dim {
+ size: 3
+ }
+ dim {
+ size: 1
+ }
+ }
+ }
+ }
+}
+node {
+ name: "Placeholder_1"
+ op: "Placeholder"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "shape"
+ value {
+ shape {
+ dim {
+ size: 1
+ }
+ dim {
+ size: 2
+ }
+ dim {
+ size: 3
+ }
+ dim {
+ size: 1
+ }
+ }
+ }
+ }
+}
+node {
+ name: "Placeholder_2"
+ op: "Placeholder"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "shape"
+ value {
+ shape {
+ dim {
+ size: 1
+ }
+ dim {
+ size: 2
+ }
+ dim {
+ size: 3
+ }
+ dim {
+ size: 1
+ }
+ }
+ }
+ }
+}
+node {
+ name: "Placeholder_3"
+ op: "Placeholder"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "shape"
+ value {
+ shape {
+ dim {
+ size: 1
+ }
+ dim {
+ size: 2
+ }
+ dim {
+ size: 3
+ }
+ dim {
+ size: 1
+ }
+ }
+ }
+ }
+}
+node {
+ name: "concat/axis"
+ op: "Const"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_INT32
+ }
+ }
+ attr {
+ key: "value"
+ value {
+ tensor {
+ dtype: DT_INT32
+ tensor_shape {
+ }
+ int_val: 3
+ }
+ }
+ }
+}
+node {
+ name: "concat"
+ op: "ConcatV2"
+ input: "Placeholder"
+ input: "Placeholder_1"
+ input: "concat/axis"
+ attr {
+ key: "N"
+ value {
+ i: 2
+ }
+ }
+ attr {
+ key: "T"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "Tidx"
+ value {
+ type: DT_INT32
+ }
+ }
+}
+node {
+ name: "concat_1/axis"
+ op: "Const"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_INT32
+ }
+ }
+ attr {
+ key: "value"
+ value {
+ tensor {
+ dtype: DT_INT32
+ tensor_shape {
+ }
+ int_val: 3
+ }
+ }
+ }
+}
+node {
+ name: "concat_1"
+ op: "ConcatV2"
+ input: "concat"
+ input: "Placeholder_2"
+ input: "concat_1/axis"
+ attr {
+ key: "N"
+ value {
+ i: 2
+ }
+ }
+ attr {
+ key: "T"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "Tidx"
+ value {
+ type: DT_INT32
+ }
+ }
+}
+node {
+ name: "concat_2/axis"
+ op: "Const"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_INT32
+ }
+ }
+ attr {
+ key: "value"
+ value {
+ tensor {
+ dtype: DT_INT32
+ tensor_shape {
+ }
+ int_val: 3
+ }
+ }
+ }
+}
+node {
+ name: "concat_2"
+ op: "ConcatV2"
+ input: "concat_1"
+ input: "Placeholder_3"
+ input: "concat_2/axis"
+ attr {
+ key: "N"
+ value {
+ i: 2
+ }
+ }
+ attr {
+ key: "T"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "Tidx"
+ value {
+ type: DT_INT32
+ }
+ }
+}
diff --git a/res/TensorFlowTests/NET_0030/circle_1.0_rel_requirement.rule b/res/TensorFlowTests/NET_0030/circle_1.0_rel_requirement.rule
new file mode 100644
index 000000000..9f14051c3
--- /dev/null
+++ b/res/TensorFlowTests/NET_0030/circle_1.0_rel_requirement.rule
@@ -0,0 +1,7 @@
+# tf2circle-dredd-pbtxt-test against two Concat ops with same axis
+
+RULE "VERIFY_FILE_FORMAT" $(verify_file_format) '=' 1 # 1 means verification is OK
+
+RULE "ALL_OP_COUNT" $(all_op_count) '=' 1
+RULE "OP_COUNT_CONCATENATION" $(op_count CONCATENATION) '=' 1
+RULE "FILE_SIZE" $(file_size) '<=' 650 # real size is 616 as of 191105
diff --git a/res/TensorFlowTests/NET_0030/test.info b/res/TensorFlowTests/NET_0030/test.info
new file mode 100644
index 000000000..09ae1ec6d
--- /dev/null
+++ b/res/TensorFlowTests/NET_0030/test.info
@@ -0,0 +1,5 @@
+input, Placeholder:0, TF_FLOAT, [1, 1, 1, 1]
+input, Placeholder_1:0, TF_FLOAT, [1, 1, 1, 2]
+input, Placeholder_2:0, TF_FLOAT, [1, 1, 1, 3]
+input, Placeholder_3:0, TF_FLOAT, [1, 1, 1, 4]
+output, concat_1:0, TF_FLOAT, [1, 1, 1, 10]
diff --git a/res/TensorFlowTests/NET_0030/test.manifest b/res/TensorFlowTests/NET_0030/test.manifest
new file mode 100644
index 000000000..b0496d787
--- /dev/null
+++ b/res/TensorFlowTests/NET_0030/test.manifest
@@ -0,0 +1 @@
+SUMMARY: Multiple concats only with same axes, which are consisted with more than 2 inputs
diff --git a/res/TensorFlowTests/NET_0030/test.pbtxt b/res/TensorFlowTests/NET_0030/test.pbtxt
new file mode 100644
index 000000000..270920d9d
--- /dev/null
+++ b/res/TensorFlowTests/NET_0030/test.pbtxt
@@ -0,0 +1,209 @@
+node {
+ name: "Placeholder"
+ op: "Placeholder"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "shape"
+ value {
+ shape {
+ dim {
+ size: 1
+ }
+ dim {
+ size: 1
+ }
+ dim {
+ size: 1
+ }
+ dim {
+ size: 1
+ }
+ }
+ }
+ }
+}
+node {
+ name: "Placeholder_1"
+ op: "Placeholder"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "shape"
+ value {
+ shape {
+ dim {
+ size: 1
+ }
+ dim {
+ size: 1
+ }
+ dim {
+ size: 1
+ }
+ dim {
+ size: 2
+ }
+ }
+ }
+ }
+}
+node {
+ name: "Placeholder_2"
+ op: "Placeholder"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "shape"
+ value {
+ shape {
+ dim {
+ size: 1
+ }
+ dim {
+ size: 1
+ }
+ dim {
+ size: 1
+ }
+ dim {
+ size: 3
+ }
+ }
+ }
+ }
+}
+node {
+ name: "Placeholder_3"
+ op: "Placeholder"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "shape"
+ value {
+ shape {
+ dim {
+ size: 1
+ }
+ dim {
+ size: 1
+ }
+ dim {
+ size: 1
+ }
+ dim {
+ size: 4
+ }
+ }
+ }
+ }
+}
+node {
+ name: "concat/axis"
+ op: "Const"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_INT32
+ }
+ }
+ attr {
+ key: "value"
+ value {
+ tensor {
+ dtype: DT_INT32
+ tensor_shape {
+ }
+ int_val: 3
+ }
+ }
+ }
+}
+node {
+ name: "concat"
+ op: "ConcatV2"
+ input: "Placeholder_1"
+ input: "Placeholder_2"
+ input: "concat/axis"
+ attr {
+ key: "N"
+ value {
+ i: 2
+ }
+ }
+ attr {
+ key: "T"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "Tidx"
+ value {
+ type: DT_INT32
+ }
+ }
+}
+node {
+ name: "concat_1/axis"
+ op: "Const"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_INT32
+ }
+ }
+ attr {
+ key: "value"
+ value {
+ tensor {
+ dtype: DT_INT32
+ tensor_shape {
+ }
+ int_val: 3
+ }
+ }
+ }
+}
+node {
+ name: "concat_1"
+ op: "ConcatV2"
+ input: "Placeholder"
+ input: "concat"
+ input: "Placeholder_3"
+ input: "concat_1/axis"
+ attr {
+ key: "N"
+ value {
+ i: 3
+ }
+ }
+ attr {
+ key: "T"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "Tidx"
+ value {
+ type: DT_INT32
+ }
+ }
+}
diff --git a/res/TensorFlowTests/NET_0031/test.info b/res/TensorFlowTests/NET_0031/test.info
new file mode 100644
index 000000000..9c2d6364a
--- /dev/null
+++ b/res/TensorFlowTests/NET_0031/test.info
@@ -0,0 +1,6 @@
+input, Placeholder:0, TF_FLOAT, [1, 1, 1, 1]
+input, Placeholder_1:0, TF_FLOAT, [1, 1, 1, 1]
+input, Placeholder_2:0, TF_FLOAT, [1, 1, 2, 1]
+input, Placeholder_3:0, TF_FLOAT, [1, 1, 2, 2]
+input, Placeholder_4:0, TF_FLOAT, [1, 1, 2, 4]
+output, concat_3:0, TF_FLOAT, [1, 2, 2, 4]
diff --git a/res/TensorFlowTests/NET_0031/test.manifest b/res/TensorFlowTests/NET_0031/test.manifest
new file mode 100644
index 000000000..0bb09e5c1
--- /dev/null
+++ b/res/TensorFlowTests/NET_0031/test.manifest
@@ -0,0 +1 @@
+SUMMARY: Multiple concats with different axes. Concats with same axes are non-terminal but possible to merge
diff --git a/res/TensorFlowTests/NET_0031/test.pbtxt b/res/TensorFlowTests/NET_0031/test.pbtxt
new file mode 100644
index 000000000..6c152ea5c
--- /dev/null
+++ b/res/TensorFlowTests/NET_0031/test.pbtxt
@@ -0,0 +1,329 @@
+node {
+ name: "Placeholder"
+ op: "Placeholder"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "shape"
+ value {
+ shape {
+ dim {
+ size: 1
+ }
+ dim {
+ size: 1
+ }
+ dim {
+ size: 1
+ }
+ dim {
+ size: 1
+ }
+ }
+ }
+ }
+}
+node {
+ name: "Placeholder_1"
+ op: "Placeholder"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "shape"
+ value {
+ shape {
+ dim {
+ size: 1
+ }
+ dim {
+ size: 1
+ }
+ dim {
+ size: 1
+ }
+ dim {
+ size: 1
+ }
+ }
+ }
+ }
+}
+node {
+ name: "Placeholder_2"
+ op: "Placeholder"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "shape"
+ value {
+ shape {
+ dim {
+ size: 1
+ }
+ dim {
+ size: 1
+ }
+ dim {
+ size: 2
+ }
+ dim {
+ size: 1
+ }
+ }
+ }
+ }
+}
+node {
+ name: "Placeholder_3"
+ op: "Placeholder"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "shape"
+ value {
+ shape {
+ dim {
+ size: 1
+ }
+ dim {
+ size: 1
+ }
+ dim {
+ size: 2
+ }
+ dim {
+ size: 2
+ }
+ }
+ }
+ }
+}
+node {
+ name: "Placeholder_4"
+ op: "Placeholder"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "shape"
+ value {
+ shape {
+ dim {
+ size: 1
+ }
+ dim {
+ size: 1
+ }
+ dim {
+ size: 2
+ }
+ dim {
+ size: 4
+ }
+ }
+ }
+ }
+}
+node {
+ name: "concat/axis"
+ op: "Const"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_INT32
+ }
+ }
+ attr {
+ key: "value"
+ value {
+ tensor {
+ dtype: DT_INT32
+ tensor_shape {
+ }
+ int_val: 2
+ }
+ }
+ }
+}
+node {
+ name: "concat"
+ op: "ConcatV2"
+ input: "Placeholder"
+ input: "Placeholder_1"
+ input: "concat/axis"
+ attr {
+ key: "N"
+ value {
+ i: 2
+ }
+ }
+ attr {
+ key: "T"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "Tidx"
+ value {
+ type: DT_INT32
+ }
+ }
+}
+node {
+ name: "concat_1/axis"
+ op: "Const"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_INT32
+ }
+ }
+ attr {
+ key: "value"
+ value {
+ tensor {
+ dtype: DT_INT32
+ tensor_shape {
+ }
+ int_val: 3
+ }
+ }
+ }
+}
+node {
+ name: "concat_1"
+ op: "ConcatV2"
+ input: "concat"
+ input: "Placeholder_2"
+ input: "concat_1/axis"
+ attr {
+ key: "N"
+ value {
+ i: 2
+ }
+ }
+ attr {
+ key: "T"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "Tidx"
+ value {
+ type: DT_INT32
+ }
+ }
+}
+node {
+ name: "concat_2/axis"
+ op: "Const"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_INT32
+ }
+ }
+ attr {
+ key: "value"
+ value {
+ tensor {
+ dtype: DT_INT32
+ tensor_shape {
+ }
+ int_val: 3
+ }
+ }
+ }
+}
+node {
+ name: "concat_2"
+ op: "ConcatV2"
+ input: "concat_1"
+ input: "Placeholder_3"
+ input: "concat_2/axis"
+ attr {
+ key: "N"
+ value {
+ i: 2
+ }
+ }
+ attr {
+ key: "T"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "Tidx"
+ value {
+ type: DT_INT32
+ }
+ }
+}
+node {
+ name: "concat_3/axis"
+ op: "Const"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_INT32
+ }
+ }
+ attr {
+ key: "value"
+ value {
+ tensor {
+ dtype: DT_INT32
+ tensor_shape {
+ }
+ int_val: 1
+ }
+ }
+ }
+}
+node {
+ name: "concat_3"
+ op: "ConcatV2"
+ input: "concat_2"
+ input: "Placeholder_4"
+ input: "concat_3/axis"
+ attr {
+ key: "N"
+ value {
+ i: 2
+ }
+ }
+ attr {
+ key: "T"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "Tidx"
+ value {
+ type: DT_INT32
+ }
+ }
+}
diff --git a/res/TensorFlowTests/NET_0032/test.info b/res/TensorFlowTests/NET_0032/test.info
new file mode 100644
index 000000000..d0f91d107
--- /dev/null
+++ b/res/TensorFlowTests/NET_0032/test.info
@@ -0,0 +1,7 @@
+# The number of final concat nodes should be 3
+input, Placeholder:0, TF_FLOAT, [1, 2, 3, 1]
+input, Placeholder_1:0, TF_FLOAT, [1, 2, 3, 1]
+input, Placeholder_2:0, TF_FLOAT, [1, 2, 3, 1]
+input, Placeholder_3:0, TF_FLOAT, [1, 1, 3, 3]
+input, Placeholder_4:0, TF_FLOAT, [1, 1, 3, 3]
+output, concat_3:0, TF_FLOAT, [1, 2, 6, 3]
diff --git a/res/TensorFlowTests/NET_0032/test.manifest b/res/TensorFlowTests/NET_0032/test.manifest
new file mode 100644
index 000000000..714581b0c
--- /dev/null
+++ b/res/TensorFlowTests/NET_0032/test.manifest
@@ -0,0 +1 @@
+SUMMARY: Multiple concats with different axes. Concats with same axes are terminal and possible to merge
diff --git a/res/TensorFlowTests/NET_0032/test.pbtxt b/res/TensorFlowTests/NET_0032/test.pbtxt
new file mode 100644
index 000000000..2ef2c587e
--- /dev/null
+++ b/res/TensorFlowTests/NET_0032/test.pbtxt
@@ -0,0 +1,329 @@
+node {
+ name: "Placeholder"
+ op: "Placeholder"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "shape"
+ value {
+ shape {
+ dim {
+ size: 1
+ }
+ dim {
+ size: 2
+ }
+ dim {
+ size: 3
+ }
+ dim {
+ size: 1
+ }
+ }
+ }
+ }
+}
+node {
+ name: "Placeholder_1"
+ op: "Placeholder"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "shape"
+ value {
+ shape {
+ dim {
+ size: 1
+ }
+ dim {
+ size: 2
+ }
+ dim {
+ size: 3
+ }
+ dim {
+ size: 1
+ }
+ }
+ }
+ }
+}
+node {
+ name: "Placeholder_2"
+ op: "Placeholder"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "shape"
+ value {
+ shape {
+ dim {
+ size: 1
+ }
+ dim {
+ size: 2
+ }
+ dim {
+ size: 3
+ }
+ dim {
+ size: 1
+ }
+ }
+ }
+ }
+}
+node {
+ name: "Placeholder_3"
+ op: "Placeholder"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "shape"
+ value {
+ shape {
+ dim {
+ size: 1
+ }
+ dim {
+ size: 1
+ }
+ dim {
+ size: 3
+ }
+ dim {
+ size: 3
+ }
+ }
+ }
+ }
+}
+node {
+ name: "Placeholder_4"
+ op: "Placeholder"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "shape"
+ value {
+ shape {
+ dim {
+ size: 1
+ }
+ dim {
+ size: 1
+ }
+ dim {
+ size: 3
+ }
+ dim {
+ size: 3
+ }
+ }
+ }
+ }
+}
+node {
+ name: "concat/axis"
+ op: "Const"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_INT32
+ }
+ }
+ attr {
+ key: "value"
+ value {
+ tensor {
+ dtype: DT_INT32
+ tensor_shape {
+ }
+ int_val: 3
+ }
+ }
+ }
+}
+node {
+ name: "concat"
+ op: "ConcatV2"
+ input: "Placeholder"
+ input: "Placeholder_1"
+ input: "concat/axis"
+ attr {
+ key: "N"
+ value {
+ i: 2
+ }
+ }
+ attr {
+ key: "T"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "Tidx"
+ value {
+ type: DT_INT32
+ }
+ }
+}
+node {
+ name: "concat_1/axis"
+ op: "Const"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_INT32
+ }
+ }
+ attr {
+ key: "value"
+ value {
+ tensor {
+ dtype: DT_INT32
+ tensor_shape {
+ }
+ int_val: 3
+ }
+ }
+ }
+}
+node {
+ name: "concat_1"
+ op: "ConcatV2"
+ input: "concat"
+ input: "Placeholder_2"
+ input: "concat_1/axis"
+ attr {
+ key: "N"
+ value {
+ i: 2
+ }
+ }
+ attr {
+ key: "T"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "Tidx"
+ value {
+ type: DT_INT32
+ }
+ }
+}
+node {
+ name: "concat_2/axis"
+ op: "Const"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_INT32
+ }
+ }
+ attr {
+ key: "value"
+ value {
+ tensor {
+ dtype: DT_INT32
+ tensor_shape {
+ }
+ int_val: 1
+ }
+ }
+ }
+}
+node {
+ name: "concat_2"
+ op: "ConcatV2"
+ input: "Placeholder_4"
+ input: "Placeholder_3"
+ input: "concat_2/axis"
+ attr {
+ key: "N"
+ value {
+ i: 2
+ }
+ }
+ attr {
+ key: "T"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "Tidx"
+ value {
+ type: DT_INT32
+ }
+ }
+}
+node {
+ name: "concat_3/axis"
+ op: "Const"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_INT32
+ }
+ }
+ attr {
+ key: "value"
+ value {
+ tensor {
+ dtype: DT_INT32
+ tensor_shape {
+ }
+ int_val: 2
+ }
+ }
+ }
+}
+node {
+ name: "concat_3"
+ op: "ConcatV2"
+ input: "concat_1"
+ input: "concat_2"
+ input: "concat_3/axis"
+ attr {
+ key: "N"
+ value {
+ i: 2
+ }
+ }
+ attr {
+ key: "T"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "Tidx"
+ value {
+ type: DT_INT32
+ }
+ }
+}
diff --git a/res/TensorFlowTests/NET_0033/test.info b/res/TensorFlowTests/NET_0033/test.info
new file mode 100644
index 000000000..30a242554
--- /dev/null
+++ b/res/TensorFlowTests/NET_0033/test.info
@@ -0,0 +1,7 @@
+# The number of final concat node should be 3
+input, Placeholder:0, TF_FLOAT, [1, 2, 3, 1]
+input, Placeholder_1:0, TF_FLOAT, [1, 2, 3, 1]
+input, Placeholder_2:0, TF_FLOAT, [1, 2, 3, 2]
+input, Placeholder_3:0, TF_FLOAT, [1, 2, 3, 2]
+input, Placeholder_4:0, TF_FLOAT, [1, 2, 3, 2]
+output, concat_3:0, TF_FLOAT, [1, 4, 6, 2]
diff --git a/res/TensorFlowTests/NET_0033/test.manifest b/res/TensorFlowTests/NET_0033/test.manifest
new file mode 100644
index 000000000..0c1ddcd4b
--- /dev/null
+++ b/res/TensorFlowTests/NET_0033/test.manifest
@@ -0,0 +1 @@
+SUMMARY: Multiple concats with different axes. Concats with same axes are non-terminal and not possible to merge
diff --git a/res/TensorFlowTests/NET_0033/test.pbtxt b/res/TensorFlowTests/NET_0033/test.pbtxt
new file mode 100644
index 000000000..c43940f0b
--- /dev/null
+++ b/res/TensorFlowTests/NET_0033/test.pbtxt
@@ -0,0 +1,329 @@
+node {
+ name: "Placeholder"
+ op: "Placeholder"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "shape"
+ value {
+ shape {
+ dim {
+ size: 1
+ }
+ dim {
+ size: 2
+ }
+ dim {
+ size: 3
+ }
+ dim {
+ size: 1
+ }
+ }
+ }
+ }
+}
+node {
+ name: "Placeholder_1"
+ op: "Placeholder"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "shape"
+ value {
+ shape {
+ dim {
+ size: 1
+ }
+ dim {
+ size: 2
+ }
+ dim {
+ size: 3
+ }
+ dim {
+ size: 1
+ }
+ }
+ }
+ }
+}
+node {
+ name: "Placeholder_2"
+ op: "Placeholder"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "shape"
+ value {
+ shape {
+ dim {
+ size: 1
+ }
+ dim {
+ size: 2
+ }
+ dim {
+ size: 3
+ }
+ dim {
+ size: 2
+ }
+ }
+ }
+ }
+}
+node {
+ name: "Placeholder_3"
+ op: "Placeholder"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "shape"
+ value {
+ shape {
+ dim {
+ size: 1
+ }
+ dim {
+ size: 2
+ }
+ dim {
+ size: 3
+ }
+ dim {
+ size: 2
+ }
+ }
+ }
+ }
+}
+node {
+ name: "Placeholder_4"
+ op: "Placeholder"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "shape"
+ value {
+ shape {
+ dim {
+ size: 1
+ }
+ dim {
+ size: 2
+ }
+ dim {
+ size: 3
+ }
+ dim {
+ size: 2
+ }
+ }
+ }
+ }
+}
+node {
+ name: "concat/axis"
+ op: "Const"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_INT32
+ }
+ }
+ attr {
+ key: "value"
+ value {
+ tensor {
+ dtype: DT_INT32
+ tensor_shape {
+ }
+ int_val: 3
+ }
+ }
+ }
+}
+node {
+ name: "concat"
+ op: "ConcatV2"
+ input: "Placeholder"
+ input: "Placeholder_1"
+ input: "concat/axis"
+ attr {
+ key: "N"
+ value {
+ i: 2
+ }
+ }
+ attr {
+ key: "T"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "Tidx"
+ value {
+ type: DT_INT32
+ }
+ }
+}
+node {
+ name: "concat_1/axis"
+ op: "Const"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_INT32
+ }
+ }
+ attr {
+ key: "value"
+ value {
+ tensor {
+ dtype: DT_INT32
+ tensor_shape {
+ }
+ int_val: 1
+ }
+ }
+ }
+}
+node {
+ name: "concat_1"
+ op: "ConcatV2"
+ input: "concat"
+ input: "Placeholder_2"
+ input: "concat_1/axis"
+ attr {
+ key: "N"
+ value {
+ i: 2
+ }
+ }
+ attr {
+ key: "T"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "Tidx"
+ value {
+ type: DT_INT32
+ }
+ }
+}
+node {
+ name: "concat_2/axis"
+ op: "Const"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_INT32
+ }
+ }
+ attr {
+ key: "value"
+ value {
+ tensor {
+ dtype: DT_INT32
+ tensor_shape {
+ }
+ int_val: 1
+ }
+ }
+ }
+}
+node {
+ name: "concat_2"
+ op: "ConcatV2"
+ input: "Placeholder_4"
+ input: "Placeholder_3"
+ input: "concat_2/axis"
+ attr {
+ key: "N"
+ value {
+ i: 2
+ }
+ }
+ attr {
+ key: "T"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "Tidx"
+ value {
+ type: DT_INT32
+ }
+ }
+}
+node {
+ name: "concat_3/axis"
+ op: "Const"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_INT32
+ }
+ }
+ attr {
+ key: "value"
+ value {
+ tensor {
+ dtype: DT_INT32
+ tensor_shape {
+ }
+ int_val: 2
+ }
+ }
+ }
+}
+node {
+ name: "concat_3"
+ op: "ConcatV2"
+ input: "concat_1"
+ input: "concat_2"
+ input: "concat_3/axis"
+ attr {
+ key: "N"
+ value {
+ i: 2
+ }
+ }
+ attr {
+ key: "T"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "Tidx"
+ value {
+ type: DT_INT32
+ }
+ }
+}
diff --git a/res/TensorFlowTests/NET_0034/test.info b/res/TensorFlowTests/NET_0034/test.info
new file mode 100644
index 000000000..c3c5e2c7b
--- /dev/null
+++ b/res/TensorFlowTests/NET_0034/test.info
@@ -0,0 +1,2 @@
+input, Placeholder:0, TF_FLOAT, [1, 3, 3, 5]
+output, Sub:0, TF_FLOAT, [1, 3, 3, 2]
diff --git a/res/TensorFlowTests/NET_0034/test.manifest b/res/TensorFlowTests/NET_0034/test.manifest
new file mode 100644
index 000000000..3a49e0442
--- /dev/null
+++ b/res/TensorFlowTests/NET_0034/test.manifest
@@ -0,0 +1 @@
+SUMMARY: A simple network that has "Conv2D" + "Sub"
diff --git a/res/TensorFlowTests/NET_0034/test.pbtxt b/res/TensorFlowTests/NET_0034/test.pbtxt
new file mode 100644
index 000000000..fec15368b
--- /dev/null
+++ b/res/TensorFlowTests/NET_0034/test.pbtxt
@@ -0,0 +1,144 @@
+node {
+ name: "Placeholder"
+ op: "Placeholder"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "shape"
+ value {
+ shape {
+ dim {
+ size: 1
+ }
+ dim {
+ size: 3
+ }
+ dim {
+ size: 3
+ }
+ dim {
+ size: 5
+ }
+ }
+ }
+ }
+}
+node {
+ name: "weights"
+ op: "Const"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "value"
+ value {
+ tensor {
+ dtype: DT_FLOAT
+ tensor_shape {
+ dim {
+ size: 2
+ }
+ dim {
+ size: 2
+ }
+ dim {
+ size: 5
+ }
+ dim {
+ size: 2
+ }
+ }
+ float_val: 1.100000023841858
+ }
+ }
+ }
+}
+node {
+ name: "Conv2D"
+ op: "Conv2D"
+ input: "Placeholder"
+ input: "weights"
+ attr {
+ key: "T"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "data_format"
+ value {
+ s: "NHWC"
+ }
+ }
+ attr {
+ key: "dilations"
+ value {
+ list {
+ i: 1
+ i: 1
+ i: 1
+ i: 1
+ }
+ }
+ }
+ attr {
+ key: "padding"
+ value {
+ s: "SAME"
+ }
+ }
+ attr {
+ key: "strides"
+ value {
+ list {
+ i: 1
+ i: 1
+ i: 1
+ i: 1
+ }
+ }
+ }
+}
+node {
+ name: "subparam"
+ op: "Const"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "value"
+ value {
+ tensor {
+ dtype: DT_FLOAT
+ tensor_shape {
+ dim {
+ size: 2
+ }
+ }
+ float_val: 2.0
+ }
+ }
+ }
+}
+node {
+ name: "Sub"
+ op: "Sub"
+ input: "Conv2D"
+ input: "subparam"
+ attr {
+ key: "T"
+ value {
+ type: DT_FLOAT
+ }
+ }
+}
diff --git a/res/TensorFlowTests/NET_0035/test.info b/res/TensorFlowTests/NET_0035/test.info
new file mode 100644
index 000000000..67e44af48
--- /dev/null
+++ b/res/TensorFlowTests/NET_0035/test.info
@@ -0,0 +1,2 @@
+input, input:0, TF_FLOAT, [1, 5, 5, 3]
+output, out:0, TF_FLOAT, [1, 2, 2, 4]
diff --git a/res/TensorFlowTests/NET_0035/test.manifest b/res/TensorFlowTests/NET_0035/test.manifest
new file mode 100644
index 000000000..f9578c878
--- /dev/null
+++ b/res/TensorFlowTests/NET_0035/test.manifest
@@ -0,0 +1 @@
+SUMMARY: Conv2D + BiasAdd + ReLU6 network
diff --git a/res/TensorFlowTests/NET_0035/test.pbtxt b/res/TensorFlowTests/NET_0035/test.pbtxt
new file mode 100644
index 000000000..ae4913628
--- /dev/null
+++ b/res/TensorFlowTests/NET_0035/test.pbtxt
@@ -0,0 +1,161 @@
+node {
+ name: "kernel"
+ op: "Const"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "value"
+ value {
+ tensor {
+ dtype: DT_FLOAT
+ tensor_shape {
+ dim {
+ size: 3
+ }
+ dim {
+ size: 3
+ }
+ dim {
+ size: 3
+ }
+ dim {
+ size: 4
+ }
+ }
+ float_val: 1.0
+ }
+ }
+ }
+}
+node {
+ name: "input"
+ op: "Placeholder"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "shape"
+ value {
+ shape {
+ dim {
+ size: 1
+ }
+ dim {
+ size: 5
+ }
+ dim {
+ size: 5
+ }
+ dim {
+ size: 3
+ }
+ }
+ }
+ }
+}
+node {
+ name: "conv2d"
+ op: "Conv2D"
+ input: "input:0"
+ input: "kernel"
+ attr {
+ key: "T"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "data_format"
+ value {
+ s: "NHWC"
+ }
+ }
+ attr {
+ key: "dilations"
+ value {
+ list {
+ i: 1
+ i: 1
+ i: 1
+ i: 1
+ }
+ }
+ }
+ attr {
+ key: "padding"
+ value {
+ s: "VALID"
+ }
+ }
+ attr {
+ key: "strides"
+ value {
+ list {
+ i: 1
+ i: 2
+ i: 2
+ i: 1
+ }
+ }
+ }
+}
+node {
+ name: "bias"
+ op: "Const"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "value"
+ value {
+ tensor {
+ dtype: DT_FLOAT
+ tensor_shape {
+ dim {
+ size: 4
+ }
+ }
+ float_val: 1.0
+ }
+ }
+ }
+}
+node {
+ name: "biasadd"
+ op: "BiasAdd"
+ input: "conv2d"
+ input: "bias"
+ attr {
+ key: "T"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "data_format"
+ value {
+ s: "NHWC"
+ }
+ }
+}
+node {
+ name: "out"
+ op: "Relu6"
+ input: "biasadd"
+ attr {
+ key: "T"
+ value {
+ type: DT_FLOAT
+ }
+ }
+}
diff --git a/res/TensorFlowTests/NET_0036/test.info b/res/TensorFlowTests/NET_0036/test.info
new file mode 100644
index 000000000..42e88c141
--- /dev/null
+++ b/res/TensorFlowTests/NET_0036/test.info
@@ -0,0 +1,2 @@
+input, input:0, TF_FLOAT, [1, 5, 5, 3]
+output, relu:0, TF_FLOAT, [1, 2, 2, 4]
diff --git a/res/TensorFlowTests/NET_0036/test.manifest b/res/TensorFlowTests/NET_0036/test.manifest
new file mode 100644
index 000000000..820ab402b
--- /dev/null
+++ b/res/TensorFlowTests/NET_0036/test.manifest
@@ -0,0 +1 @@
+SUMMARY: Conv2D + Add + ReLU where Add's Const operand is a scalar (size 1 tensor)
diff --git a/res/TensorFlowTests/NET_0036/test.pbtxt b/res/TensorFlowTests/NET_0036/test.pbtxt
new file mode 100644
index 000000000..3c9cdecd5
--- /dev/null
+++ b/res/TensorFlowTests/NET_0036/test.pbtxt
@@ -0,0 +1,146 @@
+# Conv2D and its inputs are borrowed from NET_0025.
+node {
+ name: "InceptionV3/Conv2d_1a_3x3/weights/read/_3__cf__3"
+ op: "Const"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "value"
+ value {
+ tensor {
+ dtype: DT_FLOAT
+ tensor_shape {
+ dim {
+ size: 3
+ }
+ dim {
+ size: 3
+ }
+ dim {
+ size: 3
+ }
+ dim {
+ size: 4
+ }
+ }
+ float_val: 1.0
+ }
+ }
+ }
+}
+node {
+ name: "input"
+ op: "Placeholder"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "shape"
+ value {
+ shape {
+ dim {
+ size: 1
+ }
+ dim {
+ size: 5
+ }
+ dim {
+ size: 5
+ }
+ dim {
+ size: 3
+ }
+ }
+ }
+ }
+}
+node {
+ name: "InceptionV3/InceptionV3/Conv2d_1a_3x3/Conv2D"
+ op: "Conv2D"
+ input: "input:0"
+ input: "InceptionV3/Conv2d_1a_3x3/weights/read/_3__cf__3"
+ attr {
+ key: "T"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "data_format"
+ value {
+ s: "NHWC"
+ }
+ }
+ attr {
+ key: "dilations"
+ value {
+ list {
+ i: 1
+ i: 1
+ i: 1
+ i: 1
+ }
+ }
+ }
+ attr {
+ key: "padding"
+ value {
+ s: "VALID"
+ }
+ }
+ attr {
+ key: "strides"
+ value {
+ list {
+ i: 1
+ i: 2
+ i: 2
+ i: 1
+ }
+ }
+ }
+}
+node {
+ name: "add_const"
+ op: "Const"
+ attr {
+ key: "dtype"
+ value { type: DT_FLOAT }
+ }
+ attr {
+ key: "value"
+ value {
+ tensor {
+ dtype: DT_FLOAT
+ tensor_shape { dim { size: 1 } }
+ float_val: 1.0
+ }
+ }
+ }
+}
+node {
+ name: "add"
+ op: "Add"
+ input: "InceptionV3/InceptionV3/Conv2d_1a_3x3/Conv2D"
+ input: "add_const"
+ attr {
+ key: "T"
+ value { type: DT_FLOAT }
+ }
+}
+node {
+ name: "relu"
+ op: "Relu"
+ input: "add"
+ attr {
+ key: "T"
+ value { type: DT_FLOAT }
+ }
+}
diff --git a/res/TensorFlowTests/NET_0037/test.info b/res/TensorFlowTests/NET_0037/test.info
new file mode 100644
index 000000000..42e88c141
--- /dev/null
+++ b/res/TensorFlowTests/NET_0037/test.info
@@ -0,0 +1,2 @@
+input, input:0, TF_FLOAT, [1, 5, 5, 3]
+output, relu:0, TF_FLOAT, [1, 2, 2, 4]
diff --git a/res/TensorFlowTests/NET_0037/test.manifest b/res/TensorFlowTests/NET_0037/test.manifest
new file mode 100644
index 000000000..b82ccb623
--- /dev/null
+++ b/res/TensorFlowTests/NET_0037/test.manifest
@@ -0,0 +1 @@
+SUMMARY: Conv2D + ReLU + Add
diff --git a/res/TensorFlowTests/NET_0037/test.pbtxt b/res/TensorFlowTests/NET_0037/test.pbtxt
new file mode 100644
index 000000000..674366fa6
--- /dev/null
+++ b/res/TensorFlowTests/NET_0037/test.pbtxt
@@ -0,0 +1,146 @@
+# Conv2D and its inputs are borrowed from NET_0025.
+node {
+ name: "InceptionV3/Conv2d_1a_3x3/weights/read/_3__cf__3"
+ op: "Const"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "value"
+ value {
+ tensor {
+ dtype: DT_FLOAT
+ tensor_shape {
+ dim {
+ size: 3
+ }
+ dim {
+ size: 3
+ }
+ dim {
+ size: 3
+ }
+ dim {
+ size: 4
+ }
+ }
+ float_val: 1.0
+ }
+ }
+ }
+}
+node {
+ name: "input"
+ op: "Placeholder"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "shape"
+ value {
+ shape {
+ dim {
+ size: 1
+ }
+ dim {
+ size: 5
+ }
+ dim {
+ size: 5
+ }
+ dim {
+ size: 3
+ }
+ }
+ }
+ }
+}
+node {
+ name: "InceptionV3/InceptionV3/Conv2d_1a_3x3/Conv2D"
+ op: "Conv2D"
+ input: "input:0"
+ input: "InceptionV3/Conv2d_1a_3x3/weights/read/_3__cf__3"
+ attr {
+ key: "T"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "data_format"
+ value {
+ s: "NHWC"
+ }
+ }
+ attr {
+ key: "dilations"
+ value {
+ list {
+ i: 1
+ i: 1
+ i: 1
+ i: 1
+ }
+ }
+ }
+ attr {
+ key: "padding"
+ value {
+ s: "VALID"
+ }
+ }
+ attr {
+ key: "strides"
+ value {
+ list {
+ i: 1
+ i: 2
+ i: 2
+ i: 1
+ }
+ }
+ }
+}
+node {
+ name: "relu"
+ op: "Relu"
+ input: "InceptionV3/InceptionV3/Conv2d_1a_3x3/Conv2D"
+ attr {
+ key: "T"
+ value { type: DT_FLOAT }
+ }
+}
+node {
+ name: "add_const"
+ op: "Const"
+ attr {
+ key: "dtype"
+ value { type: DT_FLOAT }
+ }
+ attr {
+ key: "value"
+ value {
+ tensor {
+ dtype: DT_FLOAT
+ tensor_shape { dim { size: 1 } }
+ float_val: 1.0
+ }
+ }
+ }
+}
+node {
+ name: "add"
+ op: "Add"
+ input: "relu"
+ input: "add_const"
+ attr {
+ key: "T"
+ value { type: DT_FLOAT }
+ }
+}
diff --git a/res/TensorFlowTests/NET_0038/test.info b/res/TensorFlowTests/NET_0038/test.info
new file mode 100644
index 000000000..099f3d613
--- /dev/null
+++ b/res/TensorFlowTests/NET_0038/test.info
@@ -0,0 +1,2 @@
+input, input:0, TF_FLOAT, [1, 11, 7, 3]
+output, output/relu:0, TF_FLOAT, [1, 6, 4, 12]
diff --git a/res/TensorFlowTests/NET_0038/test.manifest b/res/TensorFlowTests/NET_0038/test.manifest
new file mode 100644
index 000000000..929125e7e
--- /dev/null
+++ b/res/TensorFlowTests/NET_0038/test.manifest
@@ -0,0 +1 @@
+SUMMARY: DepthwiseConv2D + Relu
diff --git a/res/TensorFlowTests/NET_0038/test.pbtxt b/res/TensorFlowTests/NET_0038/test.pbtxt
new file mode 100644
index 000000000..b71e58f75
--- /dev/null
+++ b/res/TensorFlowTests/NET_0038/test.pbtxt
@@ -0,0 +1,121 @@
+# DepthwiseConv2dNative node is borrowed from UNIT_DepthwiseConv2dNative_000.
+node {
+ name: "input"
+ op: "Placeholder"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "shape"
+ value {
+ shape {
+ dim {
+ size: 1
+ }
+ dim {
+ size: 11
+ }
+ dim {
+ size: 7
+ }
+ dim {
+ size: 3
+ }
+ }
+ }
+ }
+}
+node {
+ name: "Const"
+ op: "Const"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "value"
+ value {
+ tensor {
+ dtype: DT_FLOAT
+ tensor_shape {
+ dim {
+ size: 2
+ }
+ dim {
+ size: 3
+ }
+ dim {
+ size: 3
+ }
+ dim {
+ size: 4
+ }
+ }
+ float_val: 1.0
+ }
+ }
+ }
+}
+node {
+ name: "DepthwiseConv2dNative"
+ op: "DepthwiseConv2dNative"
+ input: "input"
+ input: "Const"
+ attr {
+ key: "T"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "data_format"
+ value {
+ s: "NHWC"
+ }
+ }
+ attr {
+ key: "dilations"
+ value {
+ list {
+ i: 1
+ i: 1
+ i: 1
+ i: 1
+ }
+ }
+ }
+ attr {
+ key: "padding"
+ value {
+ s: "SAME"
+ }
+ }
+ attr {
+ key: "strides"
+ value {
+ list {
+ i: 1
+ i: 2
+ i: 2
+ i: 1
+ }
+ }
+ }
+}
+
+node {
+ name: "output/relu"
+ op: "Relu"
+ input: "DepthwiseConv2dNative"
+ attr {
+ key: "T"
+ value {
+ type: DT_FLOAT
+ }
+ }
+}
diff --git a/res/TensorFlowTests/NET_0039/test.info b/res/TensorFlowTests/NET_0039/test.info
new file mode 100644
index 000000000..73c44638d
--- /dev/null
+++ b/res/TensorFlowTests/NET_0039/test.info
@@ -0,0 +1,2 @@
+input, input:0, TF_FLOAT, [1, 11, 7, 3]
+output, add:0, TF_FLOAT, [1, 6, 4, 12]
diff --git a/res/TensorFlowTests/NET_0039/test.manifest b/res/TensorFlowTests/NET_0039/test.manifest
new file mode 100644
index 000000000..783207476
--- /dev/null
+++ b/res/TensorFlowTests/NET_0039/test.manifest
@@ -0,0 +1 @@
+SUMMARY: DepthwiseConv2D + Add
diff --git a/res/TensorFlowTests/NET_0039/test.pbtxt b/res/TensorFlowTests/NET_0039/test.pbtxt
new file mode 100644
index 000000000..25f459943
--- /dev/null
+++ b/res/TensorFlowTests/NET_0039/test.pbtxt
@@ -0,0 +1,146 @@
+# DepthwiseConv2dNative node is borrowed from UNIT_DepthwiseConv2dNative_000.
+node {
+ name: "input"
+ op: "Placeholder"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "shape"
+ value {
+ shape {
+ dim {
+ size: 1
+ }
+ dim {
+ size: 11
+ }
+ dim {
+ size: 7
+ }
+ dim {
+ size: 3
+ }
+ }
+ }
+ }
+}
+node {
+ name: "Const"
+ op: "Const"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "value"
+ value {
+ tensor {
+ dtype: DT_FLOAT
+ tensor_shape {
+ dim {
+ size: 2
+ }
+ dim {
+ size: 3
+ }
+ dim {
+ size: 3
+ }
+ dim {
+ size: 4
+ }
+ }
+ float_val: 1.0
+ }
+ }
+ }
+}
+node {
+ name: "DepthwiseConv2dNative"
+ op: "DepthwiseConv2dNative"
+ input: "input"
+ input: "Const"
+ attr {
+ key: "T"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "data_format"
+ value {
+ s: "NHWC"
+ }
+ }
+ attr {
+ key: "dilations"
+ value {
+ list {
+ i: 1
+ i: 1
+ i: 1
+ i: 1
+ }
+ }
+ }
+ attr {
+ key: "padding"
+ value {
+ s: "SAME"
+ }
+ }
+ attr {
+ key: "strides"
+ value {
+ list {
+ i: 1
+ i: 2
+ i: 2
+ i: 1
+ }
+ }
+ }
+}
+
+node {
+ name: "add_const"
+ op: "Const"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "value"
+ value {
+ tensor {
+ dtype: DT_FLOAT
+ tensor_shape {
+ dim {
+ size: 12
+ }
+ }
+ float_val: 1.0
+ }
+ }
+ }
+}
+node {
+ name: "add"
+ op: "Add"
+ input: "DepthwiseConv2dNative"
+ input: "add_const"
+ attr {
+ key: "T"
+ value {
+ type: DT_FLOAT
+ }
+ }
+}
diff --git a/res/TensorFlowTests/NET_0040/test.info b/res/TensorFlowTests/NET_0040/test.info
new file mode 100644
index 000000000..099f3d613
--- /dev/null
+++ b/res/TensorFlowTests/NET_0040/test.info
@@ -0,0 +1,2 @@
+input, input:0, TF_FLOAT, [1, 11, 7, 3]
+output, output/relu:0, TF_FLOAT, [1, 6, 4, 12]
diff --git a/res/TensorFlowTests/NET_0040/test.manifest b/res/TensorFlowTests/NET_0040/test.manifest
new file mode 100644
index 000000000..86bbc60c8
--- /dev/null
+++ b/res/TensorFlowTests/NET_0040/test.manifest
@@ -0,0 +1 @@
+SUMMARY: DepthwiseConv2D + BiasAdd + Relu
diff --git a/res/TensorFlowTests/NET_0040/test.pbtxt b/res/TensorFlowTests/NET_0040/test.pbtxt
new file mode 100644
index 000000000..b35f676cb
--- /dev/null
+++ b/res/TensorFlowTests/NET_0040/test.pbtxt
@@ -0,0 +1,164 @@
+# DepthwiseConv2dNative node is borrowed from UNIT_DepthwiseConv2dNative_000.
+node {
+ name: "input"
+ op: "Placeholder"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "shape"
+ value {
+ shape {
+ dim {
+ size: 1
+ }
+ dim {
+ size: 11
+ }
+ dim {
+ size: 7
+ }
+ dim {
+ size: 3
+ }
+ }
+ }
+ }
+}
+node {
+ name: "Const"
+ op: "Const"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "value"
+ value {
+ tensor {
+ dtype: DT_FLOAT
+ tensor_shape {
+ dim {
+ size: 2
+ }
+ dim {
+ size: 3
+ }
+ dim {
+ size: 3
+ }
+ dim {
+ size: 4
+ }
+ }
+ float_val: 1.0
+ }
+ }
+ }
+}
+node {
+ name: "DepthwiseConv2dNative"
+ op: "DepthwiseConv2dNative"
+ input: "input"
+ input: "Const"
+ attr {
+ key: "T"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "data_format"
+ value {
+ s: "NHWC"
+ }
+ }
+ attr {
+ key: "dilations"
+ value {
+ list {
+ i: 1
+ i: 1
+ i: 1
+ i: 1
+ }
+ }
+ }
+ attr {
+ key: "padding"
+ value {
+ s: "SAME"
+ }
+ }
+ attr {
+ key: "strides"
+ value {
+ list {
+ i: 1
+ i: 2
+ i: 2
+ i: 1
+ }
+ }
+ }
+}
+
+node {
+ name: "bias_const"
+ op: "Const"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "value"
+ value {
+ tensor {
+ dtype: DT_FLOAT
+ tensor_shape {
+ dim {
+ size: 12
+ }
+ }
+ float_val: 1.0
+ }
+ }
+ }
+}
+node {
+ name: "biasadd"
+ op: "BiasAdd"
+ input: "DepthwiseConv2dNative"
+ input: "bias_const"
+ attr {
+ key: "T"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "data_format"
+ value {
+ s: "NHWC"
+ }
+ }
+}
+
+node {
+ name: "output/relu"
+ op: "Relu"
+ input: "biasadd"
+ attr {
+ key: "T"
+ value {
+ type: DT_FLOAT
+ }
+ }
+}
diff --git a/res/TensorFlowTests/NET_0041/test.info b/res/TensorFlowTests/NET_0041/test.info
new file mode 100644
index 000000000..099f3d613
--- /dev/null
+++ b/res/TensorFlowTests/NET_0041/test.info
@@ -0,0 +1,2 @@
+input, input:0, TF_FLOAT, [1, 11, 7, 3]
+output, output/relu:0, TF_FLOAT, [1, 6, 4, 12]
diff --git a/res/TensorFlowTests/NET_0041/test.manifest b/res/TensorFlowTests/NET_0041/test.manifest
new file mode 100644
index 000000000..0e9adb9f5
--- /dev/null
+++ b/res/TensorFlowTests/NET_0041/test.manifest
@@ -0,0 +1 @@
+SUMMARY: DepthwiseConv2D + Sub (scalar) + Relu
diff --git a/res/TensorFlowTests/NET_0041/test.pbtxt b/res/TensorFlowTests/NET_0041/test.pbtxt
new file mode 100644
index 000000000..a328417d9
--- /dev/null
+++ b/res/TensorFlowTests/NET_0041/test.pbtxt
@@ -0,0 +1,158 @@
+# DepthwiseConv2dNative node is borrowed from UNIT_DepthwiseConv2dNative_000.
+node {
+ name: "input"
+ op: "Placeholder"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "shape"
+ value {
+ shape {
+ dim {
+ size: 1
+ }
+ dim {
+ size: 11
+ }
+ dim {
+ size: 7
+ }
+ dim {
+ size: 3
+ }
+ }
+ }
+ }
+}
+node {
+ name: "Const"
+ op: "Const"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "value"
+ value {
+ tensor {
+ dtype: DT_FLOAT
+ tensor_shape {
+ dim {
+ size: 2
+ }
+ dim {
+ size: 3
+ }
+ dim {
+ size: 3
+ }
+ dim {
+ size: 4
+ }
+ }
+ float_val: 1.0
+ }
+ }
+ }
+}
+node {
+ name: "DepthwiseConv2dNative"
+ op: "DepthwiseConv2dNative"
+ input: "input"
+ input: "Const"
+ attr {
+ key: "T"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "data_format"
+ value {
+ s: "NHWC"
+ }
+ }
+ attr {
+ key: "dilations"
+ value {
+ list {
+ i: 1
+ i: 1
+ i: 1
+ i: 1
+ }
+ }
+ }
+ attr {
+ key: "padding"
+ value {
+ s: "SAME"
+ }
+ }
+ attr {
+ key: "strides"
+ value {
+ list {
+ i: 1
+ i: 2
+ i: 2
+ i: 1
+ }
+ }
+ }
+}
+
+node {
+ name: "sub_scalar_const"
+ op: "Const"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "value"
+ value {
+ tensor {
+ dtype: DT_FLOAT
+ tensor_shape {
+ dim {
+ size: 1
+ }
+ }
+ float_val: 1.0
+ }
+ }
+ }
+}
+node {
+ name: "sub"
+ op: "Sub"
+ input: "DepthwiseConv2dNative"
+ input: "sub_scalar_const"
+ attr {
+ key: "T"
+ value {
+ type: DT_FLOAT
+ }
+ }
+}
+
+node {
+ name: "output/relu"
+ op: "Relu"
+ input: "sub"
+ attr {
+ key: "T"
+ value {
+ type: DT_FLOAT
+ }
+ }
+}
diff --git a/res/TensorFlowTests/NET_0042/test.info b/res/TensorFlowTests/NET_0042/test.info
new file mode 100644
index 000000000..04b13ad8f
--- /dev/null
+++ b/res/TensorFlowTests/NET_0042/test.info
@@ -0,0 +1 @@
+output, pack/stack:0, TF_FLOAT, [4]
diff --git a/res/TensorFlowTests/NET_0042/test.manifest b/res/TensorFlowTests/NET_0042/test.manifest
new file mode 100644
index 000000000..79dcdbe71
--- /dev/null
+++ b/res/TensorFlowTests/NET_0042/test.manifest
@@ -0,0 +1 @@
+SUMMARY: Small network that extracts second, third value of input vector with StridedSlice operator, doubles it and reconstruct it with Pack operator.
diff --git a/res/TensorFlowTests/NET_0042/test.pbtxt b/res/TensorFlowTests/NET_0042/test.pbtxt
new file mode 100644
index 000000000..033b09edc
--- /dev/null
+++ b/res/TensorFlowTests/NET_0042/test.pbtxt
@@ -0,0 +1,572 @@
+node {
+ name: "Shape"
+ op: "Const"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "value"
+ value {
+ tensor {
+ dtype: DT_FLOAT
+ tensor_shape {
+ dim {
+ size: 4
+ }
+ }
+ float_val: 1
+ float_val: 5
+ float_val: 5
+ float_val: 64
+ }
+ }
+ }
+}
+node {
+ name: "stack"
+ op: "Const"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_INT32
+ }
+ }
+ attr {
+ key: "value"
+ value {
+ tensor {
+ dtype: DT_INT32
+ tensor_shape {
+ dim {
+ size: 1
+ }
+ }
+ int_val: 0
+ }
+ }
+ }
+}
+node {
+ name: "stack_1"
+ op: "Const"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_INT32
+ }
+ }
+ attr {
+ key: "value"
+ value {
+ tensor {
+ dtype: DT_INT32
+ tensor_shape {
+ dim {
+ size: 1
+ }
+ }
+ int_val: 1
+ }
+ }
+ }
+}
+node {
+ name: "stack_2"
+ op: "Const"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_INT32
+ }
+ }
+ attr {
+ key: "value"
+ value {
+ tensor {
+ dtype: DT_INT32
+ tensor_shape {
+ dim {
+ size: 1
+ }
+ }
+ int_val: 1
+ }
+ }
+ }
+}
+node {
+ name: "strided_slice"
+ op: "StridedSlice"
+ input: "Shape"
+ input: "stack"
+ input: "stack_1"
+ input: "stack_2"
+ attr {
+ key: "Index"
+ value {
+ type: DT_INT32
+ }
+ }
+ attr {
+ key: "T"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "begin_mask"
+ value {
+ i: 0
+ }
+ }
+ attr {
+ key: "ellipsis_mask"
+ value {
+ i: 0
+ }
+ }
+ attr {
+ key: "end_mask"
+ value {
+ i: 0
+ }
+ }
+ attr {
+ key: "new_axis_mask"
+ value {
+ i: 0
+ }
+ }
+ attr {
+ key: "shrink_axis_mask"
+ value {
+ i: 1
+ }
+ }
+}
+node {
+ name: "strided_slice_1/stack"
+ op: "Const"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_INT32
+ }
+ }
+ attr {
+ key: "value"
+ value {
+ tensor {
+ dtype: DT_INT32
+ tensor_shape {
+ dim {
+ size: 1
+ }
+ }
+ int_val: 1
+ }
+ }
+ }
+}
+node {
+ name: "strided_slice_1/stack_1"
+ op: "Const"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_INT32
+ }
+ }
+ attr {
+ key: "value"
+ value {
+ tensor {
+ dtype: DT_INT32
+ tensor_shape {
+ dim {
+ size: 1
+ }
+ }
+ int_val: 2
+ }
+ }
+ }
+}
+node {
+ name: "strided_slice_1/stack_2"
+ op: "Const"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_INT32
+ }
+ }
+ attr {
+ key: "value"
+ value {
+ tensor {
+ dtype: DT_INT32
+ tensor_shape {
+ dim {
+ size: 1
+ }
+ }
+ int_val: 1
+ }
+ }
+ }
+}
+node {
+ name: "strided_slice_1"
+ op: "StridedSlice"
+ input: "Shape"
+ input: "strided_slice_1/stack"
+ input: "strided_slice_1/stack_1"
+ input: "strided_slice_1/stack_2"
+ attr {
+ key: "Index"
+ value {
+ type: DT_INT32
+ }
+ }
+ attr {
+ key: "T"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "begin_mask"
+ value {
+ i: 0
+ }
+ }
+ attr {
+ key: "ellipsis_mask"
+ value {
+ i: 0
+ }
+ }
+ attr {
+ key: "end_mask"
+ value {
+ i: 0
+ }
+ }
+ attr {
+ key: "new_axis_mask"
+ value {
+ i: 0
+ }
+ }
+ attr {
+ key: "shrink_axis_mask"
+ value {
+ i: 1
+ }
+ }
+}
+node {
+ name: "strided_slice_2/stack"
+ op: "Const"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_INT32
+ }
+ }
+ attr {
+ key: "value"
+ value {
+ tensor {
+ dtype: DT_INT32
+ tensor_shape {
+ dim {
+ size: 1
+ }
+ }
+ int_val: 2
+ }
+ }
+ }
+}
+node {
+ name: "strided_slice_2/stack_1"
+ op: "Const"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_INT32
+ }
+ }
+ attr {
+ key: "value"
+ value {
+ tensor {
+ dtype: DT_INT32
+ tensor_shape {
+ dim {
+ size: 1
+ }
+ }
+ int_val: 3
+ }
+ }
+ }
+}
+node {
+ name: "strided_slice_2/stack_2"
+ op: "Const"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_INT32
+ }
+ }
+ attr {
+ key: "value"
+ value {
+ tensor {
+ dtype: DT_INT32
+ tensor_shape {
+ dim {
+ size: 1
+ }
+ }
+ int_val: 1
+ }
+ }
+ }
+}
+node {
+ name: "strided_slice_2"
+ op: "StridedSlice"
+ input: "Shape"
+ input: "strided_slice_2/stack"
+ input: "strided_slice_2/stack_1"
+ input: "strided_slice_2/stack_2"
+ attr {
+ key: "Index"
+ value {
+ type: DT_INT32
+ }
+ }
+ attr {
+ key: "T"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "begin_mask"
+ value {
+ i: 0
+ }
+ }
+ attr {
+ key: "ellipsis_mask"
+ value {
+ i: 0
+ }
+ }
+ attr {
+ key: "end_mask"
+ value {
+ i: 0
+ }
+ }
+ attr {
+ key: "new_axis_mask"
+ value {
+ i: 0
+ }
+ }
+ attr {
+ key: "shrink_axis_mask"
+ value {
+ i: 1
+ }
+ }
+}
+node {
+ name: "mul/y"
+ op: "Const"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "value"
+ value {
+ tensor {
+ dtype: DT_FLOAT
+ tensor_shape {
+ }
+ float_val: 2
+ }
+ }
+ }
+}
+node {
+ name: "mul"
+ op: "Mul"
+ input: "strided_slice_1"
+ input: "mul/y"
+ attr {
+ key: "T"
+ value {
+ type: DT_FLOAT
+ }
+ }
+}
+node {
+ name: "add/y"
+ op: "Const"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "value"
+ value {
+ tensor {
+ dtype: DT_FLOAT
+ tensor_shape {
+ }
+ float_val: 0
+ }
+ }
+ }
+}
+node {
+ name: "add"
+ op: "Add"
+ input: "mul"
+ input: "add/y"
+ attr {
+ key: "T"
+ value {
+ type: DT_FLOAT
+ }
+ }
+}
+node {
+ name: "mul_1/y"
+ op: "Const"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "value"
+ value {
+ tensor {
+ dtype: DT_FLOAT
+ tensor_shape {
+ }
+ float_val: 2
+ }
+ }
+ }
+}
+node {
+ name: "mul_1"
+ op: "Mul"
+ input: "strided_slice_2"
+ input: "mul_1/y"
+ attr {
+ key: "T"
+ value {
+ type: DT_FLOAT
+ }
+ }
+}
+node {
+ name: "add_1/y"
+ op: "Const"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "value"
+ value {
+ tensor {
+ dtype: DT_FLOAT
+ tensor_shape {
+ }
+ float_val: 0
+ }
+ }
+ }
+}
+node {
+ name: "add_1"
+ op: "Add"
+ input: "mul_1"
+ input: "add_1/y"
+ attr {
+ key: "T"
+ value {
+ type: DT_FLOAT
+ }
+ }
+}
+node {
+ name: "pack/stack/3"
+ op: "Const"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "value"
+ value {
+ tensor {
+ dtype: DT_FLOAT
+ tensor_shape {
+ }
+ float_val: 64
+ }
+ }
+ }
+}
+node {
+ name: "pack/stack"
+ op: "Pack"
+ input: "strided_slice"
+ input: "add"
+ input: "add_1"
+ input: "pack/stack/3"
+ attr {
+ key: "N"
+ value {
+ i: 4
+ }
+ }
+ attr {
+ key: "T"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "axis"
+ value {
+ i: 0
+ }
+ }
+}
diff --git a/res/TensorFlowTests/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/REGRESSION_0001/test.info b/res/TensorFlowTests/REGRESSION_0001/test.info
new file mode 100644
index 000000000..76e76187c
--- /dev/null
+++ b/res/TensorFlowTests/REGRESSION_0001/test.info
@@ -0,0 +1,2 @@
+input, Placeholder:0, TF_FLOAT, [2, 3]
+output, Add_2:0, TF_FLOAT, [2, 3]
diff --git a/res/TensorFlowTests/REGRESSION_0001/test.manifest b/res/TensorFlowTests/REGRESSION_0001/test.manifest
new file mode 100644
index 000000000..136452d3c
--- /dev/null
+++ b/res/TensorFlowTests/REGRESSION_0001/test.manifest
@@ -0,0 +1 @@
+SUMMARY: Successive Broadcasted Add
diff --git a/res/TensorFlowTests/REGRESSION_0001/test.pbtxt b/res/TensorFlowTests/REGRESSION_0001/test.pbtxt
new file mode 100644
index 000000000..99d276c00
--- /dev/null
+++ b/res/TensorFlowTests/REGRESSION_0001/test.pbtxt
@@ -0,0 +1,59 @@
+node {
+ name: "Placeholder"
+ op: "Placeholder"
+ attr {
+ key: "dtype"
+ value { type: DT_FLOAT }
+ }
+ attr {
+ key: "shape"
+ value {
+ shape {
+ dim { size: 2 }
+ dim { size: 3 }
+ }
+ }
+ }
+}
+node {
+ name: "Const"
+ op: "Const"
+ attr {
+ key: "dtype"
+ value { type: DT_FLOAT }
+ }
+ attr {
+ key: "value"
+ value {
+ tensor {
+ dtype: DT_FLOAT
+ tensor_shape {
+ dim { size: 3 }
+ }
+ float_val: 1.1
+ float_val: 2.2
+ float_val: 3.3
+ }
+ }
+ }
+}
+node {
+ name: "Add_1"
+ op: "Add"
+ input: "Placeholder"
+ input: "Const"
+ attr {
+ key: "T"
+ value { type: DT_FLOAT }
+ }
+}
+node {
+ name: "Add_2"
+ op: "Add"
+ input: "Add_1"
+ input: "Const"
+ attr {
+ key: "T"
+ value { type: DT_FLOAT }
+ }
+}
diff --git a/res/TensorFlowTests/REGRESSION_0002/test.info b/res/TensorFlowTests/REGRESSION_0002/test.info
new file mode 100644
index 000000000..c3e16f6b2
--- /dev/null
+++ b/res/TensorFlowTests/REGRESSION_0002/test.info
@@ -0,0 +1,2 @@
+input, ifm:0, TF_FLOAT, [1, 5, 5, 3]
+output, ofm:0, TF_FLOAT, [1, 4, 4, 2]
diff --git a/res/TensorFlowTests/REGRESSION_0002/test.manifest b/res/TensorFlowTests/REGRESSION_0002/test.manifest
new file mode 100644
index 000000000..55d2852ae
--- /dev/null
+++ b/res/TensorFlowTests/REGRESSION_0002/test.manifest
@@ -0,0 +1 @@
+SUMMARY: Conv2d without dilation attribute is correct according documentation and should be compiled
diff --git a/res/TensorFlowTests/REGRESSION_0002/test.pbtxt b/res/TensorFlowTests/REGRESSION_0002/test.pbtxt
new file mode 100644
index 000000000..e5d60f855
--- /dev/null
+++ b/res/TensorFlowTests/REGRESSION_0002/test.pbtxt
@@ -0,0 +1,66 @@
+node {
+ name: "ifm"
+ op: "Placeholder"
+ attr {
+ key: "dtype"
+ value { type: DT_FLOAT }
+ }
+ attr {
+ key: "shape"
+ value {
+ shape {
+ dim { size: 1 }
+ dim { size: 5 }
+ dim { size: 5 }
+ dim { size: 3 }
+ }
+ }
+ }
+}
+node {
+ name: "ker"
+ op: "Const"
+ attr {
+ key: "dtype"
+ value { type: DT_FLOAT }
+ }
+ attr {
+ key: "value"
+ value {
+ tensor {
+ dtype: DT_FLOAT
+ tensor_shape {
+ dim { size: 2 }
+ dim { size: 2 }
+ dim { size: 3 }
+ dim { size: 2 }
+ }
+ float_val: 1.1
+ }
+ }
+ }
+}
+node {
+ name: "ofm"
+ op: "Conv2D"
+ input: "ifm"
+ input: "ker"
+ attr {
+ key: "T"
+ value { type: DT_FLOAT }
+ }
+ attr {
+ key: "data_format"
+ value { s: "NHWC" }
+ }
+ attr {
+ key: "padding"
+ value { s: "VALID" }
+ }
+ attr {
+ key: "strides"
+ value {
+ list { i: 1 i: 1 i: 1 i: 1 }
+ }
+ }
+}
diff --git a/res/TensorFlowTests/UI_0000/test.info b/res/TensorFlowTests/UI_0000/test.info
new file mode 100644
index 000000000..2ce0c6d38
--- /dev/null
+++ b/res/TensorFlowTests/UI_0000/test.info
@@ -0,0 +1,2 @@
+input, input:0, TF_FLOAT, [1, 5, 5, 3]
+output, InceptionV3/InceptionV3/Conv2d_1a_3x3/Relu:0, TF_FLOAT, [1, 2, 2, 4]
diff --git a/res/TensorFlowTests/UI_0000/test.manifest b/res/TensorFlowTests/UI_0000/test.manifest
new file mode 100644
index 000000000..8e29c13ef
--- /dev/null
+++ b/res/TensorFlowTests/UI_0000/test.manifest
@@ -0,0 +1 @@
+SUMMARY: Wrong network (Kernel input of Conv2D is missing) to see error message
diff --git a/res/TensorFlowTests/UI_0000/test.pbtxt b/res/TensorFlowTests/UI_0000/test.pbtxt
new file mode 100644
index 000000000..f5539ee02
--- /dev/null
+++ b/res/TensorFlowTests/UI_0000/test.pbtxt
@@ -0,0 +1,112 @@
+node {
+ name: "InceptionV3/Conv2d_1a_3x3/weights/read/_3__cf__3"
+ op: "Const"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "value"
+ value {
+ tensor {
+ dtype: DT_FLOAT
+ tensor_shape {
+ dim {
+ size: 3
+ }
+ dim {
+ size: 3
+ }
+ dim {
+ size: 3
+ }
+ dim {
+ size: 4
+ }
+ }
+ float_val: 1.0
+ }
+ }
+ }
+}
+node {
+ name: "input"
+ op: "Placeholder"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "shape"
+ value {
+ shape {
+ dim {
+ size: 1
+ }
+ dim {
+ size: 5
+ }
+ dim {
+ size: 5
+ }
+ dim {
+ size: 3
+ }
+ }
+ }
+ }
+}
+
+node {
+ name: "InceptionV3/InceptionV3/Conv2d_1a_3x3/Conv2D"
+ op: "Conv2D"
+ input: "input:0"
+#
+# intentionally, commented out
+# input: "InceptionV3/Conv2d_1a_3x3/weights/read/_3__cf__3"
+#
+ attr {
+ key: "T"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "data_format"
+ value {
+ s: "NHWC"
+ }
+ }
+ attr {
+ key: "dilations"
+ value {
+ list {
+ i: 1
+ i: 1
+ i: 1
+ i: 1
+ }
+ }
+ }
+ attr {
+ key: "padding"
+ value {
+ s: "VALID"
+ }
+ }
+ attr {
+ key: "strides"
+ value {
+ list {
+ i: 1
+ i: 2
+ i: 2
+ i: 1
+ }
+ }
+ }
+}
diff --git a/res/TensorFlowTests/UI_0001/test.info b/res/TensorFlowTests/UI_0001/test.info
new file mode 100644
index 000000000..2ce0c6d38
--- /dev/null
+++ b/res/TensorFlowTests/UI_0001/test.info
@@ -0,0 +1,2 @@
+input, input:0, TF_FLOAT, [1, 5, 5, 3]
+output, InceptionV3/InceptionV3/Conv2d_1a_3x3/Relu:0, TF_FLOAT, [1, 2, 2, 4]
diff --git a/res/TensorFlowTests/UI_0001/test.manifest b/res/TensorFlowTests/UI_0001/test.manifest
new file mode 100644
index 000000000..4721034a0
--- /dev/null
+++ b/res/TensorFlowTests/UI_0001/test.manifest
@@ -0,0 +1 @@
+SUMMARY: Wrong network : Cannot find a node whose name is used as an input of Conv2D
diff --git a/res/TensorFlowTests/UI_0001/test.pbtxt b/res/TensorFlowTests/UI_0001/test.pbtxt
new file mode 100644
index 000000000..167d7dcb9
--- /dev/null
+++ b/res/TensorFlowTests/UI_0001/test.pbtxt
@@ -0,0 +1,110 @@
+node {
+ name: "InceptionV3/Conv2d_1a_3x3/weights/read/_3__cf__3"
+ op: "Const"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "value"
+ value {
+ tensor {
+ dtype: DT_FLOAT
+ tensor_shape {
+ dim {
+ size: 3
+ }
+ dim {
+ size: 3
+ }
+ dim {
+ size: 3
+ }
+ dim {
+ size: 4
+ }
+ }
+ float_val: 1.0
+ }
+ }
+ }
+}
+node {
+ name: "input"
+ op: "Placeholder"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "shape"
+ value {
+ shape {
+ dim {
+ size: 1
+ }
+ dim {
+ size: 5
+ }
+ dim {
+ size: 5
+ }
+ dim {
+ size: 3
+ }
+ }
+ }
+ }
+}
+node {
+ name: "InceptionV3/InceptionV3/Conv2d_1a_3x3/Conv2D"
+ op: "Conv2D"
+# error -----
+# "nowhere:0" does not exist
+ input: "nowhere:0"
+ input: "InceptionV3/Conv2d_1a_3x3/weights/read/_3__cf__3"
+ attr {
+ key: "T"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "data_format"
+ value {
+ s: "NHWC"
+ }
+ }
+ attr {
+ key: "dilations"
+ value {
+ list {
+ i: 1
+ i: 1
+ i: 1
+ i: 1
+ }
+ }
+ }
+ attr {
+ key: "padding"
+ value {
+ s: "VALID"
+ }
+ }
+ attr {
+ key: "strides"
+ value {
+ list {
+ i: 1
+ i: 2
+ i: 2
+ i: 1
+ }
+ }
+ }
+}
diff --git a/res/TensorFlowTests/UI_0002/test.info b/res/TensorFlowTests/UI_0002/test.info
new file mode 100644
index 000000000..2ce0c6d38
--- /dev/null
+++ b/res/TensorFlowTests/UI_0002/test.info
@@ -0,0 +1,2 @@
+input, input:0, TF_FLOAT, [1, 5, 5, 3]
+output, InceptionV3/InceptionV3/Conv2d_1a_3x3/Relu:0, TF_FLOAT, [1, 2, 2, 4]
diff --git a/res/TensorFlowTests/UI_0002/test.manifest b/res/TensorFlowTests/UI_0002/test.manifest
new file mode 100644
index 000000000..182342655
--- /dev/null
+++ b/res/TensorFlowTests/UI_0002/test.manifest
@@ -0,0 +1 @@
+SUMMARY: Wrong network : Conv2D and biasAdd has a same name
diff --git a/res/TensorFlowTests/UI_0002/test.pbtxt b/res/TensorFlowTests/UI_0002/test.pbtxt
new file mode 100644
index 000000000..e23acac41
--- /dev/null
+++ b/res/TensorFlowTests/UI_0002/test.pbtxt
@@ -0,0 +1,150 @@
+node {
+ name: "InceptionV3/Conv2d_1a_3x3/weights/read/_3__cf__3"
+ op: "Const"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "value"
+ value {
+ tensor {
+ dtype: DT_FLOAT
+ tensor_shape {
+ dim {
+ size: 3
+ }
+ dim {
+ size: 3
+ }
+ dim {
+ size: 3
+ }
+ dim {
+ size: 4
+ }
+ }
+ float_val: 1.0
+ }
+ }
+ }
+}
+node {
+ name: "input"
+ op: "Placeholder"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "shape"
+ value {
+ shape {
+ dim {
+ size: 1
+ }
+ dim {
+ size: 5
+ }
+ dim {
+ size: 5
+ }
+ dim {
+ size: 3
+ }
+ }
+ }
+ }
+}
+node {
+ name: "Duplicate_name"
+ op: "Conv2D"
+ input: "input_wrong:0"
+ input: "InceptionV3/Conv2d_1a_3x3/weights/read/_3__cf__3"
+ attr {
+ key: "T"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "data_format"
+ value {
+ s: "NHWC"
+ }
+ }
+ attr {
+ key: "dilations"
+ value {
+ list {
+ i: 1
+ i: 1
+ i: 1
+ i: 1
+ }
+ }
+ }
+ attr {
+ key: "padding"
+ value {
+ s: "VALID"
+ }
+ }
+ attr {
+ key: "strides"
+ value {
+ list {
+ i: 1
+ i: 2
+ i: 2
+ i: 1
+ }
+ }
+ }
+}
+node {
+ name: "InceptionV3/InceptionV3/Conv2d_1a_3x3/Conv2D_bn_offset"
+ op: "Const"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "value"
+ value {
+ tensor {
+ dtype: DT_FLOAT
+ tensor_shape {
+ dim {
+ size: 4
+ }
+ }
+ float_val: 1.0
+ }
+ }
+ }
+}
+node {
+ name: "Duplicate_name"
+ op: "BiasAdd"
+ input: "InceptionV3/InceptionV3/Conv2d_1a_3x3/Conv2D"
+ input: "InceptionV3/InceptionV3/Conv2d_1a_3x3/Conv2D_bn_offset"
+ attr {
+ key: "T"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "data_format"
+ value {
+ s: "NHWC"
+ }
+ }
+}
diff --git a/res/TensorFlowTests/UI_0003/test.info b/res/TensorFlowTests/UI_0003/test.info
new file mode 100644
index 000000000..738d26831
--- /dev/null
+++ b/res/TensorFlowTests/UI_0003/test.info
@@ -0,0 +1,2 @@
+input, relu1:0, TF_FLOAT, [1, 2]
+output, relu2:0, TF_FLOAT, [1, 2]
diff --git a/res/TensorFlowTests/UI_0003/test.manifest b/res/TensorFlowTests/UI_0003/test.manifest
new file mode 100644
index 000000000..2a6b32242
--- /dev/null
+++ b/res/TensorFlowTests/UI_0003/test.manifest
@@ -0,0 +1 @@
+SUMMARY: Wrong network. Network without proper input (const or placeholder)
diff --git a/res/TensorFlowTests/UI_0003/test.pbtxt b/res/TensorFlowTests/UI_0003/test.pbtxt
new file mode 100644
index 000000000..4d5154e67
--- /dev/null
+++ b/res/TensorFlowTests/UI_0003/test.pbtxt
@@ -0,0 +1,22 @@
+node {
+ name: "relu1"
+ op: "Relu"
+ input: "Placeholder"
+ attr {
+ key: "T"
+ value {
+ type: DT_FLOAT
+ }
+ }
+}
+node {
+ name: "relu2"
+ op: "Relu"
+ input: "relu1"
+ attr {
+ key: "T"
+ value {
+ type: DT_FLOAT
+ }
+ }
+}
diff --git a/res/TensorFlowTests/UI_0004/test.info b/res/TensorFlowTests/UI_0004/test.info
new file mode 100644
index 000000000..5988da939
--- /dev/null
+++ b/res/TensorFlowTests/UI_0004/test.info
@@ -0,0 +1,2 @@
+input, not_existing_input:0, TF_FLOAT, [1, 2]
+output, relu:0, TF_FLOAT, [1, 2]
diff --git a/res/TensorFlowTests/UI_0004/test.manifest b/res/TensorFlowTests/UI_0004/test.manifest
new file mode 100644
index 000000000..be3d615f8
--- /dev/null
+++ b/res/TensorFlowTests/UI_0004/test.manifest
@@ -0,0 +1 @@
+SUMMARY: Wrong info file. Input name in info file does not exist in pb file.
diff --git a/res/TensorFlowTests/UI_0004/test.pbtxt b/res/TensorFlowTests/UI_0004/test.pbtxt
new file mode 100644
index 000000000..d4b7ee125
--- /dev/null
+++ b/res/TensorFlowTests/UI_0004/test.pbtxt
@@ -0,0 +1,34 @@
+node {
+ name: "Placeholder"
+ op: "Placeholder"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "shape"
+ value {
+ shape {
+ dim {
+ size: 1
+ }
+ dim {
+ size: 2
+ }
+ }
+ }
+ }
+}
+node {
+ name: "output/relu"
+ op: "Relu"
+ input: "Placeholder"
+ attr {
+ key: "T"
+ value {
+ type: DT_FLOAT
+ }
+ }
+}
diff --git a/res/TensorFlowTests/UI_0005/test.info b/res/TensorFlowTests/UI_0005/test.info
new file mode 100644
index 000000000..6759094c3
--- /dev/null
+++ b/res/TensorFlowTests/UI_0005/test.info
@@ -0,0 +1,2 @@
+input, Placeholder:0, TF_FLOAT, [1, 2]
+output, not_existing_output_name:0, TF_FLOAT, [1, 2]
diff --git a/res/TensorFlowTests/UI_0005/test.manifest b/res/TensorFlowTests/UI_0005/test.manifest
new file mode 100644
index 000000000..7075344ab
--- /dev/null
+++ b/res/TensorFlowTests/UI_0005/test.manifest
@@ -0,0 +1 @@
+SUMMARY: Wrong info file. Output name in info file does not exist in pb file.
diff --git a/res/TensorFlowTests/UI_0005/test.pbtxt b/res/TensorFlowTests/UI_0005/test.pbtxt
new file mode 100644
index 000000000..d4b7ee125
--- /dev/null
+++ b/res/TensorFlowTests/UI_0005/test.pbtxt
@@ -0,0 +1,34 @@
+node {
+ name: "Placeholder"
+ op: "Placeholder"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "shape"
+ value {
+ shape {
+ dim {
+ size: 1
+ }
+ dim {
+ size: 2
+ }
+ }
+ }
+ }
+}
+node {
+ name: "output/relu"
+ op: "Relu"
+ input: "Placeholder"
+ attr {
+ key: "T"
+ value {
+ type: DT_FLOAT
+ }
+ }
+}
diff --git a/res/TensorFlowTests/UI_0006/test.info b/res/TensorFlowTests/UI_0006/test.info
new file mode 100644
index 000000000..bdf764eab
--- /dev/null
+++ b/res/TensorFlowTests/UI_0006/test.info
@@ -0,0 +1,2 @@
+input, Placeholder:0, TF_FLOAT
+output, relu:0, TF_FLOAT, [1, 2]
diff --git a/res/TensorFlowTests/UI_0006/test.manifest b/res/TensorFlowTests/UI_0006/test.manifest
new file mode 100644
index 000000000..e0ea9b331
--- /dev/null
+++ b/res/TensorFlowTests/UI_0006/test.manifest
@@ -0,0 +1 @@
+SUMMARY: Wrong info file. Missing input shape.
diff --git a/res/TensorFlowTests/UI_0006/test.pbtxt b/res/TensorFlowTests/UI_0006/test.pbtxt
new file mode 100644
index 000000000..5806251fb
--- /dev/null
+++ b/res/TensorFlowTests/UI_0006/test.pbtxt
@@ -0,0 +1,34 @@
+node {
+ name: "Placeholder"
+ op: "Placeholder"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "shape"
+ value {
+ shape {
+ dim {
+ size: 1
+ }
+ dim {
+ size: 2
+ }
+ }
+ }
+ }
+}
+node {
+ name: "relu"
+ op: "Relu"
+ input: "Placeholder"
+ attr {
+ key: "T"
+ value {
+ type: DT_FLOAT
+ }
+ }
+}
diff --git a/res/TensorFlowTests/UI_0007/test.info b/res/TensorFlowTests/UI_0007/test.info
new file mode 100644
index 000000000..ad84e8d38
--- /dev/null
+++ b/res/TensorFlowTests/UI_0007/test.info
@@ -0,0 +1 @@
+input, Placeholder:0, TF_FLOAT, [1, 2]
diff --git a/res/TensorFlowTests/UI_0007/test.manifest b/res/TensorFlowTests/UI_0007/test.manifest
new file mode 100644
index 000000000..94fdce5f8
--- /dev/null
+++ b/res/TensorFlowTests/UI_0007/test.manifest
@@ -0,0 +1 @@
+SUMMARY: Wrong info file. No output in info file
diff --git a/res/TensorFlowTests/UI_0007/test.pbtxt b/res/TensorFlowTests/UI_0007/test.pbtxt
new file mode 100644
index 000000000..5806251fb
--- /dev/null
+++ b/res/TensorFlowTests/UI_0007/test.pbtxt
@@ -0,0 +1,34 @@
+node {
+ name: "Placeholder"
+ op: "Placeholder"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "shape"
+ value {
+ shape {
+ dim {
+ size: 1
+ }
+ dim {
+ size: 2
+ }
+ }
+ }
+ }
+}
+node {
+ name: "relu"
+ op: "Relu"
+ input: "Placeholder"
+ attr {
+ key: "T"
+ value {
+ type: DT_FLOAT
+ }
+ }
+}
diff --git a/res/TensorFlowTests/UI_0008/test.info b/res/TensorFlowTests/UI_0008/test.info
new file mode 100644
index 000000000..94815a520
--- /dev/null
+++ b/res/TensorFlowTests/UI_0008/test.info
@@ -0,0 +1,3 @@
+input, Placeholder:0, TF_FLOAT, [1, 2]
+output, relu:0, TF_FLOAT, [1, 2]
+output, relu:0, TF_FLOAT, [1, 2]
diff --git a/res/TensorFlowTests/UI_0008/test.manifest b/res/TensorFlowTests/UI_0008/test.manifest
new file mode 100644
index 000000000..858aae672
--- /dev/null
+++ b/res/TensorFlowTests/UI_0008/test.manifest
@@ -0,0 +1 @@
+SUMMARY: Multiple output names in info file that have same name
diff --git a/res/TensorFlowTests/UI_0008/test.pbtxt b/res/TensorFlowTests/UI_0008/test.pbtxt
new file mode 100644
index 000000000..5806251fb
--- /dev/null
+++ b/res/TensorFlowTests/UI_0008/test.pbtxt
@@ -0,0 +1,34 @@
+node {
+ name: "Placeholder"
+ op: "Placeholder"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "shape"
+ value {
+ shape {
+ dim {
+ size: 1
+ }
+ dim {
+ size: 2
+ }
+ }
+ }
+ }
+}
+node {
+ name: "relu"
+ op: "Relu"
+ input: "Placeholder"
+ attr {
+ key: "T"
+ value {
+ type: DT_FLOAT
+ }
+ }
+}
diff --git a/res/TensorFlowTests/UI_0009/test.info b/res/TensorFlowTests/UI_0009/test.info
new file mode 100644
index 000000000..8e78a07b9
--- /dev/null
+++ b/res/TensorFlowTests/UI_0009/test.info
@@ -0,0 +1,2 @@
+input, Placeholder:1, TF_FLOAT, [1, 2] # Placeholder:1 does not exist in the model
+output, Placeholder:0, TF_FLOAT, [1, 2]
diff --git a/res/TensorFlowTests/UI_0009/test.manifest b/res/TensorFlowTests/UI_0009/test.manifest
new file mode 100644
index 000000000..78ed75108
--- /dev/null
+++ b/res/TensorFlowTests/UI_0009/test.manifest
@@ -0,0 +1 @@
+SUMMARY: Wrong info file. Index of input tensor name is wrong in info file
diff --git a/res/TensorFlowTests/UI_0009/test.pbtxt b/res/TensorFlowTests/UI_0009/test.pbtxt
new file mode 100644
index 000000000..5806251fb
--- /dev/null
+++ b/res/TensorFlowTests/UI_0009/test.pbtxt
@@ -0,0 +1,34 @@
+node {
+ name: "Placeholder"
+ op: "Placeholder"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "shape"
+ value {
+ shape {
+ dim {
+ size: 1
+ }
+ dim {
+ size: 2
+ }
+ }
+ }
+ }
+}
+node {
+ name: "relu"
+ op: "Relu"
+ input: "Placeholder"
+ attr {
+ key: "T"
+ value {
+ type: DT_FLOAT
+ }
+ }
+}
diff --git a/res/TensorFlowTests/UI_0010/test.info b/res/TensorFlowTests/UI_0010/test.info
new file mode 100644
index 000000000..c8da7cc3e
--- /dev/null
+++ b/res/TensorFlowTests/UI_0010/test.info
@@ -0,0 +1,2 @@
+input Placeholder:0, TF_FLOAT, [1, 2]
+output, relu:0, TF_FLOAT, [1, 2]
diff --git a/res/TensorFlowTests/UI_0010/test.manifest b/res/TensorFlowTests/UI_0010/test.manifest
new file mode 100644
index 000000000..598164e32
--- /dev/null
+++ b/res/TensorFlowTests/UI_0010/test.manifest
@@ -0,0 +1 @@
+SUMMARY: Wrong info file. Missing comma after 'input'.
diff --git a/res/TensorFlowTests/UI_0010/test.pbtxt b/res/TensorFlowTests/UI_0010/test.pbtxt
new file mode 100644
index 000000000..5806251fb
--- /dev/null
+++ b/res/TensorFlowTests/UI_0010/test.pbtxt
@@ -0,0 +1,34 @@
+node {
+ name: "Placeholder"
+ op: "Placeholder"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "shape"
+ value {
+ shape {
+ dim {
+ size: 1
+ }
+ dim {
+ size: 2
+ }
+ }
+ }
+ }
+}
+node {
+ name: "relu"
+ op: "Relu"
+ input: "Placeholder"
+ attr {
+ key: "T"
+ value {
+ type: DT_FLOAT
+ }
+ }
+}
diff --git a/res/TensorFlowTests/UI_0011/test.info b/res/TensorFlowTests/UI_0011/test.info
new file mode 100644
index 000000000..96cca79b9
--- /dev/null
+++ b/res/TensorFlowTests/UI_0011/test.info
@@ -0,0 +1,2 @@
+input, Placeholder:0 TF_FLOAT, [1, 2]
+output, relu:0, TF_FLOAT, [1, 2]
diff --git a/res/TensorFlowTests/UI_0011/test.manifest b/res/TensorFlowTests/UI_0011/test.manifest
new file mode 100644
index 000000000..b0938eb5c
--- /dev/null
+++ b/res/TensorFlowTests/UI_0011/test.manifest
@@ -0,0 +1 @@
+SUMMARY: Wrong info file. Missing comma after input name.
diff --git a/res/TensorFlowTests/UI_0011/test.pbtxt b/res/TensorFlowTests/UI_0011/test.pbtxt
new file mode 100644
index 000000000..5806251fb
--- /dev/null
+++ b/res/TensorFlowTests/UI_0011/test.pbtxt
@@ -0,0 +1,34 @@
+node {
+ name: "Placeholder"
+ op: "Placeholder"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "shape"
+ value {
+ shape {
+ dim {
+ size: 1
+ }
+ dim {
+ size: 2
+ }
+ }
+ }
+ }
+}
+node {
+ name: "relu"
+ op: "Relu"
+ input: "Placeholder"
+ attr {
+ key: "T"
+ value {
+ type: DT_FLOAT
+ }
+ }
+}
diff --git a/res/TensorFlowTests/UI_0012/test.info b/res/TensorFlowTests/UI_0012/test.info
new file mode 100644
index 000000000..b04feac4b
--- /dev/null
+++ b/res/TensorFlowTests/UI_0012/test.info
@@ -0,0 +1,2 @@
+input, Placeholder:0, TF_FLOAT [1, 2]
+output, relu:0, TF_FLOAT, [1, 2]
diff --git a/res/TensorFlowTests/UI_0012/test.manifest b/res/TensorFlowTests/UI_0012/test.manifest
new file mode 100644
index 000000000..e5765aa37
--- /dev/null
+++ b/res/TensorFlowTests/UI_0012/test.manifest
@@ -0,0 +1 @@
+SUMMARY: Wrong info file. Missing comma after dtype.
diff --git a/res/TensorFlowTests/UI_0012/test.pbtxt b/res/TensorFlowTests/UI_0012/test.pbtxt
new file mode 100644
index 000000000..5806251fb
--- /dev/null
+++ b/res/TensorFlowTests/UI_0012/test.pbtxt
@@ -0,0 +1,34 @@
+node {
+ name: "Placeholder"
+ op: "Placeholder"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "shape"
+ value {
+ shape {
+ dim {
+ size: 1
+ }
+ dim {
+ size: 2
+ }
+ }
+ }
+ }
+}
+node {
+ name: "relu"
+ op: "Relu"
+ input: "Placeholder"
+ attr {
+ key: "T"
+ value {
+ type: DT_FLOAT
+ }
+ }
+}
diff --git a/res/TensorFlowTests/UNIT_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_ConcatV2_000/test.info b/res/TensorFlowTests/UNIT_ConcatV2_000/test.info
new file mode 100644
index 000000000..9ea940f2a
--- /dev/null
+++ b/res/TensorFlowTests/UNIT_ConcatV2_000/test.info
@@ -0,0 +1 @@
+output, Concat:0, TF_FLOAT, [4, 3]
diff --git a/res/TensorFlowTests/UNIT_ConcatV2_000/test.pbtxt b/res/TensorFlowTests/UNIT_ConcatV2_000/test.pbtxt
new file mode 100644
index 000000000..77dbea792
--- /dev/null
+++ b/res/TensorFlowTests/UNIT_ConcatV2_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_ConcatV2_001/test.info b/res/TensorFlowTests/UNIT_ConcatV2_001/test.info
new file mode 100644
index 000000000..e2add430f
--- /dev/null
+++ b/res/TensorFlowTests/UNIT_ConcatV2_001/test.info
@@ -0,0 +1 @@
+output, Concat:0, TF_FLOAT, [6, 3]
diff --git a/res/TensorFlowTests/UNIT_ConcatV2_001/test.pbtxt b/res/TensorFlowTests/UNIT_ConcatV2_001/test.pbtxt
new file mode 100644
index 000000000..ac3e85581
--- /dev/null
+++ b/res/TensorFlowTests/UNIT_ConcatV2_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_ConcatV2_002/test.info b/res/TensorFlowTests/UNIT_ConcatV2_002/test.info
new file mode 100644
index 000000000..460093bd5
--- /dev/null
+++ b/res/TensorFlowTests/UNIT_ConcatV2_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_ConcatV2_002/test.pbtxt b/res/TensorFlowTests/UNIT_ConcatV2_002/test.pbtxt
new file mode 100644
index 000000000..9a524040a
--- /dev/null
+++ b/res/TensorFlowTests/UNIT_ConcatV2_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_000/test.info b/res/TensorFlowTests/UNIT_Conv2DBackpropInput_000/test.info
new file mode 100644
index 000000000..dfed0e296
--- /dev/null
+++ b/res/TensorFlowTests/UNIT_Conv2DBackpropInput_000/test.info
@@ -0,0 +1,2 @@
+input, ifm:0, TF_FLOAT, [1, 8, 6, 3]
+output, ofm:0, TF_FLOAT, [1, 17, 13, 2]
diff --git a/res/TensorFlowTests/UNIT_Conv2DBackpropInput_000/test.manifest b/res/TensorFlowTests/UNIT_Conv2DBackpropInput_000/test.manifest
new file mode 100644
index 000000000..eae8d4baa
--- /dev/null
+++ b/res/TensorFlowTests/UNIT_Conv2DBackpropInput_000/test.manifest
@@ -0,0 +1 @@
+SUMMARY: VALID padding / tight fit case
diff --git a/res/TensorFlowTests/UNIT_Conv2DBackpropInput_000/test.pbtxt b/res/TensorFlowTests/UNIT_Conv2DBackpropInput_000/test.pbtxt
new file mode 100644
index 000000000..6cb0cb71c
--- /dev/null
+++ b/res/TensorFlowTests/UNIT_Conv2DBackpropInput_000/test.pbtxt
@@ -0,0 +1,136 @@
+node {
+ name: "ifm"
+ op: "Placeholder"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "shape"
+ value {
+ shape {
+ dim {
+ size: 1
+ }
+ dim {
+ size: 8
+ }
+ dim {
+ size: 6
+ }
+ dim {
+ size: 3
+ }
+ }
+ }
+ }
+}
+node {
+ name: "weights"
+ op: "Const"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "value"
+ value {
+ tensor {
+ dtype: DT_FLOAT
+ tensor_shape {
+ dim {
+ size: 3
+ }
+ dim {
+ size: 3
+ }
+ dim {
+ size: 2
+ }
+ dim {
+ size: 3
+ }
+ }
+ float_val: 1.0
+ }
+ }
+ }
+}
+node {
+ name: "outshape"
+ op: "Const"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_INT32
+ }
+ }
+ attr {
+ key: "value"
+ value {
+ tensor {
+ dtype: DT_INT32
+ tensor_shape {
+ dim {
+ size: 4
+ }
+ }
+ int_val: 1
+ int_val: 17
+ int_val: 13
+ int_val: 2
+ }
+ }
+ }
+}
+node {
+ name: "ofm"
+ op: "Conv2DBackpropInput"
+ input: "outshape"
+ input: "weights"
+ input: "ifm"
+ attr {
+ key: "T"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "data_format"
+ value {
+ s: "NHWC"
+ }
+ }
+ attr {
+ key: "dilations"
+ value {
+ list {
+ i: 1
+ i: 1
+ i: 1
+ i: 1
+ }
+ }
+ }
+ attr {
+ key: "padding"
+ value {
+ s: "VALID"
+ }
+ }
+ attr {
+ key: "strides"
+ value {
+ list {
+ i: 1
+ i: 2
+ i: 2
+ i: 1
+ }
+ }
+ }
+}
diff --git a/res/TensorFlowTests/UNIT_Conv2DBackpropInput_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_Conv2DBackpropInput_002/test.info b/res/TensorFlowTests/UNIT_Conv2DBackpropInput_002/test.info
new file mode 100644
index 000000000..130931836
--- /dev/null
+++ b/res/TensorFlowTests/UNIT_Conv2DBackpropInput_002/test.info
@@ -0,0 +1,2 @@
+input, ifm:0, TF_FLOAT, [1, 8, 6, 3]
+output, ofm:0, TF_FLOAT, [1, 18, 14, 2]
diff --git a/res/TensorFlowTests/UNIT_Conv2DBackpropInput_002/test.manifest b/res/TensorFlowTests/UNIT_Conv2DBackpropInput_002/test.manifest
new file mode 100644
index 000000000..8a1df46a5
--- /dev/null
+++ b/res/TensorFlowTests/UNIT_Conv2DBackpropInput_002/test.manifest
@@ -0,0 +1 @@
+SUMMARY: VALID padding and non-tight output shape
diff --git a/res/TensorFlowTests/UNIT_Conv2DBackpropInput_002/test.pbtxt b/res/TensorFlowTests/UNIT_Conv2DBackpropInput_002/test.pbtxt
new file mode 100644
index 000000000..0c6b3be84
--- /dev/null
+++ b/res/TensorFlowTests/UNIT_Conv2DBackpropInput_002/test.pbtxt
@@ -0,0 +1,136 @@
+node {
+ name: "ifm"
+ op: "Placeholder"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "shape"
+ value {
+ shape {
+ dim {
+ size: 1
+ }
+ dim {
+ size: 8
+ }
+ dim {
+ size: 6
+ }
+ dim {
+ size: 3
+ }
+ }
+ }
+ }
+}
+node {
+ name: "weights"
+ op: "Const"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "value"
+ value {
+ tensor {
+ dtype: DT_FLOAT
+ tensor_shape {
+ dim {
+ size: 3
+ }
+ dim {
+ size: 3
+ }
+ dim {
+ size: 2
+ }
+ dim {
+ size: 3
+ }
+ }
+ float_val: 1.0
+ }
+ }
+ }
+}
+node {
+ name: "outshape"
+ op: "Const"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_INT32
+ }
+ }
+ attr {
+ key: "value"
+ value {
+ tensor {
+ dtype: DT_INT32
+ tensor_shape {
+ dim {
+ size: 4
+ }
+ }
+ int_val: 1
+ int_val: 18
+ int_val: 14
+ int_val: 2
+ }
+ }
+ }
+}
+node {
+ name: "ofm"
+ op: "Conv2DBackpropInput"
+ input: "outshape"
+ input: "weights"
+ input: "ifm"
+ attr {
+ key: "T"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "data_format"
+ value {
+ s: "NHWC"
+ }
+ }
+ attr {
+ key: "dilations"
+ value {
+ list {
+ i: 1
+ i: 1
+ i: 1
+ i: 1
+ }
+ }
+ }
+ attr {
+ key: "padding"
+ value {
+ s: "VALID"
+ }
+ }
+ attr {
+ key: "strides"
+ value {
+ list {
+ i: 1
+ i: 2
+ i: 2
+ i: 1
+ }
+ }
+ }
+}
diff --git a/res/TensorFlowTests/UNIT_Conv2D_000/test.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..f537cf4a6
--- /dev/null
+++ b/res/TensorFlowTests/UNIT_Conv2D_000/test.pbtxt
@@ -0,0 +1,72 @@
+node {
+ name: "ifm"
+ op: "Placeholder"
+ attr {
+ key: "dtype"
+ value { type: DT_FLOAT }
+ }
+ attr {
+ key: "shape"
+ value {
+ shape {
+ dim { size: 1 }
+ dim { size: 5 }
+ dim { size: 5 }
+ dim { size: 3 }
+ }
+ }
+ }
+}
+node {
+ name: "ker"
+ op: "Const"
+ attr {
+ key: "dtype"
+ value { type: DT_FLOAT }
+ }
+ attr {
+ key: "value"
+ value {
+ tensor {
+ dtype: DT_FLOAT
+ tensor_shape {
+ dim { size: 2 }
+ dim { size: 2 }
+ dim { size: 3 }
+ dim { size: 2 }
+ }
+ float_val: 1.1
+ }
+ }
+ }
+}
+node {
+ name: "ofm"
+ op: "Conv2D"
+ input: "ifm"
+ input: "ker"
+ attr {
+ key: "T"
+ value { type: DT_FLOAT }
+ }
+ attr {
+ key: "data_format"
+ value { s: "NHWC" }
+ }
+ attr {
+ key: "dilations"
+ value {
+ list { i: 1 i: 1 i: 1 i: 1 }
+ }
+ }
+ attr {
+ key: "padding"
+ value { s: "VALID" }
+ }
+ attr {
+ key: "strides"
+ value {
+ list { i: 1 i: 1 i: 1 i: 1 }
+ }
+ }
+}
diff --git a/res/TensorFlowTests/UNIT_Conv2D_001/test.info b/res/TensorFlowTests/UNIT_Conv2D_001/test.info
new file mode 100644
index 000000000..2b6d73e5b
--- /dev/null
+++ b/res/TensorFlowTests/UNIT_Conv2D_001/test.info
@@ -0,0 +1,2 @@
+input, ifm:0, TF_FLOAT, [1, 5, 5, 3]
+output, ofm:0, TF_FLOAT, [1, 3, 3, 2]
diff --git a/res/TensorFlowTests/UNIT_Conv2D_001/test.manifest b/res/TensorFlowTests/UNIT_Conv2D_001/test.manifest
new file mode 100644
index 000000000..34c89b172
--- /dev/null
+++ b/res/TensorFlowTests/UNIT_Conv2D_001/test.manifest
@@ -0,0 +1 @@
+SUMMARY: One convolution operation with SAME padding, and [2, 2] strides
diff --git a/res/TensorFlowTests/UNIT_Conv2D_001/test.pbtxt b/res/TensorFlowTests/UNIT_Conv2D_001/test.pbtxt
new file mode 100644
index 000000000..6eb539be8
--- /dev/null
+++ b/res/TensorFlowTests/UNIT_Conv2D_001/test.pbtxt
@@ -0,0 +1,72 @@
+node {
+ name: "ifm"
+ op: "Placeholder"
+ attr {
+ key: "dtype"
+ value { type: DT_FLOAT }
+ }
+ attr {
+ key: "shape"
+ value {
+ shape {
+ dim { size: 1 }
+ dim { size: 5 }
+ dim { size: 5 }
+ dim { size: 3 }
+ }
+ }
+ }
+}
+node {
+ name: "ker"
+ op: "Const"
+ attr {
+ key: "dtype"
+ value { type: DT_FLOAT }
+ }
+ attr {
+ key: "value"
+ value {
+ tensor {
+ dtype: DT_FLOAT
+ tensor_shape {
+ dim { size: 2 }
+ dim { size: 2 }
+ dim { size: 3 }
+ dim { size: 2 }
+ }
+ float_val: 1.1
+ }
+ }
+ }
+}
+node {
+ name: "ofm"
+ op: "Conv2D"
+ input: "ifm"
+ input: "ker"
+ attr {
+ key: "T"
+ value { type: DT_FLOAT }
+ }
+ attr {
+ key: "data_format"
+ value { s: "NHWC" }
+ }
+ attr {
+ key: "dilations"
+ value {
+ list { i: 1 i: 1 i: 1 i: 1 }
+ }
+ }
+ attr {
+ key: "padding"
+ value { s: "SAME" }
+ }
+ attr {
+ key: "strides"
+ value {
+ list { i: 1 i: 2 i: 2 i: 1 }
+ }
+ }
+}
diff --git a/res/TensorFlowTests/UNIT_Conv2D_002/test.info b/res/TensorFlowTests/UNIT_Conv2D_002/test.info
new file mode 100644
index 000000000..8f1dbd45a
--- /dev/null
+++ b/res/TensorFlowTests/UNIT_Conv2D_002/test.info
@@ -0,0 +1,3 @@
+# conv2d with VALID, stride = 2, 2
+input, ifm:0, TF_FLOAT, [1, 5, 5, 3]
+output, ofm:0, TF_FLOAT, [1, 2, 2, 2]
diff --git a/res/TensorFlowTests/UNIT_Conv2D_002/test.manifest b/res/TensorFlowTests/UNIT_Conv2D_002/test.manifest
new file mode 100644
index 000000000..fcabfa148
--- /dev/null
+++ b/res/TensorFlowTests/UNIT_Conv2D_002/test.manifest
@@ -0,0 +1 @@
+SUMMARY: One convolution operation with VALID padding, and [2, 2] strides
diff --git a/res/TensorFlowTests/UNIT_Conv2D_002/test.pbtxt b/res/TensorFlowTests/UNIT_Conv2D_002/test.pbtxt
new file mode 100644
index 000000000..ae2eb364d
--- /dev/null
+++ b/res/TensorFlowTests/UNIT_Conv2D_002/test.pbtxt
@@ -0,0 +1,72 @@
+node {
+ name: "ifm"
+ op: "Placeholder"
+ attr {
+ key: "dtype"
+ value { type: DT_FLOAT }
+ }
+ attr {
+ key: "shape"
+ value {
+ shape {
+ dim { size: 1 }
+ dim { size: 5 }
+ dim { size: 5 }
+ dim { size: 3 }
+ }
+ }
+ }
+}
+node {
+ name: "ker"
+ op: "Const"
+ attr {
+ key: "dtype"
+ value { type: DT_FLOAT }
+ }
+ attr {
+ key: "value"
+ value {
+ tensor {
+ dtype: DT_FLOAT
+ tensor_shape {
+ dim { size: 2 }
+ dim { size: 2 }
+ dim { size: 3 }
+ dim { size: 2 }
+ }
+ float_val: 1.1
+ }
+ }
+ }
+}
+node {
+ name: "ofm"
+ op: "Conv2D"
+ input: "ifm"
+ input: "ker"
+ attr {
+ key: "T"
+ value { type: DT_FLOAT }
+ }
+ attr {
+ key: "data_format"
+ value { s: "NHWC" }
+ }
+ attr {
+ key: "dilations"
+ value {
+ list { i: 1 i: 1 i: 1 i: 1 }
+ }
+ }
+ attr {
+ key: "padding"
+ value { s: "VALID" }
+ }
+ attr {
+ key: "strides"
+ value {
+ list { i: 1 i: 2 i: 2 i: 1 }
+ }
+ }
+}
diff --git a/res/TensorFlowTests/UNIT_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_DepthwiseConv2dNative_000/test.info b/res/TensorFlowTests/UNIT_DepthwiseConv2dNative_000/test.info
new file mode 100644
index 000000000..96a2b1403
--- /dev/null
+++ b/res/TensorFlowTests/UNIT_DepthwiseConv2dNative_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_DepthwiseConv2dNative_000/test.pbtxt b/res/TensorFlowTests/UNIT_DepthwiseConv2dNative_000/test.pbtxt
new file mode 100644
index 000000000..1d8fcaa00
--- /dev/null
+++ b/res/TensorFlowTests/UNIT_DepthwiseConv2dNative_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_DepthwiseConv2dNative_001/test.info b/res/TensorFlowTests/UNIT_DepthwiseConv2dNative_001/test.info
new file mode 100644
index 000000000..c17595388
--- /dev/null
+++ b/res/TensorFlowTests/UNIT_DepthwiseConv2dNative_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_DepthwiseConv2dNative_001/test.pbtxt b/res/TensorFlowTests/UNIT_DepthwiseConv2dNative_001/test.pbtxt
new file mode 100644
index 000000000..9a9717611
--- /dev/null
+++ b/res/TensorFlowTests/UNIT_DepthwiseConv2dNative_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_MirrorPad_000/test.info b/res/TensorFlowTests/UNIT_MirrorPad_000/test.info
new file mode 100644
index 000000000..c6db4607f
--- /dev/null
+++ b/res/TensorFlowTests/UNIT_MirrorPad_000/test.info
@@ -0,0 +1,2 @@
+input, input:0, TF_FLOAT, [1, 3, 2, 4]
+output, MirrorPad:0, TF_FLOAT, [1, 3, 4, 9]
diff --git a/res/TensorFlowTests/UNIT_MirrorPad_000/test.manifest b/res/TensorFlowTests/UNIT_MirrorPad_000/test.manifest
new file mode 100644
index 000000000..06e7567c2
--- /dev/null
+++ b/res/TensorFlowTests/UNIT_MirrorPad_000/test.manifest
@@ -0,0 +1 @@
+SUMMARY: A network that has MirrorPad with REFLECT mode.
diff --git a/res/TensorFlowTests/UNIT_MirrorPad_000/test.pbtxt b/res/TensorFlowTests/UNIT_MirrorPad_000/test.pbtxt
new file mode 100644
index 000000000..7a2bbccd7
--- /dev/null
+++ b/res/TensorFlowTests/UNIT_MirrorPad_000/test.pbtxt
@@ -0,0 +1,87 @@
+node {
+ name: "input"
+ op: "Placeholder"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "shape"
+ value {
+ shape {
+ dim {
+ size: 1
+ }
+ dim {
+ size: 3
+ }
+ dim {
+ size: 2
+ }
+ dim {
+ size: 4
+ }
+ }
+ }
+ }
+}
+node {
+ name: "Const"
+ op: "Const"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_INT32
+ }
+ }
+ attr {
+ key: "value"
+ value {
+ tensor {
+ dtype: DT_INT32
+ tensor_shape {
+ dim {
+ size: 4
+ }
+ dim {
+ size: 2
+ }
+ }
+ int_val: 0
+ int_val: 0
+ int_val: 0
+ int_val: 0
+ int_val: 1
+ int_val: 1
+ int_val: 2
+ int_val: 3
+ }
+ }
+ }
+}
+node {
+ name: "MirrorPad"
+ op: "MirrorPad"
+ input: "input"
+ input: "Const"
+ attr {
+ key: "T"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "Tpaddings"
+ value {
+ type: DT_INT32
+ }
+ }
+ attr {
+ key: "mode"
+ value {
+ s: "REFLECT"
+ }
+ }
+}
diff --git a/res/TensorFlowTests/UNIT_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_Pack_000/test.info b/res/TensorFlowTests/UNIT_Pack_000/test.info
new file mode 100644
index 000000000..756eb6bf4
--- /dev/null
+++ b/res/TensorFlowTests/UNIT_Pack_000/test.info
@@ -0,0 +1 @@
+output, Pack:0, TF_FLOAT, [4]
diff --git a/res/TensorFlowTests/UNIT_Pack_000/test.manifest b/res/TensorFlowTests/UNIT_Pack_000/test.manifest
new file mode 100644
index 000000000..6501a8041
--- /dev/null
+++ b/res/TensorFlowTests/UNIT_Pack_000/test.manifest
@@ -0,0 +1 @@
+SUMMARY: A simple network with one Pack from four scalar Constant inputs
diff --git a/res/TensorFlowTests/UNIT_Pack_000/test.pbtxt b/res/TensorFlowTests/UNIT_Pack_000/test.pbtxt
new file mode 100644
index 000000000..ba3365e19
--- /dev/null
+++ b/res/TensorFlowTests/UNIT_Pack_000/test.pbtxt
@@ -0,0 +1,110 @@
+node {
+ name: "val_1"
+ op: "Const"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "value"
+ value {
+ tensor {
+ dtype: DT_FLOAT
+ tensor_shape {
+ }
+ float_val: 1
+ }
+ }
+ }
+}
+node {
+ name: "val_2"
+ op: "Const"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "value"
+ value {
+ tensor {
+ dtype: DT_FLOAT
+ tensor_shape {
+ }
+ float_val: 2
+ }
+ }
+ }
+}
+node {
+ name: "val_3"
+ op: "Const"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "value"
+ value {
+ tensor {
+ dtype: DT_FLOAT
+ tensor_shape {
+ }
+ float_val: 3
+ }
+ }
+ }
+}
+node {
+ name: "val_4"
+ op: "Const"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "value"
+ value {
+ tensor {
+ dtype: DT_FLOAT
+ tensor_shape {
+ }
+ float_val: 4
+ }
+ }
+ }
+}
+node {
+ name: "Pack"
+ op: "Pack"
+ input: "val_1"
+ input: "val_2"
+ input: "val_3"
+ input: "val_4"
+ attr {
+ key: "N"
+ value {
+ i: 4
+ }
+ }
+ attr {
+ key: "T"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "axis"
+ value {
+ i: 0
+ }
+ }
+}
diff --git a/res/TensorFlowTests/UNIT_Pack_001/test.info b/res/TensorFlowTests/UNIT_Pack_001/test.info
new file mode 100644
index 000000000..ee0d55651
--- /dev/null
+++ b/res/TensorFlowTests/UNIT_Pack_001/test.info
@@ -0,0 +1 @@
+output, pack_0:0, TF_FLOAT, [2, 5, 3]
diff --git a/res/TensorFlowTests/UNIT_Pack_001/test.manifest b/res/TensorFlowTests/UNIT_Pack_001/test.manifest
new file mode 100644
index 000000000..e4b21c426
--- /dev/null
+++ b/res/TensorFlowTests/UNIT_Pack_001/test.manifest
@@ -0,0 +1 @@
+SUMMARY: A simple network with one Pack from two Tensor Constant inputs
diff --git a/res/TensorFlowTests/UNIT_Pack_001/test.pbtxt b/res/TensorFlowTests/UNIT_Pack_001/test.pbtxt
new file mode 100644
index 000000000..fab3132ff
--- /dev/null
+++ b/res/TensorFlowTests/UNIT_Pack_001/test.pbtxt
@@ -0,0 +1,78 @@
+node {
+ name: "val_1"
+ op: "Const"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "value"
+ value {
+ tensor {
+ dtype: DT_FLOAT
+ tensor_shape {
+ dim {
+ size: 5
+ }
+ dim {
+ size: 3
+ }
+ }
+ float_val: 0
+ }
+ }
+ }
+}
+node {
+ name: "val_2"
+ op: "Const"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "value"
+ value {
+ tensor {
+ dtype: DT_FLOAT
+ tensor_shape {
+ dim {
+ size: 5
+ }
+ dim {
+ size: 3
+ }
+ }
+ float_val: 1
+ }
+ }
+ }
+}
+node {
+ name: "pack_0"
+ op: "Pack"
+ input: "val_1"
+ input: "val_2"
+ attr {
+ key: "N"
+ value {
+ i: 2
+ }
+ }
+ attr {
+ key: "T"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "axis"
+ value {
+ i: 0
+ }
+ }
+}
diff --git a/res/TensorFlowTests/UNIT_Pack_002/test.info b/res/TensorFlowTests/UNIT_Pack_002/test.info
new file mode 100644
index 000000000..68db8a511
--- /dev/null
+++ b/res/TensorFlowTests/UNIT_Pack_002/test.info
@@ -0,0 +1 @@
+output, pack_0:0, TF_FLOAT, [5, 3, 2]
diff --git a/res/TensorFlowTests/UNIT_Pack_002/test.manifest b/res/TensorFlowTests/UNIT_Pack_002/test.manifest
new file mode 100644
index 000000000..8445ed3c5
--- /dev/null
+++ b/res/TensorFlowTests/UNIT_Pack_002/test.manifest
@@ -0,0 +1 @@
+SUMMARY: A simple network with one Pack from two Tensor Constant inputs with Pack axis set to 2
diff --git a/res/TensorFlowTests/UNIT_Pack_002/test.pbtxt b/res/TensorFlowTests/UNIT_Pack_002/test.pbtxt
new file mode 100644
index 000000000..6693ef29e
--- /dev/null
+++ b/res/TensorFlowTests/UNIT_Pack_002/test.pbtxt
@@ -0,0 +1,78 @@
+node {
+ name: "val_1"
+ op: "Const"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "value"
+ value {
+ tensor {
+ dtype: DT_FLOAT
+ tensor_shape {
+ dim {
+ size: 5
+ }
+ dim {
+ size: 3
+ }
+ }
+ float_val: 0
+ }
+ }
+ }
+}
+node {
+ name: "val_2"
+ op: "Const"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "value"
+ value {
+ tensor {
+ dtype: DT_FLOAT
+ tensor_shape {
+ dim {
+ size: 5
+ }
+ dim {
+ size: 3
+ }
+ }
+ float_val: 1
+ }
+ }
+ }
+}
+node {
+ name: "pack_0"
+ op: "Pack"
+ input: "val_1"
+ input: "val_2"
+ attr {
+ key: "N"
+ value {
+ i: 2
+ }
+ }
+ attr {
+ key: "T"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "axis"
+ value {
+ i: 2
+ }
+ }
+}
diff --git a/res/TensorFlowTests/UNIT_Pack_003/test.info b/res/TensorFlowTests/UNIT_Pack_003/test.info
new file mode 100644
index 000000000..62cad00d1
--- /dev/null
+++ b/res/TensorFlowTests/UNIT_Pack_003/test.info
@@ -0,0 +1 @@
+output, pack_0:0, TF_FLOAT, [5, 2, 3]
diff --git a/res/TensorFlowTests/UNIT_Pack_003/test.manifest b/res/TensorFlowTests/UNIT_Pack_003/test.manifest
new file mode 100644
index 000000000..013c2c511
--- /dev/null
+++ b/res/TensorFlowTests/UNIT_Pack_003/test.manifest
@@ -0,0 +1 @@
+SUMMARY: A simple network with one Pack from two Tensor Constant inputs with Pack axis set to -2
diff --git a/res/TensorFlowTests/UNIT_Pack_003/test.pbtxt b/res/TensorFlowTests/UNIT_Pack_003/test.pbtxt
new file mode 100644
index 000000000..73b278c02
--- /dev/null
+++ b/res/TensorFlowTests/UNIT_Pack_003/test.pbtxt
@@ -0,0 +1,78 @@
+node {
+ name: "val_1"
+ op: "Const"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "value"
+ value {
+ tensor {
+ dtype: DT_FLOAT
+ tensor_shape {
+ dim {
+ size: 5
+ }
+ dim {
+ size: 3
+ }
+ }
+ float_val: 0
+ }
+ }
+ }
+}
+node {
+ name: "val_2"
+ op: "Const"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "value"
+ value {
+ tensor {
+ dtype: DT_FLOAT
+ tensor_shape {
+ dim {
+ size: 5
+ }
+ dim {
+ size: 3
+ }
+ }
+ float_val: 1
+ }
+ }
+ }
+}
+node {
+ name: "pack_0"
+ op: "Pack"
+ input: "val_1"
+ input: "val_2"
+ attr {
+ key: "N"
+ value {
+ i: 2
+ }
+ }
+ attr {
+ key: "T"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "axis"
+ value {
+ i: -2
+ }
+ }
+}
diff --git a/res/TensorFlowTests/UNIT_Pack_004/test.info b/res/TensorFlowTests/UNIT_Pack_004/test.info
new file mode 100644
index 000000000..16ff5b9e9
--- /dev/null
+++ b/res/TensorFlowTests/UNIT_Pack_004/test.info
@@ -0,0 +1 @@
+output, pack_0:0, TF_FLOAT, [2, 5, 3]
diff --git a/res/TensorFlowTests/UNIT_Pack_004/test.manifest b/res/TensorFlowTests/UNIT_Pack_004/test.manifest
new file mode 100644
index 000000000..dfd369dfd
--- /dev/null
+++ b/res/TensorFlowTests/UNIT_Pack_004/test.manifest
@@ -0,0 +1 @@
+SUMMARY: A simple network with one Pack from two Tensor Constant inputs with Pack axis set to -3
diff --git a/res/TensorFlowTests/UNIT_Pack_004/test.pbtxt b/res/TensorFlowTests/UNIT_Pack_004/test.pbtxt
new file mode 100644
index 000000000..04dd52fa7
--- /dev/null
+++ b/res/TensorFlowTests/UNIT_Pack_004/test.pbtxt
@@ -0,0 +1,78 @@
+node {
+ name: "val_1"
+ op: "Const"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "value"
+ value {
+ tensor {
+ dtype: DT_FLOAT
+ tensor_shape {
+ dim {
+ size: 5
+ }
+ dim {
+ size: 3
+ }
+ }
+ float_val: 0
+ }
+ }
+ }
+}
+node {
+ name: "val_2"
+ op: "Const"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "value"
+ value {
+ tensor {
+ dtype: DT_FLOAT
+ tensor_shape {
+ dim {
+ size: 5
+ }
+ dim {
+ size: 3
+ }
+ }
+ float_val: 1
+ }
+ }
+ }
+}
+node {
+ name: "pack_0"
+ op: "Pack"
+ input: "val_1"
+ input: "val_2"
+ attr {
+ key: "N"
+ value {
+ i: 2
+ }
+ }
+ attr {
+ key: "T"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "axis"
+ value {
+ i: -3
+ }
+ }
+}
diff --git a/res/TensorFlowTests/UNIT_PadV2_000/test.info b/res/TensorFlowTests/UNIT_PadV2_000/test.info
new file mode 100644
index 000000000..accae4857
--- /dev/null
+++ b/res/TensorFlowTests/UNIT_PadV2_000/test.info
@@ -0,0 +1,2 @@
+input, input:0, TF_FLOAT, [1, 3, 4, 4]
+output, PadV2:0, TF_FLOAT, [1, 3, 8, 6]
diff --git a/res/TensorFlowTests/UNIT_PadV2_000/test.manifest b/res/TensorFlowTests/UNIT_PadV2_000/test.manifest
new file mode 100644
index 000000000..1d00241f2
--- /dev/null
+++ b/res/TensorFlowTests/UNIT_PadV2_000/test.manifest
@@ -0,0 +1 @@
+SUMMARY: A simple network that has Constant mode Pad with constant values.
diff --git a/res/TensorFlowTests/UNIT_PadV2_000/test.pbtxt b/res/TensorFlowTests/UNIT_PadV2_000/test.pbtxt
new file mode 100644
index 000000000..cf80fe559
--- /dev/null
+++ b/res/TensorFlowTests/UNIT_PadV2_000/test.pbtxt
@@ -0,0 +1,103 @@
+node {
+ name: "input"
+ op: "Placeholder"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "shape"
+ value {
+ shape {
+ dim {
+ size: 1
+ }
+ dim {
+ size: 3
+ }
+ dim {
+ size: 4
+ }
+ dim {
+ size: 4
+ }
+ }
+ }
+ }
+}
+node {
+ name: "Const"
+ op: "Const"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_INT32
+ }
+ }
+ attr {
+ key: "value"
+ value {
+ tensor {
+ dtype: DT_INT32
+ tensor_shape {
+ dim {
+ size: 4
+ }
+ dim {
+ size: 2
+ }
+ }
+ int_val: 0
+ int_val: 0
+ int_val: 0
+ int_val: 0
+ int_val: 2
+ int_val: 2
+ int_val: 1
+ int_val: 1
+ }
+ }
+ }
+}
+node {
+ name: "PadV2/constant_values"
+ op: "Const"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "value"
+ value {
+ tensor {
+ dtype: DT_FLOAT
+ tensor_shape {
+ }
+ float_val: 2
+ }
+ }
+ }
+}
+node {
+ name: "PadV2"
+ op: "PadV2"
+ input: "input"
+ input: "Const"
+ input: "PadV2/constant_values"
+ attr {
+ key: "T"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "Tpaddings"
+ value {
+ type: DT_INT32
+ }
+ }
+}
diff --git a/res/TensorFlowTests/UNIT_Pad_000/test.info b/res/TensorFlowTests/UNIT_Pad_000/test.info
new file mode 100644
index 000000000..e9fd5fce2
--- /dev/null
+++ b/res/TensorFlowTests/UNIT_Pad_000/test.info
@@ -0,0 +1,2 @@
+input, input:0, TF_FLOAT, [1, 3, 4, 4]
+output, Pad:0, TF_FLOAT, [1, 3, 8, 6]
diff --git a/res/TensorFlowTests/UNIT_Pad_000/test.manifest b/res/TensorFlowTests/UNIT_Pad_000/test.manifest
new file mode 100644
index 000000000..d3001df34
--- /dev/null
+++ b/res/TensorFlowTests/UNIT_Pad_000/test.manifest
@@ -0,0 +1,8 @@
+SUMMARY: A simple network that has Constant mode Pad with default value(constant_values=0)
+
+# HOW TO GENERATE:
+# import tensorflow as tf
+# input = tf.placeholder(tf.float32, shape=[1,3,4,4], name="input")
+# paddings = tf.constant([[0,0],[0,0],[2,2],[1,1]])
+# pad_const = tf.pad(input, paddings, "CONSTANT")
+# tf.get_default_graph().as_graph_def()
diff --git a/res/TensorFlowTests/UNIT_Pad_000/test.pbtxt b/res/TensorFlowTests/UNIT_Pad_000/test.pbtxt
new file mode 100644
index 000000000..8d6a5c8aa
--- /dev/null
+++ b/res/TensorFlowTests/UNIT_Pad_000/test.pbtxt
@@ -0,0 +1,81 @@
+node {
+ name: "input"
+ op: "Placeholder"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "shape"
+ value {
+ shape {
+ dim {
+ size: 1
+ }
+ dim {
+ size: 3
+ }
+ dim {
+ size: 4
+ }
+ dim {
+ size: 4
+ }
+ }
+ }
+ }
+}
+node {
+ name: "Const"
+ op: "Const"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_INT32
+ }
+ }
+ attr {
+ key: "value"
+ value {
+ tensor {
+ dtype: DT_INT32
+ tensor_shape {
+ dim {
+ size: 4
+ }
+ dim {
+ size: 2
+ }
+ }
+ int_val: 0
+ int_val: 0
+ int_val: 0
+ int_val: 0
+ int_val: 2
+ int_val: 2
+ int_val: 1
+ int_val: 1
+ }
+ }
+ }
+}
+node {
+ name: "Pad"
+ op: "Pad"
+ input: "input"
+ input: "Const"
+ attr {
+ key: "T"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "Tpaddings"
+ value {
+ type: DT_INT32
+ }
+ }
+}
diff --git a/res/TensorFlowTests/UNIT_Placeholder_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_Placeholder_001/test.info b/res/TensorFlowTests/UNIT_Placeholder_001/test.info
new file mode 100644
index 000000000..f5e08fb5b
--- /dev/null
+++ b/res/TensorFlowTests/UNIT_Placeholder_001/test.info
@@ -0,0 +1,2 @@
+input, Placeholder:0, TF_FLOAT, [1, 2, 3, 4]
+output, Identity:0, TF_FLOAT, [1, 2, 3, 4]
diff --git a/res/TensorFlowTests/UNIT_Placeholder_001/test.manifest b/res/TensorFlowTests/UNIT_Placeholder_001/test.manifest
new file mode 100644
index 000000000..232ba50a3
--- /dev/null
+++ b/res/TensorFlowTests/UNIT_Placeholder_001/test.manifest
@@ -0,0 +1 @@
+SUMMARY: A simple network of placeholder with unknown dimension.
diff --git a/res/TensorFlowTests/UNIT_Placeholder_001/test.pbtxt b/res/TensorFlowTests/UNIT_Placeholder_001/test.pbtxt
new file mode 100644
index 000000000..0913d28e3
--- /dev/null
+++ b/res/TensorFlowTests/UNIT_Placeholder_001/test.pbtxt
@@ -0,0 +1,40 @@
+node {
+ name: "Placeholder"
+ op: "Placeholder"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "shape"
+ value {
+ shape {
+ dim {
+ size: 1
+ }
+ dim {
+ size: 2
+ }
+ dim {
+ size: 3
+ }
+ dim {
+ size: -1
+ }
+ }
+ }
+ }
+}
+node {
+ name: "Identity"
+ op: "Identity"
+ input: "Placeholder"
+ attr {
+ key: "T"
+ value {
+ type: DT_FLOAT
+ }
+ }
+}
diff --git a/res/TensorFlowTests/UNIT_Placeholder_002/test.info b/res/TensorFlowTests/UNIT_Placeholder_002/test.info
new file mode 100644
index 000000000..f5e08fb5b
--- /dev/null
+++ b/res/TensorFlowTests/UNIT_Placeholder_002/test.info
@@ -0,0 +1,2 @@
+input, Placeholder:0, TF_FLOAT, [1, 2, 3, 4]
+output, Identity:0, TF_FLOAT, [1, 2, 3, 4]
diff --git a/res/TensorFlowTests/UNIT_Placeholder_002/test.pbtxt b/res/TensorFlowTests/UNIT_Placeholder_002/test.pbtxt
new file mode 100644
index 000000000..e3b468275
--- /dev/null
+++ b/res/TensorFlowTests/UNIT_Placeholder_002/test.pbtxt
@@ -0,0 +1,21 @@
+node {
+ name: "Placeholder"
+ op: "Placeholder"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_FLOAT
+ }
+ }
+}
+node {
+ name: "Identity"
+ op: "Identity"
+ input: "Placeholder"
+ attr {
+ key: "T"
+ value {
+ type: DT_FLOAT
+ }
+ }
+}
diff --git a/res/TensorFlowTests/UNIT_Placeholder_003/test.info b/res/TensorFlowTests/UNIT_Placeholder_003/test.info
new file mode 100644
index 000000000..f5e08fb5b
--- /dev/null
+++ b/res/TensorFlowTests/UNIT_Placeholder_003/test.info
@@ -0,0 +1,2 @@
+input, Placeholder:0, TF_FLOAT, [1, 2, 3, 4]
+output, Identity:0, TF_FLOAT, [1, 2, 3, 4]
diff --git a/res/TensorFlowTests/UNIT_Placeholder_003/test.pbtxt b/res/TensorFlowTests/UNIT_Placeholder_003/test.pbtxt
new file mode 100644
index 000000000..28955d383
--- /dev/null
+++ b/res/TensorFlowTests/UNIT_Placeholder_003/test.pbtxt
@@ -0,0 +1,28 @@
+node {
+ name: "Placeholder"
+ op: "Placeholder"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "shape"
+ value {
+ shape {
+ }
+ }
+ }
+}
+node {
+ name: "Identity"
+ op: "Identity"
+ input: "Placeholder"
+ attr {
+ key: "T"
+ value {
+ type: DT_FLOAT
+ }
+ }
+}
diff --git a/res/TensorFlowTests/UNIT_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/circle.rule b/res/TensorFlowTests/UNIT_SquaredDifference_000/circle.rule
new file mode 100644
index 000000000..bff2459a1
--- /dev/null
+++ b/res/TensorFlowTests/UNIT_SquaredDifference_000/circle.rule
@@ -0,0 +1,7 @@
+# To check tf2circle's result has Squared Difference Op, not divided into Sub and Div.
+
+RULE "VERIFY_FILE_FORMAT" $(verify_file_format) '=' 1
+
+RULE "SQUARED_DIFF_EXIST" $(op_count SQUARED_DIFFERENCE) '=' 1
+RULE "NO_SUB_EXIST" $(op_count SUB) '=' 0
+RULE "NO_MUL_EXIST" $(op_count MUL) '=' 0
diff --git a/res/TensorFlowTests/UNIT_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_StridedSlice_000/test.info b/res/TensorFlowTests/UNIT_StridedSlice_000/test.info
new file mode 100644
index 000000000..614bdb208
--- /dev/null
+++ b/res/TensorFlowTests/UNIT_StridedSlice_000/test.info
@@ -0,0 +1 @@
+output, strided_slice:0, TF_FLOAT, [1]
diff --git a/res/TensorFlowTests/UNIT_StridedSlice_000/test.manifest b/res/TensorFlowTests/UNIT_StridedSlice_000/test.manifest
new file mode 100644
index 000000000..c02e14a74
--- /dev/null
+++ b/res/TensorFlowTests/UNIT_StridedSlice_000/test.manifest
@@ -0,0 +1 @@
+SUMMARY: A simple network that has one StridedSlice with shrink_axis_mask 1
diff --git a/res/TensorFlowTests/UNIT_StridedSlice_000/test.pbtxt b/res/TensorFlowTests/UNIT_StridedSlice_000/test.pbtxt
new file mode 100644
index 000000000..db7b12b5b
--- /dev/null
+++ b/res/TensorFlowTests/UNIT_StridedSlice_000/test.pbtxt
@@ -0,0 +1,149 @@
+node {
+ name: "input"
+ op: "Const"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "value"
+ value {
+ tensor {
+ dtype: DT_FLOAT
+ tensor_shape {
+ dim {
+ size: 4
+ }
+ }
+ float_val: 1
+ float_val: 5
+ float_val: 5
+ float_val: 256
+ }
+ }
+ }
+}
+node {
+ name: "begin"
+ op: "Const"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_INT32
+ }
+ }
+ attr {
+ key: "value"
+ value {
+ tensor {
+ dtype: DT_INT32
+ tensor_shape {
+ dim {
+ size: 1
+ }
+ }
+ int_val: 1
+ }
+ }
+ }
+}
+node {
+ name: "end"
+ op: "Const"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_INT32
+ }
+ }
+ attr {
+ key: "value"
+ value {
+ tensor {
+ dtype: DT_INT32
+ tensor_shape {
+ dim {
+ size: 1
+ }
+ }
+ int_val: 2
+ }
+ }
+ }
+}
+node {
+ name: "strides"
+ op: "Const"
+ attr {
+ key: "dtype"
+ value {
+ type: DT_INT32
+ }
+ }
+ attr {
+ key: "value"
+ value {
+ tensor {
+ dtype: DT_INT32
+ tensor_shape {
+ dim {
+ size: 1
+ }
+ }
+ int_val: 1
+ }
+ }
+ }
+}
+node {
+ name: "strided_slice"
+ op: "StridedSlice"
+ input: "input"
+ input: "begin"
+ input: "end"
+ input: "strides"
+ attr {
+ key: "Index"
+ value {
+ type: DT_INT32
+ }
+ }
+ attr {
+ key: "T"
+ value {
+ type: DT_FLOAT
+ }
+ }
+ attr {
+ key: "begin_mask"
+ value {
+ i: 0
+ }
+ }
+ attr {
+ key: "ellipsis_mask"
+ value {
+ i: 0
+ }
+ }
+ attr {
+ key: "end_mask"
+ value {
+ i: 0
+ }
+ }
+ attr {
+ key: "new_axis_mask"
+ value {
+ i: 0
+ }
+ }
+ attr {
+ key: "shrink_axis_mask"
+ value {
+ i: 1
+ }
+ }
+}
diff --git a/res/TensorFlowTests/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
+ }
+ }
+}
diff --git a/res/TensorFlowTests/explain.sh b/res/TensorFlowTests/explain.sh
new file mode 100755
index 000000000..9d6903327
--- /dev/null
+++ b/res/TensorFlowTests/explain.sh
@@ -0,0 +1,47 @@
+#!/bin/bash
+
+TESTCASE_REPO="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
+
+### Parse Command-line Arguments
+SHOW_PATH=0
+
+while true; do
+ case "$1" in
+ -p | --path)
+ SHOW_PATH=1;
+ shift
+ ;;
+ *)
+ break
+ ;;
+ esac
+done
+
+### Generate Report
+(
+ # Print HEADER
+ echo -n "NAME"
+ echo -n ",SUMMARY"
+ if [[ ${SHOW_PATH} -ne 0 ]]; then
+ echo -n ",PATH"
+ fi
+ echo
+
+ # Print ROW(s)
+ for PREFIX in $(cd "${TESTCASE_REPO}"; ls */test.info | xargs -i dirname {} | sort); do
+ TESTCASE_DIR="${TESTCASE_REPO}/${PREFIX}"
+ TESTCASE_MANIFEST_FILE="${TESTCASE_DIR}/test.manifest"
+ TESTCASE_GRAPHDEF_FILE="${TESTCASE_DIR}/test.pbtxt"
+
+ echo -n "${PREFIX}"
+ if [[ -f "${TESTCASE_MANIFEST_FILE}" ]]; then
+ echo -n ",$(cat "${TESTCASE_MANIFEST_FILE}" | grep '^SUMMARY: ' | head -n1 | sed 's/^SUMMARY://g' | xargs)"
+ else
+ echo -n ",-"
+ fi
+ if [[ ${SHOW_PATH} -ne 0 ]]; then
+ echo -n ",${TESTCASE_GRAPHDEF_FILE}"
+ fi
+ echo
+ done
+) | column -t -s ,