Belle II Software
release-08-01-10
trgcdc_neurorootconverter.cc
1
/**************************************************************************
2
* basf2 (Belle II Analysis Software Framework) *
3
* Author: The Belle II Collaboration *
4
* *
5
* See git log for contributors and copyright holders. *
6
* This file is licensed under LGPL-3.0, see LICENSE.md. *
7
**************************************************************************/
8
9
#include <trg/cdc/NeuroTrigger.h>
10
#include <trg/cdc/NeuroTriggerParameters.h>
11
#include <trg/cdc/dataobjects/CDCTriggerMLP.h>
12
#include <nlohmann/json.hpp>
13
#include <fstream>
14
#include <iostream>
15
16
using namespace
Belle2
;
17
18
int
main
(
int
argc,
const
char
* argv[])
19
{
20
21
// get arguments
22
if
(argc < 4) {
23
std::cout <<
"Program needs at 3 arguments:"
<< std::endl
24
<<
" 1: json weights"
<< std::endl
25
<<
" 2: configuration file name"
<< std::endl
26
<<
" 3: output filename"
<< std::endl;
27
return
-1;
28
}
29
std::string jsonweights = argv[1];
30
std::string configfile = argv[2];
31
std::string outputfile = argv[3];
32
33
NeuroTriggerParameters
p(configfile);
34
NeuroTrigger
m_nnt;
35
m_nnt.
initialize
(p);
36
std::ifstream netfile(jsonweights, std::ifstream::binary);
37
nlohmann::json nets;
38
netfile >> nets;
39
40
for
(
unsigned
expert = 0; expert < m_nnt.
nSectors
(); expert++) {
41
42
std::vector<float> weights;
43
for
(
unsigned
i = 0; i < nets[
"expert_"
+ std::to_string(expert)][
"shapes"
].size(); i = i + 2) {
44
int
numnode = 0;
45
for
(
auto
node : nets[
"expert_"
+ std::to_string(expert)][
"weights"
][
"model.net."
+ std::to_string(i) +
".weight"
]) {
46
for
(
float
w : node) {
47
weights.push_back(w);
48
}
49
weights.push_back(nets[
"expert_"
+ std::to_string(expert)][
"weights"
][
"model.net."
+ std::to_string(i) +
".bias"
][numnode]);
50
++numnode;
51
}
52
}
53
std::cout <<
" writing "
<< weights.size() <<
" weights for expert "
<< expert << std::endl;
54
m_nnt[expert].setWeights(weights);
55
}
56
m_nnt.
save
(outputfile,
"MLPs"
);
57
58
59
return
0;
60
}
Belle2::NeuroTriggerParameters
Definition:
NeuroTriggerParameters.h:70
Belle2::NeuroTrigger
Class to represent the CDC Neurotrigger.
Definition:
NeuroTrigger.h:40
Belle2::NeuroTrigger::initialize
void initialize(const Parameters &p)
Set parameters and get some network independent parameters.
Belle2::NeuroTrigger::save
void save(const std::string &filename, const std::string &arrayname="MLPs")
Save MLPs to file.
Definition:
NeuroTrigger.cc:1130
Belle2::NeuroTrigger::nSectors
unsigned nSectors() const
return number of neural networks
Definition:
NeuroTrigger.h:164
Belle2
Abstract base class for different kinds of events.
Definition:
MillepedeAlgorithm.h:17
main
int main(int argc, char **argv)
Run all tests.
Definition:
test_main.cc:91
trg
cdc
tools
trgcdc_neurorootconverter.cc
Generated on Mon Sep 23 2024 14:06:59 for Belle II Software by
1.9.1