13 import tensorflow
as tf
25 This example shows how to save a tensorflow net with tfdeploy, so you won't need tensorflow for mva expert anymore.
29 def get_model(number_of_features, number_of_spectators, number_of_events, training_fraction, parameters):
31 tf.reset_default_graph()
33 x = tf.placeholder(tf.float32, [
None, number_of_features], name=
'input')
34 y = tf.placeholder(tf.float32, [
None, 1])
36 def layer(x, shape, name, unit=tf.sigmoid):
37 with tf.name_scope(name):
38 weights = tf.Variable(tf.truncated_normal(shape, stddev=1.0 / np.sqrt(float(shape[0]))), name=
'weights')
39 biases = tf.Variable(tf.constant(0.0, shape=[shape[1]]), name=
'biases')
40 layer = unit(tf.matmul(x, weights) + biases)
43 inference_hidden1 = layer(x, [number_of_features, number_of_features + 1],
'inference_hidden1')
44 inference_activation = layer(inference_hidden1, [number_of_features + 1, 1],
'inference_sigmoid', unit=tf.sigmoid)
47 inference_loss = -tf.reduce_sum(y * tf.log(inference_activation + epsilon) +
48 (1.0 - y) * tf.log(1 - inference_activation + epsilon))
50 inference_optimizer = tf.train.AdamOptimizer(learning_rate=0.01)
51 inference_minimize = inference_optimizer.minimize(inference_loss)
53 init = tf.global_variables_initializer()
55 config = tf.ConfigProto()
56 config.gpu_options.allow_growth =
True
57 session = tf.Session(config=config)
61 state = State(x, y, tf.identity(inference_activation, name=
'output'), inference_loss, inference_minimize, session)
66 def partial_fit(state, X, S, y, w, epoch):
68 Pass received data to tensorflow session
70 feed_dict = {state.x: X, state.y: y}
71 state.session.run(state.optimizer, feed_dict=feed_dict)
74 avg_cost = state.session.run(state.cost, feed_dict=feed_dict)
75 print(
"Epoch:",
'%04d' % (epoch),
"cost=",
"{:.9f}".format(avg_cost))
83 model = tfdeploy.Model()
84 model.add(state.activation, state.session)
85 with tempfile.TemporaryDirectory()
as path:
86 filename = os.path.join(path,
'model.pkl')
88 with open(filename,
'rb')
as file:
99 with tempfile.TemporaryDirectory()
as path:
100 filename = os.path.join(path,
'model.pkl')
101 with open(filename,
'w+b')
as file:
102 file.write(bytes(obj))
103 model = tfdeploy.Model(filename)
105 state.inp, state.outp = model.get(
'input',
'output')
111 Apply estimator to passed data.
113 r = state.outp.eval({state.inp: X}).flatten()
114 return np.require(r, dtype=np.float32, requirements=[
'A',
'W',
'C',
'O'])
122 def __init__(self, x=None, y=None, activation=None, cost=None, optimizer=None, session=None):
123 """ Constructor of the state object """
138 if __name__ ==
"__main__":
139 from basf2
import conditions
141 conditions.testing_payloads = [
142 'localdb/database.txt'
145 general_options = basf2_mva.GeneralOptions()
146 general_options.m_datafiles = basf2_mva.vector(
"train.root")
147 general_options.m_identifier =
"Simple"
148 general_options.m_treename =
"tree"
149 variables = [
'M',
'p',
'pt',
'pz',
150 'daughter(0, p)',
'daughter(0, pz)',
'daughter(0, pt)',
151 'daughter(1, p)',
'daughter(1, pz)',
'daughter(1, pt)',
152 'daughter(2, p)',
'daughter(2, pz)',
'daughter(2, pt)',
153 'chiProb',
'dr',
'dz',
154 'daughter(0, dr)',
'daughter(1, dr)',
155 'daughter(0, dz)',
'daughter(1, dz)',
156 'daughter(0, chiProb)',
'daughter(1, chiProb)',
'daughter(2, chiProb)',
157 'daughter(0, kaonID)',
'daughter(0, pionID)',
158 'daughterInvariantMass(0, 1)',
'daughterInvariantMass(0, 2)',
'daughterInvariantMass(1, 2)']
159 general_options.m_variables = basf2_mva.vector(*variables)
160 general_options.m_target_variable =
"isSignal"
162 specific_options = basf2_mva.PythonOptions()
163 specific_options.m_framework =
"tensorflow"
164 specific_options.m_steering_file =
'mva/examples/tensorflow/using_tfdeploy.py'
165 specific_options.m_nIterations = 10
166 specific_options.m_mini_batch_size = 100
167 specific_options.m_normalize =
True
168 training_start = time.time()
169 basf2_mva.teacher(general_options, specific_options)
170 training_stop = time.time()
171 training_time = training_stop - training_start
173 inference_start = time.time()
174 test_data = [
"test.root"]
175 p, t = method.apply_expert(basf2_mva.vector(*test_data), general_options.m_treename)
176 inference_stop = time.time()
177 inference_time = inference_stop - inference_start
179 print(
"Tensorflow", training_time, inference_time, auc)
def calculate_roc_auc(p, t)
def __init__(self, x=None, y=None, activation=None, cost=None, optimizer=None, session=None)
optimizer
optimizer used to minimize cost function
x
feature matrix placeholder
session
tensorflow session
activation
activation function