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')
Exemple #2
0
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')