def evaluate():
    with tf.Graph().as_default():
        # 训练日志文件夹
        logs_train_dir = '/'
        # 验证文件夹
        verification_dir = "/"
        # 数据总数
        n_test = 0
        train, train_label = gbd.get_Data(verification_dir, ROW, COLUMN)
        train_X, train_Y, one_hot_train_Y = gbd.get_batch_data(
            train, train_label, batch_size=BATCH_SIZE)
        train_logits, train_v_length = model.interface(
            inputs=train_X,
            Y=one_hot_train_Y,
            batch_size=BATCH_SIZE,
            vec_len=VEC_LEN,
            temp_batch_size=BATCH_SIZE)
        top_k_op = tf.nn.in_top_k(train_logits, train_Y, 1)
        saver = tf.train.Saver(tf.global_variables())
        with tf.Session() as sess:
            print("Reading checkpoints...")
            ckpt = tf.train.get_checkpoint_state(logs_train_dir)
            if ckpt and ckpt.model_checkpoint_path:
                global_step = ckpt.model_checkpoint_path.split('/')[-1].split(
                    '-')[-1]
                saver.restore(sess, ckpt.model_checkpoint_path)
                print("Loading success,global_step is %s" % global_step)
            else:
                print("no checkpoint file found")
            coord = tf.train.Coordinator()
            threads = tf.train.start_queue_runners(sess=sess, coord=coord)
            try:
                num_iter = int(n_test / BATCH_SIZE)
                true_count = 0
                total_sample_count = num_iter * BATCH_SIZE
                step = 0
                while step < num_iter and not coord.should_stop():
                    prediction = sess.run([top_k_op])
                    true_count += np.sum(prediction)
                    step += 1
                    precision = float(true_count) / total_sample_count
                print("precision = %3f" % precision)
            except Exception as e:
                coord.request_stop(e)
            finally:
                coord.request_stop()
                coord.join(threads)
def evaluate_one_base(ct):
    """
    返回一条碱基的各部位对应(.)的概率
    input:
        ct: 文件夹,内部应只有一个ct文件,多了后果自负
    outputs:
        prediction: 二维张量,第一维因为batch_size = 1,一般索引数为碱基数;第二维索引数3,对应该部位为( . )的概率
    """
    with tf.Graph().as_default():
        train, train_label = gbd.get_Data(ct, ROW, COLUMN)
        train_X, train_Y, one_hot_train_Y = gbd.get_batch_data(train, train_label, batch_size = BATCH_SIZE)
        train_logits, train_v_length = model.interface(inputs = train_X,
                                                Y = one_hot_train_Y,
                                                batch_size = BATCH_SIZE,
                                                vec_len = VEC_LEN,
                                                temp_batch_size = BATCH_SIZE)
        softmax = tf.nn.softmax(train_logits,dim=-1,name=None)   
        saver = tf.train.Saver(tf.global_variables())
        with tf.Session() as sess:
            print("Reading checkpoints...")
            ckpt = tf.train.get_checkpoint_state(logs_train_dir)
            if ckpt and ckpt.model_checkpoint_path:
                global_step = ckpt.model_checkpoint_path.split('/')[-1].split('-')[-1]
                saver.restore(sess,ckpt.model_checkpoint_path)
                print("Loading success,global_step is %s" % global_step)
            else:
                print("no checkpoint file found")              
            coord = tf.train.Coordinator()
            threads = tf.train.start_queue_runners(sess=sess,coord = coord)
            try:
                if not coord.should_stop():
                    prediction = sess.run(softmax)
                    return prediction
            except Exception as e:
                coord.request_stop(e)
            finally:
                coord.request_stop()
                coord.join(threads)
예제 #3
0
def run_trainning():
    """
    对神经网络进行训练
    """
    PATH = "Cleaned_5sRNA_test/"
    logs_train_dir="Net_model/"  # 保存训练得来的模型的文件夹
    row = 19
    column = 128
    vec_len = 8
    temp_batch_size = 64
    inputs, Labels= gbd.get_Data(PATH=PATH,
                                  row=row,
                                  column=column)

    train_X, train_Y, one_hot_train_Y = gbd.get_batch_data(inputs,Labels, batch_size=temp_batch_size)

    train_logits,train_v_length=model.interface(inputs=train_X,
                                                Y=one_hot_train_Y,
                                                batch_size=temp_batch_size,
                                                vec_len=vec_len,
                                                temp_batch_size=temp_batch_size)
    train_loss=model.loss(logits=train_logits,
                          v_length=train_v_length,
                          labels=train_Y,
                          Y=one_hot_train_Y,
                          temp_batch_size=temp_batch_size)
    train_op = model.trainning(train_loss,learning_rate)
    train_acc = model.evalution(train_logits,train_Y)
    
    sess = tf.Session()
    sess.run(tf.global_variables_initializer())
    sess.run(tf.local_variables_initializer())

    saver = tf.train.Saver()

    coord = tf.train.Coordinator()
    threads = tf.train.start_queue_runners(sess=sess,coord = coord)

    try:
        for step in np.arange(MAX_STEP):
            if coord.should_stop():
                break
            _, tra_loss, tra_acc=sess.run([train_op, train_loss, train_acc])

            if step % 100 == 0:
                print("Step %d,train loss = %.2f,train accuracy = %.2f" %(step, tra_loss, tra_acc))
                print(train_X.shape)
            if step % 200 == 0:
                # 每两百轮保存一次训练数据
                checkpoint_path = os.path.join(logs_train_dir, 'model.ckpt')
                saver.save(sess,
                           save_path=checkpoint_path,
                           global_step=step)

    except tf.errors.OutOfRangeError:
        print('Done Trainning')
    finally:
        coord.request_stop()
        
    coord.join(threads)
    sess.close()