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)
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)
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)