Advertisement
Guest User

Untitled

a guest
May 21st, 2019
77
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.92 KB | None | 0 0
  1. class predictModel(object):
  2. def __init__(self, sess, scalerX, scalerY,
  3. pred_node_name = 'output_pred', input_node_name = 'x'):
  4. self.sess = sess
  5. self.scalerX = scalerX
  6. self.scalerY = scalerY
  7. # Get the Graph Object and extract the prediction node
  8. self.graph = sess.graph
  9. self.pred_node = tf.get_collection(pred_node_name)[0]
  10. self.x = tf.get_collection(input_node_name)[0]
  11. self.keep_prob = self.graph.get_tensor_by_name('keep_prob:0')
  12.  
  13. def predictSingleRowBasic(self, p_ampDraw, p_ampSec):
  14. X_pred = np.array([p_ampDraw, p_ampSec])
  15. X_pred_reshape = X_pred.reshape(1, -1)
  16. s_X_pred = self.scalerX.transform(X_pred_reshape)
  17.  
  18. #[s_p_ampDraw, s_p_ampSec] = p_scalerX.transform(X_pred_reshape)
  19. s_p_output = self.sess.run(self.pred_node, feed_dict = {self.x: s_X_pred, self.keep_prob: 1.0})
  20. # Invert the scalar to get actual prediction
  21. p_output = self.scalerY.inverse_transform(s_p_output)
  22. return p_output
  23.  
  24. # Send Name Value Pairs to set in dictionary before evaluating
  25. def predictSingleRowAugmented(self, p_ampDraw, p_ampSec, nameValueDict):
  26. X_pred = np.array([p_ampDraw, p_ampSec])
  27. X_pred_reshape = X_pred.reshape(1, -1)
  28. s_X_pred = self.scalerX.transform(X_pred_reshape)
  29.  
  30. #[s_p_ampDraw, s_p_ampSec] = p_scalerX.transform(X_pred_reshape)
  31. feed_dict = {self.x: s_X_pred, self.keep_prob: 1.0}
  32. for curKey in list(nameValueDict.keys()):
  33. curTFNode = self.graph.get_tensor_by_name(curKey)
  34. feed_dict[curTFNode] = list(nameValueDict[curKey])
  35. s_p_output = self.sess.run(self.pred_node, feed_dict = feed_dict)
  36. # Invert the scalar to get actual prediction
  37. p_output = self.scalerY.inverse_transform(s_p_output)
  38. return p_output
  39.  
  40. def predictProfileBasic(self, p_ampDraw, alpha, p_dT):
  41.  
  42. # Predict the Initial point
  43. t_list = []
  44. v_list = []
  45. loc_t = 0
  46. loc_as = 0
  47. runLoop = True
  48. while runLoop:
  49. p_ampDraw_1 = p_ampDraw * (1 + alpha)
  50. loc_as_1 = loc_as * (1 + 2 * alpha)
  51. X_pred = np.array([p_ampDraw_1, loc_as_1])
  52. X_pred_reshape = X_pred.reshape(1, -1)
  53. s_X_pred = self.scalerX.transform(X_pred_reshape)
  54.  
  55. # [s_p_ampDraw, s_p_ampSec] = p_scalerX.transform(X_pred_reshape)
  56. s_p_output = self.sess.run(self.pred_node, feed_dict={self.x: s_X_pred, self.keep_prob: 1.0})
  57. p_output = self.scalerY.inverse_transform(s_p_output)
  58.  
  59. t_list.append(loc_t)
  60. v_list.append(p_output[0, 0])
  61.  
  62. loc_t += p_dT
  63. loc_as += p_ampDraw * p_dT
  64.  
  65. if (p_output[0, 0] < 6):
  66. runLoop = False
  67.  
  68. return t_list, v_list
  69.  
  70. def predictProfileAugmented(self, p_ampDraw, nameValueDict, p_dT):
  71. loc_t = 0
  72. loc_as = 0
  73. time_list = []
  74. voltage_list = []
  75. runLoop = True
  76. while runLoop:
  77. X_pred = np.array([p_ampDraw, loc_as])
  78. X_pred_reshape = X_pred.reshape(1, -1)
  79. s_X_pred = p_scalerX.transform(X_pred_reshape)
  80.  
  81. # [s_p_ampDraw, s_p_ampSec] = p_scalerX.transform(X_pred_reshape)
  82. feed_dict = {self.x: s_X_pred, self.keep_prob: 1.0}
  83. for curKey in list(nameValueDict.keys()):
  84. curTFNode = self.graph.get_tensor_by_name(curKey)
  85. feed_dict[curTFNode] = list(nameValueDict[curKey])
  86.  
  87. s_p_output = self.sess.run(self.pred_node, feed_dict=feed_dict)
  88. # Invert the scalar to get actual prediction
  89. p_output = self.scalerY.inverse_transform(s_p_output)
  90.  
  91. time_list.append(loc_t)
  92. voltage_list.append(p_output[0, 0])
  93.  
  94. loc_t += p_dT
  95. loc_as += p_ampDraw * p_dT
  96.  
  97. if (p_output[0, 0] < 6):
  98. runLoop = False
  99.  
  100. return time_list, voltage_list
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement