Пример #1
0
    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))
Пример #4
0
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)
Пример #6
0
            #                                             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