def main(_): # Import data ###mnist = input_data.read_data_sets(FLAGS.data_dir, one_hot=True) print("starting to load data...") x2 = pickle.load(open( "T1_GD_all_x_no_normalization.p", "rb" )) print("x2 loaded.") y2 = pickle.load(open( "T1_GD_all_y_no_normalization.p", "rb" )) print("y2 loaded.") validate_x2 = pickle.load(open( "T1_GD_validation_x_no_normalization_aggregated_.p", "rb" )) print("validate_x2 loaded.") validate_y2 = pickle.load(open( "T1_GD_validation_y_no_normalization_aggregated.p", "rb" )) print("validate_y2 loaded.") validate_x2_nonaggregated = pickle.load(open( "T1_GD_all__validation_x_no_normalization.p", "rb" )) print("validate_x2 loaded.") validate_y2_nonaggregated = pickle.load(open( "T1_GD_all__validation_y_no_normalization.p", "rb" )) print("validate_y2 loaded.") number_epochs = sys.argv[0] kernal_size = sys.argv[2] data_set_all = DataSet(x2,y2, fake_data=False) validation_set_all = DataSet(validate_x2_nonaggregated, validate_y2_nonaggregated, fake_data=False) # Create the convolutional model x = tf.placeholder(tf.float32, [None, 65536]) # Define loss and optimizer y_ = tf.placeholder(tf.float32, [None, 3]) # Build the graph for the deep net # with tf.device('/gpu:2'): y_conv, keep_prob, saver = deepnn(x) print(keep_prob) #plt.imshow(mnist.test.images[0].reshape(28,28)) #print(type(mnist.test.images)) #print(mnist.test.images.shape) #plt.show() cross_entropy = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(labels=y_, logits=y_conv)) train_step = tf.train.AdamOptimizer(1e-4).minimize(cross_entropy) correct_prediction = tf.equal(tf.argmax(y_conv, 1), tf.argmax(y_, 1)) accuracy = tf.reduce_mean(tf.cast(correct_prediction, tf.float32)) #grads = new_optimizer.compute_gradients(cross_entropy) data_points = [] avg_loss = 0 total_loss = 0 avg_validation_loss = 0 total_validation_loss = 0 batch_size = sys.argv[1] batches_completed = 0 validation_batches_completed = 0 config = tf.ConfigProto(allow_soft_placement=True) config.gpu_options.allow_growth = True output_file= open("T1_GD_validation_loss_file_no_normalization_"+epoch_size+"_epochs_"+kernal_size+"_kernalsize_"+batch_size+"_batchsize.txt","w+") with tf.Session(config = config) as sess: sess.run(tf.global_variables_initializer()) # sess.graph.finalize() for i in range(5000): batch_x, batch_y = data_set_all.next_batch(batch_size) for batch_slice in batch_x: batch_slice = numpy.reshape(batch_slice, (256, 256)) batch_slice = random_alteration(batch_slice) batch_slice = numpy.reshape(batch_slice, 65536) batches_completed += 1 loss = sess.run(cross_entropy, feed_dict={x: batch_x, y_: batch_y, keep_prob: 0.5}) total_loss += loss new_avg_loss = total_loss/batches_completed if(new_avg_loss>avg_loss and batches_completed != 1): avg_loss = new_avg_loss # break avg_loss = new_avg_loss data_points.append(loss) if i % 1000 == 0: validation_batch_x, validation_batch_y = validation_set_all.next_batch(batch_size) validation_batches_completed+=1 train_accuracy = accuracy.eval(feed_dict={x: validation_batch_x, y_: validation_batch_y, keep_prob: 1.0}) validation_loss = cross_entropy.eval(feed_dict={x: validation_batch_x, y_: validation_batch_y, keep_prob: 1.0}) total_validation_loss += validation_loss new_avg_validation_loss = total_validation_loss/validation_batches_completed if(new_avg_validation_loss>avg_validation_loss and batches_completed!=1): avg_validation_loss = new_avg_validation_loss avg_validation_loss = new_avg_validation_loss output_file.write("Validation loss at i = %d is %g\n" % (i, avg_validation_loss)) total_times = 0.0 total_accuracy = 0.0 prediction=tf.argmax(y_conv,1) probabilities=tf.nn.softmax(y_conv) probs_array = [] condensed_y = [] for j in range(len(validate_x2)): #print(test_x2[i]) #print(test_y2[i]) temp3 = accuracy.eval(feed_dict={x: validate_x2[j], y_: validate_y2[j], keep_prob: 1.0}) print('test accuracy %g' % temp3) total_accuracy = total_accuracy + temp3 total_times = total_times+1 temp4 = prediction.eval(feed_dict={x: validate_x2[j], keep_prob: 1.0}, session=sess) print("predictions", temp4) probability = probabilities.eval(feed_dict={x: validate_x2[j], keep_prob: 1.0}, session=sess) print(probability) if j==0: probs_array = probability.mean(axis=0) condensed_y = validate_y2[j].mean(axis=0) continue probs_array = numpy.vstack([probs_array, probability.mean(axis=0)]) condensed_y = numpy.vstack([condensed_y, validate_y2[j].mean(axis=0)]) fpr = dict() tpr = dict() roc_auc = dict() for j in range(3): fpr[j], tpr[j], _ = roc_curve(condensed_y[:, j], probs_array[:, j]) roc_auc[j] = auc(fpr[j], tpr[j]) # Compute micro-average ROC curve and ROC area fpr["micro"], tpr["micro"], _ = roc_curve(condensed_y.ravel(), probs_array.ravel()) roc_auc["micro"] = auc(fpr["micro"], tpr["micro"]) output_file.write("ROCs at i = %d are "%i) for j in range(3): plt.plot(fpr[j], tpr[j], label='ROC curve of class {0} (area = {1:0.2f})'''.format(j, roc_auc[j])) output_file.write(str(roc_auc[j])+", ") output_file.write("\n") output_file.flush() print('step %d, training accuracy %g' % (i, train_accuracy)) name = 'T1_GD_testing_with_intermediateROC_no_normalization_epoch_' + str(i) save_path = saver.save(sess, name) train_step.run(feed_dict={x: batch_x, y_: batch_y, keep_prob: 0.5}) #testing print(avg_loss) output_file.close() save_path = saver.save(sess, 'T1_GD_testing_with_intermediateROC_no_normalization_final')
def main(_): # Import data ###mnist = input_data.read_data_sets(FLAGS.data_dir, one_hot=True) print("starting to load data...") x2 = pickle.load(open("all_x_l2normalization.p", "rb")) print("x2 loaded.") y2 = pickle.load(open("all_y_l2normalization.p", "rb")) print("y2 loaded.") validate_x2 = pickle.load(open("all__validation_x_l2normalization.p", "rb")) print("validate_x2 loaded.") validate_y2 = pickle.load(open("all__validation_y_l2normalization.p", "rb")) print("validate_y2 loaded.") data_set_all = DataSet(x2, y2, fake_data=False) validation_set_all = DataSet(validate_x2, validate_y2, fake_data=False) # Create the convolutional model x = tf.placeholder(tf.float32, [None, 65536]) # Define loss and optimizer y_ = tf.placeholder(tf.float32, [None, 3]) # Build the graph for the deep net y_conv, keep_prob, saver = deepnn(x) print(keep_prob) #plt.imshow(mnist.test.images[0].reshape(28,28)) #print(type(mnist.test.images)) #print(mnist.test.images.shape) #plt.show() cross_entropy = tf.reduce_mean( tf.nn.softmax_cross_entropy_with_logits(labels=y_, logits=y_conv)) train_step = tf.train.AdamOptimizer(1e-4).minimize(cross_entropy) correct_prediction = tf.equal(tf.argmax(y_conv, 1), tf.argmax(y_, 1)) accuracy = tf.reduce_mean(tf.cast(correct_prediction, tf.float32)) #grads = new_optimizer.compute_gradients(cross_entropy) data_points = [] avg_loss = 0 total_loss = 0 avg_validation_loss = 0 total_validation_loss = 0 batch_size = 10 batches_completed = 0 validation_batches_completed = 0 config = tf.ConfigProto() config.gpu_options.allow_growth = True output_file = open("validation_loss_file_l2normalization.txt", "w+") with tf.Session(config=config) as sess: sess.run(tf.global_variables_initializer()) # sess.graph.finalize() for i in range(1000000): batch_x, batch_y = data_set_all.next_batch(batch_size) for batch_slice in batch_x: batch_slice = numpy.reshape(batch_slice, (256, 256)) batch_slice = random_alteration(batch_slice) batch_slice = numpy.reshape(batch_slice, 65536) batches_completed += 1 loss = sess.run(cross_entropy, feed_dict={ x: batch_x, y_: batch_y, keep_prob: 0.5 }) total_loss += loss new_avg_loss = total_loss / batches_completed if (new_avg_loss > avg_loss and batches_completed != 1): avg_loss = new_avg_loss # break avg_loss = new_avg_loss data_points.append(loss) if i % 10000 == 0: validation_batch_x, validation_batch_y = validation_set_all.next_batch( batch_size) validation_batches_completed += 1 train_accuracy = accuracy.eval(feed_dict={ x: validation_batch_x, y_: validation_batch_y, keep_prob: 1.0 }) validation_loss = cross_entropy.eval(feed_dict={ x: validation_batch_x, y_: validation_batch_y, keep_prob: 1.0 }) total_validation_loss += validation_loss new_avg_validation_loss = total_validation_loss / validation_batches_completed if (new_avg_validation_loss > avg_validation_loss and batches_completed != 1): avg_validation_loss = new_avg_validation_loss avg_validation_loss = new_avg_validation_loss output_file.write("Validation loss at i = %d is %g\n" % (i, avg_validation_loss)) output_file.flush() print('step %d, training accuracy %g' % (i, train_accuracy)) name = 'my-model_testing_l2normalization_epoch_' + str(i) save_path = saver.save(sess, name) train_step.run(feed_dict={x: batch_x, y_: batch_y, keep_prob: 0.5}) #testing print(avg_loss) output_file.close() save_path = saver.save(sess, 'my-model_testing_l2normalization_final')