17import graph_nets
as gn
22from graph_nets
import utils_tf
43 print(s,
"memory:",memoryUse,
"(MB)")
59def get_fix_graph_data_dict(num_nodes, num_edges, NODE_FEATURE_SIZE=2, EDGE_FEATURE_SIZE=2, GLOBAL_FEATURE_SIZE=1):
74 snt.nets.MLP([LATENT_SIZE]*NUM_LAYERS, activate_final=
True),
80 def __init__(self, name="MLPGraphIndependent"):
81 super(MLPGraphIndependent, self).__init__(name=name)
83 edge_model_fn =
lambda:
snt.nets.MLP([LATENT_SIZE]*NUM_LAYERS, activate_final=
True),
84 node_model_fn =
lambda:
snt.nets.MLP([LATENT_SIZE]*NUM_LAYERS, activate_final=
True),
85 global_model_fn =
lambda:
snt.nets.MLP([LATENT_SIZE]*NUM_LAYERS, activate_final=
True))
88 return self._network(inputs)
92 def __init__(self, name="MLPGraphNetwork"):
93 super(MLPGraphNetwork, self).__init__(name=name)
95 edge_model_fn=make_mlp_model,
96 node_model_fn=make_mlp_model,
97 global_model_fn=make_mlp_model)
100 return self._network(inputs)
106 name="EncodeProcessDecode"):
107 super(EncodeProcessDecode, self).__init__(name=name)
113 def __call__(self, input_op, num_processing_steps):
114 latent = self._encoder(input_op)
117 for _
in range(num_processing_steps):
119 latent = self._core(core_input)
120 decoded_op = self._decoder(latent)
141CoreGraphData =
get_fix_graph_data_dict(num_max_nodes, num_max_edges, 2*LATENT_SIZE, 2*LATENT_SIZE, 2*LATENT_SIZE)
149output_gn =
ep_model(input_graph_data, processing_steps)
189tree.Branch(
"node_data",
"std::vector<float>" , node_data)
190tree.Branch(
"edge_data",
"std::vector<float>" , edge_data)
191tree.Branch(
"global_data",
"std::vector<float>" , global_data)
192tree.Branch(
"receivers",
"std::vector<int>" , receivers)
193tree.Branch(
"senders",
"std::vector<int>" , senders)
196print(
"\n\nSaving data in a ROOT File:")
197h1 =
ROOT.TH1D(
"h1",
"GraphNet nodes output",40,1,0)
198h2 =
ROOT.TH1D(
"h2",
"GraphNet edges output",40,1,0)
199h3 =
ROOT.TH1D(
"h3",
"GraphNet global output",40,1,0)
201for i
in range(0,numevts):
203 s_nodes = graphData[
'nodes'].size
204 s_edges = graphData[
'edges'].size
205 num_edges = graphData[
'edges'].shape[0]
217 if (i < 1
and verbose) :
218 print(
"Nodes - shape:",
int(
node_data.size()/node_size),node_size,
"data: ",node_data)
219 print(
"Edges - shape:",num_edges, edge_size,
"data: ", edge_data)
220 print(
"Globals : ",global_data)
221 print(
"Receivers : ",receivers)
222 print(
"Senders : ",senders)
234output_gnn =
ep_model(dataset[0], processing_steps)
239for tf_graph_data
in dataset:
240 output_gnn =
ep_model(tf_graph_data, processing_steps)
244 outgnn[0] =
np.mean(output_nodes)
245 outgnn[1] =
np.mean(output_edges)
246 outgnn[2] =
np.mean(output_globals)
250 if (firstEvent
and verbose) :
251 print(
"Output of first event")
260print(
"time to evaluate events",end-start)
ROOT::Detail::TRangeCast< T, true > TRangeDynCast
TRangeDynCast is an adapter class that allows the typed iteration through a TCollection.