示例#1
0
def generate_secure_vgg(num_class):
    input_img_hw = 32
    input_channel = 3
    input_shape = [input_channel, input_img_hw, input_img_hw]

    input_layer = InputSecureLayer(input_shape, "input_layer")
    conv1 = Conv2dSecureLayer(3, 64, 3, "conv1", padding=1)
    pool1 = Maxpool2x2SecureLayer("pool1")
    relu1 = ReluSecureLayer("relu1")
    trun1 = TruncSecureLayer("trun1")
    conv2 = Conv2dSecureLayer(64, 128, 3, "conv2", padding=1)
    pool2 = Maxpool2x2SecureLayer("pool2")
    relu2 = ReluSecureLayer("relu2")
    trun2 = TruncSecureLayer("trun2")
    conv3 = Conv2dSecureLayer(128, 256, 3, "conv3", padding=1)
    relu3 = ReluSecureLayer("relu3")
    trun3 = TruncSecureLayer("trun3")
    conv4 = Conv2dSecureLayer(256, 256, 3, "conv4", padding=1)
    pool3 = Maxpool2x2SecureLayer("pool3")
    relu4 = ReluSecureLayer("relu4")
    trun4 = TruncSecureLayer("trun4")
    conv5 = Conv2dSecureLayer(256, 512, 3, "conv5", padding=1)
    relu5 = ReluSecureLayer("relu5")
    trun5 = TruncSecureLayer("trun5")
    conv6 = Conv2dSecureLayer(512, 512, 3, "conv6", padding=1)
    pool4 = Maxpool2x2SecureLayer("pool4")
    relu6 = ReluSecureLayer("relu6")
    trun6 = TruncSecureLayer("trun6")
    conv7 = Conv2dSecureLayer(512, 512, 3, "conv7", padding=1)
    relu7 = ReluSecureLayer("relu7")
    trun7 = TruncSecureLayer("trun7")
    conv8 = Conv2dSecureLayer(512, 512, 3, "conv8", padding=1)
    relu8 = ReluSecureLayer("relu8")
    trun8 = TruncSecureLayer("trun8")
    pool5 = Maxpool2x2SecureLayer("pool5")
    flatten = FlattenSecureLayer("flatten")
    fc1 = FcSecureLayer(512, "fc1")
    relu_fc_1 = ReluSecureLayer("relu_fc_1")
    trun_fc_1 = TruncSecureLayer("trun_fc_1")
    fc2 = FcSecureLayer(512, "fc2")
    relu_fc_2 = ReluSecureLayer("relu_fc_2")
    trun_fc_2 = TruncSecureLayer("trun_fc_2")
    fc3 = FcSecureLayer(num_class, "fc3")
    output_layer = OutputSecureLayer("output_layer")
    layers = [
        input_layer, conv1, pool1, relu1, trun1, conv2, pool2, relu2, trun2,
        conv3, relu3, trun3, conv4, pool3, relu4, trun4, conv5, relu5, trun5,
        conv6, relu6, pool4, trun6, conv7, relu7, trun7, conv8, relu8, pool5,
        trun8, flatten, fc1, relu_fc_1, trun_fc_1, fc2, relu_fc_2, trun_fc_2,
        fc3, output_layer
    ]

    secure_nn = SecureNnFramework("vgg")
    secure_nn.load_layers(layers)

    return secure_nn
示例#2
0
def generate_fc():
    num_input_unit = 1024
    num_output_unit = 128
    input_shape = [num_input_unit]

    input_layer = InputSecureLayer(input_shape, "input_layer")
    fc1 = FcSecureLayer(num_output_unit, "fc1")
    output_layer = OutputSecureLayer("output_layer")
    layers = [input_layer, fc1, output_layer]

    secure_nn = SecureNnFramework("fc")
    secure_nn.load_layers(layers)

    return secure_nn
示例#3
0
def generate_conv2d():
    input_img_hw = 16
    input_channel = 128
    input_shape = [input_channel, input_img_hw, input_img_hw]

    input_layer = InputSecureLayer(input_shape, "input_layer")
    conv1 = Conv2dSecureLayer(128, 128, 3, "conv1", padding=1)
    output_layer = OutputSecureLayer("output_layer")
    layers = [input_layer, conv1, output_layer]

    secure_nn = SecureNnFramework("conv2d")
    secure_nn.load_layers(layers)

    return secure_nn
示例#4
0
def generate_secure_minionn(pooling_type_name):
    input_img_hw = 32
    input_channel = 3
    input_shape = [input_channel, input_img_hw, input_img_hw]

    if pooling_type_name == "maxpool":
        pool = Maxpool2x2SecureLayer
    elif pooling_type_name == "avgpool":
        pool = Avgpool2x2SecureLayer
    else:
        raise Exception(f"Unknown Pooling Type Name: {pooling_type_name}")

    input_layer = InputSecureLayer(input_shape, "input_layer")
    conv1 = Conv2dSecureLayer(3, 64, 3, "conv1", padding=1)
    relu1 = ReluSecureLayer("relu1")
    trun1 = TruncSecureLayer("trun1")
    conv2 = Conv2dSecureLayer(64, 64, 3, "conv2", padding=1)
    relu2 = ReluSecureLayer("relu2")
    pool1 = pool("pool1")
    trun2 = TruncSecureLayer("trun2")
    conv3 = Conv2dSecureLayer(64, 64, 3, "conv3", padding=1)
    relu3 = ReluSecureLayer("relu3")
    trun3 = TruncSecureLayer("trun3")
    conv4 = Conv2dSecureLayer(64, 64, 3, "conv4", padding=1)
    pool2 = pool("pool2")
    relu4 = ReluSecureLayer("relu4")
    trun4 = TruncSecureLayer("trun4")
    conv5 = Conv2dSecureLayer(64, 64, 3, "conv5", padding=1)
    relu5 = ReluSecureLayer("relu5")
    trun5 = TruncSecureLayer("trun5")
    conv6 = Conv2dSecureLayer(64, 64, 3, "conv6", padding=1)
    relu6 = ReluSecureLayer("relu6")
    trun6 = TruncSecureLayer("trun6")
    conv7 = Conv2dSecureLayer(64, 16, 3, "conv7", padding=1)
    relu8 = ReluSecureLayer("relu8")
    flatten = FlattenSecureLayer("flatten")
    trun7 = TruncSecureLayer("trun7")
    fc1 = FcSecureLayer(10, "fc1")
    # fc1 = FcSecureLayer(2, "fc1")
    output_layer = OutputSecureLayer("output_layer")
    layers = [
        input_layer, conv1, relu1, trun1, conv2, pool1, relu2, trun2, conv3,
        relu3, trun3, conv4, pool2, relu4, trun4, conv5, relu5, trun5, conv6,
        relu6, trun6, conv7, relu8, trun7, flatten, fc1, output_layer
    ]

    secure_nn = SecureNnFramework("minionn_avgpool")
    secure_nn.load_layers(layers)

    return secure_nn
示例#5
0
def generate_maxpool2x2():
    num_elem = 2 ** 17
    input_img_hw = 16
    input_channel = num_elem // (input_img_hw ** 2)
    assert(input_img_hw * input_img_hw * input_channel == num_elem)
    input_shape = [input_channel, input_img_hw, input_img_hw]

    input_layer = InputSecureLayer(input_shape, "input_layer")
    pool1 = Maxpool2x2SecureLayer("pool1")
    output_layer = OutputSecureLayer("output_layer")
    layers = [input_layer, pool1, output_layer]

    secure_nn = SecureNnFramework("maxpool2x2")
    secure_nn.load_layers(layers)

    return secure_nn
示例#6
0
def generate_relu_only_nn():
    num_elem = 2 ** 17
    input_img_hw = 16
    input_channel = num_elem // (input_img_hw ** 2)
    assert(input_img_hw * input_img_hw * input_channel == num_elem)
    input_shape = [input_channel, input_img_hw, input_img_hw]

    input_layer = InputSecureLayer(input_shape, "input_layer")
    relu1 = ReluSecureLayer("relu1")
    output_layer = OutputSecureLayer("output_layer")
    layers = [input_layer, relu1, output_layer]

    secure_nn = SecureNnFramework("relu_only_nn")
    secure_nn.load_layers(layers)

    return secure_nn
示例#7
0
def generate_small_nn():
    input_img_hw = 16
    input_channel = 3
    input_shape = [input_channel, input_img_hw, input_img_hw]

    input_layer = InputSecureLayer(input_shape, "input_layer")
    conv1 = Conv2dSecureLayer(3, 5, 3, "conv1", padding=1)
    relu1 = ReluSecureLayer("relu1")
    pool1 = Maxpool2x2SecureLayer("pool1")
    conv2 = Conv2dSecureLayer(5, 10, 3, "conv2", padding=1)
    flatten = FlattenSecureLayer("flatten")
    fc1 = FcSecureLayer(512, "fc1")
    output_layer = OutputSecureLayer("output_layer")
    layers = [input_layer, conv1, pool1, relu1, conv2, flatten, fc1, output_layer]

    secure_nn = SecureNnFramework("small_nn")
    secure_nn.load_layers(layers)

    return secure_nn
示例#8
0
def generate_minionn_mnist():
    input_img_hw = 28
    input_channel = 1
    input_shape = [input_channel, input_img_hw, input_img_hw]

    input_layer = InputSecureLayer(input_shape, "input_layer")
    conv1 = Conv2dSecureLayer(input_channel, 16, 5, "conv1", padding=0)
    pool1 = Maxpool2x2SecureLayer("pool1")
    relu1 = ReluSecureLayer("relu1")
    conv2 = Conv2dSecureLayer(16, 16, 5, "conv2", padding=0)
    pool2 = Maxpool2x2SecureLayer("pool2")
    relu2 = ReluSecureLayer("relu2")
    flatten = FlattenSecureLayer("flatten")
    fc1 = FcSecureLayer(100, "fc1")
    relu3 = ReluSecureLayer("relu3")
    fc2 = FcSecureLayer(10, "fc2")
    output_layer = OutputSecureLayer("output_layer")
    layers = [input_layer, conv1, pool1, relu1, conv2, pool2, relu2, flatten, fc1, relu3, fc2, output_layer]

    secure_nn = SecureNnFramework("minionn_mnist")
    secure_nn.load_layers(layers)

    return secure_nn
示例#9
0
def generate_minionn_cifar10():
    input_img_hw = 32
    input_channel = 3
    input_shape = [input_channel, input_img_hw, input_img_hw]

    input_layer = InputSecureLayer(input_shape, "input_layer")
    conv1 = Conv2dSecureLayer(3, 64, 3, "conv1", padding=1)
    relu1 = ReluSecureLayer("relu1")
    conv2 = Conv2dSecureLayer(64, 64, 3, "conv2", padding=1)
    pool1 = Maxpool2x2SecureLayer("pool1")
    relu2 = ReluSecureLayer("relu2")
    conv3 = Conv2dSecureLayer(64, 64, 3, "conv3", padding=1)
    relu3 = ReluSecureLayer("relu3")
    conv4 = Conv2dSecureLayer(64, 64, 3, "conv4", padding=1)
    pool2 = Maxpool2x2SecureLayer("pool2")
    relu4 = ReluSecureLayer("relu4")
    conv5 = Conv2dSecureLayer(64, 64, 3, "conv5", padding=1)
    relu5 = ReluSecureLayer("relu5")
    conv6 = Conv2dSecureLayer(64, 64, 3, "conv6", padding=1)
    relu6 = ReluSecureLayer("relu6")
    conv7 = Conv2dSecureLayer(64, 16, 3, "conv7", padding=1)
    relu8 = ReluSecureLayer("relu8")
    flatten = FlattenSecureLayer("flatten")
    fc1 = FcSecureLayer(10, "fc1")
    output_layer = OutputSecureLayer("output_layer")
    layers = [input_layer,
              conv1, relu1,
              conv2, pool1, relu2, conv3, relu3,
              conv4, pool2, relu4, conv5, relu5, conv6, relu6, conv7, relu8,
              flatten, fc1,
              output_layer]

    secure_nn = SecureNnFramework("minionn_cifar10")
    secure_nn.load_layers(layers)

    return secure_nn