15 from tensorflow.keras.models
import load_model
18 def get_model(number_of_features, number_of_spectators, number_of_events, training_fraction, parameters):
20 Just load keras model into state
22 return State(load_model(parameters[
'file_path']))
25 def partial_fit(state, X, S, y, w, epoch):
27 This should be empty, because our model is already fitted.
32 if __name__ ==
"__main__":
35 from root_pandas
import to_root
43 from tensorflow.keras.layers
import Input, Dense
44 from tensorflow.keras.models
import Model
45 from tensorflow.keras.optimizers
import Adam
46 from tensorflow.keras.losses
import binary_crossentropy
47 from tensorflow.keras.activations
import sigmoid, tanh
48 from basf2
import conditions
50 conditions.testing_payloads = [
51 'localdb/database.txt'
58 variables = [
'x' + str(i)
for i
in range(10)]
60 data = np.random.normal(size=[1000, 11])
61 data[:, -1] = np.int32(data[:, -1] > 0.5)
64 input = Input(shape=(10,))
66 net = Dense(units=100, activation=tanh)(input)
67 output = Dense(units=1, activation=sigmoid)(net)
69 model = Model(input, output)
70 model.compile(optimizer=Adam(lr=0.01), loss=binary_crossentropy, metrics=[
'accuracy'])
72 model.fit(data[:, :-1], data[:, -1], batch_size=10, epochs=10)
75 with tempfile.TemporaryDirectory()
as path:
78 for i, name
in enumerate(variables):
79 dic.update({name: data[:, i]})
80 dic.update({
'isSignal': data[:, -1]})
82 df = pandas.DataFrame(dic, dtype=np.float64)
83 to_root(df, os.path.join(path,
'data.root'), key=
'tree')
86 model.save(os.path.join(path,
'example_existing_model'))
90 general_options = basf2_mva.GeneralOptions()
91 general_options.m_datafiles = basf2_mva.vector(os.path.join(path,
'data.root'))
92 general_options.m_treename =
"tree"
93 general_options.m_variables = basf2_mva.vector(*variables)
94 general_options.m_target_variable =
"isSignal"
96 specific_options = basf2_mva.PythonOptions()
97 specific_options.m_framework =
"keras"
98 specific_options.m_steering_file =
'mva/examples/keras/import_existing_keras_model.py'
100 general_options.m_identifier =
'converted_keras'
101 specific_options.m_config = json.dumps({
'file_path': os.path.join(path,
'example_existing_model')})
102 basf2_mva.teacher(general_options, specific_options)
106 p, t = method.apply_expert(general_options.m_datafiles, general_options.m_treename)
def calculate_auc_efficiency_vs_background_retention(p, t, w=None)