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