def print_img(img, i): img_url = FLAGS.image_url_prefix + img if not img.startswith( "http://") else img logging.info( img_html.format(img_url, i, img, melt.epoch(), melt.step(), melt.train_loss(), melt.eval_loss(), melt.duration(), gezi.now_time()))
def print_img(img, i): img_url = get_img_url(img) logging.info(img_html.format( img_url, i, img, melt.epoch(), melt.step(), melt.train_loss(), melt.eval_loss(), melt.duration(), gezi.now_time()))
def test_flow(ops, names=None, gen_feed_dict=None, deal_results=None, model_dir='./model', model_name=None, num_epochs=1, num_interval_steps=100, eval_times=0, print_avg_loss=True, sess=None): """ test flow, @TODO improve list result print Args: ops: eval ops names: eval names model_path: can be dir like ./model will fetch lates model in model dir , or be real model path like ./model/model.0.ckpt @TODO num_epochs should be 1,but now has problem of loading model if set @FIXME, so now 0 """ if sess is None: sess = tf.InteractiveSession() melt.restore(sess, model_dir, model_name) if not os.path.isdir(model_dir): model_dir = os.path.dirname(model_dir) summary_op = tf.merge_all_summaries() summary_writer = tf.train.SummaryWriter(model_dir, sess.graph) coord = tf.train.Coordinator() threads = tf.train.start_queue_runners(sess=sess, coord=coord) try: step = 0 eval_step = 0 avg_eval = AvgScore() total_avg_eval = AvgScore() while not coord.should_stop(): feed_dict = {} if gen_feed_dict is None else gen_feed_dict() results = sess.run(ops, feed_dict=feed_dict) if not isinstance(results, (list, tuple)): results = [results] if deal_results is not None: #@TODO may need to pass summary_writer, and step #use **args ? deal_results(results) if print_avg_loss: results = gezi.get_singles(results) avg_eval.add(results) total_avg_eval.add(results) if step % num_interval_steps == 0: average_eval = avg_eval.avg_score() print( '{}: average evals = {}'.format( gezi.now_time(), melt.value_name_list_str(average_eval, names)), 'step:', step) summary = tf.Summary() summary_str = sess.run(summary_op, feed_dict=feed_dict) summary.ParseFromString(summary_str) for i in xrange(len(results)): name = i if names is None else names[i] summary.value.add(tag='metric{}'.format(name), simple_value=average_eval[i]) summary_writer.add_summary(summary, step) if eval_step and eval_step == eval_times: break eval_step += 1 step += 1 print('Done testing for {} epochs, {} steps. AverageEvals:{}'.format( num_epochs, step, gezi.pretty_floats(total_avg_eval.avg_score()))) except tf.errors.OutOfRangeError: print('Done testing for {} epochs, {} steps. AverageEvals:{}'.format( num_epochs, step, gezi.pretty_floats(total_avg_eval.avg_score()))) finally: # When done, ask the threads to stop. coord.request_stop() # Wait for threads to finish. coord.join(threads)
def format(self, record): elapsed_seconds = record.created - self.start_time #using timedelta here for convenient default formatting elapsed = timedelta(seconds=elapsed_seconds) return "{} {} {}".format(gezi.now_time(), str(elapsed)[:-7], record.getMessage())