示例#1
0
文件: run.py 项目: marph91/pocket-cnn
def create_stimuli(root, ksize, stride, bitwidth_data_in, bitwidth_data_out,
                   bitwidth_weights, channel_in, channel_out, width, height):
    a_rand = random_fixed_array((1, channel_in, height, width),
                                bitwidth_data_in)
    a_in = v_to_fixedint(a_rand)
    np.savetxt(join(root, "gen", f"input_{ksize}_{stride}_{channel_in}.csv"),
               flatten(a_in),
               delimiter=", ",
               fmt="%3d")

    a_weights_rand = random_fixed_array(
        (channel_out, channel_in, ksize, ksize), bitwidth_weights)
    a_bias_rand = random_fixed_array((channel_out, ), bitwidth_weights)

    # weights and bias to txt
    weights_to_files(a_weights_rand, a_bias_rand,
                     f"conv_{ksize}_{stride}_{channel_in}", join(root, "gen"))

    # assign the outputs
    conv_out = v_to_fixedint(
        conv(a_rand, a_weights_rand, a_bias_rand, (ksize, stride),
             bitwidth_data_out.as_tuple))
    filename = join(root, "gen", f"output_{ksize}_{stride}_{channel_in}.csv")
    with open(filename, "w") as outfile:
        np.savetxt(outfile, flatten(conv_out), delimiter=", ", fmt="%3d")
示例#2
0
文件: run.py 项目: marph91/pocket-cnn
def create_stimuli(root, ksize, stride, bitwidth, shape):
    a_rand = random_fixed_array(shape, bitwidth)
    a_in = v_to_fixedint(a_rand)
    np.savetxt(join(root, "src", "input_%d_%d.csv" % (ksize, stride)),
               flatten(a_in),
               delimiter=", ",
               fmt="%3d")

    # assign the outputs
    filename = join(root, "src", "output_%d_%d.csv" % (ksize, stride))
    max_out = v_to_fixedint(max_pool(a_rand, ksize, stride))
    with open(filename, "w") as outfile:
        np.savetxt(outfile, flatten(max_out), delimiter=", ", fmt="%3d")
示例#3
0
def create_stimuli(root, ksize, stride, total_bits, frac_bits, channel,
                   width, height):
    int_bits = total_bits - frac_bits

    a_rand = np.random.randint(2 ** total_bits,
                               size=(1, channel, height, width))
    np.savetxt(join(root, "src", "input_%d_%d.csv" % (ksize, stride)),
               flatten(a_rand), delimiter=", ", fmt="%3d")

    # assign the outputs
    filename = join(root, "src", "output_%d_%d.csv" % (ksize, stride))
    max_out = max_pool(a_rand, ksize, stride, (int_bits, frac_bits))
    with open(filename, "w") as outfile:
        np.savetxt(outfile, flatten(max_out), delimiter=", ", fmt="%3d")
示例#4
0
def create_arrays(root, w, h, ch):
    id_ = "one" if ch == 1 else "multiple"

    a_rand = random_fixed_array((1, ch, h, w), 8, 0)
    a_in = v_float2fixedint(a_rand, 8, 0)
    np.savetxt(join(root, "src", "input_%s.csv" % id_),
               flatten(a_in),
               delimiter=", ",
               fmt="%3d")

    a_out = v_float2fixedint(zero_pad(a_rand), 8, 0)
    np.savetxt(join(root, "src", "output_%s.csv" % id_),
               flatten(a_out),
               delimiter=", ",
               fmt="%3d")
示例#5
0
def create_stimuli(root, model_name):
    model = onnx.load(join(root, model_name))
    shape = cnn_onnx.parse_param.get_input_shape(model)

    in_ = np.random.randint(256, size=shape)
    out_ = cnn_onnx.inference.numpy_inference(model, in_)

    np.savetxt(join(root, "input.csv"),
               flatten(in_),
               delimiter=", ",
               fmt="%3d")
    np.savetxt(join(root, "output.csv"), out_, delimiter=", ", fmt="%3d")
示例#6
0
def create_stimuli(root, w, h, ch, total_bits, frac_bits):
    int_bits = total_bits - frac_bits
    a_rand = np.random.randint(256, size=(1, ch, h, w), dtype=np.uint8)
    np.savetxt(join(root, "src", "input.csv"),
               flatten(a_rand),
               delimiter=", ",
               fmt="%3d")

    a_out = avg_pool(a_rand, (int_bits, frac_bits))
    np.savetxt(join(root, "src", "output.csv"),
               a_out,
               delimiter=", ",
               fmt="%3d")
示例#7
0
文件: run.py 项目: marph91/pocket-cnn
def create_stimuli(root, model_name):
    model = onnx.load(join(root, model_name))
    shape = cnn_onnx.parse_param.get_input_shape(model)

    a_rand = random_fixed_array(shape, Bitwidth(8, 8, 0), signed=False)
    a_in = v_to_fixedint(a_rand)
    a_out = v_to_fixedint(cnn_onnx.inference.numpy_inference(model, a_rand))

    np.savetxt(join(root, "input.csv"),
               flatten(a_in),
               delimiter=", ",
               fmt="%3d")
    np.savetxt(join(root, "output.csv"), a_out, delimiter=", ", fmt="%3d")
示例#8
0
def create_stimuli(root, shape, bitwidth):
    a_rand = random_fixed_array(shape, bitwidth)
    a_in = v_to_fixedint(a_rand)
    np.savetxt(join(root, "src", "input.csv"),
               flatten(a_in),
               delimiter=", ",
               fmt="%3d")

    a_out = v_to_fixedint(avg_pool(a_rand))
    np.savetxt(join(root, "src", "output.csv"),
               a_out,
               delimiter=", ",
               fmt="%3d")
示例#9
0
def create_stimuli(root, ksize, stride, total_bits_data, frac_bits_data_in,
                   frac_bits_data_out, total_bits_weight, frac_bits_weight,
                   channel_in, channel_out, width, height):
    int_bits_data_in = total_bits_data - frac_bits_data_in
    int_bits_data_out = total_bits_data - frac_bits_data_out
    a_rand = np.random.randint(256,
                               size=(1, channel_in, height, width),
                               dtype=np.uint8)
    np.savetxt(join(root, "gen", f"input_{ksize}_{stride}_{channel_in}.csv"),
               flatten(a_rand),
               delimiter=", ",
               fmt="%3d")

    int_bits_weight = total_bits_weight - frac_bits_weight

    scale = 2**frac_bits_weight
    a_weights_rand = np.random.randint(-2**7,
                                       2**7 - 1,
                                       size=(channel_out, channel_in, ksize,
                                             ksize),
                                       dtype=np.int8)
    a_bias_rand = np.random.randint(-2**7,
                                    2**7 - 1,
                                    size=(channel_out, ),
                                    dtype=np.int8)

    # weights and bias to txt
    weights_to_files(a_weights_rand / scale, a_bias_rand / scale,
                     (int_bits_weight, frac_bits_weight),
                     f"conv_{ksize}_{stride}_{channel_in}", join(root, "gen"))

    # assign the outputs
    conv_out = conv(a_rand, a_weights_rand, a_bias_rand, (ksize, stride),
                    (int_bits_data_in, frac_bits_data_in, int_bits_data_out,
                     frac_bits_data_out, int_bits_weight, frac_bits_weight))
    filename = join(root, "gen", f"output_{ksize}_{stride}_{channel_in}.csv")
    with open(filename, "w") as outfile:
        np.savetxt(outfile, flatten(conv_out), delimiter=", ", fmt="%3d")
示例#10
0
def create_stimuli(root, model_name):
    model = onnx.load(join(root, model_name))
    shape = cnn_onnx.parse_param.get_input_shape(model)

    a_rand = random_fixed_array(shape, Bitwidth(8, 8, 0), signed=False)
    a_in = v_to_fixedint(a_rand)
    a_out = v_to_fixedint(cnn_onnx.inference.numpy_inference(model, a_rand))

    # ONNX runtime prediction, TODO: doesn't work right now
    # https://github.com/microsoft/onnxruntime/issues/2964
    # sess = rt.InferenceSession(join(root, model_name))
    # input_name = sess.get_inputs()[0].name
    # pred_onnx = sess.run(None, {input_name: in_.astype(np.float32)})[0]
    # print(pred_onnx)

    np.savetxt(join(root, "input.csv"), flatten(a_in),
               delimiter=", ", fmt="%3d")
    np.savetxt(join(root, "output.csv"), a_out,
               delimiter=", ", fmt="%3d")
示例#11
0
def create_stimuli(root, model_name):
    model = onnx.load(join(root, model_name))
    shape = cnn_onnx.parse_param.get_input_shape(model)

    in_ = np.random.randint(256, size=shape, dtype=np.uint8)
    out_ = cnn_onnx.inference.numpy_inference(model, in_)

    # ONNX runtime prediction, TODO: doesn't work right now
    # https://github.com/microsoft/onnxruntime/issues/2964
    # sess = rt.InferenceSession(join(root, model_name))
    # input_name = sess.get_inputs()[0].name
    # pred_onnx = sess.run(None, {input_name: in_.astype(np.float32)})[0]
    # print(pred_onnx)

    np.savetxt(join(root, "input.csv"),
               flatten(in_),
               delimiter=", ",
               fmt="%3d")
    np.savetxt(join(root, "output.csv"), out_, delimiter=", ", fmt="%3d")