/usr/local/lib64/python3.6/site-packages/caffe2/quantization/server
NameSizeModeActions
__pycache__/-0755rm
batch_matmul_dnnlowp_op_test.py101520644editdlrm
batch_permutation_dnnlowp_op_test.py14490644editdlrm
channel_shuffle_dnnlowp_op_test.py38900644editdlrm
compute_equalization_scale_test.py31540644editdlrm
concat_dnnlowp_op_test.py32650644editdlrm
conv_depthwise_dnnlowp_op_test.py109310644editdlrm
conv_dnnlowp_acc16_op_test.py142020644editdlrm
conv_dnnlowp_op_test.py179190644editdlrm
conv_groupwise_dnnlowp_acc16_op_test.py116640644editdlrm
conv_groupwise_dnnlowp_op_test.py95370644editdlrm
dequantize_dnnlowp_op_test.py17430644editdlrm
dnnlowp_test_utils.py145440644editdlrm
elementwise_add_dnnlowp_op_test.py66620644editdlrm
elementwise_linear_dnnlowp_op_test.py31010644editdlrm
elementwise_mul_dnnlowp_op_test.py63150644editdlrm
elementwise_sum_dnnlowp_op_test.py96820644editdlrm
fully_connected_dnnlowp_acc16_op_test.py83240644editdlrm
fully_connected_dnnlowp_op_test.py104630644editdlrm
fully_connected_fp16_test.py25190644editdlrm
fully_connected_rowwise_dnnlowp_op_test.py54340644editdlrm
gather_dnnlowp_op_test.py27900644editdlrm
group_norm_dnnlowp_op_test.py45660644editdlrm
int8_gen_quant_params_min_max_test.py34910644editdlrm
int8_gen_quant_params_test.py35500644editdlrm
int8_quant_scheme_blob_fill_test.py18380644editdlrm
lstm_unit_dnnlowp_op_test.py39750644editdlrm
observer_test.py10110644editdlrm
pool_dnnlowp_op_test.py61250644editdlrm
quantize_dnnlowp_op_test.py26680644editdlrm
relu_dnnlowp_op_test.py24180644editdlrm
resize_nearest_3d_dnnlowp_op_test.py22890644editdlrm
resize_nearest_dnnlowp_op_test.py19940644editdlrm
sigmoid_dnnlowp_op_test.py22030644editdlrm
spatial_batch_norm_dnnlowp_op_test.py40940644editdlrm
tanh_dnnlowp_op_test.py21870644editdlrm
utils.py160590644editdlrm
__init__.py00644editdlrm
Edit: /usr/local/lib64/python3.6/site-packages/caffe2/quantization/server/pool_dnnlowp_op_test.py (6125B)
import collections import caffe2.python.hypothesis_test_util as hu import hypothesis.strategies as st import numpy as np from caffe2.python import core, dyndep, workspace from caffe2.quantization.server.dnnlowp_test_utils import check_quantized_results_close from hypothesis import assume, given dyndep.InitOpsLibrary("//caffe2/caffe2/quantization/server:dnnlowp_ops") workspace.GlobalInit(["caffe2", "--caffe2_omp_num_threads=11"]) class DNNLowPOpPoolTest(hu.HypothesisTestCase): @given( stride=st.integers(1, 3), pad=st.integers(0, 3), kernel=st.integers(1, 5), size=st.integers(1, 20), input_channels=st.integers(1, 3), batch_size=st.integers(1, 3), order=st.sampled_from(["NCHW", "NHWC"]), in_quantized=st.booleans(), **hu.gcs_cpu_only ) def test_dnnlowp_max_pool( self, stride, pad, kernel, size, input_channels, batch_size, order, in_quantized, gc, dc, ): assume(kernel <= size) assume(pad < kernel) C = input_channels N = batch_size H = W = size min_ = -10 max_ = 20 if order == "NCHW": X = np.round(np.random.rand(N, C, H, W) * (max_ - min_) + min_) elif order == "NHWC": X = np.round(np.random.rand(N, H, W, C) * (max_ - min_) + min_) X = X.astype(np.float32) Output = collections.namedtuple("Output", ["Y", "op_type", "engine"]) outputs = [] op_engine_list = [ ("MaxPool", ""), ("MaxPool", "DNNLOWP"), ("Int8MaxPool", "DNNLOWP"), ] for op_type, engine in op_engine_list: net = core.Net("test_net") do_quantize = "DNNLOWP" in engine and in_quantized if do_quantize: quantize = core.CreateOperator( "Quantize", ["X"], ["X_q"], engine=engine, device_option=gc ) net.Proto().op.extend([quantize]) max_pool = core.CreateOperator( op_type, ["X_q" if do_quantize else "X"], ["Y_q" if engine == "DNNLOWP" else "Y"], stride=stride, kernel=kernel, pad=pad, order=order, engine=engine, device_option=gc, ) net.Proto().op.extend([max_pool]) if engine == "DNNLOWP": dequantize = core.CreateOperator( "Dequantize", ["Y_q"], ["Y"], engine=engine, device_option=gc ) net.Proto().op.extend([dequantize]) self.ws.create_blob("X").feed(X, device_option=gc) self.ws.run(net) outputs.append( Output(Y=self.ws.blobs["Y"].fetch(), op_type=op_type, engine=engine) ) # Y_i = max(X_j) so the only error is in quantization of inputs check_quantized_results_close(outputs, ref=X) @given( ndim=st.integers(2, 3), stride=st.integers(1, 1), pad=st.integers(0, 0), kernel=st.integers(1, 5), size=st.integers(2, 2), input_channels=st.integers(1, 1), batch_size=st.integers(2, 2), order=st.sampled_from(["NCHW", "NHWC"]), in_quantized=st.booleans(), **hu.gcs_cpu_only ) def test_dnnlowp_average_pool( self, ndim, stride, pad, kernel, size, input_channels, batch_size, order, in_quantized, gc, dc, ): kernel = 2 # Only kernel size 2 is supported assume(kernel <= size) assume(pad < kernel) C = input_channels N = batch_size strides = (stride,) * ndim pads = (pad,) * (ndim * 2) kernels = (kernel,) * ndim sizes = (size,) * ndim # X has scale 1, so no input quantization error min_ = -100 max_ = min_ + 255 if order == "NCHW": X = np.round(np.random.rand(*((N, C) + sizes)) * (max_ - min_) + min_) X = X.astype(np.float32) X[(0,) * (ndim + 2)] = min_ X[(0,) * (ndim + 1) + (1,)] = max_ elif order == "NHWC": X = np.round(np.random.rand(*((N,) + sizes + (C,))) * (max_ - min_) + min_) X = X.astype(np.float32) X[(0,) * (ndim + 2)] = min_ X[(0, 1) + (0,) * ndim] = max_ Output = collections.namedtuple("Output", ["Y", "op_type", "engine"]) outputs = [] op_engine_list = [ ("AveragePool", ""), ("AveragePool", "DNNLOWP"), ("Int8AveragePool", "DNNLOWP"), ] for op_type, engine in op_engine_list: net = core.Net("test_net") do_quantize = "DNNLOWP" in engine and in_quantized if do_quantize: quantize = core.CreateOperator( "Quantize", ["X"], ["X_q"], engine=engine, device_option=gc ) net.Proto().op.extend([quantize]) max_pool = core.CreateOperator( op_type, ["X_q" if do_quantize else "X"], ["Y_q" if engine == "DNNLOWP" else "Y"], strides=strides, kernels=kernels, pads=pads, order=order, engine=engine, device_option=gc, ) net.Proto().op.extend([max_pool]) if engine == "DNNLOWP": dequantize = core.CreateOperator( "Dequantize", ["Y_q"], ["Y"], engine=engine, device_option=gc ) net.Proto().op.extend([dequantize]) self.ws.create_blob("X").feed(X, device_option=gc) self.ws.run(net) outputs.append( Output(Y=self.ws.blobs["Y"].fetch(), op_type=op_type, engine=engine) ) check_quantized_results_close(outputs)