Exemplo n.º 1
0
def test_add_grad(X, Y, out_g, protocol="Helix"):
    cb.activate(protocol)

    global sess
    if sess is not None:
        sess.close()

    # ===========================
    # init global var
    # ===========================
    init = tf.compat.v1.global_variables_initializer()
    sess = tf.compat.v1.Session()
    sess.run(init)

    # ===========================
    # run mpc add grad
    # ===========================
    print("===========================")
    print("run mpc add(X + Y) grad")
    mpc_Z = cb.SecureAdd(X, Y)
    mpc_g = tf.gradients(
        mpc_Z,
        [common.get_var_from_rtt_tensor(X),
         common.get_var_from_rtt_tensor(Y)])
    print(sess.run(mpc_g))
    print("===========================")

    # ===========================
    # reveal value
    # ===========================
    mpc_out_g = []
    for i in range(len(mpc_g)):
        print("---------- Reveal mpcadd grad ------------")
        mpc_out_g.append(sess.run(cb.SecureReveal(mpc_g[i])))
        print(mpc_out_g)
        print("------------------------------------------")

    # ===========================
    # check mpc add grads value
    # ===========================
    global res_flag
    res_flag = common.check_mpc_op_grads(out_g, mpc_out_g)
Exemplo n.º 2
0
def test_sigmoidcrocssentropy_grad(logits, labels, out_g, protocol="Helix"):
    rst.activate(protocol)

    global sess
    if sess is not None:
        sess.close()

    # ===========================
    # init global var
    # ===========================
    init = tf.compat.v1.global_variables_initializer()
    sess = tf.compat.v1.Session()
    sess.run(init)

    # ===========================
    # run mpc SCE grad:
    # ===========================
    print("===========================")
    print("run mpc SCE(X,Y) grad")
    Z_mpc = rst.secure_sigmoid_cross_entropy_with_logits(logits=logits,
                                                         labels=labels)
    mpc_g = tf.gradients(Z_mpc, [
        common.get_var_from_rtt_tensor(logits),
        common.get_var_from_rtt_tensor(labels)
    ])
    print(sess.run(mpc_g))
    print("===========================")

    # ===========================
    # check mpcSCE grads value
    # ===========================
    mpc_out_g = []
    for i in range(len(mpc_g)):
        print("---------- Reveal mpcSCE grad ------------")
        mpc_out_g.append(sess.run(rst.SecureReveal(mpc_g[i])))
        print(mpc_out_g)
        print("------------------------------------------")

    global res_flag
    res_flag = res_flag and common.check_mpc_op_grads(out_g, mpc_out_g)
Exemplo n.º 3
0
def test_max_grad(X, axis, out_g, protocol="Helix"):
    cb.activate(protocol)

    global sess
    if sess is not None:
        sess.close()

    # ===========================
    # init global var
    # ===========================
    init = tf.compat.v1.global_variables_initializer()
    sess = tf.compat.v1.Session()
    sess.run(init)

    # ===========================
    # run mpc max grad
    # ===========================
    print("===========================")
    print("# run mpc max(X) grad, axis=", axis)
    mpc_Y = cb.SecureMax(X, axis=axis)
    print(sess.run(cb.SecureReveal(mpc_Y)))
    mpc_g = tf.gradients(mpc_Y, [common.get_var_from_rtt_tensor(X)])
    print(sess.run(mpc_g))
    print("===========================")

    # ===========================
    # check mpcmax grads value
    # ===========================
    mpc_out_g = []
    for i in range(len(mpc_g)):
        print("---------- Reveal mpcmax grad ------------")
        mpc_out_g.append(sess.run(cb.SecureReveal(mpc_g[i])))
        print(mpc_out_g)
        print("------------------------------------------")

    global res_flag
    res_flag = res_flag and common.check_mpc_op_grads(out_g, mpc_out_g)