def run_training():
    train_dir = './data/train/'
    logs_train_dir = './logs/train/'
    (train, train_label) = train_test_split.get_files(train_dir)
    (train_batch, train_label_batch) = train_test_split.get_batch(train, train_label, IMG_W, IMG_H, BATCH_SIZE, CAPACITY)
    train_logits = cnn.inference(train_batch, BATCH_SIZE, N_CLASSES)
    train_loss = cnn.losses(train_logits, train_label_batch)
    train_op = cnn.training(train_loss, learning_rate)
    train__acc = cnn.evaluation(train_logits, train_label_batch)
    summary_op = tf.summary.merge_all()
    sess = tf.Session()
    train_writer = tf.summary.FileWriter(logs_train_dir, sess.graph)
    saver = tf.train.Saver()
    sess.run(tf.global_variables_initializer())
    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 % 50) == 0):
                print('Step {}, '.format(step), 'train loss = {:.2f}, '.format(tra_loss), 'train accuracy = {:.2f}%'.format((tra_acc * 100.0)))
                summary_str = sess.run(summary_op)
                train_writer.add_summary(summary_str, step)
            if (((step % 2000) == 0) or ((step + 1) == MAX_STEP)):
                checkpoint_path = os.path.join(logs_train_dir, 'model.ckpt')
                saver.save(sess, checkpoint_path, global_step=step)
    except tf.errors.OutOfRangeError:
        print('Done training -- epoch limit reached')
    finally:
        coord.request_stop()
    coord.join(threads)
    sess.close()
def run_training():
    train_dir = './data/train/'
    logs_train_dir = './logs/train/'
    (train, train_label) = train_test_split.get_files(train_dir)
    (train_batch, train_label_batch) = train_test_split.get_batch(train, train_label, IMG_W, IMG_H, BATCH_SIZE, CAPACITY)
    train_logits = cnn.inference(train_batch, BATCH_SIZE, N_CLASSES)
    train_loss = cnn.losses(train_logits, train_label_batch)
    train_op = cnn.training(train_loss, learning_rate)
    train__acc = cnn.evaluation(train_logits, train_label_batch)
    summary_op = tf.summary.merge_all()
    sess = tf.Session()
    train_writer = tf.summary.FileWriter(logs_train_dir, sess.graph)
    saver = tf.train.Saver()
    sess.run(tf.global_variables_initializer())
    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 % 50) == 0):
                print('Step {}, '.format(step), 'train loss = {:.2f}, '.format(tra_loss), 'train accuracy = {:.2f}%'.format((tra_acc * 100.0)))
                summary_str = sess.run(summary_op)
                train_writer.add_summary(summary_str, step)
            if (((step % 2000) == 0) or ((step + 1) == MAX_STEP)):
                checkpoint_path = os.path.join(logs_train_dir, 'model.ckpt')
                saver.save(sess, checkpoint_path, global_step=step)
    except tf.errors.OutOfRangeError:
        print('Done training -- epoch limit reached')
    finally:
        coord.request_stop()
    coord.join(threads)
    sess.close()