eval.py 文件源码

python
阅读 27 收藏 0 点赞 0 评论 0

项目:neurobind 作者: Kyubyong 项目源码 文件源码
def eval(mode):
    '''
    Get a Spearman rank-order correlation coefficient.

    Args:
      mode: A string. Either `val` or `test`.
    '''
    # Set save directory
    savedir = hp.valdir if mode=="val" else hp.testdir

    # Load graph
    g = Graph(is_training=False)
    print("Graph loaded")

    # Load data
    X, Y = load_data(mode=mode)
    nucl2idx, idx2nucl = load_vocab()

    with g.graph.as_default():
        sv = tf.train.Supervisor()
        with sv.managed_session(config=tf.ConfigProto(allow_soft_placement=True)) as sess:
            # Restore parameters
            sv.saver.restore(sess, tf.train.latest_checkpoint(hp.logdir))
            print("Restored!")

            # Get model
            mname = open(hp.logdir + '/checkpoint', 'r').read().split('"')[1]  # model name

            # Inference
            if not os.path.exists(savedir): os.mkdir(savedir)
            with open("{}/{}".format(savedir, mname), 'w') as fout:
                fout.write("{}\t{}\t{}]\n".format("probe", "expected intensity", "predicted intensity"))
                expected, got = [], []
                for step in range(len(X) // hp.batch_size):
                    x = X[step * hp.batch_size: (step + 1) * hp.batch_size]
                    y = Y[step * hp.batch_size: (step + 1) * hp.batch_size]

                    # predict nucl
                    logits = sess.run(g.logits, {g.x: x})

                    for xx, yy, ll in zip(x, y, logits):  # sequence-wise
                        fout.write("{}\t{}\t{}\n".format("".join(idx2nucl[idx] for idx in xx), yy, ll))
                        expected.append(yy)
                        got.append(ll)

                # Spearman rank coefficient
                score, _ =spearmanr(expected, got)
                fout.write("Spearman rank correlation coefficients: " + str(score))
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号