old_contents: import os
  import sys
  import json
  import logging
  import data_helpers
  import numpy as np
  import pandas as pd
  import tensorflow as tf
  from tensorflow.contrib import learn
  
  logging.getLogger().setLevel(logging.INFO)
  
  def predict_unseen_data():
  	"""Step 1: load trained model and parameters"""
  	params = json.loads(open('./parameters.json').read())
  	checkpoint_dir = sys.argv[1]
  	checkpoint_file = tf.train.latest_checkpoint(checkpoint_dir + 'checkpoints')
  
  	"""Step 2: load data for prediction"""
  	test_examples = json.loads(open('./data/small_samples.json').read())
  
  	labels = json.loads(open('./labels.json').read())
  	one_hot = np.zeros((len(labels), len(labels)), int)
  	np.fill_diagonal(one_hot, 1)
  	label_dict = dict(zip(labels, one_hot))
  
  	x_raw = [example['consumer_complaint_narrative'] for example in test_examples]
  	x_test = [data_helpers.clean_str(x) for x in x_raw]
  	logging.info('The number of x_test: {}'.format(len(x_test)))
  
  	y_test = None
  	if 'product' in test_examples[0]:
  		y_raw = [example['product'] for example in test_examples]
  		y_test = [label_dict[y] for y in y_raw]
  		logging.info('The number of y_test: {}'.format(len(y_test)))
  
  	vocab_path = os.path.join(checkpoint_dir, "vocab")
  	vocab_processor = learn.preprocessing.VocabularyProcessor.restore(vocab_path)
  	x_test = np.array(list(vocab_processor.transform(x_raw)))
  
  	"""Step 3: compute the predictions"""
  	graph = tf.Graph()
  	with graph.as_default():
  		session_conf = tf.ConfigProto(allow_soft_placement=True, log_device_placement=False)
  		sess = tf.Session(config=session_conf)
  
  		with sess.as_default():
  			saver = tf.train.import_meta_graph("{}.meta".format(checkpoint_file))
  			saver.restore(sess, checkpoint_file)
  
  			input_x = graph.get_operation_by_name("input_x").outputs[0]
  			dropout_keep_prob = graph.get_operation_by_name("dropout_keep_prob").outputs[0]
  			predictions = graph.get_operation_by_name("output/predictions").outputs[0]
  
  			batches = data_helpers.batch_iter(list(x_test), params['batch_size'], 1, shuffle=False)
  			all_predictions = []
  			for x_test_batch in batches:
  				batch_predictions = sess.run(predictions, {input_x: x_test_batch, dropout_keep_prob: 1.0})
  				all_predictions = np.concatenate([all_predictions, batch_predictions])
  
  	if y_test is not None:
  		y_test = np.argmax(y_test, axis=1)
  		correct_predictions = float(sum(all_predictions == y_test))
  		logging.info('The accuracy is: {}'.format(correct_predictions / float(len(y_test))))
  
  if __name__ == '__main__':
  	predict_unseen_data()
  
new_contents: import os
  import sys
  import json
  import logging
  import data_helpers
  import numpy as np
  import pandas as pd
  import tensorflow as tf
  from tensorflow.contrib import learn
  
  logging.getLogger().setLevel(logging.INFO)
  
  def predict_unseen_data():
  	"""Step 1: load trained model and parameters"""
  	params = json.loads(open('./parameters.json').read())
  	checkpoint_dir = sys.argv[1]
  	checkpoint_file = tf.train.latest_checkpoint(checkpoint_dir + 'checkpoints')
  
  	"""Step 2: load data for prediction"""
  	test_file = sys.argv[2]
  	test_examples = json.loads(open(test_file).read())
  
  	# labels.json will be saved during training, and it has to be loaded during prediction
  	labels = json.loads(open('./labels.json').read())
  	one_hot = np.zeros((len(labels), len(labels)), int)
  	np.fill_diagonal(one_hot, 1)
  	label_dict = dict(zip(labels, one_hot))
  
  	x_raw = [example['consumer_complaint_narrative'] for example in test_examples]
  	x_test = [data_helpers.clean_str(x) for x in x_raw]
  	logging.info('The number of x_test: {}'.format(len(x_test)))
  
  	y_test = None
  	if 'product' in test_examples[0]:
  		y_raw = [example['product'] for example in test_examples]
  		y_test = [label_dict[y] for y in y_raw]
  		logging.info('The number of y_test: {}'.format(len(y_test)))
  
  	vocab_path = os.path.join(checkpoint_dir, "vocab")
  	vocab_processor = learn.preprocessing.VocabularyProcessor.restore(vocab_path)
  	x_test = np.array(list(vocab_processor.transform(x_raw)))
  
  	"""Step 3: compute the predictions"""
  	graph = tf.Graph()
  	with graph.as_default():
  		session_conf = tf.ConfigProto(allow_soft_placement=True, log_device_placement=False)
  		sess = tf.Session(config=session_conf)
  
  		with sess.as_default():
  			saver = tf.train.import_meta_graph("{}.meta".format(checkpoint_file))
  			saver.restore(sess, checkpoint_file)
  
  			input_x = graph.get_operation_by_name("input_x").outputs[0]
  			dropout_keep_prob = graph.get_operation_by_name("dropout_keep_prob").outputs[0]
  			predictions = graph.get_operation_by_name("output/predictions").outputs[0]
  
  			batches = data_helpers.batch_iter(list(x_test), params['batch_size'], 1, shuffle=False)
  			all_predictions = []
  			for x_test_batch in batches:
  				batch_predictions = sess.run(predictions, {input_x: x_test_batch, dropout_keep_prob: 1.0})
  				all_predictions = np.concatenate([all_predictions, batch_predictions])
  
  	if y_test is not None:
  		y_test = np.argmax(y_test, axis=1)
  		correct_predictions = float(sum(all_predictions == y_test))
  		logging.info('The accuracy is: {}'.format(correct_predictions / float(len(y_test))))
  
  if __name__ == '__main__':
  	predict_unseen_data()
  
subject: Add test file to system arguments.