?? initinference.cpp
字號:
#include "InferenceMethod.h"#include "GibbsSampler.h"#include "DummyInference.h"#include "BeliefPropagation.h"#include "NaiveBayesInference.h"#include <iostream>#include <fstream>#include "VarSchema.h"InferenceMethod* initDummyInference(int argc, char* argv[], int minArg){ ifstream in(argv[minArg]); if (!in) { cout << "ERROR: could not open schema \"" << argv[minArg] << "\"\n"; exit(-1); } VarSchema schema; in >> schema; return new DummyInference(schema);}InferenceMethod* initGibbsSampler(int argc, char* argv[], int minArg){ FILE* inFile = fopen(argv[minArg], "r"); if (!inFile) { cout << "ERROR: could not open model file \"" << argv[minArg] << "\"\n"; exit(-1); } BayesNet* model = new BayesNet(); loadModel(inFile, *model); // Start out with reasonable defaults int numChains = 10; int burnInIters = 100; int minIters = 1000; double ratio = 1.1; bool fixedIters = false; // Adjust them as indicated by arguments for (int i = minArg+1; i < argc; i++) { if (argv[i][0] != '-') { cout << "Skipping unknown parameter: " << argv[i] << endl; continue; } switch (argv[i][1]) { case 'c': numChains = atoi(argv[++i]); break; case 'r': ratio = atof(argv[++i]); break; case 'b': burnInIters = atoi(argv[++i]); break; case 'm': minIters = atoi(argv[++i]); break; case 'f': fixedIters = true; break; default: cout << "Skipping unknown parameter: " << argv[i] << endl; } } return new GibbsSampler(*model, numChains, ratio, burnInIters, minIters, fixedIters);}InferenceMethod* initBeliefPropagation(int argc, char* argv[], int minArg){ FILE* inFile = fopen(argv[minArg], "r"); if (!inFile) { cout << "ERROR: could not open model file \"" << argv[minArg] << "\"\n"; exit(1); } BayesNet model; loadModel(inFile, model); // Start out with reasonable defaults double ratio = 1.1; // Adjust them as indicated by arguments for (int i = minArg+1; i < argc; i++) { if (argv[i][0] != '-') { cout << "Skipping unknown parameter: " << argv[i] << endl; continue; } switch (argv[i][1]) { case 'r': ratio = atof(argv[++i]); break; default: cout << "Skipping unknown parameter: " << argv[i] << endl; } } return new BeliefPropagation(model, ratio);}#include "../src/AbsVarAbstractionSet.h"InferenceMethod* initNaiveBayesInference(int argc, char* argv[], int minArg){ ifstream in(argv[minArg]); if (!in) { cout << "ERROR: could not open model file \"" << argv[minArg] << "\"\n"; exit(-1); } int modelType; in >> modelType; if (!in || modelType != 3) { cout << "Invalid model file \"" << argv[minArg] << "\"\n"; exit(-1); } AbstractionSet* model = new AbsVarAbstractionSet; in >> *model; return new NaiveBayesInference(model);}InferenceMethod* initInferenceMethod(int argc, char* argv[], int minArg){ InferenceMethod* method = NULL; switch(argv[minArg][1]) { // Baseline "dummy" algorithm case 'd': method = initDummyInference(argc, argv, minArg+1); break; // Gibbs sampling case 'g': method = initGibbsSampler(argc, argv, minArg+1); break; // Belief propagation case 'b': method = initBeliefPropagation(argc, argv, minArg+1); break; // Naive Bayes case 'n': method = initNaiveBayesInference(argc, argv, minArg+1); break; default: cout << "Unknown inference method \"" << argv[minArg] << "\"\n"; exit(-1); break; } return method;}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -