Guest User

Untitled

a guest
May 21st, 2018
82
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.33 KB | None | 0 0
  1. from __future__ import absolute_import
  2. from __future__ import division
  3. from __future__ import print_function
  4.  
  5. import argparse
  6. import sys
  7. import numpy as np
  8.  
  9. import pandas as pd
  10. import tensorflow as tf
  11.  
  12. LEARNING_RATE = 0.001
  13.  
  14.  
  15. def model_fn(features, labels, mode, params):
  16. """Model function for Estimator."""
  17.  
  18. input_layer = tf.reshape(features["x"], [11,11,31,4])
  19. first_hidden_layer = tf.layers.dense(input_layer, 4, activation=tf.nn.relu)
  20.  
  21. # Connect the second hidden layer to first hidden layer with relu
  22. second_hidden_layer = tf.layers.dense(
  23. first_hidden_layer, 5, activation=tf.nn.relu)
  24.  
  25. # Connect the output layer to second hidden layer (no activation fn)
  26. output_layer = tf.layers.dense(second_hidden_layer, 6)
  27.  
  28. # Reshape output layer to 1-dim Tensor to return predictions
  29. predictions = tf.reshape(output_layer, [-1,6])
  30.  
  31. # Provide an estimator spec for `ModeKeys.PREDICT`.
  32. if mode == tf.estimator.ModeKeys.PREDICT:
  33. return tf.estimator.EstimatorSpec(
  34. mode=mode,
  35. predictions={"ages": predictions})
  36.  
  37. # Calculate loss using mean squared error
  38. loss = tf.losses.mean_squared_error(labels, predictions)
  39.  
  40. optimizer = tf.train.GradientDescentOptimizer(
  41. learning_rate=params["learning_rate"])
  42. train_op = optimizer.minimize(
  43. loss=loss, global_step=tf.train.get_global_step())
  44.  
  45. # Calculate root mean squared error as additional eval metric
  46. eval_metric_ops = {
  47. "rmse": tf.metrics.root_mean_squared_error(
  48. tf.cast(labels, tf.float64), predictions)
  49. }
  50.  
  51. # Provide an estimator spec for `ModeKeys.EVAL` and `ModeKeys.TRAIN` modes.
  52. return tf.estimator.EstimatorSpec(
  53. mode=mode,
  54. loss=loss,
  55. train_op=train_op,
  56. eval_metric_ops=eval_metric_ops)
  57.  
  58.  
  59. def main(unused_argv):
  60.  
  61. train_file = "training_data_mc1000.csv"
  62. test_file = "test_data_mc1000.csv"
  63.  
  64. train_features_interim = pd.read_csv(train_file, usecols=['vgs', 'vbs', 'vds', 'current'])
  65. train_features_numpy = np.asarray(train_features_interim, dtype=np.float64)
  66.  
  67. train_labels_interim = pd.read_csv(train_file, usecols=['plo_tox', 'plo_dxl', 'plo_dxw', 'parl1', 'parl2', 'random_fn'])
  68. train_labels_numpy = np.asarray(train_labels_interim, dtype=np.float64)
  69.  
  70. # Set model params
  71. model_params = {"learning_rate": LEARNING_RATE}
  72.  
  73. # Instantiate Estimator
  74. nn = tf.estimator.Estimator(model_fn=model_fn, params=model_params)
  75.  
  76. train_input_fn = tf.estimator.inputs.numpy_input_fn(
  77. x={"x": train_features_numpy},
  78. y=train_labels_numpy,
  79. num_epochs=None,
  80. shuffle=True)
  81.  
  82. # Train
  83. nn.train(input_fn=train_input_fn, max_steps=1048576)
  84.  
  85. test_features_interim = pd.read_csv(test_file, usecols=['vgs', 'vbs', 'vds', 'current'])
  86. test_features_numpy = np.asarray(test_features_interim, dtype=np.float64)
  87.  
  88. test_labels_interim = pd.read_csv(test_file, usecols=['plo_tox', 'plo_dxl', 'plo_dxw', 'parl1', 'parl2', 'random_fn'])
  89. test_labels_numpy = np.asarray(test_labels_interim, dtype=np.float64)
  90.  
  91. # Score accuracy
  92. test_input_fn = tf.estimator.inputs.numpy_input_fn(
  93. x={"x": test_features_numpy},
  94. y=test_labels_numpy,
  95. num_epochs=1,
  96. shuffle=False)
  97.  
  98. ev = nn.evaluate(input_fn=test_input_fn)
  99. print("Loss: %s" % ev["loss"])
  100. print("Root Mean Squared Error: %s" % ev["rmse"])
  101.  
  102. prediction_file = "Tensorflow_prediction_data.csv"
  103.  
  104. predict_features_interim = pd.read_csv(prediction_file, usecols=['vgs', 'vbs', 'vds', 'current'])
  105. predict_features_numpy = np.asarray(predict_features_interim, dtype=np.float64)
  106.  
  107. # Print out predictions
  108. predict_input_fn = tf.estimator.inputs.numpy_input_fn(
  109. x= {"x": predict_features_numpy},
  110. num_epochs=1,
  111. shuffle=False)
  112. predictions = nn.predict(input_fn=predict_input_fn)
  113. for i, p in enumerate(predictions):
  114. print("Prediction %s: %s" % (i + 1, p["ages"]))
  115.  
  116.  
  117. if __name__ == '__main__':
  118. tf.logging.set_verbosity(tf.logging.INFO)
  119. parser = argparse.ArgumentParser()
  120. parser.register("type", "bool", lambda v: v.lower() == "true")
  121. parser.add_argument(
  122. "--train_data", type=str, default="", help="Path to the training data.")
  123. parser.add_argument(
  124. "--test_data", type=str, default="", help="Path to the test data.")
  125. parser.add_argument(
  126. "--predict_data",
  127. type=str,
  128. default="",
  129. help="Path to the prediction data.")
  130. FLAGS, unparsed = parser.parse_known_args()
  131. tf.app.run(main=main, argv=[sys.argv[0]] + unparsed)
Add Comment
Please, Sign In to add comment