def log(self,Xk,yk,Zk,muk,wk,dt,logpath="."): #主双対内点法による処理を記録 """ mu_ | 主変数xと双対変数zの平均値xT*z/N w_ | 双対ギャップcT*x - bT*y cx_ | 主問題の目的関数cT*x by_ | 双対問題の目的関数bT*y dt | 1反復分の計算時間 x_ | k反復目の主変数xk y_ | k反復目の主変数yk z_ | k反復目の主変数zk """ mu_= muk.reshape(1,muk.size)[0] w_ = wk.reshape(1,wk.size)[0] cx_= np.trace(np.dot(self.C,Xk.transpose())) by_= np.dot(self.b,yk) x_ = Xk.reshape(1,Xk.size)[0] y_ = yk.reshape(1,yk.size)[0] z_ = Zk.reshape(1,Zk.size)[0] print(mu_,w_,cx_,by_,dt,x_,y_,z_) d_ = np.hstack([mu_,w_,cx_,by_,dt,x_,y_,z_]) savecsv(d_,logpath) return
with tf.Session() as sess: sess.run(init) xW, xb = sess.run([W, b]) print("init weight:{} \nbias:{}".format(xW, xb)) # train BATCHES = math.ceil(len(real_X) / BATCH_SIZE) for e in range(EPOCHES): for i in range(BATCHES): bX = real_X[(i * BATCH_SIZE):(i + 1) * BATCH_SIZE] bY = real_Y[(i * BATCH_SIZE):(i + 1) * BATCH_SIZE] sess.run(train, feed_dict={X: bX, Y: bY}) j = e * BATCHES + i if j % 50 == 0 or (j == EPOCHES * BATCHES - 1 and j % 50 != 0): xW, xb = sess.run([W, b]) print( "I,E,B:{:0>4d},{:0>4d},{:0>4d} weight:{} \nbias:{}".format( j, e, i, xW, xb)) savecsv("{}-{:0>4d}-{}.csv".format(csvprefix, j, "W"), xW) savecsv("{}-{:0>4d}-{}.csv".format(csvprefix, j, "b"), xb) # predict Y_pred = sess.run(pred_Y, feed_dict={X: real_X, Y: real_Y}) print("Y_pred:", Y_pred) savecsv("{}-pred-{}.csv".format(csvprefix, "Y"), Y_pred) # save real y for evaluation savecsv("{}-real-{}.csv".format(csvprefix, "Y"), real_Y)
with tf.Session() as sess: sess.run(init) rW, rb = sess.run([reveal_W, reveal_b]) print("init weight:{} \nbias:{}".format(rW, rb)) # train BATCHES = math.ceil(len(real_X) / BATCH_SIZE) for e in range(EPOCHES): for i in range(BATCHES): bX = real_X[(i * BATCH_SIZE):(i + 1) * BATCH_SIZE] bY = real_Y[(i * BATCH_SIZE):(i + 1) * BATCH_SIZE] sess.run(train, feed_dict={X: bX, Y: bY}) j = e * BATCHES + i if j % 50 == 0 or (j == EPOCHES * BATCHES - 1 and j % 50 != 0): rW, rb = sess.run([reveal_W, reveal_b]) print( "I,E,B:{:0>4d},{:0>4d},{:0>4d} weight:{} \nbias:{}".format( j, e, i, rW, rb)) if mpc_player_id == 0: savecsv("{}-{:0>4d}-{}.csv".format(csvprefix, j, "W"), rW.astype(float)) savecsv("{}-{:0>4d}-{}.csv".format(csvprefix, j, "b"), rb.astype(float)) # predict Y_pred = sess.run(reveal_Y, feed_dict={X: real_X, Y: real_Y}) if mpc_player_id == 0: print("Y_pred:", Y_pred) savecsv("{}-pred-{}.csv".format(csvprefix, "Y"), Y_pred.astype(float))
print(init) # ############################################################# # save to csv for comparing, for debug scriptname = os.path.basename(sys.argv[0]).split(".")[0] #csvprefix = "/root/x/000/cb/example/linear_regression/log/" + scriptname csvprefix = "./log/" + scriptname os.makedirs(csvprefix, exist_ok=True) csvprefix = csvprefix + "/tf" # ############################################################# with tf.Session() as sess: sess.run(init) xW, xb = sess.run([W, b]) print("init weight:{} \nbias:{}".format(xW, xb)) for i in range(EPOCHES): sess.run(train) if i % 10 == 0 or (i == EPOCHES-1 and i % 10 != 0): xW, xb = sess.run([W, b]) print("i:{:0>4d} weight:{} \nbias:{}".format(i, xW, xb)) savecsv("{}-{:0>4d}-{}.csv".format(csvprefix, i, "W"), xW) savecsv("{}-{:0>4d}-{}.csv".format(csvprefix, i, "b"), xb) # predict Y_pred = sess.run(pred_Y) print("Y_pred:", Y_pred) savecsv("{}-{:0>4d}-{}.csv".format(csvprefix, EPOCHES, "Y"), Y_pred)
# ############################################################# with tf.Session() as sess: sess.run(init) rW, rb = sess.run([reveal_W, reveal_b]) print("init weight:{} \nbias:{}".format(rW, rb)) # train BATCHES = math.ceil(len(real_X) / BATCH_SIZE) for e in range(EPOCHES): for i in range(BATCHES): bX = real_X[(i * BATCH_SIZE):(i + 1) * BATCH_SIZE] bY = real_Y[(i * BATCH_SIZE):(i + 1) * BATCH_SIZE] sess.run(train, feed_dict={X: bX, Y: bY}) j = e * BATCHES + i if j % 50 == 0 or (j == EPOCHES * BATCHES - 1 and j % 50 != 0): rW, rb = sess.run([reveal_W, reveal_b]) print( "I,E,B:{:0>4d},{:0>4d},{:0>4d} weight:{} \nbias:{}".format( j, e, i, rW, rb)) if rtt.mpc_player.id == 0: savecsv("{}-{:0>4d}-{}.csv".format(csvprefix, j, "W"), rW) savecsv("{}-{:0>4d}-{}.csv".format(csvprefix, j, "b"), rb) # predict Y_pred = sess.run(reveal_Y, feed_dict={X: real_X, Y: real_Y}) if rtt.mpc_player.id == 0: print("Y_pred:", Y_pred) savecsv("{}-pred-{}.csv".format(csvprefix, "Y"), Y_pred)
# 1-Y, (1 - Y) * tf.log(1 - sig_v)], # feed_dict={X:batch_attr, Y: batch_label}) # if i <= 2: # print("logits:", logit_v, "\n sig:", sig_pv1, "and \n", sig_pv2) # print("logv1:", log_v1, "\n logv2:", log_v2, "\n ty:", ty, "\n loss:", curr_loss) avg_loss += curr_loss / total_batch if (epoch + 1) % DIS_STEP == 0: print("****Epoch:", epoch+1) #print(avg_loss) cW, cb = native_sess.run([W, b]) print("curr_W:\n", cW) print("curr_b:\n", cb) #print("i:{:0>4d} weight:{} \nbias:{}".format(epoch+1, cW, cb)) savecsv("{}-{:0>4d}-{}.csv".format(save_file_prefix, epoch+1, "W"), cW) savecsv("{}-{:0>4d}-{}.csv".format(save_file_prefix, epoch+1, "b"), cb) #print(f"Epoch: {epoch:5}, loss={float(avg_loss):20.9}") end_t = time.time() print("************ Native Trainning Finished!**************") print("The training cost: ", end_t - start_t, "seconds") print("W:", native_sess.run(W)) print("b:", native_sess.run(b)) print("************ Native Fitting on TRAIN dataset**************") is_pass_all = True self_check_pred = tf.sigmoid(tf.matmul(X,W) + b) real_label = Y